diff --git a/Gateways/FE/projects/.resources/0055a2dd65c1cf0f3223aa0bc4a4eb925f0ace70854d3418f14058c96ae4892e b/Gateways/FE/projects/.resources/0055a2dd65c1cf0f3223aa0bc4a4eb925f0ace70854d3418f14058c96ae4892e new file mode 100644 index 0000000..70361f0 Binary files /dev/null and b/Gateways/FE/projects/.resources/0055a2dd65c1cf0f3223aa0bc4a4eb925f0ace70854d3418f14058c96ae4892e differ diff --git a/Gateways/FE/projects/.resources/0106756114f5704d5767bafa99db1ccb8f0c3a57d55b3b3bce0e7643a619dd64 b/Gateways/FE/projects/.resources/0106756114f5704d5767bafa99db1ccb8f0c3a57d55b3b3bce0e7643a619dd64 new file mode 100644 index 0000000..2dba59b --- /dev/null +++ b/Gateways/FE/projects/.resources/0106756114f5704d5767bafa99db1ccb8f0c3a57d55b3b3bce0e7643a619dd64 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.3-1-1", + "P5.3-1-2", + "P5.3-1-3", + "P5.3-1-4", + "P5.3-1-5", + "P5.3-1-6", + "P5.3-2-1", + "P5.3-2-2", + "P5.3-2-3", + "P5.3-2-4", + "P5.3-2-5", + "P5.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/01d6caec31b19353bded513b96df05773a1e67f32d428884993f4fce54d766dd b/Gateways/FE/projects/.resources/01d6caec31b19353bded513b96df05773a1e67f32d428884993f4fce54d766dd deleted file mode 100644 index d4658e6..0000000 Binary files a/Gateways/FE/projects/.resources/01d6caec31b19353bded513b96df05773a1e67f32d428884993f4fce54d766dd and /dev/null differ diff --git a/Gateways/FE/projects/.resources/af1afa3a3097febfde44263de5bfbb9191e0c921497e73f1197c10074b8fe3ab b/Gateways/FE/projects/.resources/01ee3e191433eb2e6bda3d611a1415f74475d149034e3c473563ad6ed3bfbc8b similarity index 97% rename from Gateways/FE/projects/.resources/af1afa3a3097febfde44263de5bfbb9191e0c921497e73f1197c10074b8fe3ab rename to Gateways/FE/projects/.resources/01ee3e191433eb2e6bda3d611a1415f74475d149034e3c473563ad6ed3bfbc8b index 2e6220c..74dc79a 100644 --- a/Gateways/FE/projects/.resources/af1afa3a3097febfde44263de5bfbb9191e0c921497e73f1197c10074b8fe3ab +++ b/Gateways/FE/projects/.resources/01ee3e191433eb2e6bda3d611a1415f74475d149034e3c473563ad6ed3bfbc8b @@ -145,20 +145,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, diff --git a/Gateways/FE/projects/.resources/024f45aae3a26e7ee2c6c812def38e90f917f576c9eef79976acc1b7d95ce605 b/Gateways/FE/projects/.resources/024f45aae3a26e7ee2c6c812def38e90f917f576c9eef79976acc1b7d95ce605 new file mode 100644 index 0000000..6986444 --- /dev/null +++ b/Gateways/FE/projects/.resources/024f45aae3a26e7ee2c6c812def38e90f917f576c9eef79976acc1b7d95ce605 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "R4-1-1", + "R4-1-2", + "R4-1-3", + "R4-1-4", + "R4-1-5", + "R4-1-6", + "R4-2-1", + "R4-2-2", + "R4-2-3", + "R4-2-4", + "R4-2-5", + "R4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R4-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/031a915cdcfed58255bf09345a4c78105a13036933e322414cb335b01ffb9771 b/Gateways/FE/projects/.resources/031a915cdcfed58255bf09345a4c78105a13036933e322414cb335b01ffb9771 deleted file mode 100644 index d584e02..0000000 Binary files a/Gateways/FE/projects/.resources/031a915cdcfed58255bf09345a4c78105a13036933e322414cb335b01ffb9771 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/a6d2e5e779d34e5fbfdbc0474d260714326438a05e4dbcb15b01301adfc7dedb b/Gateways/FE/projects/.resources/047627149aea87bcc75c305adf5ff88decbb38ecb84db97c270cf3ae267055b7 similarity index 97% rename from Gateways/FE/projects/.resources/a6d2e5e779d34e5fbfdbc0474d260714326438a05e4dbcb15b01301adfc7dedb rename to Gateways/FE/projects/.resources/047627149aea87bcc75c305adf5ff88decbb38ecb84db97c270cf3ae267055b7 index a0a60d1..851e0a9 100644 --- a/Gateways/FE/projects/.resources/a6d2e5e779d34e5fbfdbc0474d260714326438a05e4dbcb15b01301adfc7dedb +++ b/Gateways/FE/projects/.resources/047627149aea87bcc75c305adf5ff88decbb38ecb84db97c270cf3ae267055b7 @@ -152,8 +152,10 @@ ], "path": "Library/Diagrams/HVAC/Dgrm_FCU", "style": { + "gap": "var(--space-xl)", "overflow": "visible" }, + "useDefaultViewHeight": false, "useDefaultViewWidth": false }, "type": "ia.display.flex-repeater" @@ -163,12 +165,12 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { - "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "backgroundColor": "var(--containerRoot)" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/0770d47a1857cb33d7fdedd6b761ad73c19f55a42d84219b4105c6e0eccbdc3d b/Gateways/FE/projects/.resources/0770d47a1857cb33d7fdedd6b761ad73c19f55a42d84219b4105c6e0eccbdc3d deleted file mode 100644 index 4bab4ec..0000000 Binary files a/Gateways/FE/projects/.resources/0770d47a1857cb33d7fdedd6b761ad73c19f55a42d84219b4105c6e0eccbdc3d and /dev/null differ diff --git a/Gateways/FE/projects/.resources/0916e34032e40362fe7be34bf507062a9c489cbb8946c68f0ee73c97a1766fa0 b/Gateways/FE/projects/.resources/0916e34032e40362fe7be34bf507062a9c489cbb8946c68f0ee73c97a1766fa0 new file mode 100644 index 0000000..1e740a7 Binary files /dev/null and b/Gateways/FE/projects/.resources/0916e34032e40362fe7be34bf507062a9c489cbb8946c68f0ee73c97a1766fa0 differ diff --git a/Gateways/FE/projects/.resources/091f6e48f8348dd4b72b85ca672074e491bee7be6237d11d936a2da07ceba4f8 b/Gateways/FE/projects/.resources/091f6e48f8348dd4b72b85ca672074e491bee7be6237d11d936a2da07ceba4f8 new file mode 100644 index 0000000..35ca872 --- /dev/null +++ b/Gateways/FE/projects/.resources/091f6e48f8348dd4b72b85ca672074e491bee7be6237d11d936a2da07ceba4f8 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.1-1-1", + "P4.1-1-2", + "P4.1-1-3", + "P4.1-1-4", + "P4.1-1-5", + "P4.1-1-6", + "P4.1-2-1", + "P4.1-2-2", + "P4.1-2-3", + "P4.1-2-4", + "P4.1-2-5", + "P4.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/0971b06f4e7b6b13899f0813d2462e76172c42bd8695f5f55c1bfa3ac0698df1 b/Gateways/FE/projects/.resources/0971b06f4e7b6b13899f0813d2462e76172c42bd8695f5f55c1bfa3ac0698df1 deleted file mode 100644 index 0bef607..0000000 --- a/Gateways/FE/projects/.resources/0971b06f4e7b6b13899f0813d2462e76172c42bd8695f5f55c1bfa3ac0698df1 +++ /dev/null @@ -1,181 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 4, - "options": [], - "visible": true - }, - { - "dataType": "Int4", - "display": true, - "displaySelection": 1, - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE2" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/0ab3ff8688969b6f9ef6661d7e0ae1c88c376b68d566351616b76a01335ff8da b/Gateways/FE/projects/.resources/0ab3ff8688969b6f9ef6661d7e0ae1c88c376b68d566351616b76a01335ff8da new file mode 100644 index 0000000..b1a1223 --- /dev/null +++ b/Gateways/FE/projects/.resources/0ab3ff8688969b6f9ef6661d7e0ae1c88c376b68d566351616b76a01335ff8da @@ -0,0 +1,95 @@ +{ + "custom": {}, + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P3_1/3_1/Strings/1" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 981, + "width": 1048 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "String" + }, + "position": { + "height": 236, + "width": 1032 + }, + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "deviceDataset": "[default]Device Datasets/String/Info", + "objectName": "String" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/String" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "height": 1470, + "width": 1072, + "x": 39, + "y": 236 + }, + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "deviceType": "Jar", + "selectedDeviceTagpath": "value" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "eqPopupMsg", + "pageScope": true, + "script": "\tsystem.perspective.print(\u0027{}\u0027.format(payload))\n\tutils.nav.eqPopup(self, payload)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/0b1f290ab88d5bcb80195a3ae4acf479c8935afdb005fb3c06a3461e3b14a823 b/Gateways/FE/projects/.resources/0b1f290ab88d5bcb80195a3ae4acf479c8935afdb005fb3c06a3461e3b14a823 new file mode 100644 index 0000000..32101e6 Binary files /dev/null and b/Gateways/FE/projects/.resources/0b1f290ab88d5bcb80195a3ae4acf479c8935afdb005fb3c06a3461e3b14a823 differ diff --git a/Gateways/FE/projects/.resources/0bc33d135eb78d5fc4927b23c537584e1c7d1f01a6730cf08f704dd45575346a b/Gateways/FE/projects/.resources/0bc33d135eb78d5fc4927b23c537584e1c7d1f01a6730cf08f704dd45575346a deleted file mode 100644 index 36cbecc..0000000 Binary files a/Gateways/FE/projects/.resources/0bc33d135eb78d5fc4927b23c537584e1c7d1f01a6730cf08f704dd45575346a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/0d21563827c2f6f11c3c5941dcbe3b207b3b82a635d0c1359d06911a3e043620 b/Gateways/FE/projects/.resources/0d21563827c2f6f11c3c5941dcbe3b207b3b82a635d0c1359d06911a3e043620 new file mode 100644 index 0000000..7f71751 Binary files /dev/null and b/Gateways/FE/projects/.resources/0d21563827c2f6f11c3c5941dcbe3b207b3b82a635d0c1359d06911a3e043620 differ diff --git a/Gateways/FE/projects/.resources/0e49b4ae4d62652fb702525eb11b0567f09e0f2c5b6251079afc661f72bda775 b/Gateways/FE/projects/.resources/0e49b4ae4d62652fb702525eb11b0567f09e0f2c5b6251079afc661f72bda775 deleted file mode 100644 index e724108..0000000 Binary files a/Gateways/FE/projects/.resources/0e49b4ae4d62652fb702525eb11b0567f09e0f2c5b6251079afc661f72bda775 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/0f0004e01f17798f06a28a440ca8eaf0a1ee27ab5758998a75b96bed4c33296d b/Gateways/FE/projects/.resources/0f0004e01f17798f06a28a440ca8eaf0a1ee27ab5758998a75b96bed4c33296d new file mode 100644 index 0000000..3709eb7 Binary files /dev/null and b/Gateways/FE/projects/.resources/0f0004e01f17798f06a28a440ca8eaf0a1ee27ab5758998a75b96bed4c33296d differ diff --git a/Gateways/FE/projects/.resources/970ac08d90cfa9d2f4c57c742636c97291b91f74c14dfc2c0417a0946c74b1c6 b/Gateways/FE/projects/.resources/0f890bbf2789ae5ef066492837f325680a7c40480b9104c9deb7e4c3eb0b2594 similarity index 97% rename from Gateways/FE/projects/.resources/970ac08d90cfa9d2f4c57c742636c97291b91f74c14dfc2c0417a0946c74b1c6 rename to Gateways/FE/projects/.resources/0f890bbf2789ae5ef066492837f325680a7c40480b9104c9deb7e4c3eb0b2594 index df0093e..bf6168e 100644 --- a/Gateways/FE/projects/.resources/970ac08d90cfa9d2f4c57c742636c97291b91f74c14dfc2c0417a0946c74b1c6 +++ b/Gateways/FE/projects/.resources/0f890bbf2789ae5ef066492837f325680a7c40480b9104c9deb7e4c3eb0b2594 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/1085faef7b7f28bbbb3255e3536b4990df0ec7369f9f7907b2d53851f25e93e8 b/Gateways/FE/projects/.resources/1085faef7b7f28bbbb3255e3536b4990df0ec7369f9f7907b2d53851f25e93e8 deleted file mode 100644 index 61d8556..0000000 Binary files a/Gateways/FE/projects/.resources/1085faef7b7f28bbbb3255e3536b4990df0ec7369f9f7907b2d53851f25e93e8 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/111cfa81f79457e665f1c8c0f0c398e02b88c026a653807f9c5a16a54359af7f b/Gateways/FE/projects/.resources/111cfa81f79457e665f1c8c0f0c398e02b88c026a653807f9c5a16a54359af7f deleted file mode 100644 index 9c6c59a..0000000 Binary files a/Gateways/FE/projects/.resources/111cfa81f79457e665f1c8c0f0c398e02b88c026a653807f9c5a16a54359af7f and /dev/null differ diff --git a/Gateways/FE/projects/.resources/128b371fd6662a006e7de5de2f262bf2354f803a5cdff41152d39223304c16b2 b/Gateways/FE/projects/.resources/128b371fd6662a006e7de5de2f262bf2354f803a5cdff41152d39223304c16b2 deleted file mode 100644 index 29cf23c..0000000 --- a/Gateways/FE/projects/.resources/128b371fd6662a006e7de5de2f262bf2354f803a5cdff41152d39223304c16b2 +++ /dev/null @@ -1,597 +0,0 @@ -{ - "custom": {}, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_DS-1A3" - }, - "propConfig": { - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "01" - }, - "meta": { - "name": "Way 1" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "10px 0" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "02" - }, - "meta": { - "name": "Way 2" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "03" - }, - "meta": { - "name": "Way 3" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "04" - }, - "meta": { - "name": "Way 4" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/87d4021119f914ca62892b512384ba58dad570f9b80bb10534b593fc3297d186 b/Gateways/FE/projects/.resources/193746d799a8434d26b0c2ea90ead6d9dd10210e994f6257818292be51488572 similarity index 97% rename from Gateways/FE/projects/.resources/87d4021119f914ca62892b512384ba58dad570f9b80bb10534b593fc3297d186 rename to Gateways/FE/projects/.resources/193746d799a8434d26b0c2ea90ead6d9dd10210e994f6257818292be51488572 index 624cd3f..044412e 100644 --- a/Gateways/FE/projects/.resources/87d4021119f914ca62892b512384ba58dad570f9b80bb10534b593fc3297d186 +++ b/Gateways/FE/projects/.resources/193746d799a8434d26b0c2ea90ead6d9dd10210e994f6257818292be51488572 @@ -113,14 +113,6 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { @@ -130,7 +122,8 @@ "params": { "embedded": false, "objectName": "DiscreteIn" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/19852075ed7bf565502d9ce3172d62447f5b5078e18cee538e63df53bb0a817e b/Gateways/FE/projects/.resources/19852075ed7bf565502d9ce3172d62447f5b5078e18cee538e63df53bb0a817e deleted file mode 100644 index de9c80e..0000000 Binary files a/Gateways/FE/projects/.resources/19852075ed7bf565502d9ce3172d62447f5b5078e18cee538e63df53bb0a817e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/19b235c0a5dc3f5caaab84906eb09780137c696488f6730f92e9d91854bff0b3 b/Gateways/FE/projects/.resources/19b235c0a5dc3f5caaab84906eb09780137c696488f6730f92e9d91854bff0b3 deleted file mode 100644 index 1e67ee2..0000000 Binary files a/Gateways/FE/projects/.resources/19b235c0a5dc3f5caaab84906eb09780137c696488f6730f92e9d91854bff0b3 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/19fad8dba288d57c6ed2ea58c0226c8c33e029ba4569bba7a23a87894966b116 b/Gateways/FE/projects/.resources/19fad8dba288d57c6ed2ea58c0226c8c33e029ba4569bba7a23a87894966b116 deleted file mode 100644 index 2e268ef..0000000 --- a/Gateways/FE/projects/.resources/19fad8dba288d57c6ed2ea58c0226c8c33e029ba4569bba7a23a87894966b116 +++ /dev/null @@ -1,100 +0,0 @@ -def set_DOAS(): - tagpaths = ["[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Supply Air Temperature Setpoint" - ] - data = system.tag.readBlocking(tagpaths) - #print data - idx = 0 - w_paths = [] - w_values = [] - for i in range(0,3): - if data[idx].value == 0: - w_paths.append(tagpaths[idx]) - w_values.append(68) - if data[idx+1].value == 0: - w_paths.append(tagpaths[idx+1]) - w_values.append(1) - if data[idx+2].value == 0: - w_paths.append(tagpaths[idx+2]) - w_values.append(55) - if data[idx+3].value == 0: - w_paths.append(tagpaths[idx+3]) - w_values.append(65) - idx += 4 - if w_paths: - print "Writing values" - try: - system.tag.writeBlocking(w_paths, w_values) - except: - print "Error" - else: - print "Zeros not found" - -def set_FCU(): - fcus = ["[Ignition_Common_IO_Gtwy]ER1185/SATB1_HS2_EL1185_FCU01", - "[Ignition_Common_IO_Gtwy]MDF1187/SATB1_HS2_MDF1187_FCU02", - "[Ignition_Common_IO_Gtwy]MDF1187/SATB1_HS2_MDF1187_FCU03", - "[Ignition_Common_IO_Gtwy]ER1160/SATB1_HS2_EL1160_FCU04", - "[Ignition_Common_IO_Gtwy]IDF1174/SATB1_HS2_IDF1174_FCU05", - "[Ignition_Common_IO_Gtwy]IDF1154/SATB1_HS2_IDF1154_FCU06", - "[Ignition_Common_IO_Gtwy]MDF1149/SATB1_HS2_MDF1149_FCU07", - "[Ignition_Common_IO_Gtwy]MDF1149/SATB1_HS2_MDF1149_FCU08", - "[Ignition_Common_IO_Gtwy]FS1285/SATB1_HS2_FS1285_FCU09", - "[Ignition_Common_IO_Gtwy]IDF1286/SATB1_HS2_IDF1286_FCU10", - "[Ignition_Common_IO_Gtwy]IDF1286/SATB1_HS2_IDF1286_FCU11", - "[Ignition_Common_IO_Gtwy]ER1287/SATB1_HS2_EL1287_FCU12", - "[Ignition_Common_IO_Gtwy]ER1284/SATB1_HS2_EL1284_FCU13", - "[Ignition_Common_IO_Gtwy]IDF1274/SATB1_HS2_IDF1274_FCU14", - "[Ignition_Common_IO_Gtwy]IDF1264/SATB1_HS2_IDF1264_FCU15", - "[Ignition_Common_IO_Gtwy]ER1128/SATB1_HS2_EL1128_FCU16", - "[Ignition_Common_IO_Gtwy]MR1125/SATB1_HS2_ME1125_FCU17", - "[Ignition_Common_IO_Gtwy]ER1229/SATB1_HS2_EL1229_FCU18", - "[Ignition_Common_IO_Gtwy]IDF1218/SATB1_HS2_IDF1218_FCU19", - "[Ignition_Common_IO_Gtwy]IDF1122/SATB1_HS2_IDF1122_FCU20", - "[Ignition_Common_IO_Gtwy]FS1232/SATB1_HS2_FS1232_FCU21", - "[Ignition_Common_IO_Gtwy]MR1132/SATB1_HS2_ME1132_FCU22", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU23", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU24", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU25", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU26", - "[Ignition_Common_IO_Gtwy]RM1219/SATB1_HS2_RM1219_FCU27", - "[Ignition_Common_IO_Gtwy]RM1193/SATB1_HS2_RM1193_FCU28", - "[Ignition_Common_IO_Gtwy]RM1234/SATB1_HS2_RM1234_FCU29"] - - tagpaths = [] - for fcu in fcus: - tagpaths.append(fcu + "/Config/Space Temperature Cooling Setpoint") - tagpaths.append(fcu + "/Config/Space Temperature Cooling Setpoint DB") - - data = system.tag.readBlocking(tagpaths) - #for d in data: - # print d - idx = 0 - w_paths = [] - w_values = [] - for i in range(0,29): - if data[idx].value == 0: - w_paths.append(tagpaths[idx]) - w_values.append(74) - if data[idx+1].value == 0: - w_paths.append(tagpaths[idx+1]) - w_values.append(1) - idx += 2 - if w_paths: - print "writing values" - try: - system.tag.writeBlocking(w_paths, w_values) - except: - print "Error" - else: - print "Zeros not found" \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f14fc3e4af1308e5957af72d1b2f482a3afc3d08281b1420a4161d978a5e85b7 b/Gateways/FE/projects/.resources/1af8309aa65555a6e8e1c56ab659389737f007c68e4a037b2fd0135d52670744 similarity index 97% rename from Gateways/FE/projects/.resources/f14fc3e4af1308e5957af72d1b2f482a3afc3d08281b1420a4161d978a5e85b7 rename to Gateways/FE/projects/.resources/1af8309aa65555a6e8e1c56ab659389737f007c68e4a037b2fd0135d52670744 index dbe1577..1e34a51 100644 --- a/Gateways/FE/projects/.resources/f14fc3e4af1308e5957af72d1b2f482a3afc3d08281b1420a4161d978a5e85b7 +++ b/Gateways/FE/projects/.resources/1af8309aa65555a6e8e1c56ab659389737f007c68e4a037b2fd0135d52670744 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/1bdf33cb5dff72fc7b9af0f0d699e68cd1457c69937b09b916c6847a536b0525 b/Gateways/FE/projects/.resources/1bdf33cb5dff72fc7b9af0f0d699e68cd1457c69937b09b916c6847a536b0525 new file mode 100644 index 0000000..881fbc0 Binary files /dev/null and b/Gateways/FE/projects/.resources/1bdf33cb5dff72fc7b9af0f0d699e68cd1457c69937b09b916c6847a536b0525 differ diff --git a/Gateways/FE/projects/.resources/9a21f98537dc13c88bff18e166d9eba117a8a0fef9d733bf0ffc43e4d4733161 b/Gateways/FE/projects/.resources/1cbfe4aff64db1aa1bdd5c2e29e14739737ea5b59826de9e6f0f741f9c8e5d82 similarity index 98% rename from Gateways/FE/projects/.resources/9a21f98537dc13c88bff18e166d9eba117a8a0fef9d733bf0ffc43e4d4733161 rename to Gateways/FE/projects/.resources/1cbfe4aff64db1aa1bdd5c2e29e14739737ea5b59826de9e6f0f741f9c8e5d82 index 3ab7cac..85bbef1 100644 --- a/Gateways/FE/projects/.resources/9a21f98537dc13c88bff18e166d9eba117a8a0fef9d733bf0ffc43e4d4733161 +++ b/Gateways/FE/projects/.resources/1cbfe4aff64db1aa1bdd5c2e29e14739737ea5b59826de9e6f0f741f9c8e5d82 @@ -21,8 +21,8 @@ "config": true, "control": true }, - "objectName": "Breaker", - "tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE1" + "objectName": "ATS", + "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/ATS" }, "propConfig": { "custom.tabsConfig": { @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker E/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/1d81a10d0ff617610a480311db2fc1358fbeeb3de40894fa3d2dc1ca890da1f9 b/Gateways/FE/projects/.resources/1d81a10d0ff617610a480311db2fc1358fbeeb3de40894fa3d2dc1ca890da1f9 deleted file mode 100644 index 611b737..0000000 Binary files a/Gateways/FE/projects/.resources/1d81a10d0ff617610a480311db2fc1358fbeeb3de40894fa3d2dc1ca890da1f9 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/1e13b9ffe00cfad4bd8035edb0ce2fda10b9fe0b7fae23069fc6d1d99e668de6 b/Gateways/FE/projects/.resources/1e13b9ffe00cfad4bd8035edb0ce2fda10b9fe0b7fae23069fc6d1d99e668de6 deleted file mode 100644 index 3aa50c1..0000000 Binary files a/Gateways/FE/projects/.resources/1e13b9ffe00cfad4bd8035edb0ce2fda10b9fe0b7fae23069fc6d1d99e668de6 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/1e9ad448ba4d9752c748900c35a6c02f6f71c8767ab866b3da9d8c4547661cb2 b/Gateways/FE/projects/.resources/1e9ad448ba4d9752c748900c35a6c02f6f71c8767ab866b3da9d8c4547661cb2 deleted file mode 100644 index 3bca727..0000000 Binary files a/Gateways/FE/projects/.resources/1e9ad448ba4d9752c748900c35a6c02f6f71c8767ab866b3da9d8c4547661cb2 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/1ec3269139253fd34ef02da6d8d32e2ebd2e5e0c2b6768455bbe77bdaccfd5cb b/Gateways/FE/projects/.resources/1ec3269139253fd34ef02da6d8d32e2ebd2e5e0c2b6768455bbe77bdaccfd5cb deleted file mode 100644 index c8c045f..0000000 --- a/Gateways/FE/projects/.resources/1ec3269139253fd34ef02da6d8d32e2ebd2e5e0c2b6768455bbe77bdaccfd5cb +++ /dev/null @@ -1,147 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH01_MOTOR" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/1f723a8e8c8f654cb6624a75d9190626300e2281ebc6be84b5154fce885de236 b/Gateways/FE/projects/.resources/1f723a8e8c8f654cb6624a75d9190626300e2281ebc6be84b5154fce885de236 deleted file mode 100644 index 92d9cdc..0000000 Binary files a/Gateways/FE/projects/.resources/1f723a8e8c8f654cb6624a75d9190626300e2281ebc6be84b5154fce885de236 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/1f957a88f28f2c242e66bc3c68034665fc3c0e1be6335d1cd75f35d73ae8e18e b/Gateways/FE/projects/.resources/1f957a88f28f2c242e66bc3c68034665fc3c0e1be6335d1cd75f35d73ae8e18e deleted file mode 100644 index a422c9e..0000000 Binary files a/Gateways/FE/projects/.resources/1f957a88f28f2c242e66bc3c68034665fc3c0e1be6335d1cd75f35d73ae8e18e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/20d39efc08099d62c0235e08e61c75ed71b8448073647a4e76fa1ecde44bae2e b/Gateways/FE/projects/.resources/20d39efc08099d62c0235e08e61c75ed71b8448073647a4e76fa1ecde44bae2e new file mode 100644 index 0000000..2eb2943 --- /dev/null +++ b/Gateways/FE/projects/.resources/20d39efc08099d62c0235e08e61c75ed71b8448073647a4e76fa1ecde44bae2e @@ -0,0 +1,124 @@ +def getActivePriorityCount(tagPath, Priority = ['Diagnostic', 'Low','Medium','High','Critical']): + ### + # This function returns the number of active alarms of a specificed priority other wise all active alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + +def getActiveCriticalCount(tagPath, Priority = ['Critical']): + + ### + # This function returns the number of Active Critical Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveHighCount(tagPath, Priority = ['High']): + ### + # This function returns the number of Active High Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveMediumCount(tagPath, Priority = ['Medium']): + ### + # This function returns the number of Active Medium Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveLowCount(tagPath, Priority = ['Low']): + ### + # This function returns the number of Active Low Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveDiagCount(tagPath, Priority = ['Diagnostic']): + ### + # This function returns the number of Active Diagnostic Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveAlarms(tagPath, priority = ['Diagnostic', 'Low','Medium','High','Critical'], state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False): + ### + # This function grabs a list of active alarms to use in a table + # tagpath - path of device alarms to collect of type string + # priority - list of priority types to collect + # state - a list of states to collect + # sort - option to sort by timestamp + ### + + alarmList = [] + + if tagPath: + i = tagPath.find(']') + path = '*{}/*'.format(tagPath[i + 1:]) + + results = system.alarm.queryStatus(source = [path], priority = priority, state = state) + + for each in results: + + alarm = { + 'Time': each.get('eventTime'), + 'Alarm': each.getDisplayPath(), + 'Notes': each.getNotes(), + 'Priority': str(each.getPriority()), + 'Alarm Priority': str(Global.AlmTables.getCustomPriority(str(each.getPriority()))), + 'Name': each.getName(), + 'id': each.getId(), + 'Source': each.getSource(), + 'State': each.get('State') + } + + alarmList.append(alarm) + + if sortByTime: + return sorted(alarmList, key=lambda d: (d['Time'], priorityWeight[d['Priority']]), reverse=True) + else: + priorityWeight = {'Diagnostic': 0, 'Low': 1, 'Medium': 2, 'High': 3, 'Critical': 4} + return sorted(alarmList, key=lambda d: (priorityWeight[d['Priority']], d['Time']), reverse=True) + + return alarmList + + +def getCustomPriority(priority, customList = ['Diagnostic', 'Info', 'Undefined', 'Warning', 'Critical']): + ### + # This function converts standard alarm priorities to custom defined priorites + # priority - priority or type string + # customList - list of custom priorites + if priority == 'Diagnostic': + return customList[0] + if priority == 'Low': + return customList[1] + if priority == 'Medium': + return customList[2] + if priority == 'High': + return customList[3] + if priority == 'Critical': + return customList[4] + + return 'UNKNOWN' + + +def printTagAlarmCnts(tagPath): + #Diag## + # This function is used for quickly testing alarm counts for a tagpath + # results printed to console + # this function is purley for testing + count1 = Global.AlmTables.getActiveCriticalCount(tagPath) + count2 = Global.AlmTables.getActiveHighCount(tagPath) + count3 = Global.AlmTables.getActiveMediumCount(tagPath) + count4 = Global.AlmTables.getActiveLowCount(tagPath) + count5 = Global.AlmTables.getActiveDiagCount(tagPath) + + print "Alarm total counts for:" + tagPath + " are: \n" + "Critical: " + str(count1) + "\nHigh: " + str(count2) + "\nMedium: " + str(count3) + "\nLow: " + str(count4) + "\nDiag: " + str(count5) + +def updateAlarmCount(tagPath): + ### + # This function writes the current alarm count back to the tag device + tagList = ['Diagnostic', 'Low','Medium','High','Critical'] + for i in tagList: + count = getActivePriorityCount(tagPath, Priority = [i]) + tag = tagPath + "/Alarm Data/"+ i + " Count" + #tag = tagPath + "/" + i + " Count" + #system.tag.writeAsync(tag, count, callback) + system.tag.writeAsync(tag, count) + +def printThis(text = "Testing"): + system.perspective.print(text) + return text diff --git a/Gateways/FE/projects/.resources/20e84c55561eaa7762e0474e98e1f55566fa954a609da580add3a15725b664bd b/Gateways/FE/projects/.resources/20e84c55561eaa7762e0474e98e1f55566fa954a609da580add3a15725b664bd deleted file mode 100644 index 9107efb..0000000 Binary files a/Gateways/FE/projects/.resources/20e84c55561eaa7762e0474e98e1f55566fa954a609da580add3a15725b664bd and /dev/null differ diff --git a/Gateways/FE/projects/.resources/2122c9ae9eda665d1e34031972ca07b249c0d9c1582fbc899bbe680c8b4388a1 b/Gateways/FE/projects/.resources/2122c9ae9eda665d1e34031972ca07b249c0d9c1582fbc899bbe680c8b4388a1 deleted file mode 100644 index 4fb2f32..0000000 Binary files a/Gateways/FE/projects/.resources/2122c9ae9eda665d1e34031972ca07b249c0d9c1582fbc899bbe680c8b4388a1 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/218d9e96e6a7091df541242a5aad137fa9a7b199b2f6f9502476bccbc455253b b/Gateways/FE/projects/.resources/218d9e96e6a7091df541242a5aad137fa9a7b199b2f6f9502476bccbc455253b deleted file mode 100644 index 9b1328b..0000000 Binary files a/Gateways/FE/projects/.resources/218d9e96e6a7091df541242a5aad137fa9a7b199b2f6f9502476bccbc455253b and /dev/null differ diff --git a/Gateways/FE/projects/.resources/21b9addbbde2f059ccce25e6f67af84b4fd57ab01cca835c4b666008d5503698 b/Gateways/FE/projects/.resources/21b9addbbde2f059ccce25e6f67af84b4fd57ab01cca835c4b666008d5503698 deleted file mode 100644 index 9126dc1..0000000 Binary files a/Gateways/FE/projects/.resources/21b9addbbde2f059ccce25e6f67af84b4fd57ab01cca835c4b666008d5503698 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/224bc130aedaf33af211e6c93fd552073678c83c633156dc984b4bcb79b9fbcc b/Gateways/FE/projects/.resources/224bc130aedaf33af211e6c93fd552073678c83c633156dc984b4bcb79b9fbcc deleted file mode 100644 index ef658e8..0000000 Binary files a/Gateways/FE/projects/.resources/224bc130aedaf33af211e6c93fd552073678c83c633156dc984b4bcb79b9fbcc and /dev/null differ diff --git a/Gateways/FE/projects/.resources/22544bd4e5edf334e80259586e8d9091a525317a4a9efd00dff32c0f18743700 b/Gateways/FE/projects/.resources/22544bd4e5edf334e80259586e8d9091a525317a4a9efd00dff32c0f18743700 new file mode 100644 index 0000000..ff83dfa --- /dev/null +++ b/Gateways/FE/projects/.resources/22544bd4e5edf334e80259586e8d9091a525317a4a9efd00dff32c0f18743700 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.3-1-1", + "P3.3-1-2", + "P3.3-1-3", + "P3.3-1-4", + "P3.3-1-5", + "P3.3-1-6", + "P3.3-2-1", + "P3.3-2-2", + "P3.3-2-3", + "P3.3-2-4", + "P3.3-2-5", + "P3.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/a6b8132dc6bab21bc6ffbc75ee4bb8bbc397f64d5c9d59fdc97675221967f72a b/Gateways/FE/projects/.resources/2263dbb5af4c4cd5619dc7aae0ba4a278e4f950ab58f8636b82dd404dc1808c1 similarity index 97% rename from Gateways/FE/projects/.resources/a6b8132dc6bab21bc6ffbc75ee4bb8bbc397f64d5c9d59fdc97675221967f72a rename to Gateways/FE/projects/.resources/2263dbb5af4c4cd5619dc7aae0ba4a278e4f950ab58f8636b82dd404dc1808c1 index b78fe5a..4b4876b 100644 --- a/Gateways/FE/projects/.resources/a6b8132dc6bab21bc6ffbc75ee4bb8bbc397f64d5c9d59fdc97675221967f72a +++ b/Gateways/FE/projects/.resources/2263dbb5af4c4cd5619dc7aae0ba4a278e4f950ab58f8636b82dd404dc1808c1 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/2285a92dc765d5dbc928a213f30733f33eca152be687c8dc3c6a013041b7204a b/Gateways/FE/projects/.resources/2285a92dc765d5dbc928a213f30733f33eca152be687c8dc3c6a013041b7204a deleted file mode 100644 index 86ca13d..0000000 Binary files a/Gateways/FE/projects/.resources/2285a92dc765d5dbc928a213f30733f33eca152be687c8dc3c6a013041b7204a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/23cec89a33c27d455a983307923f990fcd842be4569029672a03c289056acf74 b/Gateways/FE/projects/.resources/23cec89a33c27d455a983307923f990fcd842be4569029672a03c289056acf74 deleted file mode 100644 index c94e088..0000000 Binary files a/Gateways/FE/projects/.resources/23cec89a33c27d455a983307923f990fcd842be4569029672a03c289056acf74 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/244b47cb409a5b127695ca8cb07cdea379bee854163a6be21ca88de76c27a046 b/Gateways/FE/projects/.resources/244b47cb409a5b127695ca8cb07cdea379bee854163a6be21ca88de76c27a046 deleted file mode 100644 index ce226a2..0000000 --- a/Gateways/FE/projects/.resources/244b47cb409a5b127695ca8cb07cdea379bee854163a6be21ca88de76c27a046 +++ /dev/null @@ -1,1606 +0,0 @@ -{ - "custom": { - "JA01": "/AC Primary Power Fault", - "JA02": "/AC Secondary Power Fault", - "JA03": "/DC Power Supply 1 Fault", - "JA04": "/DC Power Supply 2 Fault", - "TAH": "/High Temperature", - "XA": "/Panel Intrusion", - "allTags": [ - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail" - } - ], - "inTagPath": "[Ignition_Common_IO_Gtwy]PLC/SATB1_MPR1240_PNL58" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]PLC/SATB1_MPR1240_PNL58" - }, - "propConfig": { - "custom.JA01": { - "persistent": true - }, - "custom.JA02": { - "persistent": true - }, - "custom.JA03": { - "persistent": true - }, - "custom.JA04": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.XA": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "136px", - "display": false - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "136px" - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/24786903f3bb9ab5e2c52ef4d7eac1b4cbd6fd3c484809c5089c9c88c0b8aae1 b/Gateways/FE/projects/.resources/24786903f3bb9ab5e2c52ef4d7eac1b4cbd6fd3c484809c5089c9c88c0b8aae1 new file mode 100644 index 0000000..9944d7d Binary files /dev/null and b/Gateways/FE/projects/.resources/24786903f3bb9ab5e2c52ef4d7eac1b4cbd6fd3c484809c5089c9c88c0b8aae1 differ diff --git a/Gateways/FE/projects/.resources/255bd7c5b05e8047a8c78244d762a40775a79036f8e8201eb657584100351517 b/Gateways/FE/projects/.resources/255bd7c5b05e8047a8c78244d762a40775a79036f8e8201eb657584100351517 new file mode 100644 index 0000000..6b562c1 --- /dev/null +++ b/Gateways/FE/projects/.resources/255bd7c5b05e8047a8c78244d762a40775a79036f8e8201eb657584100351517 @@ -0,0 +1,43 @@ +Logger = system.util.getLogger("alarm.summary") + +def get_severity_style(level): + ''' + level: Could be an int (1-4) or a string ("low", "Medium", etc) + ''' + # 1. Maping names and values to normalize the input + name_to_level = { + 'diagnostic':0, 'low':1, 'medium':2, 'high':3, 'critical':4 + } + # 2. Convert a string to compare, if its a string or a number + normalized_level = level + if isinstance(level, basestring): + normalized_level = name_to_level.get(level.lower(), 0) + + # 3. color definition + priorityBGColors = {1:"#7266B7", 2:"#F4B834", 3:"#DE7C33", 4:"#E22028"} + priorityTextColors = {1:"#FAFAFB", 2:"#FAFAFB", 3:"#FAFAFB", 4:"#FAFAFB"} + + # 4. Return an object with the syle + if normalized_level not in priorityBGColors: + return {} + return { + "backgroundColor": priorityBGColors[normalized_level], + "color": priorityTextColors[normalized_level] + } + +def getTop3Alarms(): + res= [] + activeAlarms = system.alarm.queryStatus(state=["ActiveUnacked"]) + sortedAlarms = sorted(activeAlarms, key=lambda x: x.getPriority(), reverse=True) + for alm in sortedAlarms[:3]: + prio = str(alm.getPriority()) + activeData = alm.getActiveData() + label = activeData.get(EventTime) # O alm.get('label') + res.append({ + "value": { + "dispPath": alm.getDisplayPathOrSource(), + "label": alm.get("label") + }, + "style": get_severity_style(prio) + }) + return res \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/25a43aceff3a3c9cf3ec95b020998c0d42dbed268cb29da5a9850b255e478d01 b/Gateways/FE/projects/.resources/25a43aceff3a3c9cf3ec95b020998c0d42dbed268cb29da5a9850b255e478d01 deleted file mode 100644 index 5edd314..0000000 Binary files a/Gateways/FE/projects/.resources/25a43aceff3a3c9cf3ec95b020998c0d42dbed268cb29da5a9850b255e478d01 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/266bd614fa65914a458062ef1ed44b0ebc0a2cc739583a355311669978e1e853 b/Gateways/FE/projects/.resources/266bd614fa65914a458062ef1ed44b0ebc0a2cc739583a355311669978e1e853 new file mode 100644 index 0000000..53624f5 --- /dev/null +++ b/Gateways/FE/projects/.resources/266bd614fa65914a458062ef1ed44b0ebc0a2cc739583a355311669978e1e853 @@ -0,0 +1,323 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.2-1-1", + "P1.2-1-2", + "P1.2-1-3", + "P1.2-1-4", + "P1.2-1-5", + "P1.2-1-6", + "P1.2-2-1", + "P1.2-2-2", + "P1.2-2-3", + "P1.2-2-4", + "P1.2-2-5", + "P1.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/269074ee08ff032e225b51d949269c084cf9638063ab4494fb5c6d261ab6b225 b/Gateways/FE/projects/.resources/269074ee08ff032e225b51d949269c084cf9638063ab4494fb5c6d261ab6b225 deleted file mode 100644 index b2e46eb..0000000 --- a/Gateways/FE/projects/.resources/269074ee08ff032e225b51d949269c084cf9638063ab4494fb5c6d261ab6b225 +++ /dev/null @@ -1,118 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm_Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH5/SATB1_DH5_PNL16_C1_HT01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/26ceb944cbb9a843e7cda527edce5616101ea9c45e387c5180296f40692ee7ca b/Gateways/FE/projects/.resources/26ceb944cbb9a843e7cda527edce5616101ea9c45e387c5180296f40692ee7ca new file mode 100644 index 0000000..567de77 Binary files /dev/null and b/Gateways/FE/projects/.resources/26ceb944cbb9a843e7cda527edce5616101ea9c45e387c5180296f40692ee7ca differ diff --git a/Gateways/FE/projects/.resources/271d53d85f687e222050f00751ff7155b435db6258d1b62910d8e3d5e6e58824 b/Gateways/FE/projects/.resources/271d53d85f687e222050f00751ff7155b435db6258d1b62910d8e3d5e6e58824 deleted file mode 100644 index f3336d4..0000000 Binary files a/Gateways/FE/projects/.resources/271d53d85f687e222050f00751ff7155b435db6258d1b62910d8e3d5e6e58824 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/27a81bd351723905bc6a4e36b78e9cc0e4fa6ec391675a5bf39b5d85afcdc396 b/Gateways/FE/projects/.resources/27a81bd351723905bc6a4e36b78e9cc0e4fa6ec391675a5bf39b5d85afcdc396 new file mode 100644 index 0000000..4425c96 --- /dev/null +++ b/Gateways/FE/projects/.resources/27a81bd351723905bc6a4e36b78e9cc0e4fa6ec391675a5bf39b5d85afcdc396 @@ -0,0 +1,81 @@ +{ + "custom": {}, + "params": { + "deviceDataset": "[default]Device Datasets/VM/Info", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "params.deviceDataset": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "deviceDataset": "{view.params.deviceDataset}" + }, + "tagPath": "{deviceDataset}" + }, + "transforms": [ + { + "code": "\treturn Global.DeviceDatasets.getTagInstances(deviceDataset\u003dvalue, tagPath\u003dself.view.params.tagPath)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/28072147856fb6c352b390b64e976764c73e081bc47b073e19a2ef09fe6439a7 b/Gateways/FE/projects/.resources/28072147856fb6c352b390b64e976764c73e081bc47b073e19a2ef09fe6439a7 deleted file mode 100644 index 9ac3e15..0000000 Binary files a/Gateways/FE/projects/.resources/28072147856fb6c352b390b64e976764c73e081bc47b073e19a2ef09fe6439a7 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/28079b5b1566b23fca17f467c3e82c0361f65a3428b72a6ddcd313c5a9328bc3 b/Gateways/FE/projects/.resources/28079b5b1566b23fca17f467c3e82c0361f65a3428b72a6ddcd313c5a9328bc3 deleted file mode 100644 index e235c12..0000000 --- a/Gateways/FE/projects/.resources/28079b5b1566b23fca17f467c3e82c0361f65a3428b72a6ddcd313c5a9328bc3 +++ /dev/null @@ -1,399 +0,0 @@ -{ - "custom": { - "tabsConfig": { - "tabs": [ - "Status", - "Control", - "Config", - "Trend", - "Meta", - "Wiki" - ] - }, - "trendConfig": { - "selectedPens": [] - } - }, - "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "SWBDPQM", - "tagPath": "[Ignition_SATB1_IO1_default]ER1242_P1-1/SWBD/SATB1_ER1242_PQM1" - }, - "propConfig": { - "custom.tabsConfig": { - "persistent": true - }, - "custom.tabsConfig.showConfig": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Config" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.tabsConfig.showControl": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Control" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.trendConfig": { - "persistent": true - }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Status" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Trend" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.selectedPens": { - "binding": { - "config": { - "path": "view.custom.trendConfig.selectedPens" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - }, - "path": "Library/Templates/Trends" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Config" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Meta" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Templates/Meta" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Wiki" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Framework/Tag Notes/View Notes" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Control" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "TabContainer" - }, - "position": { - "basis": "300px", - "grow": 1 - }, - "propConfig": { - "props.tabs": { - "binding": { - "config": { - "expression": "{view.custom.tabsConfig}" - }, - "transforms": [ - { - "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "contentStyle": { - "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "enableDisablePen", - "pageScope": true, - "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/2994c03353cc2eb3ae763a86610963fe129ef300967e42812b6e6205d2a91004 b/Gateways/FE/projects/.resources/2994c03353cc2eb3ae763a86610963fe129ef300967e42812b6e6205d2a91004 deleted file mode 100644 index 3a72b3f..0000000 Binary files a/Gateways/FE/projects/.resources/2994c03353cc2eb3ae763a86610963fe129ef300967e42812b6e6205d2a91004 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/2cd0dbafb1648b9f3ef360d963fcf7934f7adf154cfb863386b72d5df6f08de7 b/Gateways/FE/projects/.resources/2cd0dbafb1648b9f3ef360d963fcf7934f7adf154cfb863386b72d5df6f08de7 deleted file mode 100644 index 9e4e0af..0000000 --- a/Gateways/FE/projects/.resources/2cd0dbafb1648b9f3ef360d963fcf7934f7adf154cfb863386b72d5df6f08de7 +++ /dev/null @@ -1,81 +0,0 @@ -import pprint, time -Logger = system.util.getLogger("alarm.summary") -provider = "[default]" - -def initAlarmSummaries(): - """ This function will reset all the alarm summary udt's in the system - - """ - allActiveAlarmsTag = [] - newValues = [] - for t in system.tag.browse(provider, {"tagType":"UdtInstance", "typeId": "AlarmSummary", "recursive":True}): - allActiveAlarmsTag.append(t["fullPath"].toString() +"/ActiveAlarms") - newValues.append({}) - - system.tag.writeAsync(allActiveAlarmsTag, newValues) - -def updateAlarmCount(srcPath, priority, state): - pass - - -def calcMaxPriority(levelPath): - """ Pass in the path level to determine the max priority and return the value - levelPath: string of the object level path without the /AlarmSummary/ActiveAlarms - """ - aggAlarmStatus = system.tag.readBlocking([levelPath+"/AlarmSummary/ActiveAlarms"])[0].value.toDict() - - return determinePriority(aggAlarmStatus) - -def determinePriority(tagValue): - """ Use this method to figure out the highest priority level of a tag. Useful with transforms from front-end - Args: - tagValue: dict/document of the expected structure of {srcPath:priority} - Returns: - maxState: int -1 for none, 0-Diag, 1-Low, 2- Med, 3- High, 4-Critical - """ - maxState = -1 - for k, v in tagValue.iteritems(): - maxState = v if v > maxState else maxState - - return maxState - - - -def syncAlarms(): - """ - Timer based function to update all of the aggregate alarm tags. - - """ - sublog = Logger.createSubLogger("syncAlarms") - start = time.time() - levelAlarmSummary = {} #{"alarmPath":[{srcAlarm:priority}] - for alm in system.alarm.queryStatus(priority=[0,1,2,3,4],state=['ActiveUnacked','ActiveAcked']): - srcPath = alm.getSource().toString() - mainTagPath = srcPath.split("/tag:")[1].split(":/alm")[0] - priorityVal = alm.getPriority().intValue - - pathLevelsList = mainTagPath.split("/") - - # Because alarms can exist outside of the /Alarms folder in the UDT, we will account for this - almOffset = -1 - if "Alarms" not in pathLevelsList: - almOffset= 0 - - for i in range(1, len(pathLevelsList) + almOffset): - path = provider+"/".join(pathLevelsList[:i])+"/AlarmSummary/ActiveAlarms" - if path not in levelAlarmSummary.keys(): - levelAlarmSummary[path]= {} - - levelAlarmSummary[path][srcPath] = max([levelAlarmSummary[path].get(srcPath,0), priorityVal ]) - -# pprint.pprint(levelAlarmSummary) - writeTags, writeVals = [], [] - for k, v in levelAlarmSummary.iteritems(): - writeTags.append(str(k)) - writeVals.append(v) - sublog.debug("%s - %s"%(writeTags, writeVals)) - if len(writeTags) == len(writeVals) and len(writeTags) > 0: - system.tag.writeAsync(writeTags, writeVals) - - - sublog.trace("finished in %s sec"%(time.time() - start)) \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/2d76874e5207b36bbe625bfd460bc46be78f10454e7bcf81797f810163c10cbe b/Gateways/FE/projects/.resources/2d76874e5207b36bbe625bfd460bc46be78f10454e7bcf81797f810163c10cbe new file mode 100644 index 0000000..9fd0701 Binary files /dev/null and b/Gateways/FE/projects/.resources/2d76874e5207b36bbe625bfd460bc46be78f10454e7bcf81797f810163c10cbe differ diff --git a/Gateways/FE/projects/.resources/3001d869c1c9412faf09a9b7974c0b4ac0ac8c7a3020d7d1a6a8b544fe57aa31 b/Gateways/FE/projects/.resources/3001d869c1c9412faf09a9b7974c0b4ac0ac8c7a3020d7d1a6a8b544fe57aa31 new file mode 100644 index 0000000..d7f55ab Binary files /dev/null and b/Gateways/FE/projects/.resources/3001d869c1c9412faf09a9b7974c0b4ac0ac8c7a3020d7d1a6a8b544fe57aa31 differ diff --git a/Gateways/FE/projects/.resources/3006c0bf62c0b19bee24c60dec711763005963b44572a283fe287982388ad0b6 b/Gateways/FE/projects/.resources/3006c0bf62c0b19bee24c60dec711763005963b44572a283fe287982388ad0b6 deleted file mode 100644 index 40577d1..0000000 --- a/Gateways/FE/projects/.resources/3006c0bf62c0b19bee24c60dec711763005963b44572a283fe287982388ad0b6 +++ /dev/null @@ -1,111 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Off", - "On" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1141/SATB1_RM1141_PMP_02" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/30880c8dcee601666d3837b5750f5e19170920de03be6324bb6c56be798b1c12 b/Gateways/FE/projects/.resources/30880c8dcee601666d3837b5750f5e19170920de03be6324bb6c56be798b1c12 new file mode 100644 index 0000000..6214565 Binary files /dev/null and b/Gateways/FE/projects/.resources/30880c8dcee601666d3837b5750f5e19170920de03be6324bb6c56be798b1c12 differ diff --git a/Gateways/FE/projects/.resources/30b2ef134f9f7739d3a00cd92fca6b34b3b7744815a6bcd3de9fc6195375b290 b/Gateways/FE/projects/.resources/30b2ef134f9f7739d3a00cd92fca6b34b3b7744815a6bcd3de9fc6195375b290 deleted file mode 100644 index 584543c..0000000 Binary files a/Gateways/FE/projects/.resources/30b2ef134f9f7739d3a00cd92fca6b34b3b7744815a6bcd3de9fc6195375b290 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/30d5139ad9b1193347eeb25f985c19aac2d982ccdbe9288c9a26aaa26895d1b2 b/Gateways/FE/projects/.resources/30d5139ad9b1193347eeb25f985c19aac2d982ccdbe9288c9a26aaa26895d1b2 new file mode 100644 index 0000000..59d9d47 Binary files /dev/null and b/Gateways/FE/projects/.resources/30d5139ad9b1193347eeb25f985c19aac2d982ccdbe9288c9a26aaa26895d1b2 differ diff --git a/Gateways/FE/projects/.resources/30e5cbc5800357ddd2f0d49c5fdf170f726d2c43c50931e39ec95e96f05be2dd b/Gateways/FE/projects/.resources/30e5cbc5800357ddd2f0d49c5fdf170f726d2c43c50931e39ec95e96f05be2dd deleted file mode 100644 index 8ad22bb..0000000 --- a/Gateways/FE/projects/.resources/30e5cbc5800357ddd2f0d49c5fdf170f726d2c43c50931e39ec95e96f05be2dd +++ /dev/null @@ -1,419 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Feedback", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Command", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "CMD_Out", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature C", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": 0, - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Return Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Manual", - "Auto" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Not Running", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Speed Feedback", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1A", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1B", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1C", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1D", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1E", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1F", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1G", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1H", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1I", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Water Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Unit Status", - "options": [ - "Unknown", - "Unit OFF - Normal", - "Controller Powered", - "Unit ON Fans only", - "Unit ON CW Cooling", - "Unit ON Alarm", - "Unit Failure", - "Unit Starting" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_DH1_STU01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 821, - "width": 816 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/9e1cc94ddbd51340d05e1803e99fcd6009564f16ebf14a74d6432f2d72bf22c2 b/Gateways/FE/projects/.resources/3135175bc59aeac641272dce6c6591302b3f2b9b95d364bac9133a683a659977 similarity index 97% rename from Gateways/FE/projects/.resources/9e1cc94ddbd51340d05e1803e99fcd6009564f16ebf14a74d6432f2d72bf22c2 rename to Gateways/FE/projects/.resources/3135175bc59aeac641272dce6c6591302b3f2b9b95d364bac9133a683a659977 index ad6feeb..38a6845 100644 --- a/Gateways/FE/projects/.resources/9e1cc94ddbd51340d05e1803e99fcd6009564f16ebf14a74d6432f2d72bf22c2 +++ b/Gateways/FE/projects/.resources/3135175bc59aeac641272dce6c6591302b3f2b9b95d364bac9133a683a659977 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/93ba3176baf0bd9ebeec4f5b54492a8d7c4ff02515c0876943405803a623820d b/Gateways/FE/projects/.resources/31c9ea0fc01a4502266c35f12f25a464a055996cc16e6343e09dc56f4987ff27 similarity index 82% rename from Gateways/FE/projects/.resources/93ba3176baf0bd9ebeec4f5b54492a8d7c4ff02515c0876943405803a623820d rename to Gateways/FE/projects/.resources/31c9ea0fc01a4502266c35f12f25a464a055996cc16e6343e09dc56f4987ff27 index d8436cd..a400ccf 100644 --- a/Gateways/FE/projects/.resources/93ba3176baf0bd9ebeec4f5b54492a8d7c4ff02515c0876943405803a623820d +++ b/Gateways/FE/projects/.resources/31c9ea0fc01a4502266c35f12f25a464a055996cc16e6343e09dc56f4987ff27 @@ -3,7 +3,6 @@ "tabsConfig": { "tabs": [ "Status", - "Control", "Config", "Trend", "Meta", @@ -15,14 +14,8 @@ } }, "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "Breaker", - "tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE1" + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" }, "propConfig": { "custom.tabsConfig": { @@ -69,10 +62,6 @@ "custom.trendConfig": { "persistent": true }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, "params.objectName": { "paramDirection": "input", "persistent": true @@ -82,7 +71,12 @@ "persistent": true } }, - "props": {}, + "props": { + "defaultSize": { + "height": 699, + "width": 703 + } + }, "root": { "children": [ { @@ -113,13 +107,20 @@ }, "type": "property" } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Info\u0027)" + }, + "type": "expr" + } } }, "props": { "loading": { "order": "with-parent" - }, - "path": "Library/Templates/Breaker X/Info" + } }, "type": "ia.display.view" }, @@ -157,13 +158,20 @@ }, "type": "property" } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Trends\u0027)" + }, + "type": "expr" + } } }, "props": { "loading": { "order": "with-parent" - }, - "path": "Library/Templates/Trends" + } }, "type": "ia.display.view" }, @@ -197,7 +205,7 @@ "props.path": { "binding": { "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Config\u0027)" }, "type": "expr" } @@ -229,14 +237,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -244,11 +244,16 @@ }, "type": "property" } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Meta\u0027)" + }, + "type": "expr" + } } }, - "props": { - "path": "Library/Templates/Meta" - }, "type": "ia.display.view" }, { @@ -270,14 +275,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -288,50 +285,7 @@ } }, "props": { - "path": "Library/Framework/Tag Notes/View Notes" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Control" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } + "path": "Library/Templates/Framework/Tag Notes/View Notes" }, "type": "ia.display.view" } @@ -362,8 +316,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/3259e0a474be503ad4a2a1c57ef3fda9c20ed4bd66ec797532b8cb9430bcb90c b/Gateways/FE/projects/.resources/3259e0a474be503ad4a2a1c57ef3fda9c20ed4bd66ec797532b8cb9430bcb90c new file mode 100644 index 0000000..d444c8e Binary files /dev/null and b/Gateways/FE/projects/.resources/3259e0a474be503ad4a2a1c57ef3fda9c20ed4bd66ec797532b8cb9430bcb90c differ diff --git a/Gateways/FE/projects/.resources/333003aa1965c67b96343a495744f14eace7d6fda71780d4ce4dc1c65fb2eb92 b/Gateways/FE/projects/.resources/333003aa1965c67b96343a495744f14eace7d6fda71780d4ce4dc1c65fb2eb92 deleted file mode 100644 index 150863f..0000000 --- a/Gateways/FE/projects/.resources/333003aa1965c67b96343a495744f14eace7d6fda71780d4ce4dc1c65fb2eb92 +++ /dev/null @@ -1,980 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "0: No Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[0]", - "value": false - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "1: Low Ambient Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[1]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "2: High Ambient Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[2]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "3: Low Chilled Liquid Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[3]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "4: VSD Initialization Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[4]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "5: Low RTC Battery Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[5]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "6: Invalid Number of Compressors Selected", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[6]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "7: VSD Communications Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[7]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "8: Pre-charge Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[8]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "9: Pre-charge DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[9]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "10: High DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[10]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "11: Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[11]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "12: DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[12]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "13: High VSD Ambien Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[13]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "14: Single Phase Input", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[14]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "15: VSD Power Supply Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[15]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "16: VSD Logic Board Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[16]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "17: Motor Current Overload (Hardware)", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[17]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "18: CT Plug Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[18]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "19: High Harmonic Filter Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[19]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "20: Evap Anti-Freeze Pump Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[20]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "21: Low Heat Exchange Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[21]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "22: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[22]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "23: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[23]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "24: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[24]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "25: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[25]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "26: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[26]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "27: High Discharge Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[27]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "28: High Differential Oil Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[28]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "29: Low Differential Oil Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[29]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "30: Low Suction Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[30]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "31: High Discharge Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[31]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "32: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[32]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "33: Eductor Clog Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[33]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "34: Sensor Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[34]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "35: Low Motor Current", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[35]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "36: High Motor Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[36]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "37: Pre-charge Low DC Bus Voltage Immbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[37]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "38: Pre-charge DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[38]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "39: High DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[39]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "40: Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[40]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "41: DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[41]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "42: High Motor Current", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[42]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "43: Motor Current Overload", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[43]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "44: IGBT Gate Driver Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[44]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "45: High Baseplate Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[45]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "46: Single Phase Input", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[46]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "47: VSD Run Signal Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[47]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "48: High Discharge Press (HPCO)", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[48]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "49: Low Suction Superheat", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[49]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "50: Control Valve Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[50]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "51: Low Discharge Superheat", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[51]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "52: Low Suction PRessure Smart Freeze", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[52]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "53: Isolation Valve Failed to Close Warning", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[53]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "54: Isolation Valve failed to Open Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[54]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "55: High Discharge Pressure Rate", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[55]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "56: Condenser Fan VSD Fault Warning", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[56]", - "value": true - } - ], - "fltCodes": [ - "0: No Fault", - "1: Low Ambient Temperature", - "2: High Ambient Temperature", - "3: Low Chilled Liquid Temperature", - "4: VSD Initialization Failure", - "5: Low RTC Battery Voltage", - "6: Invalid Number of Compressors Selected", - "7: VSD Communications Failure", - "8: Pre-charge Low DC Bus Voltage", - "9: Pre-charge DC Bus Voltage Imbalance", - "10: High DC Bus Voltage", - "11: Low DC Bus Voltage", - "12: DC Bus Voltage Imbalance", - "13: High VSD Ambien Temperature", - "14: Single Phase Input", - "15: VSD Power Supply Fault", - "16: VSD Logic Board Fault", - "17: Motor Current Overload (Hardware)", - "18: CT Plug Fault", - "19: High Harmonic Filter Temperature", - "20: Evap Anti-Freeze Pump Fault", - "21: Low Heat Exchange Temperature", - "22: N/A", - "23: N/A", - "24: N/A", - "25: N/A", - "26: N/A", - "27: High Discharge Pressure", - "28: High Differential Oil Pressure", - "29: Low Differential Oil Pressure", - "30: Low Suction Pressure", - "31: High Discharge Temperature", - "32: N/A", - "33: Eductor Clog Fault", - "34: Sensor Failure", - "35: Low Motor Current", - "36: High Motor Temperature", - "37: Pre-charge Low DC Bus Voltage Immbalance", - "38: Pre-charge DC Bus Voltage Imbalance", - "39: High DC Bus Voltage", - "40: Low DC Bus Voltage", - "41: DC Bus Voltage Imbalance", - "42: High Motor Current", - "43: Motor Current Overload", - "44: IGBT Gate Driver Fault", - "45: High Baseplate Temperature", - "46: Single Phase Input", - "47: VSD Run Signal Fault", - "48: High Discharge Press (HPCO)", - "49: Low Suction Superheat", - "50: Control Valve Fault", - "51: Low Discharge Superheat", - "52: Low Suction PRessure Smart Freeze", - "53: Isolation Valve Failed to Close Warning", - "54: Isolation Valve failed to Open Fault", - "55: High Discharge Pressure Rate", - "56: Condenser Fan VSD Fault Warning", - "57: N/A", - "58: N/A", - "59: N/A", - "60: N/A", - "61: N/A", - "62: N/A" - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "fltCodes": "{view.custom.fltCodes}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tcount \u003d 0\n\ttagPath \u003d value[\u0027tagPath\u0027] #[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[0]\n\tnodes \u003d system.tag.readBlocking(value[\u0027tagPath\u0027])\n\tdecode \u003d system.util.jsonDecode(system.util.jsonEncode(nodes))\n\tvals \u003d decode[0][\u0027value\u0027]\n\tfltCodes \u003d value[\u0027fltCodes\u0027]\n\tlista \u003d zip(vals , fltCodes)\n\t\n\tfor vals, fltCode in lista:\n\t\tif count \u003e\u003d 57:\n\t\t\tbreak\n\t\tinstance \u003d {\n \t\"instanceStyle\": {\n \t\"classes\": \"\"\n \t},\n \t\"instancePosition\": 999,\n \t\"name\": fltCode,\n \t\"value\": vals,\n \t\"tagPath\": tagPath + \u0027[\u0027 + str(count) + \u0027]\u0027,\n \t\"dataType\": \u0027Boolean\u0027,\n \t\"displaySelection\": 0,\n \t\"format\": \"0.0\",\n \t\"isArray\": True,\n \t\"options\": []\n \t}\n \toutput.append(instance)\n \tcount +\u003d 1\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.fltCodes": { - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Config", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "RightColumn" - }, - "position": { - "basis": "100%" - }, - "props": { - "direction": "column", - "style": { - "gap": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "containers/padded-container", - "gap": "10px" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/33716e0531a3ed22ffe6b57d9b94160722adb6b3bae59391f42d43897716f6d9 b/Gateways/FE/projects/.resources/33716e0531a3ed22ffe6b57d9b94160722adb6b3bae59391f42d43897716f6d9 new file mode 100644 index 0000000..75d5d80 --- /dev/null +++ b/Gateways/FE/projects/.resources/33716e0531a3ed22ffe6b57d9b94160722adb6b3bae59391f42d43897716f6d9 @@ -0,0 +1,181 @@ +{ + "custom": { + "allTags": null, + "fltCodes": [ + "0: No Fault", + "1: Low Ambient Temperature", + "2: High Ambient Temperature", + "3: Low Chilled Liquid Temperature", + "4: VSD Initialization Failure", + "5: Low RTC Battery Voltage", + "6: Invalid Number of Compressors Selected", + "7: VSD Communications Failure", + "8: Pre-charge Low DC Bus Voltage", + "9: Pre-charge DC Bus Voltage Imbalance", + "10: High DC Bus Voltage", + "11: Low DC Bus Voltage", + "12: DC Bus Voltage Imbalance", + "13: High VSD Ambien Temperature", + "14: Single Phase Input", + "15: VSD Power Supply Fault", + "16: VSD Logic Board Fault", + "17: Motor Current Overload (Hardware)", + "18: CT Plug Fault", + "19: High Harmonic Filter Temperature", + "20: Evap Anti-Freeze Pump Fault", + "21: Low Heat Exchange Temperature", + "22: N/A", + "23: N/A", + "24: N/A", + "25: N/A", + "26: N/A", + "27: High Discharge Pressure", + "28: High Differential Oil Pressure", + "29: Low Differential Oil Pressure", + "30: Low Suction Pressure", + "31: High Discharge Temperature", + "32: N/A", + "33: Eductor Clog Fault", + "34: Sensor Failure", + "35: Low Motor Current", + "36: High Motor Temperature", + "37: Pre-charge Low DC Bus Voltage Immbalance", + "38: Pre-charge DC Bus Voltage Imbalance", + "39: High DC Bus Voltage", + "40: Low DC Bus Voltage", + "41: DC Bus Voltage Imbalance", + "42: High Motor Current", + "43: Motor Current Overload", + "44: IGBT Gate Driver Fault", + "45: High Baseplate Temperature", + "46: Single Phase Input", + "47: VSD Run Signal Fault", + "48: High Discharge Press (HPCO)", + "49: Low Suction Superheat", + "50: Control Valve Fault", + "51: Low Discharge Superheat", + "52: Low Suction PRessure Smart Freeze", + "53: Isolation Valve Failed to Close Warning", + "54: Isolation Valve failed to Open Fault", + "55: High Discharge Pressure Rate", + "56: Condenser Fan VSD Fault Warning", + "57: N/A", + "58: N/A", + "59: N/A", + "60: N/A", + "61: N/A", + "62: N/A" + ] + }, + "params": { + "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08" + }, + "propConfig": { + "custom.allTags": { + "binding": { + "config": { + "struct": { + "fltCodes": "{view.custom.fltCodes}", + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\tcount \u003d 0\n\ttagPath \u003d value[\u0027tagPath\u0027] #[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[0]\n\tnodes \u003d system.tag.readBlocking(value[\u0027tagPath\u0027])\n\tdecode \u003d system.util.jsonDecode(system.util.jsonEncode(nodes))\n\tvals \u003d decode[0][\u0027value\u0027]\n\tfltCodes \u003d value[\u0027fltCodes\u0027]\n\tlista \u003d zip(vals , fltCodes)\n\t\n\tfor vals, fltCode in lista:\n\t\tif count \u003e\u003d 57:\n\t\t\tbreak\n\t\tinstance \u003d {\n \t\"instanceStyle\": {\n \t\"classes\": \"\"\n \t},\n \t\"instancePosition\": 999,\n \t\"name\": fltCode,\n \t\"value\": vals,\n \t\"tagPath\": tagPath + \u0027[\u0027 + str(count) + \u0027]\u0027,\n \t\"dataType\": \u0027Boolean\u0027,\n \t\"displaySelection\": 0,\n \t\"format\": \"0.0\",\n \t\"isArray\": True,\n \t\"options\": []\n \t}\n \toutput.append(instance)\n \tcount +\u003d 1\n\treturn output", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "custom.fltCodes": { + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": {}, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "struct": { + "allTags": "{view.custom.allTags}", + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Framework/Tag Config", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "RightColumn" + }, + "position": { + "basis": "100%" + }, + "props": { + "direction": "column", + "style": { + "gap": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "containers/padded-container", + "gap": "10px" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7cf2b0ef400afa2b1987be19216a8f23bef9b6700cd1aaaba020c57b1707e87b b/Gateways/FE/projects/.resources/342d6e6c5fcb1a431d9c5b49d3e6f0d826e6f45180c647b3fb7d5831b7f348ca similarity index 97% rename from Gateways/FE/projects/.resources/7cf2b0ef400afa2b1987be19216a8f23bef9b6700cd1aaaba020c57b1707e87b rename to Gateways/FE/projects/.resources/342d6e6c5fcb1a431d9c5b49d3e6f0d826e6f45180c647b3fb7d5831b7f348ca index c3cad46..c454ca1 100644 --- a/Gateways/FE/projects/.resources/7cf2b0ef400afa2b1987be19216a8f23bef9b6700cd1aaaba020c57b1707e87b +++ b/Gateways/FE/projects/.resources/342d6e6c5fcb1a431d9c5b49d3e6f0d826e6f45180c647b3fb7d5831b7f348ca @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/359fe10fe2d29df04d1c1da00a138621eda16162503e36999e35afcc27ec8c7c b/Gateways/FE/projects/.resources/359fe10fe2d29df04d1c1da00a138621eda16162503e36999e35afcc27ec8c7c new file mode 100644 index 0000000..4928309 --- /dev/null +++ b/Gateways/FE/projects/.resources/359fe10fe2d29df04d1c1da00a138621eda16162503e36999e35afcc27ec8c7c @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.1-1-1", + "P6.1-1-2", + "P6.1-1-3", + "P6.1-1-4", + "P6.1-1-5", + "P6.1-1-6", + "P6.1-2-1", + "P6.1-2-2", + "P6.1-2-3", + "P6.1-2-4", + "P6.1-2-5", + "P6.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/35d480d76a18c22c02ce2d668826a1b123ba4ea855fb1623832339119755c168 b/Gateways/FE/projects/.resources/35d480d76a18c22c02ce2d668826a1b123ba4ea855fb1623832339119755c168 new file mode 100644 index 0000000..aedb60b Binary files /dev/null and b/Gateways/FE/projects/.resources/35d480d76a18c22c02ce2d668826a1b123ba4ea855fb1623832339119755c168 differ diff --git a/Gateways/FE/projects/.resources/3723ccfa9c5e1940df1281a731e3948fa4ee960e32914e430687caefb13dc195 b/Gateways/FE/projects/.resources/3723ccfa9c5e1940df1281a731e3948fa4ee960e32914e430687caefb13dc195 new file mode 100644 index 0000000..e0dd1f5 Binary files /dev/null and b/Gateways/FE/projects/.resources/3723ccfa9c5e1940df1281a731e3948fa4ee960e32914e430687caefb13dc195 differ diff --git a/Gateways/FE/projects/.resources/379a28725c1971a3a93f34614eadeec1dd319e9489cb1a69366c377df70e4d0d b/Gateways/FE/projects/.resources/379a28725c1971a3a93f34614eadeec1dd319e9489cb1a69366c377df70e4d0d deleted file mode 100644 index 93df9bb..0000000 --- a/Gateways/FE/projects/.resources/379a28725c1971a3a93f34614eadeec1dd319e9489cb1a69366c377df70e4d0d +++ /dev/null @@ -1,534 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Current Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Current N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Apparent Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Apparent Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Reactive Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Reactive Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Real Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 35, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Real Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Apparent Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Apparent Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Reactive Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Reactive Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Real Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Real Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 36, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CN", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_SES_1A/PQM_Main" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\ttag[\u0027visible\u0027] \u003d True\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - }, - "props.instances[22].visible": { - "binding": { - "config": { - "expression": "False" - }, - "type": "expr" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/381d11adbaa1476adccead9af9c1df036f9aef55b1dd98f1d7c5043dfde67e5a b/Gateways/FE/projects/.resources/381d11adbaa1476adccead9af9c1df036f9aef55b1dd98f1d7c5043dfde67e5a deleted file mode 100644 index 245ba01..0000000 Binary files a/Gateways/FE/projects/.resources/381d11adbaa1476adccead9af9c1df036f9aef55b1dd98f1d7c5043dfde67e5a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/3824d0953fa5242dac5ad97b6ce8d059b5a6037009dc287298b5d273d2aa6960 b/Gateways/FE/projects/.resources/3824d0953fa5242dac5ad97b6ce8d059b5a6037009dc287298b5d273d2aa6960 deleted file mode 100644 index 4d053b3..0000000 --- a/Gateways/FE/projects/.resources/3824d0953fa5242dac5ad97b6ce8d059b5a6037009dc287298b5d273d2aa6960 +++ /dev/null @@ -1,169 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "At Max", - "options": [ - "No", - "Yes" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "At Min", - "options": [ - "No", - "Yes" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Error", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Activate", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input PV", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Out CV", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/CHWBPV_PID_2" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/3ac2da7643e102af65f7513a156bf471059fc554925fe67103bffc79a75d6ee9 b/Gateways/FE/projects/.resources/3ac2da7643e102af65f7513a156bf471059fc554925fe67103bffc79a75d6ee9 new file mode 100644 index 0000000..46d6a80 Binary files /dev/null and b/Gateways/FE/projects/.resources/3ac2da7643e102af65f7513a156bf471059fc554925fe67103bffc79a75d6ee9 differ diff --git a/Gateways/FE/projects/.resources/3b80338a1d6325cf92833566a4ad2d46496ca092a3f1c46f2cff06e10b092256 b/Gateways/FE/projects/.resources/3b80338a1d6325cf92833566a4ad2d46496ca092a3f1c46f2cff06e10b092256 new file mode 100644 index 0000000..14407d4 Binary files /dev/null and b/Gateways/FE/projects/.resources/3b80338a1d6325cf92833566a4ad2d46496ca092a3f1c46f2cff06e10b092256 differ diff --git a/Gateways/FE/projects/.resources/5b272956d949c08851c3012368b4852082982f33b13ce9768229a83326cd9a21 b/Gateways/FE/projects/.resources/3b97bd3954f626630caf75b90375300954e3a4df7f770865341909c5ffc5c078 similarity index 97% rename from Gateways/FE/projects/.resources/5b272956d949c08851c3012368b4852082982f33b13ce9768229a83326cd9a21 rename to Gateways/FE/projects/.resources/3b97bd3954f626630caf75b90375300954e3a4df7f770865341909c5ffc5c078 index 586c790..6ef5784 100644 --- a/Gateways/FE/projects/.resources/5b272956d949c08851c3012368b4852082982f33b13ce9768229a83326cd9a21 +++ b/Gateways/FE/projects/.resources/3b97bd3954f626630caf75b90375300954e3a4df7f770865341909c5ffc5c078 @@ -116,20 +116,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/0a9e5e5e6cca0aedf0521f903676443a8e1cbce190536825ee3a9697f7cf8e12 b/Gateways/FE/projects/.resources/3c260be9ec5b88d83cc3978bea13958268b7013805a01f973dcd270860ac5ad9 similarity index 99% rename from Gateways/FE/projects/.resources/0a9e5e5e6cca0aedf0521f903676443a8e1cbce190536825ee3a9697f7cf8e12 rename to Gateways/FE/projects/.resources/3c260be9ec5b88d83cc3978bea13958268b7013805a01f973dcd270860ac5ad9 index c2526b4..f4d8e9d 100644 --- a/Gateways/FE/projects/.resources/0a9e5e5e6cca0aedf0521f903676443a8e1cbce190536825ee3a9697f7cf8e12 +++ b/Gateways/FE/projects/.resources/3c260be9ec5b88d83cc3978bea13958268b7013805a01f973dcd270860ac5ad9 @@ -418,7 +418,11 @@ }, "radios": [ { + "enabled": true, "selected": true, + "style": { + "classes": "" + }, "text": "Match on ANY", "value": 0 }, @@ -1277,15 +1281,21 @@ ], "data": [ { - "AC1": "Good", - "AC2": "Good", - "DC1": "Good", - "DC2": "Alarm", - "Desc": "Description", - "Room": "Location", - "THA": "Good", - "XA": "Good", - "name": "PNL01" + "style": { + "backgroundColor": "#7266B7", + "color": "#FAFAFB" + }, + "value": { + "AC1": "Good", + "AC2": "Good", + "DC1": "Good", + "DC2": "Alarm", + "Desc": "Description", + "Room": "Location", + "THA": "Good", + "XA": "Good", + "name": "PNL02" + } }, { "AC1": "Good", diff --git a/Gateways/FE/projects/.resources/0d8a0c3e80065c104ba70045326c14ec55629808795f4568ec79281ca4cba68a b/Gateways/FE/projects/.resources/3cdfbfe1bc65cb27b6d802e38bded2313a1c4d3806279433048eeb94a2cd2c47 similarity index 97% rename from Gateways/FE/projects/.resources/0d8a0c3e80065c104ba70045326c14ec55629808795f4568ec79281ca4cba68a rename to Gateways/FE/projects/.resources/3cdfbfe1bc65cb27b6d802e38bded2313a1c4d3806279433048eeb94a2cd2c47 index a522e34..0da58ab 100644 --- a/Gateways/FE/projects/.resources/0d8a0c3e80065c104ba70045326c14ec55629808795f4568ec79281ca4cba68a +++ b/Gateways/FE/projects/.resources/3cdfbfe1bc65cb27b6d802e38bded2313a1c4d3806279433048eeb94a2cd2c47 @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/3d5c79a2bcfa0bf8d95463c9a96562bb5cbbbf6a49080cfeb9227f19e1b2ad97 b/Gateways/FE/projects/.resources/3d5c79a2bcfa0bf8d95463c9a96562bb5cbbbf6a49080cfeb9227f19e1b2ad97 deleted file mode 100644 index de003e8..0000000 Binary files a/Gateways/FE/projects/.resources/3d5c79a2bcfa0bf8d95463c9a96562bb5cbbbf6a49080cfeb9227f19e1b2ad97 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/3e61dc19c8552f2f29ab70ccdc708f45196178cadb6014c9d38a44ce9e851c48 b/Gateways/FE/projects/.resources/3e61dc19c8552f2f29ab70ccdc708f45196178cadb6014c9d38a44ce9e851c48 deleted file mode 100644 index 9ac65da..0000000 Binary files a/Gateways/FE/projects/.resources/3e61dc19c8552f2f29ab70ccdc708f45196178cadb6014c9d38a44ce9e851c48 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/41244d284f9e6003168fa9958478645d73de9a5eef0ff87cd78c5ecce7c56ec4 b/Gateways/FE/projects/.resources/41244d284f9e6003168fa9958478645d73de9a5eef0ff87cd78c5ecce7c56ec4 new file mode 100644 index 0000000..e72de74 --- /dev/null +++ b/Gateways/FE/projects/.resources/41244d284f9e6003168fa9958478645d73de9a5eef0ff87cd78c5ecce7c56ec4 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.3-1-1", + "P2.3-1-2", + "P2.3-1-3", + "P2.3-1-4", + "P2.3-1-5", + "P2.3-1-6", + "P2.3-2-1", + "P2.3-2-2", + "P2.3-2-3", + "P2.3-2-4", + "P2.3-2-5", + "P2.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 7 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/414d83eaba0be6e8c7a212b82bb31f0b76cc552ecab026b9cb6869a27bcfe708 b/Gateways/FE/projects/.resources/414d83eaba0be6e8c7a212b82bb31f0b76cc552ecab026b9cb6869a27bcfe708 deleted file mode 100644 index 9cbbc6f..0000000 Binary files a/Gateways/FE/projects/.resources/414d83eaba0be6e8c7a212b82bb31f0b76cc552ecab026b9cb6869a27bcfe708 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/42ba187e7e21c538678f68911be979ad6265bb8e5f37e2e3f1b64ceb07e37d72 b/Gateways/FE/projects/.resources/42ba187e7e21c538678f68911be979ad6265bb8e5f37e2e3f1b64ceb07e37d72 new file mode 100644 index 0000000..51993b2 Binary files /dev/null and b/Gateways/FE/projects/.resources/42ba187e7e21c538678f68911be979ad6265bb8e5f37e2e3f1b64ceb07e37d72 differ diff --git a/Gateways/FE/projects/.resources/439c02c857bbb0a8abc52451342c1e9ba759d15e4123aaaefd192cde95e28045 b/Gateways/FE/projects/.resources/439c02c857bbb0a8abc52451342c1e9ba759d15e4123aaaefd192cde95e28045 new file mode 100644 index 0000000..6b17c90 Binary files /dev/null and b/Gateways/FE/projects/.resources/439c02c857bbb0a8abc52451342c1e9ba759d15e4123aaaefd192cde95e28045 differ diff --git a/Gateways/FE/projects/.resources/5dfa4723a87103783b1ee4bdb6fd035f5d87edbe5cb43f92a3e637cd82a9a652 b/Gateways/FE/projects/.resources/439efd1b108923734fada3890fe12cc14eb32d1d97cb325f0467bf23d1fe421c similarity index 97% rename from Gateways/FE/projects/.resources/5dfa4723a87103783b1ee4bdb6fd035f5d87edbe5cb43f92a3e637cd82a9a652 rename to Gateways/FE/projects/.resources/439efd1b108923734fada3890fe12cc14eb32d1d97cb325f0467bf23d1fe421c index 9aa5750..b7a4451 100644 --- a/Gateways/FE/projects/.resources/5dfa4723a87103783b1ee4bdb6fd035f5d87edbe5cb43f92a3e637cd82a9a652 +++ b/Gateways/FE/projects/.resources/439efd1b108923734fada3890fe12cc14eb32d1d97cb325f0467bf23d1fe421c @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -386,7 +379,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 1 + "currentTabIndex": 3 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/43c0f1088a53d188ad4271a00502c72ec35f8a5c0cb8b3de83b441b0fc880822 b/Gateways/FE/projects/.resources/43c0f1088a53d188ad4271a00502c72ec35f8a5c0cb8b3de83b441b0fc880822 deleted file mode 100644 index 5d65c28..0000000 Binary files a/Gateways/FE/projects/.resources/43c0f1088a53d188ad4271a00502c72ec35f8a5c0cb8b3de83b441b0fc880822 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/4400c50e85e68d3aeaa59d000d1777f61698846926137eb783ec2b743967be18 b/Gateways/FE/projects/.resources/4400c50e85e68d3aeaa59d000d1777f61698846926137eb783ec2b743967be18 new file mode 100644 index 0000000..735b3f5 Binary files /dev/null and b/Gateways/FE/projects/.resources/4400c50e85e68d3aeaa59d000d1777f61698846926137eb783ec2b743967be18 differ diff --git a/Gateways/FE/projects/.resources/44a86ec8532f8ffae4e269a72b1f61be7908bb569b56f4882e7ba854199c7bab b/Gateways/FE/projects/.resources/44a86ec8532f8ffae4e269a72b1f61be7908bb569b56f4882e7ba854199c7bab new file mode 100644 index 0000000..99346c3 --- /dev/null +++ b/Gateways/FE/projects/.resources/44a86ec8532f8ffae4e269a72b1f61be7908bb569b56f4882e7ba854199c7bab @@ -0,0 +1,76 @@ +# List of enabled gateways, +gtwys = ['[default]'] + +def get_tagpaths(udt_type): + fltr = {"typeId":udt_type, "tagType":"UdtInstance", "recursive":True} + paths_list = [] + for location in equipment.common.gtwys: + results = system.tag.browse(location, fltr) + for result in results: + paths_list.append(result['fullPath']) + return paths_list + +def update_tagpaths(data_tagpath, udt_type): + raw_paths = get_tagpaths(udt_type) + paths = [str(p) for p in raw_paths] + document = {'paths':paths} + system.tag.writeBlocking(data_tagpath + '/Paths', document) + +def update_data(data_tagpath, sub_paths_map): + ''' + config_tag_path: Path to the memory tag that contains the JSON with all the paths + sub_paths_map: Dictionary that maps all the sub_paths with the tag to be used in the table. + ''' + logger = system.util.getLogger("DataTableUpdates") + try: + # 1. Read the list of tagpaths. + read_config = system.tag.readBlocking(data_tagpath + '/Paths') + raw_data = read_config[0].value + if not raw_data or 'paths' not in raw_data: + logger.warn("Empty configuration: %s" % data_tagpath) + return + # Order the keys to make sure the reading loop is consistent + paths_list = raw_data.get('paths', []) + col_names = sub_paths_map.keys() + + # 2. Build the reading list + read_paths = [] + for path in paths_list: + for col in col_names: + read_paths.append(path + sub_paths_map[col]) + # 3. Read all the values in one execution + reads = system.tag.readBlocking(read_paths) + + # 4. Process the result + data = [] + num_cols = len(col_names) + for device_idx, path in enumerate(paths_list): + item = {'device': path.split('/')[-1], 'path': path} + for col_idx, col in enumerate(col_names): + global_idx = (device_idx * num_cols) + col_idx + tag_value = reads[global_idx].value + + + item[col] = tag_value if tag_value is not None else "0" + data.append(item) + + document = {'data':data} + system.tag.writeBlocking(data_tagpath + '/Data', document) + except Exception as e: + logger.error("Fail to update data (%s): %s" % (data_tagpath, str(e))) + +def style_table(data_dic): + output = [] + for element in data_dic: + try: + severity = int(element.get('Alm', 0 )) + except (TypeError, ValueError): + severity = 0 + item = { + "value": element, + "style": {} + } + if severity > 0: + item['style'] = alarm.summary.get_severity_style(severity) + output.append(item) + return output \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/44cfbabaf0798a2e7a108dff26d8f04a50e693caf173f1c7d0dcf514684cdce7 b/Gateways/FE/projects/.resources/44cfbabaf0798a2e7a108dff26d8f04a50e693caf173f1c7d0dcf514684cdce7 deleted file mode 100644 index 9d3b654..0000000 Binary files a/Gateways/FE/projects/.resources/44cfbabaf0798a2e7a108dff26d8f04a50e693caf173f1c7d0dcf514684cdce7 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/450425cfcce2c766dfd68c260d17801a8f8c27a1812ba5f5715d1ea4d492a91a b/Gateways/FE/projects/.resources/450425cfcce2c766dfd68c260d17801a8f8c27a1812ba5f5715d1ea4d492a91a deleted file mode 100644 index 918e355..0000000 Binary files a/Gateways/FE/projects/.resources/450425cfcce2c766dfd68c260d17801a8f8c27a1812ba5f5715d1ea4d492a91a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/46f0f089976c46fdabb21ee9e43b92bad3cf0db00adfd8cc3e109eee481adc29 b/Gateways/FE/projects/.resources/46f0f089976c46fdabb21ee9e43b92bad3cf0db00adfd8cc3e109eee481adc29 new file mode 100644 index 0000000..8b4daf1 Binary files /dev/null and b/Gateways/FE/projects/.resources/46f0f089976c46fdabb21ee9e43b92bad3cf0db00adfd8cc3e109eee481adc29 differ diff --git a/Gateways/FE/projects/.resources/488d635b256fe6af6bb58b219fd574ebe83b4a9688b93beb1597c951b56cee48 b/Gateways/FE/projects/.resources/488d635b256fe6af6bb58b219fd574ebe83b4a9688b93beb1597c951b56cee48 new file mode 100644 index 0000000..6eef2b1 Binary files /dev/null and b/Gateways/FE/projects/.resources/488d635b256fe6af6bb58b219fd574ebe83b4a9688b93beb1597c951b56cee48 differ diff --git a/Gateways/FE/projects/.resources/4921b44589f874d6109651f3397b8232a70a3a21e3ed6a1165e52b804b7ed0eb b/Gateways/FE/projects/.resources/4921b44589f874d6109651f3397b8232a70a3a21e3ed6a1165e52b804b7ed0eb deleted file mode 100644 index 7f274a9..0000000 Binary files a/Gateways/FE/projects/.resources/4921b44589f874d6109651f3397b8232a70a3a21e3ed6a1165e52b804b7ed0eb and /dev/null differ diff --git a/Gateways/FE/projects/.resources/4a3fcc1c7b4b17cdd5154666db2861f53ee6c1f2ad617d6dcc43368e48f6cf1a b/Gateways/FE/projects/.resources/4a3fcc1c7b4b17cdd5154666db2861f53ee6c1f2ad617d6dcc43368e48f6cf1a deleted file mode 100644 index ad1a55a..0000000 Binary files a/Gateways/FE/projects/.resources/4a3fcc1c7b4b17cdd5154666db2861f53ee6c1f2ad617d6dcc43368e48f6cf1a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/4bc42ffa1453714bc569e1ba4b8a122bcc926a0e0be305f0b119a476f9ee3692 b/Gateways/FE/projects/.resources/4bc42ffa1453714bc569e1ba4b8a122bcc926a0e0be305f0b119a476f9ee3692 deleted file mode 100644 index 1389b28..0000000 --- a/Gateways/FE/projects/.resources/4bc42ffa1453714bc569e1ba4b8a122bcc926a0e0be305f0b119a476f9ee3692 +++ /dev/null @@ -1,22 +0,0 @@ -from com.inductiveautomation.ignition.common.alarming.config.CommonAlarmProperties import EventTime -priorityBGColors = {"Diagnostic":"#FFFFFF", "Low":"#7266B7", "Medium":"#F4B834", "High":"#DE7C33", "Critical":"#E22028"} -priorityTextColors = {"Diagnostic":"#222222", "Low":"#FAFAFB", "Medium":"#FAFAFB", "High":"#FAFAFB", "Critical":"#FAFAFB"} - -def getTop3Alarms(): -# import time -# start= time.time() - res= [] - - activeAlarms = system.alarm.queryStatus([], ["ActiveUnacked"], ["*"], [], []) - sortedAlarms = system.dataset.toPyDataSet(system.dataset.sort(activeAlarms.getDataset(),3,False)) - - formatAlarms = [{'eventid':str(alm.EventId), "label":alm.get('label'), "dispPath":alm.getDisplayPathOrSource(), "eventtime":alm.getActiveData().get(EventTime), "priority":str(alm.getPriority())} for alm in activeAlarms] - top3EventIDs = [alm["EventId"] for alm in sortedAlarms[:3]] - for eid in top3EventIDs: - for alm in formatAlarms: - if alm["eventid"] == eid: - res.append({"value":{"dispPath":alm["dispPath"],"label":alm["label"]}, "style":{"backgroundColor":priorityBGColors[alm["priority"]], - "color":priorityTextColors[alm["priority"]]}}) - break -# system.perspective.print("alarm update duration %s"%(time.time()- start)) - return res \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/4d291e32d43eb74b94eb0e3564c327ea0411742009390a80b28031642b08f218 b/Gateways/FE/projects/.resources/4d291e32d43eb74b94eb0e3564c327ea0411742009390a80b28031642b08f218 new file mode 100644 index 0000000..fa6fe82 --- /dev/null +++ b/Gateways/FE/projects/.resources/4d291e32d43eb74b94eb0e3564c327ea0411742009390a80b28031642b08f218 @@ -0,0 +1,97 @@ +{ + "custom": {}, + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 636, + "width": 1378 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table_0" + }, + "position": { + "height": 575, + "width": 1331, + "y": 39.5 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "struct": { + "timer": "now(10000)" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\n from collections import OrderedDict\n\n \"\"\"\n Populates a Perspective table with ordered columns.\n Ensures \u0027Device\u0027 column appears first using OrderedDict.\n \"\"\"\n\n # Hardcoded base path and device list\n basePath \u003d value.get(\"basePath\")\n devices1 \u003d {\n \t\"VM_HS1_HS2\": \"[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1\",\n \"VM_R1_R3\": \"[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1\",\n \"VM_R2_R4\": \"[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2\",\n \"VM_P1_1_P1_2\": \"[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2\",\n \"VM_P1_3\": \"[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3\",\n #\"VM_P2_1_P2_2\": \"[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2\",\n #\"VM_P2_3\": \"[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3\",\n #\"VM_P3_1_P3_2\": \"[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2\",\n #\"VM_P3_3\": \"[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3\",\n \"VM_P4_1_P4_2\": \"[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2\",\n \"VM_P4_3_P4_4\":\"[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4\",\n #\"VM_P5_1_P5_2\": \"[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2\",\n #\"VM_P5_3\": \"[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3\",\n #\"VM_P6_1_P6_2\": \"[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2\",\n #\"VM_P6_3_P6_4\": \"[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4\"\n }\n devices \u003d OrderedDict(sorted(devices1.items()))\n # Define columns and corresponding tag suffixes\n tagSuffixes \u003d {\n \"Number of Strings in System\": \"Number of Strings in System\",\n \"Avg Battery Current\": \"Avg Battery Current\",\n \"Avg Battery Temperature\": \"Avg Battery Temperature\",\n \"Avg Battery Voltage\": \"Avg Battery Voltage\",\n \"Max Battery Current\": \"Max Battery Current\",\n \"Max Battery Temperature\": \"Max Battery Temperature\",\n \"Max Battery Voltage\": \"Max Battery Voltage\",\n \"Min Battery Current\": \"Min Battery Current\",\n \"Min Battery Temperature\": \"Min Battery Temperature\",\n \"Min Battery Voltage\": \"Min Battery Voltage\"\n }\n\n # Build tag paths\n tagPaths \u003d []\n for device in devices.values():\n for suffix in tagSuffixes.values():\n tagPaths.append(device + \"/\" + suffix)\n\n # Read all tag values\n results \u003d system.tag.readBlocking(tagPaths)\n\n # Build table data with ordered columns\n data \u003d []\n i \u003d 0\n for device in devices.keys():\n row \u003d OrderedDict()\n row[\"Device\"] \u003d device\n for columnName in tagSuffixes.keys():\n row[columnName] \u003d results[i].value\n i +\u003d 1\n data.append(row)\n\n return data", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "type": "ia.display.table" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Virtual Machines", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "height": 42, + "width": 159, + "x": 17 + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -165, + "y": -31 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/4d6ae4d0ca91ae29d02e59d8ddabf7538e3d893e981272de8a29a267e9c335f5 b/Gateways/FE/projects/.resources/4d6ae4d0ca91ae29d02e59d8ddabf7538e3d893e981272de8a29a267e9c335f5 deleted file mode 100644 index 752deb7..0000000 Binary files a/Gateways/FE/projects/.resources/4d6ae4d0ca91ae29d02e59d8ddabf7538e3d893e981272de8a29a267e9c335f5 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/4da33715fe568283479827ddab5b033663444ddd04454227e733aee67583e52d b/Gateways/FE/projects/.resources/4da33715fe568283479827ddab5b033663444ddd04454227e733aee67583e52d new file mode 100644 index 0000000..91b7708 Binary files /dev/null and b/Gateways/FE/projects/.resources/4da33715fe568283479827ddab5b033663444ddd04454227e733aee67583e52d differ diff --git a/Gateways/FE/projects/.resources/50ac4f28be5d360dacd1e118c0bdd2e0beead97cc5838d505e8ebf5f734ad5c8 b/Gateways/FE/projects/.resources/50ac4f28be5d360dacd1e118c0bdd2e0beead97cc5838d505e8ebf5f734ad5c8 new file mode 100644 index 0000000..060a3e5 --- /dev/null +++ b/Gateways/FE/projects/.resources/50ac4f28be5d360dacd1e118c0bdd2e0beead97cc5838d505e8ebf5f734ad5c8 @@ -0,0 +1,849 @@ +{ + "custom": { + "refreshTimerInterval": "60000" + }, + "params": { + "deviceType": "Battery", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/Battery" + }, + "propConfig": { + "custom.automaticUpdateEnabled": { + "binding": { + "config": { + "bidirectional": true, + "coalesce": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Enable Automatic Refresh" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.deviceData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Device Data" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.isLoaded": { + "binding": { + "config": { + "struct": { + "deviceData": "{view.custom.deviceData}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "True", + "type": "expression" + } + ], + "type": "expr-struct" + }, + "persistent": false + }, + "custom.lastUpdate": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Last Update" + }, + "transforms": [ + { + "expression": "//dateFormat({value}, \"MM/dd, hh:mm:ss aa\")\r\ndateFormat(dateArithmetic({value}, -7, \"hour\"), \"MM/dd, hh:mm:ss aa\")", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": false + }, + "custom.refreshTimerInterval": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.Refresh Timer Interval" + }, + "type": "tag" + }, + "persistent": true + }, + "custom.tableColumns": { + "binding": { + "config": { + "path": "view.custom.tagsToRead" + }, + "transforms": [ + { + "code": "\timport copy, time\n\t\n\t# Convert a string to camelCase. We do this because Ignition doesn\u0027t like\n\t# keys being spaced strings. (i.e \u0027Discharge Air Temperature\u0027)\n\tdef to_camel_case(text):\n\t words \u003d text.split()\n\t return words[0].lower() + \u0027\u0027.join(word.capitalize() for word in words[1:])\n\t \n\t# Define the default configuration for a column.\n\tbase_config \u003d {\n\t \"field\": \"\",\n\t \"visible\": True,\n\t \"editable\": False,\n\t \"render\": \"auto\",\n\t \"justify\": \"auto\",\n\t \"align\": \"center\",\n\t \"resizable\": True,\n\t \"sortable\": True,\n\t \"sort\": \"none\",\n\t \"filter\": {\n\t \"enabled\": False,\n\t \"visible\": \"on-hover\",\n\t \"string\": {\"condition\": \"\", \"value\": \"\"},\n\t \"number\": {\"condition\": \"\", \"value\": \"\"},\n\t \"boolean\": {\"condition\": \"\"},\n\t \"date\": {\"condition\": \"\", \"value\": \"\"}\n\t },\n\t \"viewPath\": \"\",\n\t \"viewParams\": {},\n\t \"boolean\": \"checkbox\",\n\t \"number\": \"value\",\n\t \"progressBar\": {\n\t \"max\": 100,\n\t \"min\": 0,\n\t \"bar\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"track\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"value\": {\n\t \"enabled\": True,\n\t \"format\": \"0,0.##\",\n\t \"justify\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t }\n\t },\n\t \"toggleSwitch\": {\n\t \"color\": {\"selected\": \"\", \"unselected\": \"\"}\n\t },\n\t \"nullFormat\": {\n\t \"includeNullStrings\": False,\n\t \"strict\": False,\n\t \"nullFormatValue\": \"\"\n\t },\n\t \"numberFormat\": \"0,0.##\",\n\t \"dateFormat\": \"MM/DD/YYYY\",\n\t \"width\": \"\",\n\t \"strictWidth\": False,\n\t \"header\": {\n\t \"title\": \"nothingBurger\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"footer\": {\n\t \"title\": \"\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"style\": {\"classes\": \"\"}\n\t}\n\t\n\tres \u003d []\n\tfor idx, column in enumerate(value): # Expects \u0027CHW Valve Command\u0027\n\t\tconfig \u003d copy.deepcopy(base_config)\n\t\t\n\t\t# Convert \"Meta/Building\" -\u003e \"Building\"\n\t\tif \u0027/\u0027 in column:\n\t\t\tcolumn \u003d column.split(\u0027/\u0027)[-1] \n\t\t\t\n\t\tif \u0027Parameters\u0027 in column:\n\t\t\tcolumn \u003d column[10:]\n\t\t\t\n\t\tif idx \u003d\u003d 0: # Set extra width to the device name column.\n\t\t\tconfig[\u0027width\u0027] \u003d 120\n\t\t\t\n\t\t# Update the column data and header to the tagToRead.\n\t\tconfig[\u0027field\u0027] \u003d to_camel_case(column) # \"CHW Valve Command\" -\u003e \"chwValveCommand\"\n\t\tconfig[\u0027header\u0027][\u0027title\u0027] \u003d column\n\t\tres.append(config)\n\n\treturn res\n\t", + "type": "script" + } + ], + "type": "property" + }, + "persistent": false + }, + "custom.tagsToRead": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Tags To Read" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.updateTableTimer": { + "binding": { + "config": { + "expression": "now(15000) // This updates the binding every fifteen seconds, which triggers the on-change script." + }, + "enabled": false, + "transforms": [ + { + "expression": "dateFormat({value}, \"h:mm:ss a\")", + "type": "expression" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.automaticUpdateEnabled:\n\t\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "persistent": false + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Location/Table.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "output", + "persistent": false + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1584, + "width": 1303 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Batteries", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "updateLabel" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.custom.lastUpdate" + }, + "transforms": [ + { + "expression": "concat(\"Last Update: \", {value})", + "type": "expression" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027flashTimerText\u0027, {})" + }, + "persistent": true + } + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "Last Update: 01/07, 10:24:52 AM", + "style": { + "alignContent": "center", + "classes": "labels/text-sm, Animation/fadeToBlack_B", + "cursor": "pointer", + "fontWeight": "400", + "opacity": 0.5, + "paddingRight": "0.25rem", + "textAlign": "right" + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "size": "large" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Device List", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "justify": "space-between", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "SmallHeader" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "BreakpointContainer" + }, + "position": { + "basis": "2.5rem", + "shrink": 0 + }, + "props": { + "breakpoint": 480 + }, + "type": "ia.container.breakpt" + }, + { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "props": { + "source": "Loading...", + "style": { + "classes": "Animation/loading labels/text-xl", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Progress" + }, + "props": { + "bar": { + "color": "#D5D5D5" + }, + "mode": "indeterminate", + "style": { + "height": "0.5rem", + "width": "12rem" + }, + "track": { + "color": "#AAAAAA" + } + }, + "type": "ia.display.progress" + } + ], + "meta": { + "name": "Loading" + }, + "position": { + "basis": "100%", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.isLoaded}" + }, + "type": "expr" + } + } + }, + "props": { + "alignItems": "center", + "direction": "column", + "justify": "center", + "style": { + "backgroundColor": "#d9d8d4", + "gap": "1rem" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onRowClick": { + "config": { + "script": "\ttagPath \u003d str(self.view.params.selectedDeviceTagpath)\n\t\n\t# Retrieve device name from tagpath, accounting for /1 and nested UDTs.\n\tnoTagProvider \u003d tagPath.partition(\u0027]\u0027)[2]\n\tstart, _, after \u003d noTagProvider.partition(\u0027PHXA2\u0027)\n\tmiddle, _, _ \u003d after.rpartition(\u0027/\u0027)\n\t\n\tif middle:\n\t\tsystem.perspective.sendMessage(\u0027updateFloorplanDeviceRoom\u0027, \u0027PHXA2%s\u0027 % middle)\n\telse:\n\t\tsystem.perspective.sendMessage(\u0027updateFloorplanDeviceRoom\u0027, \u0027PHXA2%s\u0027 % after)" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onRowDoubleClick": { + "config": { + "script": "\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + }, + "persistent": false + }, + "props.columns": { + "binding": { + "config": { + "path": "view.custom.tableColumns" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "path": "view.custom.deviceData" + }, + "type": "property" + } + } + }, + "props": { + "cells": { + "style": { + "cursor": "pointer" + } + }, + "emptyMessage": { + "noData": { + "text": "N/A" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "rows": { + "striped": { + "color": { + "even": "#D5D5D5" + } + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Location" + }, + "position": { + "basis": "33%", + "grow": 1 + }, + "props": { + "alignContent": "space-between", + "direction": "column", + "justify": "space-around", + "style": { + "gap": "0.25rem", + "height": "100%", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "updateTableData", + "pageScope": true, + "script": "\t# If the data hasn\u0027t loaded, don\u0027t refresh.\n\tif not self.view.custom.isLoaded:\n\t\treturn\n\t\n\t# Write to the manual refresh command and refresh the time.\n\tsystem.tag.writeBlocking(self.view.params.tagPath + \u0027/Config/Manual Refresh Command\u0027, True)\n#\tcurrentTime \u003d \u0027Last Update: *{}*\u0027.format(system.date.format(system.date.now(), \"hh:mm:ss aa\"))\n#\tself.getChild(\"Location\").getChild(\"FlexContainer\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.source \u003d currentTime\n\t\n#\t\t\n#\ttry:\n#\t\tself.view.refreshBinding(\u0027custom.deviceData\u0027)\n#\texcept:\n#\t\tsystem.perspective.print(\u0027Device data binding disabled.\u0027)", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "flashTimerText", + "pageScope": true, + "script": "\t\"\"\"\n\t\tHelper function called by the \u0027Last Update:\u0027 text to flash when it updates.\n\t\"\"\"\n\tclasses \u003d self.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes\n\t\n\t# Refresh the animation by toggling between two identical classes.\n\tif \u0027fadeToBlack_A\u0027 in classes:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_B\"\n\telse:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_A\"", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/516f364c708e7f9cac69d301014f6c79aaf9c195a5788dd3c8900928b2b3fb6e b/Gateways/FE/projects/.resources/516f364c708e7f9cac69d301014f6c79aaf9c195a5788dd3c8900928b2b3fb6e new file mode 100644 index 0000000..513b11c --- /dev/null +++ b/Gateways/FE/projects/.resources/516f364c708e7f9cac69d301014f6c79aaf9c195a5788dd3c8900928b2b3fb6e @@ -0,0 +1,174 @@ +{ + "custom": { + "batt": "1_1", + "provider": "PHXA2_IG_DH01", + "room": "P1_1_P1_2", + "string": "1" + }, + "params": { + "deviceType": "Jar", + "selectedDeviceTagpath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1/Jars/", + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1" + }, + "propConfig": { + "custom.area": { + "binding": { + "config": { + "expression": "split(\r\n replace({view.params.tagPath}, \r\n substring({view.params.tagPath}, 0, indexOf({view.params.tagPath}, \"]\") + 1), \r\n \"\"\r\n ), \r\n \"/\"\r\n)[0]\r\n" + }, + "type": "expr" + } + }, + "custom.batt": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Remove provider (e.g., [PHXA2_IG_COMN])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Split the rest of the tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Check if we have at least 3 parts\n if len(parts) \u003e\u003d 3:\n return parts[2] # This is the 3rd segment (index 2)\n else:\n return \"\" # Fallback if structure is too short", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.provider": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Make sure it starts with a provider in square brackets\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n return tagPath[1:closing_index] # Extract between [ and ]\n \n # If no provider is found, return empty string or fallback\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.room": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Step 1: Remove provider (e.g., [PHXA2_IG_DH01])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Step 2: Split the remaining tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Step 3: Get the subfolder part (usually at index 1)\n if len(parts) \u003e\u003d 2:\n subfolder \u003d parts[1]\n\n # Step 4: Find \"VM_\" and return everything after it\n vm_index \u003d subfolder.find(\"VM_\")\n if vm_index !\u003d -1:\n return subfolder[vm_index + 3:] # +3 to skip over \"VM_\"\n\n # Fallback if structure doesn\u0027t match\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Remove the tag provider (e.g., [PHXA2_IG_COMN])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Split the remaining tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Return the last segment, if it exists\n if parts:\n return parts[-1]\n else:\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Table_0.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "//{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]\r\n\u0027[\u0027+{view.custom.provider}+\u0027]\u0027+{view.custom.area}+\u0027/PHXA2_UPS_BATT_VM_\u0027+{view.custom.room}+\u0027/\u0027+{view.custom.batt}+\u0027/Strings/\u0027+{view.custom.string}+\u0027/Jars/\u0027+({/root/Table_0.props.selection.selectedRow}+1)", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1357, + "width": 1024 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table_0" + }, + "position": { + "height": 1287, + "width": 965, + "y": -0.5 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "struct": { + "key": "{view.params.tagPath}", + "path": "{view.custom.area}+\"/PHXA2_UPS_BATT_VM_\"+{view.custom.room}+\"/\"+{view.custom.batt}+\"/Strings/\"+{view.custom.string}+\"/Jars*\"", + "provider": "{view.custom.provider}", + "timer": "now(10000)" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\t\n\n\tprovider \u003d value[\u0027provider\u0027]\n\tlimit \u003d 1000\n\t\n\tquery \u003d {\n\t \"options\": {\n\t \"includeUdtMembers\": True,\n\t \"includeUdtDefinitions\": False\n\t },\n\t \"condition\": {\n\t \"path\": value[\u0027path\u0027],\n\t \"tagType\": \"AtomicTag\",\n\t \"attributes\": {\n\t \"values\": [],\n\t \"requireAll\": True\n\t },\n\t \"valueSource\": \"opc\"\n\t },\n\t \"returnProperties\": [\n\t \"InstanceName\",\n\t \"name\"\n\t ]\n\t}\n\t\n\t# Limited to 100 rows. Use continuationPoint functionality to continue from last result, \n\t# or remove limit for full results.\n\tresults \u003d system.tag.query(provider, query, limit)\n\tarr \u003d []\n\t\n\td \u003d {}\n\t\n\tfor result in results:\n\t\t#print result[\u0027InstanceName\u0027] + \u0027/\u0027 + result[\u0027name\u0027] + \u0027/\u0027 + str(result[\u0027value\u0027].value)\n\t\t\n\t\t\n\t\t#js \u003d {\n\t #\t\"Jar\": result[\u0027InstanceName\u0027],\n\t #\t\"Voltage\": \"United States\",\n\t #\t\"Temperature\": 77271,\n\t #\t\"Ohmic Value\": \u0027C\u0027\n\t #}\n\t index \u003d int(result[\u0027InstanceName\u0027])\n\t if index not in d:\n\t \n\t\t\td[index] \u003d {}\n\t\t\td[index][\u0027Jar ID\u0027] \u003d index\n\t\t\t\n\t \n\t if result[\u0027name\u0027] \u003d\u003d \u0027Voltage\u0027:\n\t \td[index][\u0027Voltage\u0027] \u003d result[\u0027value\u0027].value\n\t elif result[\u0027name\u0027] \u003d\u003d \u0027Temperature\u0027:\n\t \td[index][\u0027Temperature\u0027] \u003d result[\u0027value\u0027].value\n\t elif result[\u0027name\u0027] \u003d\u003d \u0027Ohmic Value\u0027:\n\t \td[index][\u0027Ohmic Value\u0027] \u003d result[\u0027value\u0027].value\n\t\t\n\t#print d\n\t\n\tfor x in d:\n\t\t#print d[x]\n\t\tarr.append(d[x])\n\t\t\n\treturn arr", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "pager": { + "activeOption": 50 + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -165, + "y": -31 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/51a51194f85f9e56add6922dd8237c7d27a373b73ed1a3a1c2115b190cdd87ba b/Gateways/FE/projects/.resources/51a51194f85f9e56add6922dd8237c7d27a373b73ed1a3a1c2115b190cdd87ba new file mode 100644 index 0000000..c4105e6 --- /dev/null +++ b/Gateways/FE/projects/.resources/51a51194f85f9e56add6922dd8237c7d27a373b73ed1a3a1c2115b190cdd87ba @@ -0,0 +1,180 @@ +{ + "custom": { + "allTags": [ + { + "dataType": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Number of Strings in System" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Temperature" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Temperature" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Temperature" + } + ] + }, + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.allTags": { + "binding": { + "config": { + "struct": { + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 628 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "struct": { + "allTags": "{view.custom.allTags}", + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\t\t\n\treturn output", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/52acfcfc7574c60016c849084b52bd9511e1aab45a1abde9402f0165db510bb4 b/Gateways/FE/projects/.resources/52acfcfc7574c60016c849084b52bd9511e1aab45a1abde9402f0165db510bb4 deleted file mode 100644 index 6ba658e..0000000 Binary files a/Gateways/FE/projects/.resources/52acfcfc7574c60016c849084b52bd9511e1aab45a1abde9402f0165db510bb4 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/52ad5f12f4e76bad703adea44c15105fab6138897d3b33e0227b5e15f35133d9 b/Gateways/FE/projects/.resources/52ad5f12f4e76bad703adea44c15105fab6138897d3b33e0227b5e15f35133d9 deleted file mode 100644 index cbf1b57..0000000 --- a/Gateways/FE/projects/.resources/52ad5f12f4e76bad703adea44c15105fab6138897d3b33e0227b5e15f35133d9 +++ /dev/null @@ -1,152 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm_Percentage", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Dropping", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Rising", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Val", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1152/SATB1_RM1152_TL200_DHT01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/533f4c2f49ac6b677b275a81ce75e3c715d9c93a98b0d57e2453fc6a25944608 b/Gateways/FE/projects/.resources/533f4c2f49ac6b677b275a81ce75e3c715d9c93a98b0d57e2453fc6a25944608 new file mode 100644 index 0000000..a574418 --- /dev/null +++ b/Gateways/FE/projects/.resources/533f4c2f49ac6b677b275a81ce75e3c715d9c93a98b0d57e2453fc6a25944608 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.2-1-1", + "P4.2-1-2", + "P4.2-1-3", + "P4.2-1-4", + "P4.2-1-5", + "P4.2-1-6", + "P4.2-2-1", + "P4.2-2-2", + "P4.2-2-3", + "P4.2-2-4", + "P4.2-2-5", + "P4.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/54968ce1e2dc6078834b5efb6bca20594ead21ff3b40327b69728c0a2402d593 b/Gateways/FE/projects/.resources/54968ce1e2dc6078834b5efb6bca20594ead21ff3b40327b69728c0a2402d593 deleted file mode 100644 index 834711a..0000000 --- a/Gateways/FE/projects/.resources/54968ce1e2dc6078834b5efb6bca20594ead21ff3b40327b69728c0a2402d593 +++ /dev/null @@ -1,285 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52F3\n" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/55d4463f62ccdec73aadd1b658f89482913fb06a533365468728e63d5b99e6b8 b/Gateways/FE/projects/.resources/55d4463f62ccdec73aadd1b658f89482913fb06a533365468728e63d5b99e6b8 deleted file mode 100644 index 106880c..0000000 Binary files a/Gateways/FE/projects/.resources/55d4463f62ccdec73aadd1b658f89482913fb06a533365468728e63d5b99e6b8 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/55e1ddc94e828d45bd4ceed04b5a166b2b57629afa0227b466cf5af4a20d30e5 b/Gateways/FE/projects/.resources/55e1ddc94e828d45bd4ceed04b5a166b2b57629afa0227b466cf5af4a20d30e5 deleted file mode 100644 index 4c494e4..0000000 --- a/Gateways/FE/projects/.resources/55e1ddc94e828d45bd4ceed04b5a166b2b57629afa0227b466cf5af4a20d30e5 +++ /dev/null @@ -1,395 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Unbalance", - "numDecimals": 2, - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1244/SWBD/SATB1_ER1244_PQM1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/5967edc035c1c26981e4ec57baf9ca16803e073fd71db93f4d6d0f6abe4b0314 b/Gateways/FE/projects/.resources/5967edc035c1c26981e4ec57baf9ca16803e073fd71db93f4d6d0f6abe4b0314 new file mode 100644 index 0000000..84989f6 Binary files /dev/null and b/Gateways/FE/projects/.resources/5967edc035c1c26981e4ec57baf9ca16803e073fd71db93f4d6d0f6abe4b0314 differ diff --git a/Gateways/FE/projects/.resources/5a28e4df0c4338e1f73b5e87bf781915f988baece2dee43d8e6c2001ec80a4b3 b/Gateways/FE/projects/.resources/5a28e4df0c4338e1f73b5e87bf781915f988baece2dee43d8e6c2001ec80a4b3 new file mode 100644 index 0000000..ffbdbef Binary files /dev/null and b/Gateways/FE/projects/.resources/5a28e4df0c4338e1f73b5e87bf781915f988baece2dee43d8e6c2001ec80a4b3 differ diff --git a/Gateways/FE/projects/.resources/5b949cecf49667f61a18541eb85124e02b5738b80f89401f2cd0a693afc7acba b/Gateways/FE/projects/.resources/5b949cecf49667f61a18541eb85124e02b5738b80f89401f2cd0a693afc7acba deleted file mode 100644 index 09463d2..0000000 --- a/Gateways/FE/projects/.resources/5b949cecf49667f61a18541eb85124e02b5738b80f89401f2cd0a693afc7acba +++ /dev/null @@ -1,119 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number of Occupied Zones", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number of Unccupied Zones", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/5c33c335669c8be93f4d39d0a1f8ac01e94d2aa6457bf89135d521049e723699 b/Gateways/FE/projects/.resources/5c33c335669c8be93f4d39d0a1f8ac01e94d2aa6457bf89135d521049e723699 deleted file mode 100644 index 46e99c1..0000000 --- a/Gateways/FE/projects/.resources/5c33c335669c8be93f4d39d0a1f8ac01e94d2aa6457bf89135d521049e723699 +++ /dev/null @@ -1,161 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Closed", - "options": [ - "Not Closed", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Open", - "options": [ - "Not Open", - "Open" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Valve Position Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Valve Position Feedback", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_CHW_TES01_MOV50" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/5c3a0932d438f8ff3974b4d2c01501180598619a855583f8a64d67eb272ee9a1 b/Gateways/FE/projects/.resources/5c3a0932d438f8ff3974b4d2c01501180598619a855583f8a64d67eb272ee9a1 new file mode 100644 index 0000000..e03aea9 Binary files /dev/null and b/Gateways/FE/projects/.resources/5c3a0932d438f8ff3974b4d2c01501180598619a855583f8a64d67eb272ee9a1 differ diff --git a/Gateways/FE/projects/.resources/5c762e8714e0a6398560d77a14371488266ea707f389e284efa1d004df6d36fc b/Gateways/FE/projects/.resources/5c762e8714e0a6398560d77a14371488266ea707f389e284efa1d004df6d36fc deleted file mode 100644 index 8ef0b5b..0000000 --- a/Gateways/FE/projects/.resources/5c762e8714e0a6398560d77a14371488266ea707f389e284efa1d004df6d36fc +++ /dev/null @@ -1,314 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1000, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1005, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1010, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 3", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Speed Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "heart": true, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BMS Heart Beat", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comms", - "options": [ - "Disconnected", - "Connected" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1002, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 1 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1007, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 2 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1012, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 3 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 900, - "instanceStyle": { - "classes": "" - }, - "name": "Control Mode", - "options": [ - "BMS", - "Hand" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Dirty Filter", - "options": [ - "OK", - "Dirty" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "###.##", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - } - ], - "dictionary": { - "ER1242": 1, - "key_1": 2 - }, - "room": "ER1242" - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SATB1_P1_1_ER1242_CRAH_01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.dictionary": { - "persistent": true - }, - "custom.room": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Meta/Room" - }, - "type": "tag" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/72bf3119ccdea1a08af4fc7472b67af6e2610d77e8455ceee3663ab041ad78bd b/Gateways/FE/projects/.resources/5cd368bf1c18b7b50fc4a92326ddd239a06ae387b01d1c0e1e9d84a4bf23abba similarity index 98% rename from Gateways/FE/projects/.resources/72bf3119ccdea1a08af4fc7472b67af6e2610d77e8455ceee3663ab041ad78bd rename to Gateways/FE/projects/.resources/5cd368bf1c18b7b50fc4a92326ddd239a06ae387b01d1c0e1e9d84a4bf23abba index 235abc1..289e7ee 100644 --- a/Gateways/FE/projects/.resources/72bf3119ccdea1a08af4fc7472b67af6e2610d77e8455ceee3663ab041ad78bd +++ b/Gateways/FE/projects/.resources/5cd368bf1c18b7b50fc4a92326ddd239a06ae387b01d1c0e1e9d84a4bf23abba @@ -21,8 +21,8 @@ "config": true, "control": true }, - "objectName": "Breaker", - "tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE1" + "objectName": "SWBDPQM", + "tagPath": "[Ignition_SATB1_IO1_default]ER1242_P1-1/SWBD/SATB1_ER1242_PQM1" }, "propConfig": { "custom.tabsConfig": { @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker P/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/7d259d3b705d6d58228c84782b0bf6db80aca78433a731715c4ade7450687484 b/Gateways/FE/projects/.resources/5da6d6a0c9a7c3360cb5aa99bfe82d2c848fca646e5e92515ad88f5082a7b1d0 similarity index 97% rename from Gateways/FE/projects/.resources/7d259d3b705d6d58228c84782b0bf6db80aca78433a731715c4ade7450687484 rename to Gateways/FE/projects/.resources/5da6d6a0c9a7c3360cb5aa99bfe82d2c848fca646e5e92515ad88f5082a7b1d0 index a8fd2d7..48f7e49 100644 --- a/Gateways/FE/projects/.resources/7d259d3b705d6d58228c84782b0bf6db80aca78433a731715c4ade7450687484 +++ b/Gateways/FE/projects/.resources/5da6d6a0c9a7c3360cb5aa99bfe82d2c848fca646e5e92515ad88f5082a7b1d0 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/0e9bba93fe0b3ec34243fa89492ea513a8d6a49e0f5a6e6e1cbf1cc3df314d51 b/Gateways/FE/projects/.resources/60ffc60fb482b0339e5ce7bcf1795252d5e9e249bbb3fda6125387bbd45b35a2 similarity index 97% rename from Gateways/FE/projects/.resources/0e9bba93fe0b3ec34243fa89492ea513a8d6a49e0f5a6e6e1cbf1cc3df314d51 rename to Gateways/FE/projects/.resources/60ffc60fb482b0339e5ce7bcf1795252d5e9e249bbb3fda6125387bbd45b35a2 index db4b4dd..286953b 100644 --- a/Gateways/FE/projects/.resources/0e9bba93fe0b3ec34243fa89492ea513a8d6a49e0f5a6e6e1cbf1cc3df314d51 +++ b/Gateways/FE/projects/.resources/60ffc60fb482b0339e5ce7bcf1795252d5e9e249bbb3fda6125387bbd45b35a2 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/0b9ebf445d571d6d327746b14a25418f9dd3c137ba32ddccce4e62087b02eb0e b/Gateways/FE/projects/.resources/617882d08d47295e03ee2b223399b0a7e6ae066e15b7b5ce2bc6e0d7ca6af69b similarity index 91% rename from Gateways/FE/projects/.resources/0b9ebf445d571d6d327746b14a25418f9dd3c137ba32ddccce4e62087b02eb0e rename to Gateways/FE/projects/.resources/617882d08d47295e03ee2b223399b0a7e6ae066e15b7b5ce2bc6e0d7ca6af69b index fd73255..fa1bb1c 100644 --- a/Gateways/FE/projects/.resources/0b9ebf445d571d6d327746b14a25418f9dd3c137ba32ddccce4e62087b02eb0e +++ b/Gateways/FE/projects/.resources/617882d08d47295e03ee2b223399b0a7e6ae066e15b7b5ce2bc6e0d7ca6af69b @@ -2889,7 +2889,7 @@ "children": [ { "meta": { - "name": "Label" + "name": "Title" }, "position": { "grow": 1 @@ -2916,7 +2916,7 @@ } }, "meta": { - "name": "Button_1" + "name": "ClosedButton" }, "position": { "basis": "24px", @@ -2942,7 +2942,7 @@ } ], "meta": { - "name": "FlexContainer_0" + "name": "Header" }, "position": { "basis": "40px", @@ -2958,629 +2958,318 @@ { "children": [ { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Stage Up Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 60 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_StageUpDelaySP" + "name": "EmbeddedView" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Stage Up Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Stage Down Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 60 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_StageDownDelaySP" + "name": "EmbeddedView_0" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Stage Down Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Transition Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 300 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_TransitionDelaySP" + "name": "EmbeddedView_1" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Transition Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Off Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 10 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_OffDelaySP" + "name": "EmbeddedView_2" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Off Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Max Demand" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 54 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_MaxDemand" + "name": "EmbeddedView_3" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Max Demand", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Min Demand" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "access": "PUBLIC", - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 2 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_MinDemand" + "name": "EmbeddedView_4" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Min Demand", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Fail to Run Delay" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 360 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_FTR_SP" + "name": "EmbeddedView_5" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Fail To Run Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort" + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Fail to Stop Delay" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 360 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_FTS_SP" + "name": "EmbeddedView_6" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Fail To Stop Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort" + }, + "type": "ia.display.view" }, { "children": [ @@ -3866,7 +3555,7 @@ } ], "meta": { - "name": "FlexContainer" + "name": "Fields" }, "position": { "grow": 1 @@ -3875,8 +3564,8 @@ "direction": "column", "style": { "borderRight": "1px solid var(--border)", - "gap": "10px", - "padding": "10px" + "gap": "var(--space-md)", + "padding": "var(--space-md)" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/.resources/61ed33a8e8167f6dfd1f089761f2f840de5a85a6decab53ecc6353e2514f8936 b/Gateways/FE/projects/.resources/61ed33a8e8167f6dfd1f089761f2f840de5a85a6decab53ecc6353e2514f8936 new file mode 100644 index 0000000..0a31748 Binary files /dev/null and b/Gateways/FE/projects/.resources/61ed33a8e8167f6dfd1f089761f2f840de5a85a6decab53ecc6353e2514f8936 differ diff --git a/Gateways/FE/projects/.resources/620cb9bd2ca3080ba57fcdac5797db7486984024e6f4d6a820b56e54dad8df83 b/Gateways/FE/projects/.resources/620cb9bd2ca3080ba57fcdac5797db7486984024e6f4d6a820b56e54dad8df83 new file mode 100644 index 0000000..7e2c4d5 --- /dev/null +++ b/Gateways/FE/projects/.resources/620cb9bd2ca3080ba57fcdac5797db7486984024e6f4d6a820b56e54dad8df83 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.2-1-1", + "P3.2-1-2", + "P3.2-1-3", + "P3.2-1-4", + "P3.2-1-5", + "P3.2-1-6", + "P3.2-2-1", + "P3.2-2-2", + "P3.2-2-3", + "P3.2-2-4", + "P3.2-2-5", + "P3.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7209c9f8a0167a814984a10cc034cda6346c3aaf96ac269d9f844337a31efc21 b/Gateways/FE/projects/.resources/62464411b0d581c80d01be4d0d336c563899356dcf07a0a59912310cd5cb5ccf similarity index 90% rename from Gateways/FE/projects/.resources/7209c9f8a0167a814984a10cc034cda6346c3aaf96ac269d9f844337a31efc21 rename to Gateways/FE/projects/.resources/62464411b0d581c80d01be4d0d336c563899356dcf07a0a59912310cd5cb5ccf index 4488cd5..1e64503 100644 --- a/Gateways/FE/projects/.resources/7209c9f8a0167a814984a10cc034cda6346c3aaf96ac269d9f844337a31efc21 +++ b/Gateways/FE/projects/.resources/62464411b0d581c80d01be4d0d336c563899356dcf07a0a59912310cd5cb5ccf @@ -111,11 +111,23 @@ }, "objectName": "HUM", "tagPath": "[Ignition_Common_IO_Gtwy]GAL1262/SATB1_GAL1262_HUM_02" + }, + { + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } } ], "path": "Library/Diagrams/HVAC/Dgrm_HUM", "style": { - "gap": 100, + "gap": "var(--space-xl)", "overflow": "visible" }, "useDefaultViewHeight": false, @@ -128,11 +140,13 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "overflow": "visible" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/63065586c6126182d777b94ae7c35283b04701e90f5ea9a295c8d3748594e0db b/Gateways/FE/projects/.resources/63065586c6126182d777b94ae7c35283b04701e90f5ea9a295c8d3748594e0db new file mode 100644 index 0000000..d8f9a28 Binary files /dev/null and b/Gateways/FE/projects/.resources/63065586c6126182d777b94ae7c35283b04701e90f5ea9a295c8d3748594e0db differ diff --git a/Gateways/FE/projects/.resources/aa250e6805e07ea55139127ae8d9864255e3cba3b7864f62ba53a9766900d0c7 b/Gateways/FE/projects/.resources/63f0942dc7b69ad45f9fac5a1592113988697aa58ddaab33afb228a033dde19d similarity index 97% rename from Gateways/FE/projects/.resources/aa250e6805e07ea55139127ae8d9864255e3cba3b7864f62ba53a9766900d0c7 rename to Gateways/FE/projects/.resources/63f0942dc7b69ad45f9fac5a1592113988697aa58ddaab33afb228a033dde19d index 5239f9e..ed68cf0 100644 --- a/Gateways/FE/projects/.resources/aa250e6805e07ea55139127ae8d9864255e3cba3b7864f62ba53a9766900d0c7 +++ b/Gateways/FE/projects/.resources/63f0942dc7b69ad45f9fac5a1592113988697aa58ddaab33afb228a033dde19d @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 1 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/6455044b1bc3dd674f4db22466fb35291cdfb5de65d86355a2967f4231f129d2 b/Gateways/FE/projects/.resources/6455044b1bc3dd674f4db22466fb35291cdfb5de65d86355a2967f4231f129d2 new file mode 100644 index 0000000..a295788 --- /dev/null +++ b/Gateways/FE/projects/.resources/6455044b1bc3dd674f4db22466fb35291cdfb5de65d86355a2967f4231f129d2 @@ -0,0 +1,332 @@ +{ + "custom": { + "pageId": "Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body", + "tabsConfig": { + "tabs": [ + "R1-1-1", + "R1-1-2", + "R1-1-3", + "R1-1-4", + "R1-1-5", + "R1-1-6", + "R1-2-1", + "R1-2-2", + "R1-2-3", + "R1-2-4", + "R1-2-5", + "R1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "pageId": "Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.pageId": { + "persistent": true + }, + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.pageId": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/647522de421e00fbfb8ad1d87139e274e85ef5aa61fc9bc51cb9cd21f9877f03 b/Gateways/FE/projects/.resources/647522de421e00fbfb8ad1d87139e274e85ef5aa61fc9bc51cb9cd21f9877f03 new file mode 100644 index 0000000..245170c Binary files /dev/null and b/Gateways/FE/projects/.resources/647522de421e00fbfb8ad1d87139e274e85ef5aa61fc9bc51cb9cd21f9877f03 differ diff --git a/Gateways/FE/projects/.resources/1e1548b3180d1c7c5a82e989ce5657857332a76ee7cc44e7f466310a101ee9c5 b/Gateways/FE/projects/.resources/648f7d13e6fa8e9fd08f8f0546109f8cf500ef922deee8aded72248a3ca46ce0 similarity index 89% rename from Gateways/FE/projects/.resources/1e1548b3180d1c7c5a82e989ce5657857332a76ee7cc44e7f466310a101ee9c5 rename to Gateways/FE/projects/.resources/648f7d13e6fa8e9fd08f8f0546109f8cf500ef922deee8aded72248a3ca46ce0 index 47e6c8a..ce3e5eb 100644 --- a/Gateways/FE/projects/.resources/1e1548b3180d1c7c5a82e989ce5657857332a76ee7cc44e7f466310a101ee9c5 +++ b/Gateways/FE/projects/.resources/648f7d13e6fa8e9fd08f8f0546109f8cf500ef922deee8aded72248a3ca46ce0 @@ -41,9 +41,10 @@ }, "props": { "params": { + "deviceDataset": "[default]Device Datasets/VM/Info", "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -58,7 +59,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP09" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -73,7 +74,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP10" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -88,7 +89,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP11" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -103,7 +104,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP12" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -118,7 +119,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP13" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -133,7 +134,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP14" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -148,7 +149,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP15" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" } @@ -180,7 +181,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 4 + "currentTabIndex": 7 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/64ee1a684543d590b33feecc90e77671ceb7eea900f5080f7df789e951c3198a b/Gateways/FE/projects/.resources/64ee1a684543d590b33feecc90e77671ceb7eea900f5080f7df789e951c3198a deleted file mode 100644 index 191b579..0000000 Binary files a/Gateways/FE/projects/.resources/64ee1a684543d590b33feecc90e77671ceb7eea900f5080f7df789e951c3198a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/65a2e65cc6e5c6789883b0a24776113c3aab51e67068b73207e1679b0528abef b/Gateways/FE/projects/.resources/65a2e65cc6e5c6789883b0a24776113c3aab51e67068b73207e1679b0528abef deleted file mode 100644 index f9fffe2..0000000 Binary files a/Gateways/FE/projects/.resources/65a2e65cc6e5c6789883b0a24776113c3aab51e67068b73207e1679b0528abef and /dev/null differ diff --git a/Gateways/FE/projects/.resources/6608039881c273c9fa7c0776a55dc0f18f69216212b613b69f668b969e1c4e0a b/Gateways/FE/projects/.resources/6608039881c273c9fa7c0776a55dc0f18f69216212b613b69f668b969e1c4e0a deleted file mode 100644 index e63f4cb..0000000 --- a/Gateways/FE/projects/.resources/6608039881c273c9fa7c0776a55dc0f18f69216212b613b69f668b969e1c4e0a +++ /dev/null @@ -1,504 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 1", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 2", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 3", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 4", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 5", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 130, - "instanceStyle": { - "classes": "" - }, - "name": "Ground Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Input AB THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 90, - "instanceStyle": { - "classes": "" - }, - "name": "Input BC THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 110, - "instanceStyle": { - "classes": "" - }, - "name": "Input CA THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 150, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 80, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 100, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 120, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 60, - "instanceStyle": { - "classes": "" - }, - "name": "Main Breaker", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 140, - "instanceStyle": { - "classes": "" - }, - "name": "Neutral Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 170, - "instanceStyle": { - "classes": "" - }, - "name": "Output A KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 180, - "instanceStyle": { - "classes": "" - }, - "name": "Output A PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 190, - "instanceStyle": { - "classes": "" - }, - "name": "Output B KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 200, - "instanceStyle": { - "classes": "" - }, - "name": "Output B PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 210, - "instanceStyle": { - "classes": "" - }, - "name": "Output C KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 220, - "instanceStyle": { - "classes": "" - }, - "name": "Output C PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 230, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 250, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 270, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 240, - "instanceStyle": { - "classes": "" - }, - "name": "Output KVA", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 260, - "instanceStyle": { - "classes": "" - }, - "name": "Output KWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 280, - "instanceStyle": { - "classes": "" - }, - "name": "Output Total KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 290, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 300, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 310, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 320, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 330, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 340, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 160, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [], - "visible": false - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [ - "No Alarm", - "Alarmed" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO2_default]GAL1271/SATB1_GAL1271_PDU_P2-2-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/662fb6a1902ba26de80540e2fa33a892b1a335c6e12ab276ea77a0a6284df3d9 b/Gateways/FE/projects/.resources/662fb6a1902ba26de80540e2fa33a892b1a335c6e12ab276ea77a0a6284df3d9 new file mode 100644 index 0000000..c9b8f3d Binary files /dev/null and b/Gateways/FE/projects/.resources/662fb6a1902ba26de80540e2fa33a892b1a335c6e12ab276ea77a0a6284df3d9 differ diff --git a/Gateways/FE/projects/.resources/6636a1865cdcce7a0b45100f52d26cac87cd13c959369dd41e261ecc93e0c920 b/Gateways/FE/projects/.resources/6636a1865cdcce7a0b45100f52d26cac87cd13c959369dd41e261ecc93e0c920 new file mode 100644 index 0000000..3373f1b Binary files /dev/null and b/Gateways/FE/projects/.resources/6636a1865cdcce7a0b45100f52d26cac87cd13c959369dd41e261ecc93e0c920 differ diff --git a/Gateways/FE/projects/.resources/669dea013cd92e6cb92d9edb05f2ff402f37ccc484a2d8d9ec030267fd02317e b/Gateways/FE/projects/.resources/669dea013cd92e6cb92d9edb05f2ff402f37ccc484a2d8d9ec030267fd02317e deleted file mode 100644 index dfabdd3..0000000 Binary files a/Gateways/FE/projects/.resources/669dea013cd92e6cb92d9edb05f2ff402f37ccc484a2d8d9ec030267fd02317e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/6848f208d5d8a20c21a94f59cab8a1de36666e1e598ca166900ca8f520f8224f b/Gateways/FE/projects/.resources/6848f208d5d8a20c21a94f59cab8a1de36666e1e598ca166900ca8f520f8224f new file mode 100644 index 0000000..c43505e --- /dev/null +++ b/Gateways/FE/projects/.resources/6848f208d5d8a20c21a94f59cab8a1de36666e1e598ca166900ca8f520f8224f @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.1-1-1", + "P3.1-1-2", + "P3.1-1-3", + "P3.1-1-4", + "P3.1-1-5", + "P3.1-1-6", + "P3.1-2-1", + "P3.1-2-2", + "P3.1-2-3", + "P3.1-2-4", + "P3.1-2-5", + "P3.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/688bacd8216b42d7dd0dff40dd1cf771fdc6e98e00402350ce978d81bee3ce84 b/Gateways/FE/projects/.resources/688bacd8216b42d7dd0dff40dd1cf771fdc6e98e00402350ce978d81bee3ce84 new file mode 100644 index 0000000..73fdc5b --- /dev/null +++ b/Gateways/FE/projects/.resources/688bacd8216b42d7dd0dff40dd1cf771fdc6e98e00402350ce978d81bee3ce84 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.4-1-1", + "P4.4-1-2", + "P4.4-1-3", + "P4.4-1-4", + "P4.4-1-5", + "P4.4-1-6", + "P4.4-2-1", + "P4.4-2-2", + "P4.4-2-3", + "P4.4-2-4", + "P4.4-2-5", + "P4.4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.4-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/6b6e3c5c17507b9215a960da25fcf9cd9fce9c1cb692b2e7ab3da70d28105a99 b/Gateways/FE/projects/.resources/6b6e3c5c17507b9215a960da25fcf9cd9fce9c1cb692b2e7ab3da70d28105a99 new file mode 100644 index 0000000..bfbe946 --- /dev/null +++ b/Gateways/FE/projects/.resources/6b6e3c5c17507b9215a960da25fcf9cd9fce9c1cb692b2e7ab3da70d28105a99 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.1-1-1", + "P5.1-1-2", + "P5.1-1-3", + "P5.1-1-4", + "P5.1-1-5", + "P5.1-1-6", + "P5.1-2-1", + "P5.1-2-2", + "P5.1-2-3", + "P5.1-2-4", + "P5.1-2-5", + "P5.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/6b75ff1632bdff4b2aebe15307e1c9fa992c74c0abebb1cf2470d0f8fb855e99 b/Gateways/FE/projects/.resources/6b75ff1632bdff4b2aebe15307e1c9fa992c74c0abebb1cf2470d0f8fb855e99 deleted file mode 100644 index 1ec3897..0000000 Binary files a/Gateways/FE/projects/.resources/6b75ff1632bdff4b2aebe15307e1c9fa992c74c0abebb1cf2470d0f8fb855e99 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/6d69290c7cbf92fbd565a9df38377ff2876ef7a22e3db6bc837804fc5e8dfa09 b/Gateways/FE/projects/.resources/6d69290c7cbf92fbd565a9df38377ff2876ef7a22e3db6bc837804fc5e8dfa09 deleted file mode 100644 index 614fdcd..0000000 Binary files a/Gateways/FE/projects/.resources/6d69290c7cbf92fbd565a9df38377ff2876ef7a22e3db6bc837804fc5e8dfa09 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/6e924e9ff12e209594aa5ace330bd4f7858d646b6d85b1b46a565ea3c61c5d42 b/Gateways/FE/projects/.resources/6e924e9ff12e209594aa5ace330bd4f7858d646b6d85b1b46a565ea3c61c5d42 new file mode 100644 index 0000000..dbfcf5f Binary files /dev/null and b/Gateways/FE/projects/.resources/6e924e9ff12e209594aa5ace330bd4f7858d646b6d85b1b46a565ea3c61c5d42 differ diff --git a/Gateways/FE/projects/.resources/70098361d6614805ae28504c6193e49a9cc7525c79aea8fd88b1df9411ae4994 b/Gateways/FE/projects/.resources/70098361d6614805ae28504c6193e49a9cc7525c79aea8fd88b1df9411ae4994 deleted file mode 100644 index 1bae414..0000000 --- a/Gateways/FE/projects/.resources/70098361d6614805ae28504c6193e49a9cc7525c79aea8fd88b1df9411ae4994 +++ /dev/null @@ -1,423 +0,0 @@ -{ - "custom": { - "CPStateEngUnit": null, - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Frequency", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Frequency", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "CP State Data", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage AB", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage BC", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage CA", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage AB", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage BC", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage CA", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Source 1", - "numDecimals": 1, - "options": [ - "False", - "Bypassed" - ] - }, - { - "dataType": "", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "CP State", - "numDecimals": 1 - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "On Source 1", - "numDecimals": 1, - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "On Source 2", - "numDecimals": 1, - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Operating Mode", - "numDecimals": 1, - "options": [ - "Normal", - "Emergency" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Source", - "numDecimals": 1, - "options": [ - "Utility", - "Generator" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Available", - "numDecimals": 1, - "options": [ - "not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Breaker Tripped", - "numDecimals": 1, - "options": [ - "Normal", - "Tripped" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Available", - "numDecimals": 1, - "options": [ - "not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Breaker Tripped", - "numDecimals": 1, - "options": [ - "Normal", - "Tripped" - ] - } - ], - "textArray": [ - "Load on Normal, Normal OK", - "Timer 1C (TDES) running", - "Waiting for Emergency acceptable", - "Transfer to Emergency inhibited by F6Z", - "Transfer to Emergency inhibited by F34B", - "Timer 2B (TDNE) running", - "Timer 31F (N to E pre transfer signal) running", - "In phase monitor time delay (OTTS N to E transfer)", - "Waiting for in phase (OTTS N to E transfer)", - "In phase monitor time delay with load shed", - "Waiting for in phase with load shed", - "In sync monitor time delay", - "Waiting for in sync", - "Sources paralleled", - "Load disconnected CT bypass", - "Load disconnected", - "Normal to Emergency load shed is active", - "Timer 31M running", - "Load on Emergency waiting for removal of transfer requests", - "Timer 3A running", - "Transfer to Normal inhibited by G6C", - "Transfer to N inhibited by F34A", - "Timer 31G runing", - "In phase monitor time time delay", - "waiting for in phase", - "In phase monitor time delay with load shed", - "Waiting for in shed load shed", - "In sync monitor time delay", - "Waiting for in sync", - "Sources paralleled", - "Load disconnected CT bypass", - "Load disconnected", - "Emergency to Normal load shed is active", - "Timer 31N", - "Timer 2E (Cooldown)", - "Timer 1C while timer 2E running", - "Power up inhibit", - "Transition state" - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_ATS" - }, - "propConfig": { - "custom.CPStateEngUnit": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/CP State" - }, - "transforms": [ - { - "code": "\tsystem.tag.writeBlocking(self.params.tagPath+\u0027/CP State Data.EngUnit\u0027,self.custom.textArray[value])\n\t#[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_ATS/CP State Data.EngUnit\n\treturn self.custom.textArray[value]", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"numDecimals\": 1,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[10].options": { - "binding": { - "config": { - "path": "view.custom.textArray" - }, - "type": "property" - } - }, - "custom.textArray": { - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/716646509eabf97398b69c42ad565b1b4950e02086c55cc7e3c1a15ea3a7d2d7 b/Gateways/FE/projects/.resources/716646509eabf97398b69c42ad565b1b4950e02086c55cc7e3c1a15ea3a7d2d7 deleted file mode 100644 index ec32ae8..0000000 --- a/Gateways/FE/projects/.resources/716646509eabf97398b69c42ad565b1b4950e02086c55cc7e3c1a15ea3a7d2d7 +++ /dev/null @@ -1,418 +0,0 @@ -{ - "custom": { - "tabsConfig": { - "tabs": [ - "Info", - "Control", - "Trend", - "Meta", - "Wiki" - ] - }, - "trendConfig": { - "selectedPens": [] - } - }, - "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "VAVMaster", - "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" - }, - "propConfig": { - "custom.tabsConfig": { - "persistent": true - }, - "custom.tabsConfig.showConfig": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Config" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.tabsConfig.showControl": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Control" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.trendConfig": { - "persistent": true - }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Status" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Trend" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.selectedPens": { - "binding": { - "config": { - "path": "view.custom.trendConfig.selectedPens" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - }, - "path": "Library/Templates/Trends" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Config" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Meta" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Templates/Meta" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Wiki" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Framework/Tag Notes/View Notes" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Control" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Info" - }, - "props": { - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" - }, - "path": "Library/Templates/VAVMaster/Info" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "TabContainer" - }, - "position": { - "basis": "300px", - "grow": 1 - }, - "propConfig": { - "props.tabs": { - "binding": { - "config": { - "expression": "{view.custom.tabsConfig}" - }, - "transforms": [ - { - "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\treturn tabs", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "contentStyle": { - "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "enableDisablePen", - "pageScope": true, - "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7169eacd551072a6c607702caa7f37ede93686a72d5ca7b7b1d701a834c58754 b/Gateways/FE/projects/.resources/7169eacd551072a6c607702caa7f37ede93686a72d5ca7b7b1d701a834c58754 deleted file mode 100644 index d923eb5..0000000 Binary files a/Gateways/FE/projects/.resources/7169eacd551072a6c607702caa7f37ede93686a72d5ca7b7b1d701a834c58754 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/7181a87218d729e40a79280da3237b4ca9c0e56dcf9d4bbc6a7d41961fecba2d b/Gateways/FE/projects/.resources/7181a87218d729e40a79280da3237b4ca9c0e56dcf9d4bbc6a7d41961fecba2d new file mode 100644 index 0000000..d9e4f64 Binary files /dev/null and b/Gateways/FE/projects/.resources/7181a87218d729e40a79280da3237b4ca9c0e56dcf9d4bbc6a7d41961fecba2d differ diff --git a/Gateways/FE/projects/.resources/732e20aef75cd26e810451a4b57766de216d3ef782e038b86e43ff9a419f1f2a b/Gateways/FE/projects/.resources/732e20aef75cd26e810451a4b57766de216d3ef782e038b86e43ff9a419f1f2a new file mode 100644 index 0000000..328502c --- /dev/null +++ b/Gateways/FE/projects/.resources/732e20aef75cd26e810451a4b57766de216d3ef782e038b86e43ff9a419f1f2a @@ -0,0 +1,180 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Batt HS1-1", + "Batt HS1-2", + "Batt HS1-3", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Batt HS1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/73f28da218eb7c0cd4127e76cf253f89fa1e1b88eaadac4fa63a90c5728e473c b/Gateways/FE/projects/.resources/73f28da218eb7c0cd4127e76cf253f89fa1e1b88eaadac4fa63a90c5728e473c deleted file mode 100644 index d282e69..0000000 Binary files a/Gateways/FE/projects/.resources/73f28da218eb7c0cd4127e76cf253f89fa1e1b88eaadac4fa63a90c5728e473c and /dev/null differ diff --git a/Gateways/FE/projects/.resources/b73299e60e35d023d805b0b6a5687b630d4a94a0604dd0c06c8f5feb54ea4207 b/Gateways/FE/projects/.resources/747dedd8220e9cb7cd328463533bbf1f03c170c2cc4d55950f44200a689fe3ee similarity index 97% rename from Gateways/FE/projects/.resources/b73299e60e35d023d805b0b6a5687b630d4a94a0604dd0c06c8f5feb54ea4207 rename to Gateways/FE/projects/.resources/747dedd8220e9cb7cd328463533bbf1f03c170c2cc4d55950f44200a689fe3ee index f4849f1..0332c6b 100644 --- a/Gateways/FE/projects/.resources/b73299e60e35d023d805b0b6a5687b630d4a94a0604dd0c06c8f5feb54ea4207 +++ b/Gateways/FE/projects/.resources/747dedd8220e9cb7cd328463533bbf1f03c170c2cc4d55950f44200a689fe3ee @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/7557d2a1c6f99aa1fddefee15c4462165eb10c829b0162ddb5032ba573533452 b/Gateways/FE/projects/.resources/7557d2a1c6f99aa1fddefee15c4462165eb10c829b0162ddb5032ba573533452 new file mode 100644 index 0000000..65bb65d Binary files /dev/null and b/Gateways/FE/projects/.resources/7557d2a1c6f99aa1fddefee15c4462165eb10c829b0162ddb5032ba573533452 differ diff --git a/Gateways/FE/projects/.resources/75700f71c12ada0590fcd4771c173df61c63fdefba35ff646257e4c8a3a7a6b4 b/Gateways/FE/projects/.resources/75700f71c12ada0590fcd4771c173df61c63fdefba35ff646257e4c8a3a7a6b4 new file mode 100644 index 0000000..c180144 Binary files /dev/null and b/Gateways/FE/projects/.resources/75700f71c12ada0590fcd4771c173df61c63fdefba35ff646257e4c8a3a7a6b4 differ diff --git a/Gateways/FE/projects/.resources/767a3327decb0bc8db2baa4449f3bdbb327737114c6d6deaae9393216e4b632e b/Gateways/FE/projects/.resources/767a3327decb0bc8db2baa4449f3bdbb327737114c6d6deaae9393216e4b632e deleted file mode 100644 index 0785dfe..0000000 Binary files a/Gateways/FE/projects/.resources/767a3327decb0bc8db2baa4449f3bdbb327737114c6d6deaae9393216e4b632e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/76c6d9cebd5de47809276bf854bcff486ac826cf9ed913632a7d455b1509ad1c b/Gateways/FE/projects/.resources/76c6d9cebd5de47809276bf854bcff486ac826cf9ed913632a7d455b1509ad1c deleted file mode 100644 index 324a1b8..0000000 Binary files a/Gateways/FE/projects/.resources/76c6d9cebd5de47809276bf854bcff486ac826cf9ed913632a7d455b1509ad1c and /dev/null differ diff --git a/Gateways/FE/projects/.resources/77f5ac77eeb320fdc83a526a7ca7f6f440405431ecad2d8182c28495f7a1d220 b/Gateways/FE/projects/.resources/77f5ac77eeb320fdc83a526a7ca7f6f440405431ecad2d8182c28495f7a1d220 new file mode 100644 index 0000000..5222ca7 Binary files /dev/null and b/Gateways/FE/projects/.resources/77f5ac77eeb320fdc83a526a7ca7f6f440405431ecad2d8182c28495f7a1d220 differ diff --git a/Gateways/FE/projects/.resources/79500e4028d789d5f184986501b1e8bf4014e63d300fbee2dbe4a230063d2636 b/Gateways/FE/projects/.resources/79500e4028d789d5f184986501b1e8bf4014e63d300fbee2dbe4a230063d2636 new file mode 100644 index 0000000..13a81d7 --- /dev/null +++ b/Gateways/FE/projects/.resources/79500e4028d789d5f184986501b1e8bf4014e63d300fbee2dbe4a230063d2636 @@ -0,0 +1,180 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Batt HS2-1", + "Batt HS2-2", + "Batt HS2-3", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Batt HS2-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS2-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS2-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/79e3ff60c576edf0578d36c68949a23c75ff24944a5c6c1f1c09d53ae214f25b b/Gateways/FE/projects/.resources/79e3ff60c576edf0578d36c68949a23c75ff24944a5c6c1f1c09d53ae214f25b deleted file mode 100644 index 6884a62..0000000 Binary files a/Gateways/FE/projects/.resources/79e3ff60c576edf0578d36c68949a23c75ff24944a5c6c1f1c09d53ae214f25b and /dev/null differ diff --git a/Gateways/FE/projects/.resources/79f3be34ac31b72f7769dbff9db79652d23856903a88e4c32bb5d8fda4891bb9 b/Gateways/FE/projects/.resources/79f3be34ac31b72f7769dbff9db79652d23856903a88e4c32bb5d8fda4891bb9 deleted file mode 100644 index 8dfb004..0000000 Binary files a/Gateways/FE/projects/.resources/79f3be34ac31b72f7769dbff9db79652d23856903a88e4c32bb5d8fda4891bb9 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/7a3ca2b01e6c227a600bad8b997032108fc27bb265d522cc9a9e9700b3502b51 b/Gateways/FE/projects/.resources/7a3ca2b01e6c227a600bad8b997032108fc27bb265d522cc9a9e9700b3502b51 deleted file mode 100644 index 015a539..0000000 --- a/Gateways/FE/projects/.resources/7a3ca2b01e6c227a600bad8b997032108fc27bb265d522cc9a9e9700b3502b51 +++ /dev/null @@ -1,139 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire Alarm Trouble", - "options": [ - "Normal", - "Alarmed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire alarm Event", - "options": [ - "Normal", - "Alarmed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire alarm Supervisory (Notification Alarm)", - "options": [ - "Normal", - "Alarmed" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1102/SATB1_RM1102_Fire System Panel" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7b5e9dd0808f34f66c0d4d73fc2ab56daa72eb6956f64541953073a824ab6ef1 b/Gateways/FE/projects/.resources/7b5e9dd0808f34f66c0d4d73fc2ab56daa72eb6956f64541953073a824ab6ef1 deleted file mode 100644 index d93749c..0000000 Binary files a/Gateways/FE/projects/.resources/7b5e9dd0808f34f66c0d4d73fc2ab56daa72eb6956f64541953073a824ab6ef1 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/7c8b3ad0b9755b48eb9dc427b4b74c34658893561d5fa124daa60db52a7a0f4e b/Gateways/FE/projects/.resources/7c8b3ad0b9755b48eb9dc427b4b74c34658893561d5fa124daa60db52a7a0f4e deleted file mode 100644 index 5eb0198..0000000 --- a/Gateways/FE/projects/.resources/7c8b3ad0b9755b48eb9dc427b4b74c34658893561d5fa124daa60db52a7a0f4e +++ /dev/null @@ -1,656 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Position", - "options": [ - "Racked In", - "Unracked" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Current G", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "Current Imbalance", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Current N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Current avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 35, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "EXT Trips", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Energy In (VAR)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 36, - "instanceStyle": { - "classes": "" - }, - "name": "Energy In (W)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Out (VAR)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Out (W)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 42, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Tot (VA)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 41, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 44, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 46, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 48, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 43, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 45, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 47, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 49, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Relay Status", - "options": [ - "Enabled", - "Disabled" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Relay Trips", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average Line", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average Phase", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage DC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Imbalance", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_SES_1A/SEL_Main" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\t\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7d1ac9d35d759652fede114c3e4a2d48b92b8291806e8e296e8338f450b7a3a0 b/Gateways/FE/projects/.resources/7d1ac9d35d759652fede114c3e4a2d48b92b8291806e8e296e8338f450b7a3a0 new file mode 100644 index 0000000..a5d14c5 --- /dev/null +++ b/Gateways/FE/projects/.resources/7d1ac9d35d759652fede114c3e4a2d48b92b8291806e8e296e8338f450b7a3a0 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.4-1-1", + "P6.4-1-2", + "P6.4-1-3", + "P6.4-1-4", + "P6.4-1-5", + "P6.4-1-6", + "P6.4-2-1", + "P6.4-2-2", + "P6.4-2-3", + "P6.4-2-4", + "P6.4-2-5", + "P6.4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.4-1-1" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-2" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-3" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-4" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-5" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-6" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-1" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-2" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-3" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-4" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-5" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-6" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 1 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7d97e8ab11685f38cf74f67b45b6e5fb38c2409c31851994ddd9c1ddebd5f66a b/Gateways/FE/projects/.resources/7d97e8ab11685f38cf74f67b45b6e5fb38c2409c31851994ddd9c1ddebd5f66a new file mode 100644 index 0000000..2ed2d05 --- /dev/null +++ b/Gateways/FE/projects/.resources/7d97e8ab11685f38cf74f67b45b6e5fb38c2409c31851994ddd9c1ddebd5f66a @@ -0,0 +1,22 @@ +def handleTimerEvent(): + # DOAS update data + tagpath = '[default]System/DataTables/DOAS' + sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint', + 'Alm':'/AlarmSummary/Highest Active Priority' + } + equipment.common.update_data(tagpath, sub_paths) + + # RTU update data + tagpath = '[default]System/DataTables/DOAS' + sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint', + 'Alm':'/AlarmSummary/Highest Active Priority' + } + equipment.common.update_data(tagpath, sub_paths) \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/7dd3be8703ac0d938dbb84ff2b1dbc50cb6874f6f7d30015986d4ab6ee96c0e2 b/Gateways/FE/projects/.resources/7dd3be8703ac0d938dbb84ff2b1dbc50cb6874f6f7d30015986d4ab6ee96c0e2 new file mode 100644 index 0000000..37e8f96 Binary files /dev/null and b/Gateways/FE/projects/.resources/7dd3be8703ac0d938dbb84ff2b1dbc50cb6874f6f7d30015986d4ab6ee96c0e2 differ diff --git a/Gateways/FE/projects/.resources/06bc935620354951e710b27c3b4931d2aa4027f095a81efe759c5914df00fb0d b/Gateways/FE/projects/.resources/7f6b5f5d0d0ac46a9db7a02fb7c0e9eca6ddd490d4118a2f5db15122cdbb1b8a similarity index 98% rename from Gateways/FE/projects/.resources/06bc935620354951e710b27c3b4931d2aa4027f095a81efe759c5914df00fb0d rename to Gateways/FE/projects/.resources/7f6b5f5d0d0ac46a9db7a02fb7c0e9eca6ddd490d4118a2f5db15122cdbb1b8a index 8538409..5492051 100644 --- a/Gateways/FE/projects/.resources/06bc935620354951e710b27c3b4931d2aa4027f095a81efe759c5914df00fb0d +++ b/Gateways/FE/projects/.resources/7f6b5f5d0d0ac46a9db7a02fb7c0e9eca6ddd490d4118a2f5db15122cdbb1b8a @@ -196,10 +196,12 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { - "backgroundColor": "var(--containerRoot)", - "padding": 15 + "backgroundColor": "var(--containerRoot)" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/80be42ec8f9c69c19c727b6909aa7fa54aeea1201aea0bc28c502b2ef09acf7e b/Gateways/FE/projects/.resources/80be42ec8f9c69c19c727b6909aa7fa54aeea1201aea0bc28c502b2ef09acf7e deleted file mode 100644 index a5e6930..0000000 Binary files a/Gateways/FE/projects/.resources/80be42ec8f9c69c19c727b6909aa7fa54aeea1201aea0bc28c502b2ef09acf7e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/81583e042d0aa90eb2734f60fbba415282437ab0bdb830cc719f69a98f44089d b/Gateways/FE/projects/.resources/81583e042d0aa90eb2734f60fbba415282437ab0bdb830cc719f69a98f44089d deleted file mode 100644 index 848115c..0000000 Binary files a/Gateways/FE/projects/.resources/81583e042d0aa90eb2734f60fbba415282437ab0bdb830cc719f69a98f44089d and /dev/null differ diff --git a/Gateways/FE/projects/.resources/8188a64f9cd85b480f90d32f0596d055720f57e42507afae5a3e77f141544de0 b/Gateways/FE/projects/.resources/8188a64f9cd85b480f90d32f0596d055720f57e42507afae5a3e77f141544de0 deleted file mode 100644 index 5b753fb..0000000 --- a/Gateways/FE/projects/.resources/8188a64f9cd85b480f90d32f0596d055720f57e42507afae5a3e77f141544de0 +++ /dev/null @@ -1,149 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Depleting Elapsed Time", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Mode", - "options": [ - "Off", - "Normal", - "Depleted", - "Recharging" - ] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Recharge Fail Elapsed Time", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Not Ready", - "options": [ - "Ready", - "Not Ready" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_DH5_Thermal_System" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d317b8c0cfbccfd987dad59bf9777e61c397cc6fd513c0f7297ea2da5cef021d b/Gateways/FE/projects/.resources/8260e50a4501652a6af8a8634b2eac0098cb6f2284d82cc0b41c3073f0bbdc20 similarity index 97% rename from Gateways/FE/projects/.resources/d317b8c0cfbccfd987dad59bf9777e61c397cc6fd513c0f7297ea2da5cef021d rename to Gateways/FE/projects/.resources/8260e50a4501652a6af8a8634b2eac0098cb6f2284d82cc0b41c3073f0bbdc20 index e9917c4..cab8b36 100644 --- a/Gateways/FE/projects/.resources/d317b8c0cfbccfd987dad59bf9777e61c397cc6fd513c0f7297ea2da5cef021d +++ b/Gateways/FE/projects/.resources/8260e50a4501652a6af8a8634b2eac0098cb6f2284d82cc0b41c3073f0bbdc20 @@ -1,6 +1,7 @@ { "custom": { - "path": "/" + "path": "/", + "test": 0 }, "params": {}, "propConfig": { @@ -13,11 +14,14 @@ "type": "expr" }, "persistent": true + }, + "custom.test": { + "persistent": true } }, "props": { "defaultSize": { - "height": 51, + "height": 80, "width": 1094 } }, @@ -136,6 +140,9 @@ "meta": { "name": "EmbeddedView" }, + "position": { + "display": false + }, "propConfig": { "custom.paths": { "binding": { @@ -165,6 +172,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tvalues \u003d system.tag.readBlocking(value[\u0027paths\u0027])\n\tfor item in values:\n\t\tif item.value \u003e 150:\n\t\t\treturn True\n\treturn False", @@ -187,10 +195,17 @@ { "events": { "component": { + "onRowClick": { + "config": { + "script": "\tself.view.custom.test \u003d event.row" + }, + "scope": "G", + "type": "script" + }, "onRowDoubleClick": { "config": { "params": {}, - "view": "Pages/Dev/F_Alarms/L1/Alarm Status" + "view": "Pages/Alarms/Active Alarms" }, "scope": "C", "type": "nav" @@ -421,9 +436,6 @@ "fontSize": 16 } }, - "selection": { - "enableRowSelection": false - }, "style": { "marginBottom": "5px", "marginTop": "5px", diff --git a/Gateways/FE/projects/.resources/82b0c40df933f3531750f1520425f846a23c18f28682d2bc3ade9dd271001f2a b/Gateways/FE/projects/.resources/82b0c40df933f3531750f1520425f846a23c18f28682d2bc3ade9dd271001f2a deleted file mode 100644 index 7c2e95f..0000000 --- a/Gateways/FE/projects/.resources/82b0c40df933f3531750f1520425f846a23c18f28682d2bc3ade9dd271001f2a +++ /dev/null @@ -1,489 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 1", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 2", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 3", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 4", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 5", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ground Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input AB THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input BC THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input CA THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Main Breaker", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Neutral Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output A KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output A PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output B KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output B PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output C KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output C PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output KVA", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output KWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Total KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO2_default]GAL1271/SATB1_GAL1271_PDU_P2-2-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/a477a4446ba27f331e610b2e02794d3bd8d75c7f8e4b33d31cdac49b3565fff6 b/Gateways/FE/projects/.resources/83c556349dc560929b6d59892ebbcde46b5474bbee99ebbce5d180101223c4e9 similarity index 96% rename from Gateways/FE/projects/.resources/a477a4446ba27f331e610b2e02794d3bd8d75c7f8e4b33d31cdac49b3565fff6 rename to Gateways/FE/projects/.resources/83c556349dc560929b6d59892ebbcde46b5474bbee99ebbce5d180101223c4e9 index 284953a..957bd95 100644 --- a/Gateways/FE/projects/.resources/a477a4446ba27f331e610b2e02794d3bd8d75c7f8e4b33d31cdac49b3565fff6 +++ b/Gateways/FE/projects/.resources/83c556349dc560929b6d59892ebbcde46b5474bbee99ebbce5d180101223c4e9 @@ -85,6 +85,9 @@ "meta": { "name": "RTU Diagram" }, + "position": { + "shrink": 0 + }, "propConfig": { "props.params.objectName": { "binding": { @@ -140,7 +143,10 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", "overflow": "visible", diff --git a/Gateways/FE/projects/.resources/83db610775d991962753baa00babb569c05a798bbc8481e524d1b8a6811c4c22 b/Gateways/FE/projects/.resources/83db610775d991962753baa00babb569c05a798bbc8481e524d1b8a6811c4c22 new file mode 100644 index 0000000..1e86ecd Binary files /dev/null and b/Gateways/FE/projects/.resources/83db610775d991962753baa00babb569c05a798bbc8481e524d1b8a6811c4c22 differ diff --git a/Gateways/FE/projects/.resources/841120a757fdbbb0ec892dad451c0f7d883759ab61cb7bfce56319e680dfd2c8 b/Gateways/FE/projects/.resources/841120a757fdbbb0ec892dad451c0f7d883759ab61cb7bfce56319e680dfd2c8 deleted file mode 100644 index 240cf88..0000000 --- a/Gateways/FE/projects/.resources/841120a757fdbbb0ec892dad451c0f7d883759ab61cb7bfce56319e680dfd2c8 +++ /dev/null @@ -1,398 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor A Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser A Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser B Signal", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulating Hot Gas Reheat Valve Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Building Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor A Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B1 Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B2 Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Economizer Enabled Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Exhaust Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heating Enabled Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Remote Forced Occupied Status", - "options": [ - "Unforced", - "Forced" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge A Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge B Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outdoor Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/850eb99378caed086760906e2f5cdedfb7fc42a18dc996a19296badf6d2cb063 b/Gateways/FE/projects/.resources/850eb99378caed086760906e2f5cdedfb7fc42a18dc996a19296badf6d2cb063 new file mode 100644 index 0000000..843f181 Binary files /dev/null and b/Gateways/FE/projects/.resources/850eb99378caed086760906e2f5cdedfb7fc42a18dc996a19296badf6d2cb063 differ diff --git a/Gateways/FE/projects/.resources/85d0cabe9b4b6600687c3d4e317649b5484314217dad900a08ca9bb376ff599b b/Gateways/FE/projects/.resources/85d0cabe9b4b6600687c3d4e317649b5484314217dad900a08ca9bb376ff599b deleted file mode 100644 index bd60e76..0000000 Binary files a/Gateways/FE/projects/.resources/85d0cabe9b4b6600687c3d4e317649b5484314217dad900a08ca9bb376ff599b and /dev/null differ diff --git a/Gateways/FE/projects/.resources/85e281d760e4ef5c0c7c00ea9d3bf254faacae02d38e077d03ac904ee62a1617 b/Gateways/FE/projects/.resources/85e281d760e4ef5c0c7c00ea9d3bf254faacae02d38e077d03ac904ee62a1617 new file mode 100644 index 0000000..72b6081 --- /dev/null +++ b/Gateways/FE/projects/.resources/85e281d760e4ef5c0c7c00ea9d3bf254faacae02d38e077d03ac904ee62a1617 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.3-1-1", + "P1.3-1-2", + "P1.3-1-3", + "P1.3-1-4", + "P1.3-1-5", + "P1.3-1-6", + "P1.3-2-1", + "P1.3-2-2", + "P1.3-2-3", + "P1.3-2-4", + "P1.3-2-5", + "P1.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/86666f9d747b780719628171c3f0a442eaf81713da749aaa9853c656b600e1fc b/Gateways/FE/projects/.resources/86666f9d747b780719628171c3f0a442eaf81713da749aaa9853c656b600e1fc deleted file mode 100644 index ab4ae8a..0000000 --- a/Gateways/FE/projects/.resources/86666f9d747b780719628171c3f0a442eaf81713da749aaa9853c656b600e1fc +++ /dev/null @@ -1,449 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 200, - "width": 600 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "elementPosition": { - "shrink": 0 - }, - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_DOAS_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8, - "setpointValue": "" - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexRepeater_0" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_DOAS_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 60, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 55, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 60, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 55, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "backgroundColor": "var(--container)", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/866ca9421276e9d1b4c07b4dbace4747ff0128f43f473774f96e708566f765ef b/Gateways/FE/projects/.resources/866ca9421276e9d1b4c07b4dbace4747ff0128f43f473774f96e708566f765ef deleted file mode 100644 index 18fce82..0000000 Binary files a/Gateways/FE/projects/.resources/866ca9421276e9d1b4c07b4dbace4747ff0128f43f473774f96e708566f765ef and /dev/null differ diff --git a/Gateways/FE/projects/.resources/868071b68d5691008ea5cf1d23a01073d7e472f37dcc9ae7f6aef60adba13a86 b/Gateways/FE/projects/.resources/868071b68d5691008ea5cf1d23a01073d7e472f37dcc9ae7f6aef60adba13a86 new file mode 100644 index 0000000..fcd23b8 Binary files /dev/null and b/Gateways/FE/projects/.resources/868071b68d5691008ea5cf1d23a01073d7e472f37dcc9ae7f6aef60adba13a86 differ diff --git a/Gateways/FE/projects/.resources/86a63df1d038e4216fff8ca864da22d2812ec22ffc1553112e2555272d2253e1 b/Gateways/FE/projects/.resources/86a63df1d038e4216fff8ca864da22d2812ec22ffc1553112e2555272d2253e1 new file mode 100644 index 0000000..c61ae7c Binary files /dev/null and b/Gateways/FE/projects/.resources/86a63df1d038e4216fff8ca864da22d2812ec22ffc1553112e2555272d2253e1 differ diff --git a/Gateways/FE/projects/.resources/87698ce77132f920cb218ed08abd6870eb378246c1caa93594ca9ef26d74445f b/Gateways/FE/projects/.resources/87698ce77132f920cb218ed08abd6870eb378246c1caa93594ca9ef26d74445f new file mode 100644 index 0000000..7db1da7 Binary files /dev/null and b/Gateways/FE/projects/.resources/87698ce77132f920cb218ed08abd6870eb378246c1caa93594ca9ef26d74445f differ diff --git a/Gateways/FE/projects/.resources/88e5ccf0bf768d6b72ec68e13964799977744c8b46e28c75a75b9e1cb90f5a6e b/Gateways/FE/projects/.resources/88e5ccf0bf768d6b72ec68e13964799977744c8b46e28c75a75b9e1cb90f5a6e new file mode 100644 index 0000000..86bfbbc Binary files /dev/null and b/Gateways/FE/projects/.resources/88e5ccf0bf768d6b72ec68e13964799977744c8b46e28c75a75b9e1cb90f5a6e differ diff --git a/Gateways/FE/projects/.resources/89f728efc8de2b8bf0929c664c982c6654d9049a9933a07b9d2452993d27ccdd b/Gateways/FE/projects/.resources/89f728efc8de2b8bf0929c664c982c6654d9049a9933a07b9d2452993d27ccdd new file mode 100644 index 0000000..d20c3be Binary files /dev/null and b/Gateways/FE/projects/.resources/89f728efc8de2b8bf0929c664c982c6654d9049a9933a07b9d2452993d27ccdd differ diff --git a/Gateways/FE/projects/.resources/6bf3d02112ff5c30ac3d6940a4bab512486534b75a17996d99e2f1014ad7cf10 b/Gateways/FE/projects/.resources/8a58c52f0d8d1da3ba5f2e4362afaa6b7df1203cff38ad467c0a032c9ac9fad2 similarity index 89% rename from Gateways/FE/projects/.resources/6bf3d02112ff5c30ac3d6940a4bab512486534b75a17996d99e2f1014ad7cf10 rename to Gateways/FE/projects/.resources/8a58c52f0d8d1da3ba5f2e4362afaa6b7df1203cff38ad467c0a032c9ac9fad2 index 3333454..9e7178c 100644 --- a/Gateways/FE/projects/.resources/6bf3d02112ff5c30ac3d6940a4bab512486534b75a17996d99e2f1014ad7cf10 +++ b/Gateways/FE/projects/.resources/8a58c52f0d8d1da3ba5f2e4362afaa6b7df1203cff38ad467c0a032c9ac9fad2 @@ -122,20 +122,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,16 +381,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack1 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -421,16 +409,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack2 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -454,16 +437,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack3 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -487,16 +465,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack4 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -520,16 +493,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack5 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" } ], @@ -560,7 +528,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 2 + "currentTabIndex": 6 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/82eebf0a7e218fb60673ddf9ec77ae4145adf2ef36abf0050d4116f556ba6c3e b/Gateways/FE/projects/.resources/8bca150fa879c13b496f6791c23df6db0c4489ae795f21d867d0993126634f89 similarity index 98% rename from Gateways/FE/projects/.resources/82eebf0a7e218fb60673ddf9ec77ae4145adf2ef36abf0050d4116f556ba6c3e rename to Gateways/FE/projects/.resources/8bca150fa879c13b496f6791c23df6db0c4489ae795f21d867d0993126634f89 index 3215a90..fdc7f37 100644 --- a/Gateways/FE/projects/.resources/82eebf0a7e218fb60673ddf9ec77ae4145adf2ef36abf0050d4116f556ba6c3e +++ b/Gateways/FE/projects/.resources/8bca150fa879c13b496f6791c23df6db0c4489ae795f21d867d0993126634f89 @@ -177,6 +177,9 @@ "meta": { "name": "Label" }, + "position": { + "shrink": 0 + }, "propConfig": { "props.text": { "binding": { @@ -268,12 +271,14 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "gap": "var(--space-xl)", + "overflow": "visible" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/8bf5058ec5f92fcdbbe7700aef560989938181b6acd863dc2fac39dc4dcf6056 b/Gateways/FE/projects/.resources/8bf5058ec5f92fcdbbe7700aef560989938181b6acd863dc2fac39dc4dcf6056 new file mode 100644 index 0000000..830d366 --- /dev/null +++ b/Gateways/FE/projects/.resources/8bf5058ec5f92fcdbbe7700aef560989938181b6acd863dc2fac39dc4dcf6056 @@ -0,0 +1,373 @@ +from datetime import datetime + + +def applyExclusions(items, datasetTagpath): + """ + Sorts a list of tag dictionary objects. + + This function assumes that the UDT structure has a '{rootPath}/Manual Exclusions/{Info|Config|Meta}'. We fail gracefully if not. + + Args: + items (List[Dict]): A list of tag dictionaries with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + datasetTagpath (String): A tagpath to an L4 UDT Category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/Info". + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + """ + + # parse datasetTagpath + rootPath = datasetTagpath[:datasetTagpath.rindex('/')] # "[PHXA2_IG_COMN]System/Device Datasets/RTU" + category = datasetTagpath[datasetTagpath.rindex('/')+1:] # "Info" + exclusionPath = '{rootPath}/Manual Exclusions/{category}'.format(rootPath=rootPath, category=category) + logger = system.util.getLogger("Device Dataset/itemsExcluded()") + res = [] + + # Read sort order, convert from unicode to string, and return unchanged items if empty. + data = system.tag.readBlocking(exclusionPath)[0] + excludedTags = list(data.value) if (data and data.value is not None) else [] + excludedTags = [str(tag) for tag in excludedTags] + if len(excludedTags) == 0: return items + + return list(filter(lambda x: str(x.get('tagName')) not in excludedTags, items)) + + +def getTagInstances(deviceDataset, tagPath, folder=""): + """ + Iterates through a DeviceDataset and returns instances for a Tag Info FlexRepeater. + This function is called by the 'instances' binding in the L4 /Info views. + + Args: + deviceDataset (Document): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + These are stored in [PHXA2_IG_COMN]System/Device Datasets. + + tagPath (String): A tagpath to the root of a device, i.e "[PHXA2_IG_COMN]RM2505/PHXA2_RM2505_FCU_4". + + folder (String): The folder the tags live in, i.e "/Config" or "/Meta". + + Returns: + List[List]: instances to be used in a /Tag Info FlexRepeater. + """ + + # Append /Config or /Meta to the tagpath. + tagPath += folder + + res = [] + + for jsonItem in list(deviceDataset): + + tagName = jsonItem.get("tagName", "N/A") + dataType = jsonItem.get("engUnit", "N/A") + qualifiedTagpath = "{tagPath}/{tagName}".format( + tagPath=tagPath, tagName=tagName + ) + + # Create a FlexRepeater instance with the extracted parameters. + res.append({"name": tagName, "dataType": dataType, "tagPath": qualifiedTagpath}) + + return res + + +def getSortedTagDictionaries(items, datasetTagpath): + """ + Sorts a list of tag dictionary objects. + + This function assumes that the UDT structure has a '{rootPath}/Configuration/{Info|Config|Meta}SortOrder'. We fail gracefully if not. + + Args: + items (List[Dict]): A list of tag dictionaries with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + datasetTagpath (String): A tagpath to an L4 UDT Category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/Info". + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + """ + + # parse datasetTagpath + rootPath = datasetTagpath[:datasetTagpath.rindex('/')] # "[PHXA2_IG_COMN]System/Device Datasets/RTU" + category = datasetTagpath[datasetTagpath.rindex('/')+1:] # "Info" + sortOrderPath = '{rootPath}/Sorting Orders/{category}'.format(rootPath=rootPath, category=category) + + # Read sort order, convert from unicode to string, and return unchanged items if empty. + data = system.tag.readBlocking(sortOrderPath)[0] + sortingOrder = list(data.value) if (data and data.value is not None) else [] + sortingOrder = [str(item) for item in sortingOrder] + if len(sortingOrder) == 0: return items + + # Sort items based on tag names in sorting order. + sortedItems = sorted( + items, + key=lambda x: ( + sortingOrder.index(x['tagName']) if x['tagName'] in sortingOrder else len(sortingOrder) # append unsorted tags + ) + ) + + return sortedItems + + +def getDiff(previousData, currentData, folder=""): + """ + Get difference between data before generation and after. This is meant to track + manual additions being lost (functionality which will be improved soon^tm). + + Args: + previousData (List[Dict]): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + currentData (List[Dict]): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + Returns: + String: A timestamped log message detailing tags that existed in previousData and not in currentData. + + """ + logMessage = "" + + for item in previousInfo: + tagName = item.get("tagName", "") + if tagName is "": + continue + + print( + "{} in {}? {}.".format(tagName, currentData, tagName in currentData) + ) + logger.info( + "{} in {}? {}.".format(tagName, currentData, tagName in currentData) + ) + + if tagName not in currentData: + logMessage += "\n{}: {} was removed in {} update.".format(timestamp, folder, item.tagName) + + return logMessage + + +def generateDeviceDataset(deviceTagpath, datasetTagpath, writeToSystem=True, debug=False): + """ + Create a new device dataset. + + Args: + deviceTagpath (String): A tagpath to the root of a device, i.e "[PHXA2_IG_COMN]Roof/PHXA2_ROOF_RTU_1". + + datasetTagpath (String): A tagpath to an L4 UDT category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/{Info|Config|Meta|Alarms}". + + writeToSystem (Boolean)[Optional]: If specified as false, returns the result instead of writing it + to datasetTagpath in the system. + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + """ + import json + + allTagsOutput = [] + #deviceName = deviceTagpath[deviceTagpath.index('/')+1:] + if '/' in deviceTagpath: + deviceName = deviceTagpath[deviceTagpath.rindex('/')+1:] + else: + deviceName = deviceTagpath + logger = system.util.getLogger('{} Dataset'.format(deviceName)) + + + # Fetch tag configurations and sort by name + nodes = system.tag.getConfiguration(deviceTagpath, True) + for item in nodes: + if "tags" in item: + sortedTags = sorted(item["tags"], key=lambda x: x["name"]) + sortedTags = sorted( + sortedTags, + key=lambda x: ( + x.get("engUnit", "misc") + if x.get("engUnit", "misc") != "" + else "misc" + ), + ) + + for tagConfig in sortedTags: + if str(tagConfig["tagType"]) == "AtomicTag": + name = tagConfig.get("name", "") + dataType = tagConfig.get("dataType", "") + tagPath = deviceTagpath + "/" + name + instance = { + "instanceStyle": {"classes": ""}, + "instancePosition": {}, + "name": name, + "dataType": dataType, + } + + # Group based on name containing 'Power', 'Current', or 'Voltage' + allTagsOutput.append(instance) + + if debug: + logger.info('allTagsOutput: {}'.format(allTagsOutput)) + print('allTagsOutput: {}'.format(allTagsOutput)) + + ### FlexRepeater Binding + bindingOutput = [] + for tag in allTagsOutput: + tagName = tag["name"] + tag["tagPath"] = tagPath + "/" + tagName + bindingOutput.append(tag) + + ### Logan Script + res = [] + for item in bindingOutput: + tagPath = item["tagPath"] + tagNameIndex = tagPath.rindex("/") + 1 + res.append({"tagName": tagPath[tagNameIndex:], "engUnit": item["dataType"]}) + + ### Excluding + excludedTagDictionaries = applyExclusions(items=res, datasetTagpath=datasetTagpath) + + ### Sorting + sortedTagDictionaries = getSortedTagDictionaries(items=excludedTagDictionaries, datasetTagpath=datasetTagpath) + + if debug: + logger.info('sortedTagDictionaries: {}'.format(sortedTagDictionaries)) + logger.info('writing to: {}'.format(datasetTagpath)) + print('sortedTagDictionaries: {}'.format(sortedTagDictionaries)) + print('writing to: {}'.format(datasetTagpath)) + + if writeToSystem: + system.tag.writeBlocking(datasetTagpath, [sortedTagDictionaries]) + + return sortedTagDictionaries + + +def generateDeviceDatasetTrends(deviceTagpath, datasetTagpath, writeToSystem=True): + return {} + + +def generateL4(datasetTagpath, writeToSystem=True, debug=False): + """ + Highest level function. Can be called by users. + + Generate Info, Config, Meta, and Trends in a L4 UDT. Requires a UDT to exist with a reference tagpath specified. + + This function is called by _Manual Refresh in the L4 UDT. + + Args: + datasetTagpath (String): A tagpath to an L4 UDT, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU". + + writeToSystem (Boolean)[Optional]: If specified as false, returns the result instead of writing it + to datasetTagpath in the system. + + debug (Boolean)[Optional]: Enable verbose logging. + + Returns: + Dict{key: val}: A dictionary containing each dataset. Keys are ['info','config','meta','trends']. + + """ + timestamp = datetime.now().strftime("[%Y-%m-%d %H:%M:%S]") # Returns "[2025-08-08 08:28:32]". + logger = system.util.getLogger("Device Dataset") + logMessage = "" + + if debug: + logger.info("Generating L4 for {}.".format(datasetTagpath)) + print(datasetTagpath) + + # Get all relevant UDT data. + data = system.tag.readBlocking( + [ + datasetTagpath + "/Info", + datasetTagpath + "/Config", + datasetTagpath + "/Meta", + datasetTagpath + "/Trends", + datasetTagpath + "/Alarms", + datasetTagpath + "/_Reference Tagpath", + ] + ) + + # Catch bad tagPaths and non-existent data. + previousInfo = data[0].value if (data and data[0].value is not None) else {} + previousConfig = data[1].value if (data and data[1].value is not None) else {} + previousMeta = data[2].value if (data and data[2].value is not None) else {} + previousTrends = data[3].value if (data and data[3].value is not None) else {} + previousAlarms = data[4].value if (data and data[4].value is not None) else {} + referenceTagpath = data[5].value if (data and data[5].value is not None) else {} + + # If no reference device is given, the script explodes. We catch it here. + if referenceTagpath is None or len(referenceTagpath) == 0: + logger.info( + "\n{}: ERROR: Please verify that a reference tagpath is provided.".format(timestamp) + ) + logMessage += ( + "\n{}: ERROR: Please verify that a reference tagpath is provided.".format(timestamp) + ) + + system.tag.writeAsync([datasetTagpath + "/_Log Message"], [logMessage]) + return # exit early + + if debug: + logger.info( + "prevInfo: {}\nprevConfig: {}\n prevTrends: {}\n prevMeta: {}\n refTag: {}".format( + previousInfo, + previousConfig, + previousTrends, + previousMeta, + referenceTagpath, + ) + ) + print( + "prevInfo: {}\nprevConfig: {}\n prevTrends: {}\n prevMeta: {}\n refTag: {}".format( + previousInfo, + previousConfig, + previousTrends, + previousMeta, + referenceTagpath, + ) + ) + + # Build the dataset for the Info view. Pull each tagName from the dataset to track which manual additions are lost. + currentInfo = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}".format(referenceTagpath=referenceTagpath), # DON'T APPEND THIS WITH ANYTHING + datasetTagpath="{datasetTagpath}/Info".format(datasetTagpath=datasetTagpath), + writeToSystem=writeToSystem, + ) + + # Note manual additions that are lost in the update. + if debug: + currentInfoNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentInfo)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousInfo, currentData=currentInfo, folder="Info") + + + currentConfig = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Config".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Config".format(datasetTagpath=datasetTagpath), + writeToSystem=writeToSystem, + ) + + if debug: + currentConfigNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentConfig)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousConfig, currentData=currentConfigNames, folder="Config") + + + currentMeta = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Meta".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Meta".format(datasetTagpath=datasetTagpath), + writeToSystem=True, + ) + + if debug: + currentMetaNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentMeta)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousMeta, currentData=currentMetaNames, folder="Meta") + + + currentAlarms = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Alarms".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Alarms".format(datasetTagpath=datasetTagpath), + writeToSystem=True, + ) + + if debug: + currentAlarmsNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentAlarms)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousAlarms, currentData=currentAlarmsNames, folder="Alarms") + + + if len(logMessage) == 0: + logMessage = "{} Successfully generated.".format(timestamp) + + # Reset the _Manual Refresh tag back to False. + system.tag.writeAsync([datasetTagpath + "/_Manual Refresh"], [False]) + + # Write the aggregate log message to _Log Message. + system.tag.writeAsync([datasetTagpath + "/_Log Message"], [logMessage]) + + return logMessage \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/8cf355641d5869cb81593b07bccc28912ecb3aa94862c535ef008ac36746337d b/Gateways/FE/projects/.resources/8cf355641d5869cb81593b07bccc28912ecb3aa94862c535ef008ac36746337d deleted file mode 100644 index 0517480..0000000 Binary files a/Gateways/FE/projects/.resources/8cf355641d5869cb81593b07bccc28912ecb3aa94862c535ef008ac36746337d and /dev/null differ diff --git a/Gateways/FE/projects/.resources/8d9313bf434c393fc0cb4a2832944254767210d227486adcaa21b2a7aa371ef8 b/Gateways/FE/projects/.resources/8d9313bf434c393fc0cb4a2832944254767210d227486adcaa21b2a7aa371ef8 deleted file mode 100644 index 341494c..0000000 --- a/Gateways/FE/projects/.resources/8d9313bf434c393fc0cb4a2832944254767210d227486adcaa21b2a7aa371ef8 +++ /dev/null @@ -1,207 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Device Runtime", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ref_Devices", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_Avail_Devices", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_Devices", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_LineUp_Adjusting", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_LineUp_Complete", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_TransActive", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Avail", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Demand", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Fdbk", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Chiller LLS 1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/5c2ae214a01cf61964ae3ed52bbdb342a1c5b94e10266ed28fd0e149a14069fe b/Gateways/FE/projects/.resources/8de16e890c5bd088e7ce8b639091b83b27298d6f457c5faed1d006c9e4921901 similarity index 71% rename from Gateways/FE/projects/.resources/5c2ae214a01cf61964ae3ed52bbdb342a1c5b94e10266ed28fd0e149a14069fe rename to Gateways/FE/projects/.resources/8de16e890c5bd088e7ce8b639091b83b27298d6f457c5faed1d006c9e4921901 index c1f64f4..087481e 100644 --- a/Gateways/FE/projects/.resources/5c2ae214a01cf61964ae3ed52bbdb342a1c5b94e10266ed28fd0e149a14069fe +++ b/Gateways/FE/projects/.resources/8de16e890c5bd088e7ce8b639091b83b27298d6f457c5faed1d006c9e4921901 @@ -306,6 +306,78 @@ ] }, "type": "ia.display.sparkline" + }, + { + "meta": { + "name": "Map" + }, + "position": { + "height": 400, + "width": 400, + "x": 141.5, + "y": 187.5 + }, + "props": { + "init": { + "center": { + "lat": 38.660867, + "lng": -121.159728 + }, + "zoom": 12 + }, + "layers": { + "raster": { + "tile": [ + { + "WMS": { + "format": "image/jpeg", + "layers": "", + "styles": "", + "transparent": false, + "uppercase": false, + "version": "1.1.1" + }, + "options": { + "attribution": "Map data \u0026copy; \u003ca href\u003d\u0027https://www.openstreetmap.org/\u0027\u003eOpenStreetMap\u003c/a\u003e contributors, \u003ca href\u003d\u0027https://creativecommons.org/licenses/by-sa/2.0/\u0027\u003eCC-BY-SA\u003c/a\u003e", + "crossOrigin": false, + "detectRetina": false, + "errorTileUrl": "", + "opacity": 1, + "subdomains": [ + "a", + "b", + "c" + ], + "tileSize": { + "height": 256, + "width": 256 + }, + "tms": false, + "update": { + "interval": 200, + "whenIdle": false, + "whenZooming": true + }, + "zIndex": 1, + "zoom": { + "max": 18, + "min": 0, + "native": { + "max": null, + "min": null + }, + "offset": 0, + "reverse": false + } + }, + "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + "urlTemplateParams": {} + } + ] + } + } + }, + "type": "ia.display.map" } ], "meta": { diff --git a/Gateways/FE/projects/.resources/336621d3f4afb7dc1caa3e7ef05ddc14f96fc5cbe0422e7e22e1f2bbcab937a7 b/Gateways/FE/projects/.resources/8e0ee8340fbba991f3c3f89b3414c02f5936aa56b93db32f6ef6b3ec50ba7936 similarity index 99% rename from Gateways/FE/projects/.resources/336621d3f4afb7dc1caa3e7ef05ddc14f96fc5cbe0422e7e22e1f2bbcab937a7 rename to Gateways/FE/projects/.resources/8e0ee8340fbba991f3c3f89b3414c02f5936aa56b93db32f6ef6b3ec50ba7936 index 7e986f5..6ff0de0 100644 --- a/Gateways/FE/projects/.resources/336621d3f4afb7dc1caa3e7ef05ddc14f96fc5cbe0422e7e22e1f2bbcab937a7 +++ b/Gateways/FE/projects/.resources/8e0ee8340fbba991f3c3f89b3414c02f5936aa56b93db32f6ef6b3ec50ba7936 @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker A/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/8e63f939e67ebd225007c585547d653b7c3cb451133feb1acc0d093d70922d65 b/Gateways/FE/projects/.resources/8e63f939e67ebd225007c585547d653b7c3cb451133feb1acc0d093d70922d65 new file mode 100644 index 0000000..5383411 Binary files /dev/null and b/Gateways/FE/projects/.resources/8e63f939e67ebd225007c585547d653b7c3cb451133feb1acc0d093d70922d65 differ diff --git a/Gateways/FE/projects/.resources/8bfa9e50f981b60da57556120571a47b4158cb3b0fcdb14e74b2790d01e953d6 b/Gateways/FE/projects/.resources/8ef57dc6e1dfc1b36c5bac1866f71ee657f41668e08a22aa52b486b62a216faa similarity index 98% rename from Gateways/FE/projects/.resources/8bfa9e50f981b60da57556120571a47b4158cb3b0fcdb14e74b2790d01e953d6 rename to Gateways/FE/projects/.resources/8ef57dc6e1dfc1b36c5bac1866f71ee657f41668e08a22aa52b486b62a216faa index 4288a51..62835ae 100644 --- a/Gateways/FE/projects/.resources/8bfa9e50f981b60da57556120571a47b4158cb3b0fcdb14e74b2790d01e953d6 +++ b/Gateways/FE/projects/.resources/8ef57dc6e1dfc1b36c5bac1866f71ee657f41668e08a22aa52b486b62a216faa @@ -211,11 +211,13 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "padding": 15 + "gap": "var(--space-xl)" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/b26f87c5fc0a3698b7112adda61b82a0fef2912528863680c9cbda339c01f4f4 b/Gateways/FE/projects/.resources/902f2111e939fb158bdfb9c679a352b0cf402f83c3ecdeeadabbf60b44591a0b similarity index 99% rename from Gateways/FE/projects/.resources/b26f87c5fc0a3698b7112adda61b82a0fef2912528863680c9cbda339c01f4f4 rename to Gateways/FE/projects/.resources/902f2111e939fb158bdfb9c679a352b0cf402f83c3ecdeeadabbf60b44591a0b index d727045..81fb2ae 100644 --- a/Gateways/FE/projects/.resources/b26f87c5fc0a3698b7112adda61b82a0fef2912528863680c9cbda339c01f4f4 +++ b/Gateways/FE/projects/.resources/902f2111e939fb158bdfb9c679a352b0cf402f83c3ecdeeadabbf60b44591a0b @@ -791,12 +791,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -811,6 +814,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -868,12 +872,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -888,6 +895,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, diff --git a/Gateways/FE/projects/.resources/90e8072172974bfd0ba00123a93f08a3f1430dd7385a18ad7662e82d61bc0d71 b/Gateways/FE/projects/.resources/90e8072172974bfd0ba00123a93f08a3f1430dd7385a18ad7662e82d61bc0d71 deleted file mode 100644 index 9094cd2..0000000 Binary files a/Gateways/FE/projects/.resources/90e8072172974bfd0ba00123a93f08a3f1430dd7385a18ad7662e82d61bc0d71 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/92b799838056e57fc3d2565a0c0b16eb8aab218a2ecda658f89b00ea8b032e0d b/Gateways/FE/projects/.resources/92b799838056e57fc3d2565a0c0b16eb8aab218a2ecda658f89b00ea8b032e0d deleted file mode 100644 index f162487..0000000 Binary files a/Gateways/FE/projects/.resources/92b799838056e57fc3d2565a0c0b16eb8aab218a2ecda658f89b00ea8b032e0d and /dev/null differ diff --git a/Gateways/FE/projects/.resources/a2e73a104f567fa1f49ef85dafbb7784adc916a15cf693e4f86ad7f4e0d93491 b/Gateways/FE/projects/.resources/933fc2f64119c14830525540a4aedf7ad8b724c56e50c946b3f5919bf65da57d similarity index 83% rename from Gateways/FE/projects/.resources/a2e73a104f567fa1f49ef85dafbb7784adc916a15cf693e4f86ad7f4e0d93491 rename to Gateways/FE/projects/.resources/933fc2f64119c14830525540a4aedf7ad8b724c56e50c946b3f5919bf65da57d index ce0ff42..61289d4 100644 --- a/Gateways/FE/projects/.resources/a2e73a104f567fa1f49ef85dafbb7784adc916a15cf693e4f86ad7f4e0d93491 +++ b/Gateways/FE/projects/.resources/933fc2f64119c14830525540a4aedf7ad8b724c56e50c946b3f5919bf65da57d @@ -1,6 +1,78 @@ { - "custom": {}, - "params": {}, + "custom": { + "data": { + "data": [ + { + "Alm": "0", + "BP": 0, + "OAD": 0, + "SAD": 0, + "SAT": 0, + "device": "DOAS1", + "path": "[default]simulator/DOAS/DOAS1" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS2", + "path": "[default]simulator/DOAS/DOAS2" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS3", + "path": "[default]simulator/DOAS/DOAS3" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4", + "path": "[default]simulator/DOAS/DOAS4" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS5", + "path": "[default]simulator/DOAS/DOAS5" + } + ] + } + }, + "params": { + "device": "DOAS" + }, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "device": "{view.params.device}" + }, + "tagPath": "[default]System/DataTables/{device}/Data" + }, + "type": "tag" + }, + "persistent": true + }, + "params.device": { + "paramDirection": "input", + "persistent": true + } + }, "props": { "defaultSize": { "height": 1000, @@ -121,20 +193,15 @@ "props.data": { "binding": { "config": { - "struct": { - "paths": "{view.custom.data}", - "time": "now(5000)" - }, - "waitOnAll": true + "path": "view.custom.data.data" }, - "enabled": false, "transforms": [ { - "code": "\toutput \u003d []\n\tdata \u003d value[\"paths\"]\n\tfor item in data:\n\t\ttry:\n\t\t\tAlmS \u003d alarm.summary.calcMaxPriority(item)\n\t\texcept:\n\t\t\tAlmS \u003d -1\n\t\tif(AlmS \u003d\u003d 1):\n\t\t\tAlarmSeverity \u003d \"Controller\"\n\t\telif(AlmS \u003d\u003d 2):\n\t\t\tAlarmSeverity \u003d \"Info\"\n\t\telif(AlmS \u003d\u003d 3):\n\t\t\tAlarmSeverity \u003d \"Warning\"\n\t\telif(AlmS \u003d\u003d 4):\n\t\t\tAlarmSeverity \u003d \"Critical\"\n\t\telse:\n\t\t\tAlarmSeverity \u003d \" \"\n\t\tRAT \u003d system.tag.readBlocking(item + \"/Return Air Temperature\")[0].value\n\t\tSAT \u003d system.tag.readBlocking(item + \"/Supply Air Temperature\")[0].value\n\t\t#Name \u003d system.tag.readBlocking(item + \"/Meta/EqName\")[0].value\n\t\tName \u003d item.split(\u0027_\u0027)[5]\n\t\t#Tag \u003d system.tag.readBlocking(item + \"/Meta/Ignition Tag Name\")[0].value\n\t\tTag \u003d item.split(\u0027/\u0027)[1]\n\t\ttagPath \u003d item\n\t\toutput.append({\n\t\t\t\t\t\t\"RAT\": RAT,\n\t\t\t\t\t\t\"SAT\": SAT,\n\t\t\t\t\t\t\"Name\": Name,\n\t\t\t\t\t\t\"Tag\": Tag,\n\t\t\t\t\t\t\"AlarmSeverity\": AlarmSeverity,\n\t\t\t\t\t\t\"tagPath\": tagPath})\n\treturn output", + "code": "\treturn equipment.common.style_table(value)", "type": "script" } ], - "type": "expr-struct" + "type": "property" } } }, @@ -508,48 +575,6 @@ "visible": true, "width": "" } - ], - "data": [ - { - "AlarmSeverity": " ", - "Name": "DOAS01", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS02", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS03", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS03", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS04", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS04", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS05", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS05", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - } ] }, "type": "ia.display.table" diff --git a/Gateways/FE/projects/.resources/9353c70ea8d9f78d08175777f4dac05a3934758e30c54f2ec057c380bcbda89a b/Gateways/FE/projects/.resources/9353c70ea8d9f78d08175777f4dac05a3934758e30c54f2ec057c380bcbda89a deleted file mode 100644 index a7ac9e0..0000000 Binary files a/Gateways/FE/projects/.resources/9353c70ea8d9f78d08175777f4dac05a3934758e30c54f2ec057c380bcbda89a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/949d397565201de83f0def1294fdd4e21558373523420696b7e060b23242aa91 b/Gateways/FE/projects/.resources/949d397565201de83f0def1294fdd4e21558373523420696b7e060b23242aa91 new file mode 100644 index 0000000..b3b67b3 Binary files /dev/null and b/Gateways/FE/projects/.resources/949d397565201de83f0def1294fdd4e21558373523420696b7e060b23242aa91 differ diff --git a/Gateways/FE/projects/.resources/94acf445110c94373a20f3f94479f2eb4608aed336e899522c1f2fd6966b6a12 b/Gateways/FE/projects/.resources/94acf445110c94373a20f3f94479f2eb4608aed336e899522c1f2fd6966b6a12 new file mode 100644 index 0000000..363984d --- /dev/null +++ b/Gateways/FE/projects/.resources/94acf445110c94373a20f3f94479f2eb4608aed336e899522c1f2fd6966b6a12 @@ -0,0 +1,96 @@ +{ + "custom": {}, + "params": { + "deviceDataset": "[default]Device Datasets/String/Info", + "objectName": "String", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/1" + }, + "propConfig": { + "params.deviceDataset": { + "paramDirection": "input", + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 479 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "98.7%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "transforms": [ + { + "code": "\tdeviceDataset \u003d system.tag.readBlocking(self.view.params.deviceDataset)[0].value\n\treturn Global.DeviceDatasets.getTagInstances(deviceDataset\u003ddeviceDataset, tagPath\u003dvalue)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\t\n\tpageId \u003d self.page.props.pageId\n#\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\ttagPath \u003d self.view.params.tagPath\n\tobjectName \u003d self.view.params.objectName\n\tutils.nav.openEQPopup(objectName, tagPath)\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/975469910642fe822836d394248656c96bf61067edf5a3493d8ccc8d6c3a44ff b/Gateways/FE/projects/.resources/975469910642fe822836d394248656c96bf61067edf5a3493d8ccc8d6c3a44ff new file mode 100644 index 0000000..d7e6118 Binary files /dev/null and b/Gateways/FE/projects/.resources/975469910642fe822836d394248656c96bf61067edf5a3493d8ccc8d6c3a44ff differ diff --git a/Gateways/FE/projects/.resources/989102c89fa5fe4cd08f17b93c3b95c40d10a58243edfe2237c1fd31f6d8eca8 b/Gateways/FE/projects/.resources/989102c89fa5fe4cd08f17b93c3b95c40d10a58243edfe2237c1fd31f6d8eca8 deleted file mode 100644 index 1f9e0d2..0000000 Binary files a/Gateways/FE/projects/.resources/989102c89fa5fe4cd08f17b93c3b95c40d10a58243edfe2237c1fd31f6d8eca8 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/98c37fef7f115ef1309532790d16e02fb172930bb82f225f7e782a52d7662de6 b/Gateways/FE/projects/.resources/98c37fef7f115ef1309532790d16e02fb172930bb82f225f7e782a52d7662de6 deleted file mode 100644 index ce8c56c..0000000 Binary files a/Gateways/FE/projects/.resources/98c37fef7f115ef1309532790d16e02fb172930bb82f225f7e782a52d7662de6 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/b4c9e89b5aba49e91deedc28891e82013a59143bd70d66ec2e1456764c2de410 b/Gateways/FE/projects/.resources/99765e6a330ba8b7f865cc552b647d8794691c92dd7569d3cdc97e2ec339e124 similarity index 99% rename from Gateways/FE/projects/.resources/b4c9e89b5aba49e91deedc28891e82013a59143bd70d66ec2e1456764c2de410 rename to Gateways/FE/projects/.resources/99765e6a330ba8b7f865cc552b647d8794691c92dd7569d3cdc97e2ec339e124 index 910a288..75665ba 100644 --- a/Gateways/FE/projects/.resources/b4c9e89b5aba49e91deedc28891e82013a59143bd70d66ec2e1456764c2de410 +++ b/Gateways/FE/projects/.resources/99765e6a330ba8b7f865cc552b647d8794691c92dd7569d3cdc97e2ec339e124 @@ -50,7 +50,8 @@ }, "props": { "defaultSize": { - "height": 500 + "height": 445, + "width": 807 } }, "root": { diff --git a/Gateways/FE/projects/.resources/9a2516474951bea6b5709854d4a52404f295689a19e25109470b580cc466cc1a b/Gateways/FE/projects/.resources/9a2516474951bea6b5709854d4a52404f295689a19e25109470b580cc466cc1a deleted file mode 100644 index 2d771e3..0000000 Binary files a/Gateways/FE/projects/.resources/9a2516474951bea6b5709854d4a52404f295689a19e25109470b580cc466cc1a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/9cab0e4a86b47fd81407964a9f9e5ede1d48210325391a0f8032efffdfe03ccc b/Gateways/FE/projects/.resources/9cab0e4a86b47fd81407964a9f9e5ede1d48210325391a0f8032efffdfe03ccc deleted file mode 100644 index e9bc4c8..0000000 --- a/Gateways/FE/projects/.resources/9cab0e4a86b47fd81407964a9f9e5ede1d48210325391a0f8032efffdfe03ccc +++ /dev/null @@ -1,779 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker1", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker2", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker3", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker4", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Charge Percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Charging", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Discharge Current", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Float Charging", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Temperature Celsius", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Voltage", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery number of Racks in service", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery runtime remaining Hours", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery runtime remaining minutes", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Total Active Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Total Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Main Input Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Maintenance Bypass Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Operating On Battery", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Operation Modes", - "options": [ - "None", - "Normal Operation", - "Battery Operation", - "Battery Test", - "Requested Static Bypass", - "Forced Static Bypass", - "Maintenance Bypass", - "Off", - "Emergency Static Bypass", - "Static Bypass Standby", - "Inverter Standby", - "Power Saving Mode", - "Inverter SPoT Mode", - "ECO Mode", - "ECOnversion", - "Charger SPoT Mode", - "Battery Discharge SPoT Mode" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input Active Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input Apparent Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input kWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output Percent Load", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output kW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output kWh", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "UPS Operating On Battery", - "options": [ - "False", - "True" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SATB1_ER1242_UPS-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 1200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/8291d2dd75b9d7ae5b66783e80eafea8feb84c2ac6c2fd0c7c5e27e9c32759d5 b/Gateways/FE/projects/.resources/9d76184faf5964c319c4aad465076825eca18cf5458bd83cb05879b177722345 similarity index 91% rename from Gateways/FE/projects/.resources/8291d2dd75b9d7ae5b66783e80eafea8feb84c2ac6c2fd0c7c5e27e9c32759d5 rename to Gateways/FE/projects/.resources/9d76184faf5964c319c4aad465076825eca18cf5458bd83cb05879b177722345 index 39e7b34..6cf805c 100644 --- a/Gateways/FE/projects/.resources/8291d2dd75b9d7ae5b66783e80eafea8feb84c2ac6c2fd0c7c5e27e9c32759d5 +++ b/Gateways/FE/projects/.resources/9d76184faf5964c319c4aad465076825eca18cf5458bd83cb05879b177722345 @@ -3,6 +3,7 @@ "params": { "dataType": "Int4", "enabled": false, + "label": "value", "tagPath": "[default]simulator/New Tag", "visible": true }, @@ -15,6 +16,10 @@ "paramDirection": "input", "persistent": true }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, "params.tagPath": { "paramDirection": "input", "persistent": true @@ -40,7 +45,9 @@ } }, "position": { - "basis": "100px" + "basis": "50%", + "grow": 1, + "shrink": 0 }, "propConfig": { "meta.tooltip.text": { @@ -64,7 +71,7 @@ "references": { "tagPath": "{view.params.tagPath}" }, - "tagPath": "{tagPath}.Tooltip" + "tagPath": "{tagPath}.Name" }, "type": "tag" } @@ -77,7 +84,7 @@ "name": "Input" }, "position": { - "basis": "75px" + "basis": "65px" }, "propConfig": { "props.params.enabled": { @@ -105,11 +112,6 @@ } } }, - "props": { - "style": { - "minWidth": "10px" - } - }, "type": "ia.display.view" }, { @@ -117,7 +119,7 @@ "name": "Units" }, "position": { - "basis": "20px" + "basis": "35px" }, "propConfig": { "props.text": { @@ -156,10 +158,11 @@ } }, "props": { + "justify": "center", "style": { - "gap": "10px", + "gap": "var(--space-xs)", "overflow": "visible", - "padding": "0 10px" + "padding": "var(--space-xs)" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/.resources/9e93773c93941cfcd922801c809f8fa3c293286cd806869e3fd1583950d2f017 b/Gateways/FE/projects/.resources/9e93773c93941cfcd922801c809f8fa3c293286cd806869e3fd1583950d2f017 deleted file mode 100644 index c8f3ae8..0000000 Binary files a/Gateways/FE/projects/.resources/9e93773c93941cfcd922801c809f8fa3c293286cd806869e3fd1583950d2f017 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/90cd798a080956cb1a657f9838f137a9f175e84b127af490b883a1abd086c138 b/Gateways/FE/projects/.resources/9f8077c54c4b2e7404ea4bbf7b19ccca2f06c24530e98d50ac6bd3758dfec766 similarity index 97% rename from Gateways/FE/projects/.resources/90cd798a080956cb1a657f9838f137a9f175e84b127af490b883a1abd086c138 rename to Gateways/FE/projects/.resources/9f8077c54c4b2e7404ea4bbf7b19ccca2f06c24530e98d50ac6bd3758dfec766 index 8420dbf..a70b720 100644 --- a/Gateways/FE/projects/.resources/90cd798a080956cb1a657f9838f137a9f175e84b127af490b883a1abd086c138 +++ b/Gateways/FE/projects/.resources/9f8077c54c4b2e7404ea4bbf7b19ccca2f06c24530e98d50ac6bd3758dfec766 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/d2a8e28550d652c582cec063265649018faa130b012d4f5967aa99e66deed8dc b/Gateways/FE/projects/.resources/9f8dc655c2a0ad1acfc706c02dc7ebe636045dcfc27d466d4af461c1de81c2db similarity index 97% rename from Gateways/FE/projects/.resources/d2a8e28550d652c582cec063265649018faa130b012d4f5967aa99e66deed8dc rename to Gateways/FE/projects/.resources/9f8dc655c2a0ad1acfc706c02dc7ebe636045dcfc27d466d4af461c1de81c2db index 89683e7..4f98c84 100644 --- a/Gateways/FE/projects/.resources/d2a8e28550d652c582cec063265649018faa130b012d4f5967aa99e66deed8dc +++ b/Gateways/FE/projects/.resources/9f8dc655c2a0ad1acfc706c02dc7ebe636045dcfc27d466d4af461c1de81c2db @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/82332a15f0f4944017d54c672bf58b723304ed49473e611af7b725f5e98b3430 b/Gateways/FE/projects/.resources/9fa0c4d098592e077fd9f354490b0e9c7a959a16d8969cb374eba0865ad4ec6c similarity index 69% rename from Gateways/FE/projects/.resources/82332a15f0f4944017d54c672bf58b723304ed49473e611af7b725f5e98b3430 rename to Gateways/FE/projects/.resources/9fa0c4d098592e077fd9f354490b0e9c7a959a16d8969cb374eba0865ad4ec6c index da3693e..1ec3f19 100644 --- a/Gateways/FE/projects/.resources/82332a15f0f4944017d54c672bf58b723304ed49473e611af7b725f5e98b3430 +++ b/Gateways/FE/projects/.resources/9fa0c4d098592e077fd9f354490b0e9c7a959a16d8969cb374eba0865ad4ec6c @@ -1110,6 +1110,7 @@ "config": { "expression": "now()" }, + "enabled": false, "transforms": [ { "formatType": "datetime", @@ -1129,6 +1130,7 @@ "style": { "overflow": "visible" }, + "text": "10:26 AM", "textStyle": { "fontSize": 8 } @@ -1151,6 +1153,7 @@ "config": { "expression": "now()-7200000" }, + "enabled": false, "transforms": [ { "formatType": "datetime", @@ -1167,6 +1170,7 @@ } }, "props": { + "text": "8:26 AM", "textStyle": { "fontSize": 8 } @@ -1174,10 +1178,257 @@ "type": "ia.display.label" }, { + "custom": { + "data": [ + 48.93775767938427, + 48.93954980623839, + 48.94134193309251, + 48.94313405994663, + 48.94492618680076, + 48.94671831365488, + 48.948510440509, + 48.95030256736312, + 48.952094694217244, + 48.953826904296875, + 48.954286565869715, + 48.95473135660561, + 48.95517614734151, + 48.955620938077416, + 48.956065728813314, + 48.95651051954921, + 48.95695531028512, + 48.957400101021015, + 48.95784489175691, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.96246632260701, + 48.966522594831275, + 48.97057886705554, + 48.97463513927981, + 48.97869141150408, + 48.98261260986328, + 48.97307560214996, + 48.970306396484375, + 48.98039213175324, + 48.98632503353692, + 48.9922579353206, + 48.99799346923828, + 48.98232587224112, + 48.96766662597656, + 48.99042862892151, + 49.01172637939453, + 49.00887027115255, + 49.0061060279271, + 49.00334178470165, + 49.0005775414762, + 48.99781329825075, + 48.99504905502529, + 48.99228481179984, + 48.991455078125, + 48.99073126712821, + 48.99030545420727, + 48.98987964128632, + 48.98945382836538, + 48.98902801544443, + 48.98860220252349, + 48.98817638960254, + 48.9877505766816, + 48.987324763760654, + 48.98689895083971, + 48.986473137918765, + 48.98604732499782, + 48.985621512076875, + 48.98519569915593, + 48.984769886234986, + 48.984642028808594, + 48.98321690333607, + 48.982378462714486, + 48.9815400220929, + 48.980701581471315, + 48.97986314084974, + 48.97902470022815, + 48.97818625960657, + 48.97734781898499, + 48.9765093783634, + 48.97567093774182, + 48.97513961791992, + 48.98038324575191, + 48.98422107626643, + 48.98805890678095, + 48.99189673729547, + 48.99304962158203, + 49.01760207339745, + 49.06324768066406, + 49.072952395248414, + 49.075775146484375, + 49.162017822265625, + 49.18662643432617, + 49.22480392456055, + 49.33439254760742, + 49.34982358887006, + 49.36427307128906, + 49.4187126159668, + 49.44184112548828, + 49.41184616088867, + 49.43357675565803, + 49.44950555188255, + 49.46491241455078, + 49.44029998779297, + 49.502130354649005, + 49.547393061895804, + 49.56104278564453, + 49.56673410634496, + 49.56774139404297, + 49.60948944091797, + 49.63447910619303, + 49.652772258265934, + 49.65827178955078, + 49.648982267634075, + 49.6473388671875, + 49.67273498431588, + 49.68767944428825, + 49.70262390426062, + 49.71756836423299, + 49.72704315185547, + 49.71781476653944, + 49.711058993980124, + 49.70430322142081, + 49.70001983642578, + 49.745941162109375, + 49.75809344210157, + 49.769861685097325, + 49.78162992809309, + 49.79301452636719, + 49.808630525051086, + 49.81317901611328, + 49.83413907283911, + 49.84647408081868, + 49.85880908879825, + 49.87074279785156, + 49.885271069335936, + 49.89934158020019, + 49.90826416015625, + 49.88678741455078, + 49.91400348516351, + 49.93002047587251, + 49.94017791748047, + 49.943929290771486, + 49.94567108154297, + 49.96929489002284, + 49.98027801513672, + 49.9922582574515, + 50.00103499174805, + 50.009811726044596, + 50.01858846034114, + 50.02708053588867, + 50.05751037597656, + 50.043951386451724, + 50.034023636817935, + 50.031036376953125, + 50.05364536853735, + 50.06652069091797, + 50.10275988273621, + 50.11332321166992, + 50.121934487276356, + 50.12683868408203, + 50.145294189453125, + 50.132325863933566, + 50.12283012876511, + 50.119972229003906, + 50.137004795774764, + 50.14002227783203, + 50.15262167358399, + 50.15979766845703, + 50.19883644354051, + 50.21022033691406, + 50.216957381629946, + 50.22092275943756, + 50.22488813724518, + 50.2288535150528, + 50.23136901855469, + 50.25269383798683, + 50.268309171115895, + 50.28392450424496, + 50.29383087158203, + 50.31239318847656, + 50.32179212990103, + 50.33089727852973, + 50.340002427158446, + 50.34910757578715, + 50.358212724415864, + 50.37303924560547, + 50.35304260253906, + 50.390848921012875, + 50.418535040092465, + 50.42687225341797, + 50.427852677998885, + 50.42842978307732, + 50.429006888155754, + 50.4295654296875, + 50.45530620416005, + 50.47944259643555, + 50.476891190950184, + 50.47441929802072, + 50.47285079956055, + 50.50048065185547, + 50.512048176552, + 50.52289581298828, + 50.528133008651736, + 50.53320731895447, + 50.5382816292572, + 50.53981018066406, + 50.526655430376614, + 50.524322509765625, + 50.54762676143646, + 50.56090545654297, + 50.56719805994804, + 50.57329514999882, + 50.5793922400496, + 50.58548933010038, + 50.59158642015116, + 50.59748840332031, + 50.61288116455078, + 50.6273193359375, + 50.621309860229495, + 50.61567306518555, + 50.65073530124952, + 50.683624267578125, + 50.68858735597029, + 50.69339670548949, + 50.6982060550087, + 50.703015404527896, + 50.7078247540471, + 50.70927429199219, + 50.7228862356048, + 50.73064422607422, + 50.7369174785509, + 50.74299680065254, + 50.74907612275418, + 50.755155444855816, + 50.76123476695746, + 50.767120361328125, + 50.77496639402143, + 50.78257012127299, + 50.790173848524546, + 50.7977775757761, + 50.80260467529297, + 50.788244449297586, + 50.78156661987305, + 50.78156661987305 + ], + "max": 50.80260467529297, + "min": 48.93775767938427 + }, "meta": { "name": "Sparkline", "tooltip": { - "enabled": true + "enabled": true, + "text": "Max: 50.80260467529297 | Min: 48.93775767938427" } }, "position": { @@ -1192,6 +1443,7 @@ "config": { "path": "view.custom.data" }, + "enabled": false, "transforms": [ { "code": "\tdata \u003d []\n\tfor item in value:\n\t\tdata.append(item[\u0027dwpt\u0027])\n\treturn data", @@ -1206,6 +1458,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "transforms": [ { "expression": "max({value})", @@ -1220,6 +1473,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "transforms": [ { "expression": "min({value})", @@ -1238,6 +1492,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "expression": "\"Max: \" + {value}[\u0027max\u0027] + \" | \" + \"Min: \" + {value}[\u0027min\u0027]\r\n", @@ -1252,6 +1507,7 @@ "config": { "path": "view.custom.hiRange" }, + "enabled": false, "type": "property" } }, @@ -1260,6 +1516,7 @@ "config": { "path": "view.custom.hiRange" }, + "enabled": false, "type": "property" } }, @@ -1268,6 +1525,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "type": "property" } }, @@ -1280,6 +1538,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tif value[\u0027max\u0027] \u003c value[\u0027range\u0027]:\n\t\treturn value[\u0027range\u0027]\n\telse:\n\t\treturn value[\u0027max\u0027]+0.7", @@ -1298,6 +1557,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tif value[\u0027min\u0027] \u003e value[\u0027range\u0027]:\n\t\treturn value[\u0027range\u0027]\n\telse:\n\t\treturn value[\u0027min\u0027]-0.7", @@ -1312,7 +1572,9 @@ "desired": { "fill": { "color": "var(--container)" - } + }, + "high": 65, + "low": 65 }, "marker": { "high": { @@ -1324,7 +1586,252 @@ } } }, - "range": {} + "points": [ + 48.93775767938427, + 48.93954980623839, + 48.94134193309251, + 48.94313405994663, + 48.94492618680076, + 48.94671831365488, + 48.948510440509, + 48.95030256736312, + 48.952094694217244, + 48.953826904296875, + 48.954286565869715, + 48.95473135660561, + 48.95517614734151, + 48.955620938077416, + 48.956065728813314, + 48.95651051954921, + 48.95695531028512, + 48.957400101021015, + 48.95784489175691, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.96246632260701, + 48.966522594831275, + 48.97057886705554, + 48.97463513927981, + 48.97869141150408, + 48.98261260986328, + 48.97307560214996, + 48.970306396484375, + 48.98039213175324, + 48.98632503353692, + 48.9922579353206, + 48.99799346923828, + 48.98232587224112, + 48.96766662597656, + 48.99042862892151, + 49.01172637939453, + 49.00887027115255, + 49.0061060279271, + 49.00334178470165, + 49.0005775414762, + 48.99781329825075, + 48.99504905502529, + 48.99228481179984, + 48.991455078125, + 48.99073126712821, + 48.99030545420727, + 48.98987964128632, + 48.98945382836538, + 48.98902801544443, + 48.98860220252349, + 48.98817638960254, + 48.9877505766816, + 48.987324763760654, + 48.98689895083971, + 48.986473137918765, + 48.98604732499782, + 48.985621512076875, + 48.98519569915593, + 48.984769886234986, + 48.984642028808594, + 48.98321690333607, + 48.982378462714486, + 48.9815400220929, + 48.980701581471315, + 48.97986314084974, + 48.97902470022815, + 48.97818625960657, + 48.97734781898499, + 48.9765093783634, + 48.97567093774182, + 48.97513961791992, + 48.98038324575191, + 48.98422107626643, + 48.98805890678095, + 48.99189673729547, + 48.99304962158203, + 49.01760207339745, + 49.06324768066406, + 49.072952395248414, + 49.075775146484375, + 49.162017822265625, + 49.18662643432617, + 49.22480392456055, + 49.33439254760742, + 49.34982358887006, + 49.36427307128906, + 49.4187126159668, + 49.44184112548828, + 49.41184616088867, + 49.43357675565803, + 49.44950555188255, + 49.46491241455078, + 49.44029998779297, + 49.502130354649005, + 49.547393061895804, + 49.56104278564453, + 49.56673410634496, + 49.56774139404297, + 49.60948944091797, + 49.63447910619303, + 49.652772258265934, + 49.65827178955078, + 49.648982267634075, + 49.6473388671875, + 49.67273498431588, + 49.68767944428825, + 49.70262390426062, + 49.71756836423299, + 49.72704315185547, + 49.71781476653944, + 49.711058993980124, + 49.70430322142081, + 49.70001983642578, + 49.745941162109375, + 49.75809344210157, + 49.769861685097325, + 49.78162992809309, + 49.79301452636719, + 49.808630525051086, + 49.81317901611328, + 49.83413907283911, + 49.84647408081868, + 49.85880908879825, + 49.87074279785156, + 49.885271069335936, + 49.89934158020019, + 49.90826416015625, + 49.88678741455078, + 49.91400348516351, + 49.93002047587251, + 49.94017791748047, + 49.943929290771486, + 49.94567108154297, + 49.96929489002284, + 49.98027801513672, + 49.9922582574515, + 50.00103499174805, + 50.009811726044596, + 50.01858846034114, + 50.02708053588867, + 50.05751037597656, + 50.043951386451724, + 50.034023636817935, + 50.031036376953125, + 50.05364536853735, + 50.06652069091797, + 50.10275988273621, + 50.11332321166992, + 50.121934487276356, + 50.12683868408203, + 50.145294189453125, + 50.132325863933566, + 50.12283012876511, + 50.119972229003906, + 50.137004795774764, + 50.14002227783203, + 50.15262167358399, + 50.15979766845703, + 50.19883644354051, + 50.21022033691406, + 50.216957381629946, + 50.22092275943756, + 50.22488813724518, + 50.2288535150528, + 50.23136901855469, + 50.25269383798683, + 50.268309171115895, + 50.28392450424496, + 50.29383087158203, + 50.31239318847656, + 50.32179212990103, + 50.33089727852973, + 50.340002427158446, + 50.34910757578715, + 50.358212724415864, + 50.37303924560547, + 50.35304260253906, + 50.390848921012875, + 50.418535040092465, + 50.42687225341797, + 50.427852677998885, + 50.42842978307732, + 50.429006888155754, + 50.4295654296875, + 50.45530620416005, + 50.47944259643555, + 50.476891190950184, + 50.47441929802072, + 50.47285079956055, + 50.50048065185547, + 50.512048176552, + 50.52289581298828, + 50.528133008651736, + 50.53320731895447, + 50.5382816292572, + 50.53981018066406, + 50.526655430376614, + 50.524322509765625, + 50.54762676143646, + 50.56090545654297, + 50.56719805994804, + 50.57329514999882, + 50.5793922400496, + 50.58548933010038, + 50.59158642015116, + 50.59748840332031, + 50.61288116455078, + 50.6273193359375, + 50.621309860229495, + 50.61567306518555, + 50.65073530124952, + 50.683624267578125, + 50.68858735597029, + 50.69339670548949, + 50.6982060550087, + 50.703015404527896, + 50.7078247540471, + 50.70927429199219, + 50.7228862356048, + 50.73064422607422, + 50.7369174785509, + 50.74299680065254, + 50.74907612275418, + 50.755155444855816, + 50.76123476695746, + 50.767120361328125, + 50.77496639402143, + 50.78257012127299, + 50.790173848524546, + 50.7977775757761, + 50.80260467529297, + 50.788244449297586, + 50.78156661987305, + 50.78156661987305 + ], + "range": { + "high": 65, + "low": 30 + } }, "type": "ia.display.sparkline" }, diff --git a/Gateways/FE/projects/.resources/a25b7c3f5d8f934599d513a91c9d25305ccdf188af39eea77000a9ac89194cbe b/Gateways/FE/projects/.resources/a25b7c3f5d8f934599d513a91c9d25305ccdf188af39eea77000a9ac89194cbe new file mode 100644 index 0000000..4e8e4df --- /dev/null +++ b/Gateways/FE/projects/.resources/a25b7c3f5d8f934599d513a91c9d25305ccdf188af39eea77000a9ac89194cbe @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.3-1-1", + "P4.3-1-2", + "P4.3-1-3", + "P4.3-1-4", + "P4.3-1-5", + "P4.3-1-6", + "P4.3-2-1", + "P4.3-2-2", + "P4.3-2-3", + "P4.3-2-4", + "P4.3-2-5", + "P4.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/a33ddf1c8dc6193de2cc8c4fa9fca25a9734f3ac0df168b0065b397d7603bbdb b/Gateways/FE/projects/.resources/a33ddf1c8dc6193de2cc8c4fa9fca25a9734f3ac0df168b0065b397d7603bbdb deleted file mode 100644 index 9e952d5..0000000 --- a/Gateways/FE/projects/.resources/a33ddf1c8dc6193de2cc8c4fa9fca25a9734f3ac0df168b0065b397d7603bbdb +++ /dev/null @@ -1,389 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-L Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-N Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 2, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52F1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/a6910826c41fa6382885b68c3cf8f9fafeb921d895ab9a6c6e62865c045e03be b/Gateways/FE/projects/.resources/a6910826c41fa6382885b68c3cf8f9fafeb921d895ab9a6c6e62865c045e03be deleted file mode 100644 index a93220e..0000000 Binary files a/Gateways/FE/projects/.resources/a6910826c41fa6382885b68c3cf8f9fafeb921d895ab9a6c6e62865c045e03be and /dev/null differ diff --git a/Gateways/FE/projects/.resources/a774e0dff036a37c91d6a275b1bd3c233743b67af7781793cbba2bdc0d4be399 b/Gateways/FE/projects/.resources/a774e0dff036a37c91d6a275b1bd3c233743b67af7781793cbba2bdc0d4be399 deleted file mode 100644 index 2c1951d..0000000 --- a/Gateways/FE/projects/.resources/a774e0dff036a37c91d6a275b1bd3c233743b67af7781793cbba2bdc0d4be399 +++ /dev/null @@ -1,238 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail", - "options": [ - "No Fail", - "Fail" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail", - "options": [ - "No Fail", - "Fail" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low", - "options": [ - "Normal", - "Low" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Difference", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail", - "options": [ - "No Fail", - "Fail" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "instances": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/DP Fail" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low", - "options": [ - "Normal", - "Low" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/DP Low" - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Difference", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Flow Difference" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Supply Temp Fail" - } - ], - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/cdca7b583d2503c5ae6c28f4652523f047a39cf9c8a14967d4ff882dc54152cb b/Gateways/FE/projects/.resources/a7a5dce61ce92cdb0aacfb3c55ac61e8d0d3baa3f05e73f47be8b26db0d9cab6 similarity index 62% rename from Gateways/FE/projects/.resources/cdca7b583d2503c5ae6c28f4652523f047a39cf9c8a14967d4ff882dc54152cb rename to Gateways/FE/projects/.resources/a7a5dce61ce92cdb0aacfb3c55ac61e8d0d3baa3f05e73f47be8b26db0d9cab6 index 1673fc1..75d97fe 100644 --- a/Gateways/FE/projects/.resources/cdca7b583d2503c5ae6c28f4652523f047a39cf9c8a14967d4ff882dc54152cb +++ b/Gateways/FE/projects/.resources/a7a5dce61ce92cdb0aacfb3c55ac61e8d0d3baa3f05e73f47be8b26db0d9cab6 @@ -2,12 +2,20 @@ "custom": { "tabsConfig": { "tabs": [ - "Status", + "R2-1-1", + "R2-1-2", + "R2-1-3", + "R2-1-4", + "R2-1-5", + "R2-1-6", + "R2-2-1", + "R2-2-2", + "R2-2-3", + "R2-2-4", + "R2-2-5", + "R2-2-6", "Control", - "Config", - "Trend", - "Meta", - "Wiki" + "Config" ] }, "trendConfig": { @@ -15,14 +23,8 @@ } }, "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "Data Hall", - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Data Hall" + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2" }, "propConfig": { "custom.tabsConfig": { @@ -69,10 +71,6 @@ "custom.trendConfig": { "persistent": true }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, "params.objectName": { "paramDirection": "input", "persistent": true @@ -82,54 +80,16 @@ "persistent": true } }, - "props": {}, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, "root": { "children": [ { "children": [ - { - "meta": { - "name": "Status" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, { "meta": { "name": "Trend" @@ -164,13 +124,20 @@ }, "type": "property" } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Trends\u0027)" + }, + "type": "expr" + } } }, "props": { "loading": { "order": "with-parent" - }, - "path": "Library/Templates/Trends" + } }, "type": "ia.display.view" }, @@ -193,14 +160,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -212,7 +171,7 @@ "props.path": { "binding": { "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Config\u0027)" }, "type": "expr" } @@ -244,14 +203,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -263,7 +214,7 @@ "props.path": { "binding": { "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Meta\u0027)" + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Meta\u0027)" }, "type": "expr" } @@ -290,14 +241,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -308,7 +251,7 @@ } }, "props": { - "path": "Library/Templates/Meta" + "path": "Library/Templates/Framework/Tag Notes/View Notes" }, "type": "ia.display.view" }, @@ -331,14 +274,6 @@ "type": "expr" } }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, "props.params.tagPath": { "binding": { "config": { @@ -350,7 +285,7 @@ "props.path": { "binding": { "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Control\u0027)" }, "type": "expr" } @@ -362,14 +297,191 @@ } }, "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" } ], "meta": { "name": "TabContainer" }, "position": { - "basis": "300px", - "grow": 1 + "basis": "1191px", + "shrink": 0 }, "propConfig": { "props.tabs": { @@ -390,8 +502,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/1a953642b0319fd63aa743bf936f0a7d07006b4e0e222454af929edc9e7b48a3 b/Gateways/FE/projects/.resources/a7a744f8f04d1cf2222702ed99fad93a69d19c418b8eceff3fddda7639d3c8bd similarity index 97% rename from Gateways/FE/projects/.resources/1a953642b0319fd63aa743bf936f0a7d07006b4e0e222454af929edc9e7b48a3 rename to Gateways/FE/projects/.resources/a7a744f8f04d1cf2222702ed99fad93a69d19c418b8eceff3fddda7639d3c8bd index 024f2aa..2314074 100644 --- a/Gateways/FE/projects/.resources/1a953642b0319fd63aa743bf936f0a7d07006b4e0e222454af929edc9e7b48a3 +++ b/Gateways/FE/projects/.resources/a7a744f8f04d1cf2222702ed99fad93a69d19c418b8eceff3fddda7639d3c8bd @@ -21,8 +21,8 @@ "config": true, "control": true }, - "objectName": "VAV", - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/VAV" + "objectName": "Data Hall", + "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Data Hall" }, "propConfig": { "custom.tabsConfig": { @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -259,11 +252,16 @@ }, "type": "property" } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Meta\u0027)" + }, + "type": "expr" + } } }, - "props": { - "path": "Library/Templates/Meta" - }, "type": "ia.display.view" }, { @@ -303,7 +301,7 @@ } }, "props": { - "path": "Library/Framework/Tag Notes/View Notes" + "path": "Library/Templates/Meta" }, "type": "ia.display.view" }, @@ -385,8 +383,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 1 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/aa2e9cfb6e9678bb5482a77ada25f2ad21ed578f69f5851843693dfd4369568d b/Gateways/FE/projects/.resources/aa2e9cfb6e9678bb5482a77ada25f2ad21ed578f69f5851843693dfd4369568d deleted file mode 100644 index fb8facb..0000000 Binary files a/Gateways/FE/projects/.resources/aa2e9cfb6e9678bb5482a77ada25f2ad21ed578f69f5851843693dfd4369568d and /dev/null differ diff --git a/Gateways/FE/projects/.resources/ab05fbaa46a529cb089001efec021b1ac1f507be74dec505195290e872eaba5b b/Gateways/FE/projects/.resources/ab05fbaa46a529cb089001efec021b1ac1f507be74dec505195290e872eaba5b new file mode 100644 index 0000000..17d6d40 Binary files /dev/null and b/Gateways/FE/projects/.resources/ab05fbaa46a529cb089001efec021b1ac1f507be74dec505195290e872eaba5b differ diff --git a/Gateways/FE/projects/.resources/abc83f9896e818ae40cb649e14fedc12a348f0e02af16d07685e72baf08c34f5 b/Gateways/FE/projects/.resources/abc83f9896e818ae40cb649e14fedc12a348f0e02af16d07685e72baf08c34f5 new file mode 100644 index 0000000..20c29d0 Binary files /dev/null and b/Gateways/FE/projects/.resources/abc83f9896e818ae40cb649e14fedc12a348f0e02af16d07685e72baf08c34f5 differ diff --git a/Gateways/FE/projects/.resources/abe53d9d6be475310208b00bfd4cc210ad2e86500614cf934d968f5f8c9a70c7 b/Gateways/FE/projects/.resources/abe53d9d6be475310208b00bfd4cc210ad2e86500614cf934d968f5f8c9a70c7 deleted file mode 100644 index e09e21a..0000000 Binary files a/Gateways/FE/projects/.resources/abe53d9d6be475310208b00bfd4cc210ad2e86500614cf934d968f5f8c9a70c7 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/ac251321de76e921b9e22a63e73650ec05936a69ec3f1129e8437719e8e67ae4 b/Gateways/FE/projects/.resources/ac251321de76e921b9e22a63e73650ec05936a69ec3f1129e8437719e8e67ae4 deleted file mode 100644 index afff557..0000000 --- a/Gateways/FE/projects/.resources/ac251321de76e921b9e22a63e73650ec05936a69ec3f1129e8437719e8e67ae4 +++ /dev/null @@ -1,441 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Average Current", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Voltage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Coolant Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Engine RPM", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Gallons", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Rate", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Usage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Manifold Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number Of Starts", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Oil Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Status", - "options": [ - "Stopped", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kVA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kVAR", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kW", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Communication Percent", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_GEN-P3-5" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/ac3cabf550e5df942634577f70c62ca002df67e0ee1535ee93133084c8cfa776 b/Gateways/FE/projects/.resources/ac3cabf550e5df942634577f70c62ca002df67e0ee1535ee93133084c8cfa776 new file mode 100644 index 0000000..f7fac91 Binary files /dev/null and b/Gateways/FE/projects/.resources/ac3cabf550e5df942634577f70c62ca002df67e0ee1535ee93133084c8cfa776 differ diff --git a/Gateways/FE/projects/.resources/ac976032229c5f9c77c3e92c607ac64550f646766250ded8c313e3f1086f2d78 b/Gateways/FE/projects/.resources/ac976032229c5f9c77c3e92c607ac64550f646766250ded8c313e3f1086f2d78 new file mode 100644 index 0000000..44336bf Binary files /dev/null and b/Gateways/FE/projects/.resources/ac976032229c5f9c77c3e92c607ac64550f646766250ded8c313e3f1086f2d78 differ diff --git a/Gateways/FE/projects/.resources/add1f1b9dd9f8aa2b9dbe597b9de697bd94b89eb8a08f9cde3693d54a54677f8 b/Gateways/FE/projects/.resources/add1f1b9dd9f8aa2b9dbe597b9de697bd94b89eb8a08f9cde3693d54a54677f8 new file mode 100644 index 0000000..4c1aa59 Binary files /dev/null and b/Gateways/FE/projects/.resources/add1f1b9dd9f8aa2b9dbe597b9de697bd94b89eb8a08f9cde3693d54a54677f8 differ diff --git a/Gateways/FE/projects/.resources/ae00fff91e3e3f67ade4f5c1b4699698854fd6629875e6d711a200d7802f0a79 b/Gateways/FE/projects/.resources/ae00fff91e3e3f67ade4f5c1b4699698854fd6629875e6d711a200d7802f0a79 deleted file mode 100644 index fa964d7..0000000 Binary files a/Gateways/FE/projects/.resources/ae00fff91e3e3f67ade4f5c1b4699698854fd6629875e6d711a200d7802f0a79 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/247733f6d49fdee0f4611b5f592f0c0cef6ca9f21a1ea6c4d7c6f9bf909572d2 b/Gateways/FE/projects/.resources/ae26e6142a8e9e3ccc5716e1cd2dcb2442891a9e9bd51dbe1958355567328d21 similarity index 97% rename from Gateways/FE/projects/.resources/247733f6d49fdee0f4611b5f592f0c0cef6ca9f21a1ea6c4d7c6f9bf909572d2 rename to Gateways/FE/projects/.resources/ae26e6142a8e9e3ccc5716e1cd2dcb2442891a9e9bd51dbe1958355567328d21 index 980d79e..4b3e5df 100644 --- a/Gateways/FE/projects/.resources/247733f6d49fdee0f4611b5f592f0c0cef6ca9f21a1ea6c4d7c6f9bf909572d2 +++ b/Gateways/FE/projects/.resources/ae26e6142a8e9e3ccc5716e1cd2dcb2442891a9e9bd51dbe1958355567328d21 @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,7 +382,6 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 3, "tabs": [ "Status", "Config", diff --git a/Gateways/FE/projects/.resources/ae6f68b7dd85ee28f84840feffbba7ccfef4a653f321648189065e51c5c66589 b/Gateways/FE/projects/.resources/ae6f68b7dd85ee28f84840feffbba7ccfef4a653f321648189065e51c5c66589 deleted file mode 100644 index b749901..0000000 Binary files a/Gateways/FE/projects/.resources/ae6f68b7dd85ee28f84840feffbba7ccfef4a653f321648189065e51c5c66589 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/aec607a8c8ac5d11e686705e95d9aaac5cf8f09e8303d1c4b8ef29b59d3cf70a b/Gateways/FE/projects/.resources/aec607a8c8ac5d11e686705e95d9aaac5cf8f09e8303d1c4b8ef29b59d3cf70a new file mode 100644 index 0000000..2baea6b Binary files /dev/null and b/Gateways/FE/projects/.resources/aec607a8c8ac5d11e686705e95d9aaac5cf8f09e8303d1c4b8ef29b59d3cf70a differ diff --git a/Gateways/FE/projects/.resources/569b5b18ffd2a59627a7dc81a8576db619975156d738ea960f1d64c9701a7106 b/Gateways/FE/projects/.resources/aecff69ecbef61f979e4b601fe1f59c6ab8457e2ce2ab2a1db2ff789422d6aa8 similarity index 98% rename from Gateways/FE/projects/.resources/569b5b18ffd2a59627a7dc81a8576db619975156d738ea960f1d64c9701a7106 rename to Gateways/FE/projects/.resources/aecff69ecbef61f979e4b601fe1f59c6ab8457e2ce2ab2a1db2ff789422d6aa8 index 869932a..8bc55e7 100644 --- a/Gateways/FE/projects/.resources/569b5b18ffd2a59627a7dc81a8576db619975156d738ea960f1d64c9701a7106 +++ b/Gateways/FE/projects/.resources/aecff69ecbef61f979e4b601fe1f59c6ab8457e2ce2ab2a1db2ff789422d6aa8 @@ -178,7 +178,7 @@ "name": "Lower Section 02" }, "position": { - "basis": "250px", + "basis": "192px", "shrink": 0 }, "props": { @@ -261,9 +261,9 @@ "direction": "column", "style": { "backgroundColor": "var(--containerRoot)", - "gap": "10px", + "gap": "var(--space-md)", "overflow": "scroll", - "padding": "10px" + "padding": "var(--space-md)" } }, "scripts": { diff --git a/Gateways/FE/projects/.resources/6a0d2ee4ad4ff3cd281398bc88efd8d89cd118f52cdf807c7d5d8faed1d85a2c b/Gateways/FE/projects/.resources/afd210c75cf2b54281dde48f2e19ad1fe7caf07a84986cb1c5653c98824fae34 similarity index 97% rename from Gateways/FE/projects/.resources/6a0d2ee4ad4ff3cd281398bc88efd8d89cd118f52cdf807c7d5d8faed1d85a2c rename to Gateways/FE/projects/.resources/afd210c75cf2b54281dde48f2e19ad1fe7caf07a84986cb1c5653c98824fae34 index 1eb0c6f..a25ffb6 100644 --- a/Gateways/FE/projects/.resources/6a0d2ee4ad4ff3cd281398bc88efd8d89cd118f52cdf807c7d5d8faed1d85a2c +++ b/Gateways/FE/projects/.resources/afd210c75cf2b54281dde48f2e19ad1fe7caf07a84986cb1c5653c98824fae34 @@ -108,20 +108,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -380,8 +373,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/4fc5835145d4790cfe193d4ca2293a825a543e3846dc9a28247a24e2ff825cf1 b/Gateways/FE/projects/.resources/b0693e6e3c20e59a2ceb403bd7d515bc61b3c83975b3a91aa0aa67ccf173fec1 similarity index 97% rename from Gateways/FE/projects/.resources/4fc5835145d4790cfe193d4ca2293a825a543e3846dc9a28247a24e2ff825cf1 rename to Gateways/FE/projects/.resources/b0693e6e3c20e59a2ceb403bd7d515bc61b3c83975b3a91aa0aa67ccf173fec1 index cacb3ce..bd5e081 100644 --- a/Gateways/FE/projects/.resources/4fc5835145d4790cfe193d4ca2293a825a543e3846dc9a28247a24e2ff825cf1 +++ b/Gateways/FE/projects/.resources/b0693e6e3c20e59a2ceb403bd7d515bc61b3c83975b3a91aa0aa67ccf173fec1 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/b0db3deca94fa14d5922af8a4047bf10f9e591352b8f9fa084c0cf9806048b3b b/Gateways/FE/projects/.resources/b0db3deca94fa14d5922af8a4047bf10f9e591352b8f9fa084c0cf9806048b3b new file mode 100644 index 0000000..61a473f Binary files /dev/null and b/Gateways/FE/projects/.resources/b0db3deca94fa14d5922af8a4047bf10f9e591352b8f9fa084c0cf9806048b3b differ diff --git a/Gateways/FE/projects/.resources/b14622fd40a36cce0ca0dccdde035379e9f198e750c731bf7b5b0aa4074470fa b/Gateways/FE/projects/.resources/b14622fd40a36cce0ca0dccdde035379e9f198e750c731bf7b5b0aa4074470fa new file mode 100644 index 0000000..24357b7 Binary files /dev/null and b/Gateways/FE/projects/.resources/b14622fd40a36cce0ca0dccdde035379e9f198e750c731bf7b5b0aa4074470fa differ diff --git a/Gateways/FE/projects/.resources/b34d4f1371c8dd8cc500314a7383126ba2243cf5ad97eec2342a153415f1791e b/Gateways/FE/projects/.resources/b34d4f1371c8dd8cc500314a7383126ba2243cf5ad97eec2342a153415f1791e new file mode 100644 index 0000000..e2cc99b Binary files /dev/null and b/Gateways/FE/projects/.resources/b34d4f1371c8dd8cc500314a7383126ba2243cf5ad97eec2342a153415f1791e differ diff --git a/Gateways/FE/projects/.resources/b35b54f431153ae713c0de11c6f43e989872f166be9818f732e961d6453fa478 b/Gateways/FE/projects/.resources/b35b54f431153ae713c0de11c6f43e989872f166be9818f732e961d6453fa478 deleted file mode 100644 index 87e3777..0000000 --- a/Gateways/FE/projects/.resources/b35b54f431153ae713c0de11c6f43e989872f166be9818f732e961d6453fa478 +++ /dev/null @@ -1,233 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 3", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "System Pressure", - "options": [] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Emergency Power Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Normal Power Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Transfer Switch Emergency", - "options": [ - "Not Active", - "Active" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Transfer Switch Normal", - "options": [ - "Not Active", - "Active" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1141/SATB1_RM1141_PMP_01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/b39ec9123e6bbefbf2a42c6df5ead9916b7c146bd6953950b884585f799f6316 b/Gateways/FE/projects/.resources/b39ec9123e6bbefbf2a42c6df5ead9916b7c146bd6953950b884585f799f6316 new file mode 100644 index 0000000..c1366e7 Binary files /dev/null and b/Gateways/FE/projects/.resources/b39ec9123e6bbefbf2a42c6df5ead9916b7c146bd6953950b884585f799f6316 differ diff --git a/Gateways/FE/projects/.resources/c319954b2856d650b7ea732675e660d098d50e8b7efea80f140bc4f44e4b617f b/Gateways/FE/projects/.resources/b58a0e080bc4c3ec8cf0d7cef174cbed7fbb8123945db0f15728214dca14d4d4 similarity index 97% rename from Gateways/FE/projects/.resources/c319954b2856d650b7ea732675e660d098d50e8b7efea80f140bc4f44e4b617f rename to Gateways/FE/projects/.resources/b58a0e080bc4c3ec8cf0d7cef174cbed7fbb8123945db0f15728214dca14d4d4 index 412c7ec..8489771 100644 --- a/Gateways/FE/projects/.resources/c319954b2856d650b7ea732675e660d098d50e8b7efea80f140bc4f44e4b617f +++ b/Gateways/FE/projects/.resources/b58a0e080bc4c3ec8cf0d7cef174cbed7fbb8123945db0f15728214dca14d4d4 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/b5f570d0667fb16ce5956ef08a909c95e263f1db7d9e8a1c29db9b1abd88e019 b/Gateways/FE/projects/.resources/b5f570d0667fb16ce5956ef08a909c95e263f1db7d9e8a1c29db9b1abd88e019 deleted file mode 100644 index ce16137..0000000 Binary files a/Gateways/FE/projects/.resources/b5f570d0667fb16ce5956ef08a909c95e263f1db7d9e8a1c29db9b1abd88e019 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/b61254a82ae959a6a41da8d7d2aaba9295b4b2589743c63c8ea9c57693941f34 b/Gateways/FE/projects/.resources/b61254a82ae959a6a41da8d7d2aaba9295b4b2589743c63c8ea9c57693941f34 deleted file mode 100644 index 5ab6e4c..0000000 --- a/Gateways/FE/projects/.resources/b61254a82ae959a6a41da8d7d2aaba9295b4b2589743c63c8ea9c57693941f34 +++ /dev/null @@ -1,238 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CommPercentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Equipment Count", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Feedback", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Feedback RPM", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Status HOA", - "options": [ - "Local", - "Remote" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Not Running", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_MPR1140_VFD01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/b651bd39c4197a97bbe89e0f0ba8f35a68d49318066242fc471d003fd44bf3a6 b/Gateways/FE/projects/.resources/b651bd39c4197a97bbe89e0f0ba8f35a68d49318066242fc471d003fd44bf3a6 deleted file mode 100644 index df40243..0000000 Binary files a/Gateways/FE/projects/.resources/b651bd39c4197a97bbe89e0f0ba8f35a68d49318066242fc471d003fd44bf3a6 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/b730e4e4636abb1a5ef33dabe8d5ef666ff2cc2804f0a0a92e703458dd9f024a b/Gateways/FE/projects/.resources/b730e4e4636abb1a5ef33dabe8d5ef666ff2cc2804f0a0a92e703458dd9f024a new file mode 100644 index 0000000..bcd3862 --- /dev/null +++ b/Gateways/FE/projects/.resources/b730e4e4636abb1a5ef33dabe8d5ef666ff2cc2804f0a0a92e703458dd9f024a @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.1-1-1", + "P2.1-1-2", + "P2.1-1-3", + "P2.1-1-4", + "P2.1-1-5", + "P2.1-1-6", + "P2.1-2-1", + "P2.1-2-2", + "P2.1-2-3", + "P2.1-2-4", + "P2.1-2-5", + "P2.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 6 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/b804b3784d15d63f25d70f9fcbf9b154f502e8469d16b70c7b72599defc50c2e b/Gateways/FE/projects/.resources/b804b3784d15d63f25d70f9fcbf9b154f502e8469d16b70c7b72599defc50c2e deleted file mode 100644 index 749418f..0000000 Binary files a/Gateways/FE/projects/.resources/b804b3784d15d63f25d70f9fcbf9b154f502e8469d16b70c7b72599defc50c2e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/b98bacd43749abd17d3620c0417e8531abfdfe7af875006807644a30a47b5d75 b/Gateways/FE/projects/.resources/b98bacd43749abd17d3620c0417e8531abfdfe7af875006807644a30a47b5d75 new file mode 100644 index 0000000..aa161e1 --- /dev/null +++ b/Gateways/FE/projects/.resources/b98bacd43749abd17d3620c0417e8531abfdfe7af875006807644a30a47b5d75 @@ -0,0 +1,129 @@ +{ + "custom": { + "temp": [ + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Min", + "path": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Max", + "path": "[PHXA2_IG_DH01]DH1/DH Manager/Status DH/Cold Aisle Temp Max" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/Avg Battery Temperature" + } + ] + }, + "params": { + "pageId": "Pages/Dev/G_Misc/System Legend" + }, + "propConfig": { + "custom.temp": { + "persistent": true + }, + "custom.temp.HS1_2.path": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/Avg Battery Temperature" + }, + "type": "tag" + } + }, + "params.pageId": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1770, + "width": 1898 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "DynamicDeviceListTest" + }, + "position": { + "height": 586, + "width": 1213 + }, + "props": { + "params": { + "deviceType": "VM", + "selectedDeviceTagpath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/VM" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Battery Table" + }, + "position": { + "height": 1603, + "width": 1215, + "y": 588 + }, + "props": { + "params": { + "deviceType": "Battery", + "selectedDeviceTagpath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/Battery" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -203, + "y": -120 + }, + "props": { + "aspectRatio": "3050:2100" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "eqPopupMsg", + "pageScope": true, + "script": "\tsystem.perspective.print(\u0027{}\u0027.format(payload))\n\tutils.nav.eqPopup(self, payload)", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/10e1485f9b58807c99ed38d0f940b27e3fe13a319d468042d0faceb2a043b357 b/Gateways/FE/projects/.resources/b9927586d2d7880c1c4ce0ef8279f642f849a0af061c154d0becb22727489df2 similarity index 97% rename from Gateways/FE/projects/.resources/10e1485f9b58807c99ed38d0f940b27e3fe13a319d468042d0faceb2a043b357 rename to Gateways/FE/projects/.resources/b9927586d2d7880c1c4ce0ef8279f642f849a0af061c154d0becb22727489df2 index ff3cbba..ebbfe85 100644 --- a/Gateways/FE/projects/.resources/10e1485f9b58807c99ed38d0f940b27e3fe13a319d468042d0faceb2a043b357 +++ b/Gateways/FE/projects/.resources/b9927586d2d7880c1c4ce0ef8279f642f849a0af061c154d0becb22727489df2 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/c4a60be780dc49aa5722786dfccd7e5427e380700704b8a95bb305609bbf5a12 b/Gateways/FE/projects/.resources/ba657f59b893c49cbfdaa91902907c70f01e89071c53e6df8d98e1e2cb42f9f8 similarity index 97% rename from Gateways/FE/projects/.resources/c4a60be780dc49aa5722786dfccd7e5427e380700704b8a95bb305609bbf5a12 rename to Gateways/FE/projects/.resources/ba657f59b893c49cbfdaa91902907c70f01e89071c53e6df8d98e1e2cb42f9f8 index 363a33f..eb2e7e5 100644 --- a/Gateways/FE/projects/.resources/c4a60be780dc49aa5722786dfccd7e5427e380700704b8a95bb305609bbf5a12 +++ b/Gateways/FE/projects/.resources/ba657f59b893c49cbfdaa91902907c70f01e89071c53e6df8d98e1e2cb42f9f8 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/bb401101f7ec423d44f6554fd6a2ce921aa57ee64f824b630bda9a270b788989 b/Gateways/FE/projects/.resources/bb401101f7ec423d44f6554fd6a2ce921aa57ee64f824b630bda9a270b788989 deleted file mode 100644 index bda7587..0000000 --- a/Gateways/FE/projects/.resources/bb401101f7ec423d44f6554fd6a2ce921aa57ee64f824b630bda9a270b788989 +++ /dev/null @@ -1,108 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2/Device Fault" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/90dd8a9eebaba7f9aa0d807652befa299681c0fa2164e6a094bc379c49e249c2 b/Gateways/FE/projects/.resources/bb4490b6a416273e48bc7b3421c9d8b0b9330134737b41a0a0e215482933140d similarity index 97% rename from Gateways/FE/projects/.resources/90dd8a9eebaba7f9aa0d807652befa299681c0fa2164e6a094bc379c49e249c2 rename to Gateways/FE/projects/.resources/bb4490b6a416273e48bc7b3421c9d8b0b9330134737b41a0a0e215482933140d index 43ac799..74c5bcf 100644 --- a/Gateways/FE/projects/.resources/90dd8a9eebaba7f9aa0d807652befa299681c0fa2164e6a094bc379c49e249c2 +++ b/Gateways/FE/projects/.resources/bb4490b6a416273e48bc7b3421c9d8b0b9330134737b41a0a0e215482933140d @@ -116,20 +116,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/bc179c8585275a9a070c066795c449985c5860bd3224c3c1fa25e23fc3a4934f b/Gateways/FE/projects/.resources/bc179c8585275a9a070c066795c449985c5860bd3224c3c1fa25e23fc3a4934f new file mode 100644 index 0000000..0677e55 Binary files /dev/null and b/Gateways/FE/projects/.resources/bc179c8585275a9a070c066795c449985c5860bd3224c3c1fa25e23fc3a4934f differ diff --git a/Gateways/FE/projects/.resources/bd9cf73c3411bfa658ce18c8fc0fc600836bcb9bb890b18456cf318cdbc5b4ff b/Gateways/FE/projects/.resources/bd9cf73c3411bfa658ce18c8fc0fc600836bcb9bb890b18456cf318cdbc5b4ff deleted file mode 100644 index aa39c66..0000000 Binary files a/Gateways/FE/projects/.resources/bd9cf73c3411bfa658ce18c8fc0fc600836bcb9bb890b18456cf318cdbc5b4ff and /dev/null differ diff --git a/Gateways/FE/projects/.resources/be98a4708f7c24f4b58ba8caf615f918c9e49a094510c9799b3de48da27e8cb3 b/Gateways/FE/projects/.resources/be98a4708f7c24f4b58ba8caf615f918c9e49a094510c9799b3de48da27e8cb3 new file mode 100644 index 0000000..1ec73ba --- /dev/null +++ b/Gateways/FE/projects/.resources/be98a4708f7c24f4b58ba8caf615f918c9e49a094510c9799b3de48da27e8cb3 @@ -0,0 +1,53 @@ +def main(originalDeviceTagpaths, deviceTagpaths, tagsToRead, tagToWrite): + """ + originalDeviceTagpaths: List; a list of qualified tagpaths without their provider remapped. + deviceTagpaths: List; a list of qualified device tagpaths, i.e ['[default]RM2505/PHXA2_RM2505_FCU_4']. + tagsToRead: List; a list of atomic tag names, i.e ['/Meta/EqName', '/Space Temperature', '/System Mode'] + tagToWrite: String; the tagPath of where to write the device data, i.e '[PHXA2_IG_COMN]System/VAV' where the tag is a DynamicDeviceSet + """ + # Format the atomic tag name from a full tagpath. i.e: + # "[PHXA2_IG_COMN]RM224/[..]/RTU_01/Space Temperature" -> "spaceTemperature" + def getTagName(tagPath): + name = tagPath.split('/')[-1] + words = name.split() + return words[0].lower() + ''.join(word.capitalize() for word in words[1:]) + + # Append atomic tag names to each device, returning a fully qualified tagpath. + tagPaths = [] + for device in deviceTagpaths: + for tag in tagsToRead: + tagPaths.append(str(device) + str(tag)) + + tagsPerDevice = len(tagsToRead) + tagData = system.tag.readBlocking(tagPaths) + logger = system.util.getLogger('Tagpaths Script') + + # batch read alarm status + activeAlarmsTagpaths = list(map(lambda x: str(x) + '/AlarmSummary/ActiveAlarms', tagPaths)) # Generate tagPaths to ActiveAlarms. + activeAlarmData = system.tag.readBlocking(activeAlarmsTagpaths) # Read tag data. + activeAlarmData = [x.value for x in activeAlarmData] # Get .value from each QualifiedObject. + activeAlarmData = list(map(lambda x: len(x.keys()) != 0, activeAlarmData)) # Check if length > 0, if true, device isAlarmed. + + res = [] + for batchIndex in range(len(tagPaths) / tagsPerDevice): # read all tags per device + startIndex = batchIndex * tagsPerDevice + endIndex = startIndex + tagsPerDevice + val = {'value': {}, 'style': {}} + + # If device is alarmed, highlight red. + val['style'] = {'backgroundColor': '#FF4747', 'color': 'white'} if activeAlarmData[batchIndex] else {} + + # Map original tagpath without tag provider reassigned. + # This is necessary for the L4 popup. + originalTagpath = originalDeviceTagpaths[batchIndex] + val['value']['tagPath'] = originalTagpath + + # Map tag name to respective tag value. + for i in range(startIndex, endIndex): + tagName = getTagName(tagPaths[i]) + tagValue = tagData[i].value + val['value'][tagName] = tagValue + + res.append(val) + + system.tag.writeBlocking(tagToWrite, system.util.jsonEncode(res)) \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/bf0e36c02e5e38e929a223fef05d75242a358499093d5f7d517c15bf13adbe4f b/Gateways/FE/projects/.resources/bf0e36c02e5e38e929a223fef05d75242a358499093d5f7d517c15bf13adbe4f new file mode 100644 index 0000000..a8356a7 --- /dev/null +++ b/Gateways/FE/projects/.resources/bf0e36c02e5e38e929a223fef05d75242a358499093d5f7d517c15bf13adbe4f @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.2-1-1", + "P5.2-1-2", + "P5.2-1-3", + "P5.2-1-4", + "P5.2-1-5", + "P5.2-1-6", + "P5.2-2-1", + "P5.2-2-2", + "P5.2-2-3", + "P5.2-2-4", + "P5.2-2-5", + "P5.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c8c88acea8ae52bbc7a8e814e560fa4c8c4ee1593294ba7537ecbe1a586ad213 b/Gateways/FE/projects/.resources/bf141d20e1b058c8776a97144733548aaf9e581e9158adc982531651f57449e6 similarity index 97% rename from Gateways/FE/projects/.resources/c8c88acea8ae52bbc7a8e814e560fa4c8c4ee1593294ba7537ecbe1a586ad213 rename to Gateways/FE/projects/.resources/bf141d20e1b058c8776a97144733548aaf9e581e9158adc982531651f57449e6 index 2fe333e..5b11950 100644 --- a/Gateways/FE/projects/.resources/c8c88acea8ae52bbc7a8e814e560fa4c8c4ee1593294ba7537ecbe1a586ad213 +++ b/Gateways/FE/projects/.resources/bf141d20e1b058c8776a97144733548aaf9e581e9158adc982531651f57449e6 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/c0ac1622a576781c4e7cc7a96f0ed836a98b18495e0e51864334fb2bc17596b9 b/Gateways/FE/projects/.resources/c0ac1622a576781c4e7cc7a96f0ed836a98b18495e0e51864334fb2bc17596b9 deleted file mode 100644 index 0d0407e..0000000 Binary files a/Gateways/FE/projects/.resources/c0ac1622a576781c4e7cc7a96f0ed836a98b18495e0e51864334fb2bc17596b9 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/c2832c235c6d6020f199e7209b2f71ab21f1b49c4e30ab29c767fd8501a2161d b/Gateways/FE/projects/.resources/c2832c235c6d6020f199e7209b2f71ab21f1b49c4e30ab29c767fd8501a2161d deleted file mode 100644 index 69b888d..0000000 --- a/Gateways/FE/projects/.resources/c2832c235c6d6020f199e7209b2f71ab21f1b49c4e30ab29c767fd8501a2161d +++ /dev/null @@ -1,130 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Open-Closed", - "options": [ - "Closed", - "Open", - "Transitioning", - "Error" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH13_CV13" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c4ceac32095b1fdc80a9b4f5ef73c76b90ca33fdb899a31b63bb45650f3dc7e4 b/Gateways/FE/projects/.resources/c4ceac32095b1fdc80a9b4f5ef73c76b90ca33fdb899a31b63bb45650f3dc7e4 new file mode 100644 index 0000000..2bdf7cf --- /dev/null +++ b/Gateways/FE/projects/.resources/c4ceac32095b1fdc80a9b4f5ef73c76b90ca33fdb899a31b63bb45650f3dc7e4 @@ -0,0 +1,329 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.1-1-1", + "P1.1-1-2", + "P1.1-1-3", + "P1.1-1-4", + "P1.1-1-5", + "P1.1-1-6", + "P1.1-2-1", + "P1.1-2-2", + "P1.1-2-3", + "P1.1-2-4", + "P1.1-2-5", + "P1.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Popup Template" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027tabIndexChanged\u0027, {})" + } + }, + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "--container" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c581db81bb742606cdbc92bc67abc949328e6214fc1f720bc2660ded02480208 b/Gateways/FE/projects/.resources/c581db81bb742606cdbc92bc67abc949328e6214fc1f720bc2660ded02480208 deleted file mode 100644 index 58bfa35..0000000 Binary files a/Gateways/FE/projects/.resources/c581db81bb742606cdbc92bc67abc949328e6214fc1f720bc2660ded02480208 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/c5eb6e42c0c2cda93acd33dfc16bf6a102edc90684b3be12d8fa4ec4495fc3d6 b/Gateways/FE/projects/.resources/c5eb6e42c0c2cda93acd33dfc16bf6a102edc90684b3be12d8fa4ec4495fc3d6 deleted file mode 100644 index 54de3bb..0000000 --- a/Gateways/FE/projects/.resources/c5eb6e42c0c2cda93acd33dfc16bf6a102edc90684b3be12d8fa4ec4495fc3d6 +++ /dev/null @@ -1,178 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Cable break alarm", - "options": [ - "Good", - "Broken" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Cable length", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Contamination detected", - "options": [ - "Good", - "Contaminated" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Leak Detected", - "options": [ - "Good", - "Leak" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Leak distance", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Unit of measure", - "options": [ - "meters", - "feet" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]GAL1261/SATB1_DH1_LD1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c6245f1aef9c58ed099dc310acff86505101f919bec7edf140e04c4dadd266aa b/Gateways/FE/projects/.resources/c6245f1aef9c58ed099dc310acff86505101f919bec7edf140e04c4dadd266aa deleted file mode 100644 index b75e792..0000000 Binary files a/Gateways/FE/projects/.resources/c6245f1aef9c58ed099dc310acff86505101f919bec7edf140e04c4dadd266aa and /dev/null differ diff --git a/Gateways/FE/projects/.resources/c628b8d267d9691206f6284ee93618f32bff723673deb85195395dd0b45b094e b/Gateways/FE/projects/.resources/c628b8d267d9691206f6284ee93618f32bff723673deb85195395dd0b45b094e deleted file mode 100644 index 41f6161..0000000 --- a/Gateways/FE/projects/.resources/c628b8d267d9691206f6284ee93618f32bff723673deb85195395dd0b45b094e +++ /dev/null @@ -1,141 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value AVG", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value MAX", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value MIN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value OUT", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH5/DH5_DP_AvgObj" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/47f6de124908ff796f4486566ef5531e0c6db475676c3473d2fa732ba340ddcf b/Gateways/FE/projects/.resources/c6a05d1cd7e0577f68e5c3c7d911410e7f8e384c88456d828abdff2b6baa4ee3 similarity index 97% rename from Gateways/FE/projects/.resources/47f6de124908ff796f4486566ef5531e0c6db475676c3473d2fa732ba340ddcf rename to Gateways/FE/projects/.resources/c6a05d1cd7e0577f68e5c3c7d911410e7f8e384c88456d828abdff2b6baa4ee3 index 28204df..c9a848a 100644 --- a/Gateways/FE/projects/.resources/47f6de124908ff796f4486566ef5531e0c6db475676c3473d2fa732ba340ddcf +++ b/Gateways/FE/projects/.resources/c6a05d1cd7e0577f68e5c3c7d911410e7f8e384c88456d828abdff2b6baa4ee3 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/c6e7d2d978c2039625c93e0ec673a421d21be7391b2c758e965b198acebb4983 b/Gateways/FE/projects/.resources/c6e7d2d978c2039625c93e0ec673a421d21be7391b2c758e965b198acebb4983 deleted file mode 100644 index 021e4bb..0000000 Binary files a/Gateways/FE/projects/.resources/c6e7d2d978c2039625c93e0ec673a421d21be7391b2c758e965b198acebb4983 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/c717f70e783ccbbb4f8337d33f21ac618045e4ff0c68ef9691b817e148616415 b/Gateways/FE/projects/.resources/c717f70e783ccbbb4f8337d33f21ac618045e4ff0c68ef9691b817e148616415 new file mode 100644 index 0000000..665bc7c Binary files /dev/null and b/Gateways/FE/projects/.resources/c717f70e783ccbbb4f8337d33f21ac618045e4ff0c68ef9691b817e148616415 differ diff --git a/Gateways/FE/projects/.resources/c72be422511add6fed681d2a251659c049b66a4de7e9a8259e86862d4d13a6f8 b/Gateways/FE/projects/.resources/c72be422511add6fed681d2a251659c049b66a4de7e9a8259e86862d4d13a6f8 new file mode 100644 index 0000000..2580386 Binary files /dev/null and b/Gateways/FE/projects/.resources/c72be422511add6fed681d2a251659c049b66a4de7e9a8259e86862d4d13a6f8 differ diff --git a/Gateways/FE/projects/.resources/c7f2f75c1e50c63225f4601ba40442954aa599a371877514a8378c517d7a4cd0 b/Gateways/FE/projects/.resources/c7f2f75c1e50c63225f4601ba40442954aa599a371877514a8378c517d7a4cd0 deleted file mode 100644 index 9394061..0000000 --- a/Gateways/FE/projects/.resources/c7f2f75c1e50c63225f4601ba40442954aa599a371877514a8378c517d7a4cd0 +++ /dev/null @@ -1,265 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Air Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Air Flow Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control SP", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cooling Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Damper Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heat Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Max allowed Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Min allowed Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Mode", - "options": [ - "No Mode", - "Occupancy", - "Unoccupied", - "Standby Mode" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Occupancy Sensor", - "options": [ - "No Movement", - "Activity" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Stage-1 Heater Sts", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Stage-2 Heater Sts", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1109/SATB1_HS1_RM1109_VAV06" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c7f9ef4636ee47db6716a1c6180fb2c7e5a562831b4be638880ab7bc6b196e41 b/Gateways/FE/projects/.resources/c7f9ef4636ee47db6716a1c6180fb2c7e5a562831b4be638880ab7bc6b196e41 new file mode 100644 index 0000000..98dc5de Binary files /dev/null and b/Gateways/FE/projects/.resources/c7f9ef4636ee47db6716a1c6180fb2c7e5a562831b4be638880ab7bc6b196e41 differ diff --git a/Gateways/FE/projects/.resources/c880ec278fffc7d8c651d6c06d41b004822820d4aa55c22928ad530f56352058 b/Gateways/FE/projects/.resources/c880ec278fffc7d8c651d6c06d41b004822820d4aa55c22928ad530f56352058 new file mode 100644 index 0000000..15fabc5 --- /dev/null +++ b/Gateways/FE/projects/.resources/c880ec278fffc7d8c651d6c06d41b004822820d4aa55c22928ad530f56352058 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.3-1-1", + "P6.3-1-2", + "P6.3-1-3", + "P6.3-1-4", + "P6.3-1-5", + "P6.3-1-6", + "P6.3-2-1", + "P6.3-2-2", + "P6.3-2-3", + "P6.3-2-4", + "P6.3-2-5", + "P6.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c976df166dbad9706670efc5833dd71d06127aac025dac189737621b3787240c b/Gateways/FE/projects/.resources/c976df166dbad9706670efc5833dd71d06127aac025dac189737621b3787240c deleted file mode 100644 index 07b47fb..0000000 Binary files a/Gateways/FE/projects/.resources/c976df166dbad9706670efc5833dd71d06127aac025dac189737621b3787240c and /dev/null differ diff --git a/Gateways/FE/projects/.resources/89ce4ac5f46cea6d0fd85fb1b578921ba7a20d979f5db941fac05fe53699f9a8 b/Gateways/FE/projects/.resources/ca13568b88c2dd52234b2c94a3f4dd12d6fedb5347a21107967cb3156f06879a similarity index 97% rename from Gateways/FE/projects/.resources/89ce4ac5f46cea6d0fd85fb1b578921ba7a20d979f5db941fac05fe53699f9a8 rename to Gateways/FE/projects/.resources/ca13568b88c2dd52234b2c94a3f4dd12d6fedb5347a21107967cb3156f06879a index acbdd6c..77c20cc 100644 --- a/Gateways/FE/projects/.resources/89ce4ac5f46cea6d0fd85fb1b578921ba7a20d979f5db941fac05fe53699f9a8 +++ b/Gateways/FE/projects/.resources/ca13568b88c2dd52234b2c94a3f4dd12d6fedb5347a21107967cb3156f06879a @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/caad7c00c165446ed2c2bc80b5cb6d22c5a65d2bfd6f6deb1d9c73fd9246aeba b/Gateways/FE/projects/.resources/caad7c00c165446ed2c2bc80b5cb6d22c5a65d2bfd6f6deb1d9c73fd9246aeba deleted file mode 100644 index 1a67a5b..0000000 Binary files a/Gateways/FE/projects/.resources/caad7c00c165446ed2c2bc80b5cb6d22c5a65d2bfd6f6deb1d9c73fd9246aeba and /dev/null differ diff --git a/Gateways/FE/projects/.resources/cc03c83696751bb665971534da9e54ad31932c20f7e4e568fc14d8e8feb4fa0b b/Gateways/FE/projects/.resources/cc03c83696751bb665971534da9e54ad31932c20f7e4e568fc14d8e8feb4fa0b deleted file mode 100644 index 186d8bb..0000000 --- a/Gateways/FE/projects/.resources/cc03c83696751bb665971534da9e54ad31932c20f7e4e568fc14d8e8feb4fa0b +++ /dev/null @@ -1,918 +0,0 @@ -{ - "custom": { - "FLT_Codes": [ - "0: No Fault", - "1: Low Ambient Temperature", - "2: High Ambient Temperature", - "3: Low Chilled Liquid Temperature", - "4: VSD Initialization Failure", - "5: Low RTC Battery Voltage", - "6: Invalid Number of Compressors Selected", - "7: VSD Communications Failure", - "8: Pre-charge Low DC Bus Voltage", - "9: Pre-charge DC Bus Voltage Imbalance", - "10: High DC Bus Voltage", - "11: Low DC Bus Voltage", - "12: DC Bus Voltage Imbalance", - "13: High VSD Ambien Temperature", - "14: Single Phase Input", - "15: VSD Power Supply Fault", - "16: VSD Logic Board Fault", - "17: Motor Current Overload (Hardware)", - "18: CT Plug Fault", - "19: High Harmonic Filter Temperature", - "20: Evap Anti-Freeze Pump Fault", - "21: Low Heat Exchange Temperature", - "22: Replace RTC Battery", - "23: N/A", - "24: N/A", - "25: N/A", - "26: N/A", - "27: High Discharge Pressure", - "28: High Differential Oil Pressure", - "29: Low Differential Oil Pressure", - "30: Low Suction Pressure", - "31: High Discharge Temperature", - "32: N/A", - "33: Eductor Clog Fault", - "34: Sensor Failure", - "35: Low Motor Current", - "36: High Motor Temperature", - "37: Pre-charge Low DC Bus Voltage Immbalance", - "38: Pre-charge DC Bus Voltage Imbalance", - "39: High DC Bus Voltage", - "40: Low DC Bus Voltage", - "41: DC Bus Voltage Imbalance", - "42: High Motor Current", - "43: Motor Current Overload", - "44: IGBT Gate Driver Fault", - "45: High Baseplate Temperature", - "46: Single Phase Input", - "47: VSD Run Signal Fault", - "48: High Discharge Press (HPCO)", - "49: Low Suction Superheat", - "50: Control Valve Fault", - "51: Low Discharge Superheat", - "52: Low Suction PRessure Smart Freeze", - "53: Isolation Valve Failed to Close Warning", - "54: Isolation Valve failed to Open Fault", - "55: High Discharge Pressure Rate", - "56: Condenser Fan VSD Fault Warning", - "57: N/A", - "58: N/A", - "59: N/A", - "60: N/A", - "61: N/A", - "62: N/A" - ], - "OP_Codes": [ - "0: No code", - "1: No code", - "2: No code", - "3: No code", - "4: No code", - "5: No code", - "6: No code", - "7: No code", - "8: No code", - "9: No code", - "10: No code", - "11: No code", - "12: No code", - "13: No code", - "14: 1No code", - "15: No code", - "16: No code", - "17: No code", - "18: No code", - "19: No code", - "20: No code", - "21: No code", - "22: No code", - "23: No code", - "24: No code", - "25: No code", - "26: No code", - "27: No code", - "28: No code", - "29: No code", - "30: No code", - "31: No code", - "32: No code", - "33: No code", - "34: No code", - "35: No code", - "36: No code", - "37: No code", - "38: No code", - "39: No code", - "40: No code", - "41: No code", - "42: No code", - "43: No code", - "44: No code", - "45: No code", - "46: No code", - "47: No code", - "48: No code", - "49: No code", - "50: No code", - "51: No code", - "52: No code", - "53: No code", - "54: No code", - "55: No code", - "56: No code", - "57: No code", - "58: No code", - "59: No code", - "60: No code", - "61: No code", - "62: No code", - "63: Manual Override", - "64: Daily Schedule Shutdown", - "65: Unit Switch Off", - "66: Remote Controlled Shutdown", - "67: Loss of External Communications", - "68: Flow Switch Shutdown", - "69: VSD Cooling Shutdown", - "70: Serial Number Shutdown", - "71: N/A", - "72: Discharge Spuerheat Recovery", - "73: N/A", - "74: No Run Permissive", - "75: Anti-Recycle Timer Active", - "76: System Switch Off", - "77: System Not Running", - "78: System Running", - "79: Discharge Pressure Limiting", - "80: Suction Pressure Limiting", - "81: Motor Current Limiting", - "82: Free Cooliong", - "83:BAS Motor Current Limiting", - "84: Remote Motor Current Limiting", - "85: System Pumping Down", - "86: VSD Pre-Charging", - "87: VSD Baseplate Temp Limiting", - "88: VSD Internal Ambient Temp Limiting", - "89: Sounf Limiting", - "90: BAS Sounf Limiting", - "91: Remote Sound Limiting", - "92: Pulldown Motor Current Limiting", - "93: Cooling Demand Shutdown", - "94: Input Current Limiting", - "95: BAS Input Current Limiting", - "96: Remote Input Current Limiting", - "97: Pulldown Input Current Limiting" - ], - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Interface Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 43, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 44, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 51, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 52, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 1 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 2 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Fan Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Fan Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "VSD CMD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "VSD Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Ambient Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 53, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 54, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator In Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Out Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 45, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 46, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Active Setpoint", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller System Available", - "options": [ - "Not ready", - "Ready" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 47, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Status", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 48, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Status", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 49, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Heater Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Pump Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Switch", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": -3, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 OpCode" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 0, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Fault Code" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Fault Code" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": -2, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 OpCode" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "System HOA", - "options": [ - "Local", - "Remote" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "System Interlock Active", - "options": [ - "Not Tripped", - "Tripped" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "System Permissive OK", - "options": [ - "Not Ready", - "Ready" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 41, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 42, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "System Suction Cutout", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [], - "visible": false - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH06_SYSTEM" - }, - "propConfig": { - "custom.FLT_Codes": { - "persistent": true - }, - "custom.OP_Codes": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[38].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "custom.allTags[39].options": { - "binding": { - "config": { - "path": "view.custom.FLT_Codes" - }, - "type": "property" - } - }, - "custom.allTags[40].options": { - "binding": { - "config": { - "path": "view.custom.FLT_Codes" - }, - "type": "property" - } - }, - "custom.allTags[41].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/cdfc1aaeb8d8071ca6ddc7d40a8685660d6a7165af03652ff1e0c86f03378318 b/Gateways/FE/projects/.resources/cdfc1aaeb8d8071ca6ddc7d40a8685660d6a7165af03652ff1e0c86f03378318 deleted file mode 100644 index b20b550..0000000 Binary files a/Gateways/FE/projects/.resources/cdfc1aaeb8d8071ca6ddc7d40a8685660d6a7165af03652ff1e0c86f03378318 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/ce89da00e194e9862b6c4a7f798a1a329f6b6d71af4362425eb23efd18d6f2d5 b/Gateways/FE/projects/.resources/ce89da00e194e9862b6c4a7f798a1a329f6b6d71af4362425eb23efd18d6f2d5 deleted file mode 100644 index 407a8c3..0000000 Binary files a/Gateways/FE/projects/.resources/ce89da00e194e9862b6c4a7f798a1a329f6b6d71af4362425eb23efd18d6f2d5 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/cffaeffafe05f6b32b8b72d5ef60f0b11a664db44abb764e76f575cf36d9bb10 b/Gateways/FE/projects/.resources/cffaeffafe05f6b32b8b72d5ef60f0b11a664db44abb764e76f575cf36d9bb10 deleted file mode 100644 index 8457d0b..0000000 Binary files a/Gateways/FE/projects/.resources/cffaeffafe05f6b32b8b72d5ef60f0b11a664db44abb764e76f575cf36d9bb10 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/d08e141ff608b5846448890ad52218fedf7e244c451c83563ee3baba553be6c5 b/Gateways/FE/projects/.resources/d08e141ff608b5846448890ad52218fedf7e244c451c83563ee3baba553be6c5 deleted file mode 100644 index 783d3a1..0000000 Binary files a/Gateways/FE/projects/.resources/d08e141ff608b5846448890ad52218fedf7e244c451c83563ee3baba553be6c5 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/d12af3610927d290f240cbf359b0c8657c02417295a0943ca1db4654e1ea7e9d b/Gateways/FE/projects/.resources/d12af3610927d290f240cbf359b0c8657c02417295a0943ca1db4654e1ea7e9d new file mode 100644 index 0000000..5470baf Binary files /dev/null and b/Gateways/FE/projects/.resources/d12af3610927d290f240cbf359b0c8657c02417295a0943ca1db4654e1ea7e9d differ diff --git a/Gateways/FE/projects/.resources/d25f90cab47c7a3c5cbda56770649b8f753e3704889f26fb33578362ee2b6896 b/Gateways/FE/projects/.resources/d25f90cab47c7a3c5cbda56770649b8f753e3704889f26fb33578362ee2b6896 deleted file mode 100644 index 119226b..0000000 --- a/Gateways/FE/projects/.resources/d25f90cab47c7a3c5cbda56770649b8f753e3704889f26fb33578362ee2b6896 +++ /dev/null @@ -1,1019 +0,0 @@ -{ - "custom": { - "JA01": "/AC Primary Power Fault", - "JA02": "/AC Secondary Power Fault", - "JA03": "/DC Power Supply 1 Fault", - "JA04": "/DC Power Supply 2 Fault", - "PLC_A_Fail": false, - "PLC_A_Online": false, - "PLC_B_Fail": false, - "PLC_B_Online": false, - "RedundancySTS": "/Hot Standby Status", - "TAH": "/High Temperature", - "XA": "/Panel Intrusion", - "allTags": [ - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail" - } - ], - "inTagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_PNL24" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_PNL24" - }, - "propConfig": { - "custom.JA01": { - "persistent": true - }, - "custom.JA02": { - "persistent": true - }, - "custom.JA03": { - "persistent": true - }, - "custom.JA04": { - "persistent": true - }, - "custom.PLC_A_Fail": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC A Fail" - }, - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_A_Online": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC A Online" - }, - "transforms": [ - { - "expression": "!{value}", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_B_Fail": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC B Fail" - }, - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_B_Online": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC B Online" - }, - "transforms": [ - { - "expression": "!{value}", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.RedundancySTS": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.XA": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "Redundancy", - "tagPath": "{view.custom.inTagPath}{view.custom.RedundancySTS}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_6" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "struct": { - "PLC_A": "{view.custom.PLC_A_Fail}", - "PLC_A_On": "{view.custom.PLC_A_Online}", - "PLC_B": "{view.custom.PLC_B_Fail}", - "PLC_B_On": "{view.custom.PLC_B_Online}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tif value[\u0027PLC_A\u0027] or value[\u0027PLC_B\u0027] or value[\u0027PLC_A_On\u0027] or value[\u0027PLC_B_On\u0027]:\n\t\treturn \u0027var(--elec-on)\u0027\n\telse:\n\t\treturn \u0027var(--state-standby)\u0027", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Redundancy Status", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "136px" - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d277f369a37c38aa2a0b29a7561a853caa5a774a936e5e24dba25c7edfad0d6f b/Gateways/FE/projects/.resources/d277f369a37c38aa2a0b29a7561a853caa5a774a936e5e24dba25c7edfad0d6f deleted file mode 100644 index 897b5e1..0000000 --- a/Gateways/FE/projects/.resources/d277f369a37c38aa2a0b29a7561a853caa5a774a936e5e24dba25c7edfad0d6f +++ /dev/null @@ -1,108 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH1/SATB1_DH1_PD43" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d2ad8a4d980ebd82fc674e316b317defa9002a77d00e2b03956028ab5d70e8a7 b/Gateways/FE/projects/.resources/d2ad8a4d980ebd82fc674e316b317defa9002a77d00e2b03956028ab5d70e8a7 deleted file mode 100644 index 3be1e8b..0000000 --- a/Gateways/FE/projects/.resources/d2ad8a4d980ebd82fc674e316b317defa9002a77d00e2b03956028ab5d70e8a7 +++ /dev/null @@ -1,827 +0,0 @@ -{ - "custom": { - "OP_Codes": [ - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "Manual Override", - "Daily Schedule Shutdown", - "Unit Switch Off", - "Remote Controlled Shutdown", - "Reserved", - "Flow Switch Shutdown", - "VSD Cooling Shutdown", - "Serial Number Shutdown", - "Reserved", - "Discharge Spuerheat Recovery", - "Reserved", - "No Run Permissive", - "Anti-Recycle Timer Active", - "System Switch Off", - "System Not Running", - "System Running", - "Discharge Pressure Limiting", - "Suction Pressure Limiting", - "Motor Current Limiting", - "Free Cooliong", - "ISN/BAS Motor Current Limiting", - "Remote Motor Current Limiting", - "System Shutting Down", - "VSD Pre-Charging", - "VSD Baseplate Temp Limiting", - "VSD Internal Ambient Temp Limiting", - "Sounf Limiting", - "ISN Sounf Limiting", - "Remote Sound Limiting", - "Pulldown Motor Current Limiting", - "Cooling Demand Shutdown", - "Input Current Limiting", - "ISN Input Current Limiting", - "Remote Input Current Limiting", - "Pulldown Input Current Limiting" - ], - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Interface Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 1 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 2 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Compressor 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Compressor 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power System 1 Fan", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power System 2 Fan", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "VSD CMD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "VSD Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ambient Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator In Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Out Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Active Setpoint", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller System Available", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Heater Status", - "options": [ - "Off", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Pump Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Switch", - "options": [ - "OFF", - "Activated" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 0, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 OpCode" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 OpCode" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System HOA", - "options": [ - "LOCAL", - "REMOTE" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Interlock Active", - "options": [ - "OK", - "Interlocked" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Permissive OK", - "options": [ - "Not OK", - "value" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Suction Cutout", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH31_SYSTEM" - }, - "propConfig": { - "custom.OP_Codes": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[40].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "custom.allTags[41].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d409a6b50df2fd5267dfed46c9e03763bb7a89646ccbf5d5a9fd5411f102217e b/Gateways/FE/projects/.resources/d409a6b50df2fd5267dfed46c9e03763bb7a89646ccbf5d5a9fd5411f102217e new file mode 100644 index 0000000..62f2d64 --- /dev/null +++ b/Gateways/FE/projects/.resources/d409a6b50df2fd5267dfed46c9e03763bb7a89646ccbf5d5a9fd5411f102217e @@ -0,0 +1,568 @@ +{ + "custom": { + "data": { + "data": [ + { + "OAF": 0, + "RPP": 0, + "SAD": 0, + "SAT": 0, + "device": "RTU1", + "path": "[default]simulator/RTU/RTU1" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU2", + "path": "[default]simulator/RTU/RTU2" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU3", + "path": "[default]simulator/RTU/RTU3" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU4", + "path": "[default]simulator/RTU/RTU4" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU5", + "path": "[default]simulator/RTU/RTU5" + } + ] + } + }, + "params": {}, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]System/DataTables/RTU/Data" + }, + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 190, + "width": 838 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.data.data" + }, + "type": "property" + } + } + }, + "props": { + "columns": [ + { + "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": "center", + "style": { + "classes": "" + }, + "title": "Device" + }, + "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": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "OAF", + "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": "Outside Air Flow" + }, + "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": "SAT", + "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": "Supply Air Temp" + }, + "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": "SAD", + "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": "Supply Air Dewpoint" + }, + "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": "RPP", + "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": "Return Plenum Pressure" + }, + "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": "" + } + ], + "pager": { + "bottom": false + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "backgroundColor": "var(--container)", + "classes": "containers/card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d547e985e4d0edb48e7dfb65f719adaa8b8cff8bb66b3ad58bc4078bdd177360 b/Gateways/FE/projects/.resources/d547e985e4d0edb48e7dfb65f719adaa8b8cff8bb66b3ad58bc4078bdd177360 deleted file mode 100644 index 583246a..0000000 Binary files a/Gateways/FE/projects/.resources/d547e985e4d0edb48e7dfb65f719adaa8b8cff8bb66b3ad58bc4078bdd177360 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/d5a87aca10fe744f52f0bb7712bbbb95bdfd03870891fce36ec26555d6f53f14 b/Gateways/FE/projects/.resources/d5a87aca10fe744f52f0bb7712bbbb95bdfd03870891fce36ec26555d6f53f14 new file mode 100644 index 0000000..aa82ba1 --- /dev/null +++ b/Gateways/FE/projects/.resources/d5a87aca10fe744f52f0bb7712bbbb95bdfd03870891fce36ec26555d6f53f14 @@ -0,0 +1,407 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Status", + "Control", + "Config", + "Trend", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "auth": { + "almAck": true, + "almShelve": true, + "config": true, + "control": true + }, + "objectName": "VAV", + "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/VAV" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.auth": { + "paramDirection": "input", + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": {}, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Status" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Info" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Trend" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.selectedPens": { + "binding": { + "config": { + "path": "view.custom.trendConfig.selectedPens" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Trends" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Config" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Meta" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Templates/Meta" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Wiki" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Framework/Tag Notes/View Notes" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Control" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/d9718e4a6ea7daa0d9d0455859ba095145c8dd91dba2432521b99ecdb22cb519 b/Gateways/FE/projects/.resources/d9718e4a6ea7daa0d9d0455859ba095145c8dd91dba2432521b99ecdb22cb519 deleted file mode 100644 index 7aec370..0000000 Binary files a/Gateways/FE/projects/.resources/d9718e4a6ea7daa0d9d0455859ba095145c8dd91dba2432521b99ecdb22cb519 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/838c7dd08d87cf28f1679dfc74697d157a6b2bca09de90e7e6e9f137be9a82b2 b/Gateways/FE/projects/.resources/dc295d95875b9a8a22dc69e1a35bef518473ec5024af157b3d89151181baa6bb similarity index 95% rename from Gateways/FE/projects/.resources/838c7dd08d87cf28f1679dfc74697d157a6b2bca09de90e7e6e9f137be9a82b2 rename to Gateways/FE/projects/.resources/dc295d95875b9a8a22dc69e1a35bef518473ec5024af157b3d89151181baa6bb index 3a3772f..dbbfd0a 100644 --- a/Gateways/FE/projects/.resources/838c7dd08d87cf28f1679dfc74697d157a6b2bca09de90e7e6e9f137be9a82b2 +++ b/Gateways/FE/projects/.resources/dc295d95875b9a8a22dc69e1a35bef518473ec5024af157b3d89151181baa6bb @@ -49,7 +49,409 @@ { "custom": { "raw": [], - "tags": [] + "tags": [], + "test1": [ + { + "realistic_1d": 54.160333333333334, + "t_stamp": 1777991280457 + }, + { + "realistic_1d": 53.660333333333334, + "t_stamp": 1777991316457 + }, + { + "realistic_1d": 53.160333333333334, + "t_stamp": 1777991352457 + }, + { + "realistic_1d": 52.660333333333334, + "t_stamp": 1777991388457 + }, + { + "realistic_1d": 52.160333333333334, + "t_stamp": 1777991424457 + }, + { + "realistic_1d": 52, + "t_stamp": 1777991460457 + }, + { + "realistic_1d": 51.160333333333334, + "t_stamp": 1777991496457 + }, + { + "realistic_1d": 50.660333333333334, + "t_stamp": 1777991532457 + }, + { + "realistic_1d": 50.160333333333334, + "t_stamp": 1777991568457 + }, + { + "realistic_1d": 49.660333333333334, + "t_stamp": 1777991604457 + }, + { + "realistic_1d": 49.160333333333334, + "t_stamp": 1777991640457 + }, + { + "realistic_1d": 49, + "t_stamp": 1777991676457 + }, + { + "realistic_1d": 47.60055555555556, + "t_stamp": 1777991712457 + }, + { + "realistic_1d": 46.76722222222222, + "t_stamp": 1777991748457 + }, + { + "realistic_1d": 45.93388888888889, + "t_stamp": 1777991784457 + }, + { + "realistic_1d": 45.10055555555556, + "t_stamp": 1777991820457 + }, + { + "realistic_1d": 44.26722222222222, + "t_stamp": 1777991856457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777991892457 + }, + { + "realistic_1d": 42.88044444444444, + "t_stamp": 1777991928457 + }, + { + "realistic_1d": 42.21377777777778, + "t_stamp": 1777991964457 + }, + { + "realistic_1d": 41.547111111111114, + "t_stamp": 1777992000457 + }, + { + "realistic_1d": 40.88044444444444, + "t_stamp": 1777992036457 + }, + { + "realistic_1d": 40.21377777777778, + "t_stamp": 1777992072457 + }, + { + "realistic_1d": 40, + "t_stamp": 1777992108457 + }, + { + "realistic_1d": 40.839666666666666, + "t_stamp": 1777992144457 + }, + { + "realistic_1d": 41.339666666666666, + "t_stamp": 1777992180457 + }, + { + "realistic_1d": 41.839666666666666, + "t_stamp": 1777992216457 + }, + { + "realistic_1d": 42.339666666666666, + "t_stamp": 1777992252457 + }, + { + "realistic_1d": 42.839666666666666, + "t_stamp": 1777992288457 + }, + { + "realistic_1d": 43, + "t_stamp": 1777992324457 + }, + { + "realistic_1d": 43.27988888888889, + "t_stamp": 1777992360457 + }, + { + "realistic_1d": 43.446555555555555, + "t_stamp": 1777992396457 + }, + { + "realistic_1d": 43.61322222222222, + "t_stamp": 1777992432457 + }, + { + "realistic_1d": 43.77988888888889, + "t_stamp": 1777992468457 + }, + { + "realistic_1d": 43.946555555555555, + "t_stamp": 1777992504457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777992540457 + }, + { + "realistic_1d": 44.27988888888889, + "t_stamp": 1777992576457 + }, + { + "realistic_1d": 44.446555555555555, + "t_stamp": 1777992612457 + }, + { + "realistic_1d": 44.61322222222222, + "t_stamp": 1777992648457 + }, + { + "realistic_1d": 44.77988888888889, + "t_stamp": 1777992684457 + }, + { + "realistic_1d": 44.946555555555555, + "t_stamp": 1777992720457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777992756457 + }, + { + "realistic_1d": 44.72011111111111, + "t_stamp": 1777992792457 + }, + { + "realistic_1d": 44.553444444444445, + "t_stamp": 1777992828457 + }, + { + "realistic_1d": 44.38677777777778, + "t_stamp": 1777992864457 + }, + { + "realistic_1d": 44.22011111111111, + "t_stamp": 1777992900457 + }, + { + "realistic_1d": 44.053444444444445, + "t_stamp": 1777992936457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777992972457 + }, + { + "realistic_1d": 44.27988888888889, + "t_stamp": 1777993008457 + }, + { + "realistic_1d": 44.446555555555555, + "t_stamp": 1777993044457 + }, + { + "realistic_1d": 44.61322222222222, + "t_stamp": 1777993080457 + }, + { + "realistic_1d": 44.77988888888889, + "t_stamp": 1777993116457 + }, + { + "realistic_1d": 44.946555555555555, + "t_stamp": 1777993152457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993188457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993224457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993260457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993296457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993332457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993368457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993404457 + }, + { + "realistic_1d": 44.160333333333334, + "t_stamp": 1777993440457 + }, + { + "realistic_1d": 43.660333333333334, + "t_stamp": 1777993476457 + }, + { + "realistic_1d": 43.160333333333334, + "t_stamp": 1777993512457 + }, + { + "realistic_1d": 42.660333333333334, + "t_stamp": 1777993548457 + }, + { + "realistic_1d": 42.160333333333334, + "t_stamp": 1777993584457 + }, + { + "realistic_1d": 42, + "t_stamp": 1777993620457 + }, + { + "realistic_1d": 43.11955555555556, + "t_stamp": 1777993656457 + }, + { + "realistic_1d": 43.78622222222222, + "t_stamp": 1777993692457 + }, + { + "realistic_1d": 44.452888888888886, + "t_stamp": 1777993728457 + }, + { + "realistic_1d": 45.11955555555556, + "t_stamp": 1777993764457 + }, + { + "realistic_1d": 45.78622222222222, + "t_stamp": 1777993800457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777993836457 + }, + { + "realistic_1d": 45.160333333333334, + "t_stamp": 1777993872457 + }, + { + "realistic_1d": 44.660333333333334, + "t_stamp": 1777993908457 + }, + { + "realistic_1d": 44.160333333333334, + "t_stamp": 1777993944457 + }, + { + "realistic_1d": 43.660333333333334, + "t_stamp": 1777993980457 + }, + { + "realistic_1d": 43.160333333333334, + "t_stamp": 1777994016457 + }, + { + "realistic_1d": 43, + "t_stamp": 1777994052457 + }, + { + "realistic_1d": 41.88044444444444, + "t_stamp": 1777994088457 + }, + { + "realistic_1d": 41.21377777777778, + "t_stamp": 1777994124457 + }, + { + "realistic_1d": 40.547111111111114, + "t_stamp": 1777994160457 + }, + { + "realistic_1d": 39.88044444444444, + "t_stamp": 1777994196457 + }, + { + "realistic_1d": 39.21377777777778, + "t_stamp": 1777994232457 + }, + { + "realistic_1d": 39, + "t_stamp": 1777994268457 + }, + { + "realistic_1d": 39.839666666666666, + "t_stamp": 1777994304457 + }, + { + "realistic_1d": 40.339666666666666, + "t_stamp": 1777994340457 + }, + { + "realistic_1d": 40.839666666666666, + "t_stamp": 1777994376457 + }, + { + "realistic_1d": 41.339666666666666, + "t_stamp": 1777994412457 + }, + { + "realistic_1d": 41.839666666666666, + "t_stamp": 1777994448457 + }, + { + "realistic_1d": 42, + "t_stamp": 1777994484457 + }, + { + "realistic_1d": 43.11955555555556, + "t_stamp": 1777994520457 + }, + { + "realistic_1d": 43.78622222222222, + "t_stamp": 1777994556457 + }, + { + "realistic_1d": 44.452888888888886, + "t_stamp": 1777994592457 + }, + { + "realistic_1d": 45.11955555555556, + "t_stamp": 1777994628457 + }, + { + "realistic_1d": 45.78622222222222, + "t_stamp": 1777994664457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994700457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994736457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994772457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994808457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994844457 + } + ] }, "meta": { "name": "Temp_Chart" @@ -133,6 +535,7 @@ ], "valueFormat": "DOCUMENT" }, + "enabled": false, "type": "tag-history" } }, @@ -3209,12 +3612,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -3229,6 +3635,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -3286,12 +3693,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -3306,6 +3716,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -4067,6 +4478,10 @@ "type": "ia.chart.xy" }, { + "custom": { + "raw": [], + "tags": [] + }, "meta": { "name": "Hum_Chart" }, @@ -4099,6 +4514,7 @@ "tags": "{this.custom.tags}", "valueFormat": "DOCUMENT" }, + "enabled": false, "type": "tag-history" } }, @@ -4110,6 +4526,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\toutput \u003d []\n\taggregate \u003d \"LastValue\"\n\talias \u003d \"Value\"\n\thistProvider \u003d {\"Ignition_Common_IO_Gtwy\":\"Ignition_Hist/ignition-satb1-io6:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO1_Gtwy\":\"Ignition_Hist/ignition-satb1-io1:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO2_Gtwy\":\"Ignition_Hist/ignition-satb1-io2:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO3_Gtwy\":\"Ignition_Hist/ignition-satb1-io3:default\"}\n\ttags \u003d system.tag.browse(self.view.params.tagPath, {\"name\":\"*_HT**_C*\",\"typeId\":\"Objects/Basic/AnalogIn_RS485\",\"tagType\":\"UdtInstance\"})\n\tfor item in tags:\n\t\ttagname \u003d str(item[\"fullPath\"]) + \"/Val\"\n\t\tnameparts \u003d tagname.split(\"]\")\n\t\tprovider\u003d histProvider[nameparts[0][1:]]\n\t\trun_path \u003d \"[{}]{}\".format(provider, nameparts[1])\n\t\toutput.append({\"aggregate\": aggregate, \"alias\": str(item[\"name\"]), \"path\": run_path})\n\t\n\treturn output\n\t\n\t\n\t\t\n\t\t", @@ -7192,12 +7609,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -7212,6 +7632,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -7269,12 +7690,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -7289,6 +7713,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, diff --git a/Gateways/FE/projects/.resources/dd0c7d5046e18a7ee2342504b1ed13c8a22d8e92d19915f7e2b89538bec52765 b/Gateways/FE/projects/.resources/dd0c7d5046e18a7ee2342504b1ed13c8a22d8e92d19915f7e2b89538bec52765 new file mode 100644 index 0000000..19c5ab3 Binary files /dev/null and b/Gateways/FE/projects/.resources/dd0c7d5046e18a7ee2342504b1ed13c8a22d8e92d19915f7e2b89538bec52765 differ diff --git a/Gateways/FE/projects/.resources/0f8a083655a191680333072e2c4854186fcbc0b864f5c79b631745fed2753ba2 b/Gateways/FE/projects/.resources/ddd422baa9c873c9d194ec76b00a0023386f4cd3f67f2f8a2dfb056e820868a8 similarity index 66% rename from Gateways/FE/projects/.resources/0f8a083655a191680333072e2c4854186fcbc0b864f5c79b631745fed2753ba2 rename to Gateways/FE/projects/.resources/ddd422baa9c873c9d194ec76b00a0023386f4cd3f67f2f8a2dfb056e820868a8 index d5f2556..c9d9e29 100644 --- a/Gateways/FE/projects/.resources/0f8a083655a191680333072e2c4854186fcbc0b864f5c79b631745fed2753ba2 +++ b/Gateways/FE/projects/.resources/ddd422baa9c873c9d194ec76b00a0023386f4cd3f67f2f8a2dfb056e820868a8 @@ -10,7 +10,11 @@ "outlineColor": "var(--border)", "outlineStyle": "solid", "outlineWidth": "1px", - "overflow": "visible" + "overflow": "visible", + "paddingBottom": "var(--space-sm)", + "paddingLeft": "var(--space-sm)", + "paddingRight": "var(--space-sm)", + "paddingTop": "var(--space-sm)" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/ded412f0577e0c5444596d39eac84254defa824a651a98cb1eee1ab688fd01f6 b/Gateways/FE/projects/.resources/ded412f0577e0c5444596d39eac84254defa824a651a98cb1eee1ab688fd01f6 deleted file mode 100644 index b4b4166..0000000 --- a/Gateways/FE/projects/.resources/ded412f0577e0c5444596d39eac84254defa824a651a98cb1eee1ab688fd01f6 +++ /dev/null @@ -1,419 +0,0 @@ -{ - "custom": { - "tabsConfig": { - "showConfig": false, - "showControl": false, - "tabs": [ - "Status", - "Control", - "Config", - "Trend", - "Meta", - "Wiki" - ] - }, - "trendConfig": { - "selectedPens": [] - } - }, - "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "FCU", - "tagPath": "[Ignition_Common_IO_Gtwy]FS1232/SATB1_HS2_FS1232_FCU21" - }, - "propConfig": { - "custom.tabsConfig": { - "persistent": true - }, - "custom.tabsConfig.showConfig": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Config" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.tabsConfig.showControl": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Controls" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.trendConfig": { - "persistent": true - }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Status" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "\r\nif (split({view.params.tagPath},\u0027_\u0027)[6,0] \u003d \"FCU21\",\r\nconcat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info_\u0027,split({view.params.tagPath},\u0027_\u0027)[6,0]),\r\nconcat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027))" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Trend" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.selectedPens": { - "binding": { - "config": { - "path": "view.custom.trendConfig.selectedPens" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - }, - "path": "Library/Templates/Trends" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Config" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Meta" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Templates/Meta" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Wiki" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Framework/Tag Notes/View Notes" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Control" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "TabContainer" - }, - "position": { - "basis": "300px", - "grow": 1 - }, - "propConfig": { - "props.tabs": { - "binding": { - "config": { - "expression": "{view.custom.tabsConfig}" - }, - "transforms": [ - { - "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "contentStyle": { - "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "enableDisablePen", - "pageScope": true, - "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/87e6a79edfa75e029d00fa8bbdae65b280754a6633ca04ed2401d2fb83b9d8fb b/Gateways/FE/projects/.resources/dfa30fdbe06456a8e9e0c686358ab2b75be8cb7f1adefc9beafcf0b04f542ac5 similarity index 97% rename from Gateways/FE/projects/.resources/87e6a79edfa75e029d00fa8bbdae65b280754a6633ca04ed2401d2fb83b9d8fb rename to Gateways/FE/projects/.resources/dfa30fdbe06456a8e9e0c686358ab2b75be8cb7f1adefc9beafcf0b04f542ac5 index ec1d064..66f32f9 100644 --- a/Gateways/FE/projects/.resources/87e6a79edfa75e029d00fa8bbdae65b280754a6633ca04ed2401d2fb83b9d8fb +++ b/Gateways/FE/projects/.resources/dfa30fdbe06456a8e9e0c686358ab2b75be8cb7f1adefc9beafcf0b04f542ac5 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/dfcb68475049de1d61ba1d99337d2a81c887952be9192c33245485d15109981e b/Gateways/FE/projects/.resources/dfcb68475049de1d61ba1d99337d2a81c887952be9192c33245485d15109981e deleted file mode 100644 index 662b97d..0000000 Binary files a/Gateways/FE/projects/.resources/dfcb68475049de1d61ba1d99337d2a81c887952be9192c33245485d15109981e and /dev/null differ diff --git a/Gateways/FE/projects/.resources/e07ff0125128e3b3382cdab1c77fd416ab2d70e127f07e2643f5c9c91618d7de b/Gateways/FE/projects/.resources/e07ff0125128e3b3382cdab1c77fd416ab2d70e127f07e2643f5c9c91618d7de deleted file mode 100644 index b07ebdb..0000000 Binary files a/Gateways/FE/projects/.resources/e07ff0125128e3b3382cdab1c77fd416ab2d70e127f07e2643f5c9c91618d7de and /dev/null differ diff --git a/Gateways/FE/projects/.resources/e0f05af4043f452eb781b8db13c6d96f62c109d524cbd454523f65c2a2ff1c3e b/Gateways/FE/projects/.resources/e0f05af4043f452eb781b8db13c6d96f62c109d524cbd454523f65c2a2ff1c3e new file mode 100644 index 0000000..1f69d8a --- /dev/null +++ b/Gateways/FE/projects/.resources/e0f05af4043f452eb781b8db13c6d96f62c109d524cbd454523f65c2a2ff1c3e @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.2-1-1", + "P6.2-1-2", + "P6.2-1-3", + "P6.2-1-4", + "P6.2-1-5", + "P6.2-1-6", + "P6.2-2-1", + "P6.2-2-2", + "P6.2-2-3", + "P6.2-2-4", + "P6.2-2-5", + "P6.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/a08d468185378a88dd628fe76022c83c0cd70a9f92f9fb681429324fc67cef73 b/Gateways/FE/projects/.resources/e0fda81cff0ab338f7bd57b1d4d0789fdd566a94d0d388f6d957469002235276 similarity index 97% rename from Gateways/FE/projects/.resources/a08d468185378a88dd628fe76022c83c0cd70a9f92f9fb681429324fc67cef73 rename to Gateways/FE/projects/.resources/e0fda81cff0ab338f7bd57b1d4d0789fdd566a94d0d388f6d957469002235276 index 04c82a9..3c45d90 100644 --- a/Gateways/FE/projects/.resources/a08d468185378a88dd628fe76022c83c0cd70a9f92f9fb681429324fc67cef73 +++ b/Gateways/FE/projects/.resources/e0fda81cff0ab338f7bd57b1d4d0789fdd566a94d0d388f6d957469002235276 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/e1107d81badacb0e2683a2546d91f953de954597ed0009aed22ddf365bb97f1a b/Gateways/FE/projects/.resources/e1107d81badacb0e2683a2546d91f953de954597ed0009aed22ddf365bb97f1a deleted file mode 100644 index 30c3f3b..0000000 Binary files a/Gateways/FE/projects/.resources/e1107d81badacb0e2683a2546d91f953de954597ed0009aed22ddf365bb97f1a and /dev/null differ diff --git a/Gateways/FE/projects/.resources/e152ad69b296f035a36f7443197b78c55edea4282045af444976fd8be2b79eab b/Gateways/FE/projects/.resources/e152ad69b296f035a36f7443197b78c55edea4282045af444976fd8be2b79eab deleted file mode 100644 index 8a09c06..0000000 Binary files a/Gateways/FE/projects/.resources/e152ad69b296f035a36f7443197b78c55edea4282045af444976fd8be2b79eab and /dev/null differ diff --git a/Gateways/FE/projects/.resources/e20d4c8ba25cb598501a786f9a4a4ebb9d5a8ff6108cc8e06c7520d66ec92502 b/Gateways/FE/projects/.resources/e20d4c8ba25cb598501a786f9a4a4ebb9d5a8ff6108cc8e06c7520d66ec92502 deleted file mode 100644 index f7c86d2..0000000 --- a/Gateways/FE/projects/.resources/e20d4c8ba25cb598501a786f9a4a4ebb9d5a8ff6108cc8e06c7520d66ec92502 +++ /dev/null @@ -1,233 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Max Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Relative Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Drain Valve Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fill Valve Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Ready", - "Ready" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Unit Status", - "options": [ - "Not Enabled", - "Enabled" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1262/SATB1_GAL1262_HUM_02" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\t\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/e24cbe46f07bc0ff4233352de3ae59ffb51d6613dcf2fbf6db1471ae0b4d4409 b/Gateways/FE/projects/.resources/e24cbe46f07bc0ff4233352de3ae59ffb51d6613dcf2fbf6db1471ae0b4d4409 new file mode 100644 index 0000000..e470db4 Binary files /dev/null and b/Gateways/FE/projects/.resources/e24cbe46f07bc0ff4233352de3ae59ffb51d6613dcf2fbf6db1471ae0b4d4409 differ diff --git a/Gateways/FE/projects/.resources/e27b28af37866df090795122a81f2058e1ed73c032e68e44dd03453575b8c765 b/Gateways/FE/projects/.resources/e27b28af37866df090795122a81f2058e1ed73c032e68e44dd03453575b8c765 new file mode 100644 index 0000000..3d19e9c --- /dev/null +++ b/Gateways/FE/projects/.resources/e27b28af37866df090795122a81f2058e1ed73c032e68e44dd03453575b8c765 @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "R3-1-1", + "R3-1-2", + "R3-1-3", + "R3-1-4", + "R3-1-5", + "R3-1-6", + "R3-2-1", + "R3-2-2", + "R3-2-3", + "R3-2-4", + "R3-2-5", + "R3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/e28f08a6eb3f973fdba6f973394c5c727804b461408eb529f6254d7eb93d838b b/Gateways/FE/projects/.resources/e28f08a6eb3f973fdba6f973394c5c727804b461408eb529f6254d7eb93d838b deleted file mode 100644 index cb8b1ba..0000000 Binary files a/Gateways/FE/projects/.resources/e28f08a6eb3f973fdba6f973394c5c727804b461408eb529f6254d7eb93d838b and /dev/null differ diff --git a/Gateways/FE/projects/.resources/19c28ab168425b04a1a94e9fb2368608ed73707f5afe79d863d55c00c5d40761 b/Gateways/FE/projects/.resources/e2fe4b35ae22edf8eb3de426911de375558b1f587611ab3f47366baec87f321f similarity index 97% rename from Gateways/FE/projects/.resources/19c28ab168425b04a1a94e9fb2368608ed73707f5afe79d863d55c00c5d40761 rename to Gateways/FE/projects/.resources/e2fe4b35ae22edf8eb3de426911de375558b1f587611ab3f47366baec87f321f index 6659690..0917c50 100644 --- a/Gateways/FE/projects/.resources/19c28ab168425b04a1a94e9fb2368608ed73707f5afe79d863d55c00c5d40761 +++ b/Gateways/FE/projects/.resources/e2fe4b35ae22edf8eb3de426911de375558b1f587611ab3f47366baec87f321f @@ -118,20 +118,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -458,8 +451,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/4958bc23fa3c07e1831d1306137e2dab72a61eddd4dbcc0f2a5f2fe1be80d6e8 b/Gateways/FE/projects/.resources/e3ca66271528c1cdc84bad830f532cc32a6b35a471b4f61eb8cfc9399fc9e7bf similarity index 97% rename from Gateways/FE/projects/.resources/4958bc23fa3c07e1831d1306137e2dab72a61eddd4dbcc0f2a5f2fe1be80d6e8 rename to Gateways/FE/projects/.resources/e3ca66271528c1cdc84bad830f532cc32a6b35a471b4f61eb8cfc9399fc9e7bf index 2e6a363..03fa361 100644 --- a/Gateways/FE/projects/.resources/4958bc23fa3c07e1831d1306137e2dab72a61eddd4dbcc0f2a5f2fe1be80d6e8 +++ b/Gateways/FE/projects/.resources/e3ca66271528c1cdc84bad830f532cc32a6b35a471b4f61eb8cfc9399fc9e7bf @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/e4d768f50e9025e51319ea13e6bc7276c26751e93da2934708af0d788a9479d2 b/Gateways/FE/projects/.resources/e4d768f50e9025e51319ea13e6bc7276c26751e93da2934708af0d788a9479d2 new file mode 100644 index 0000000..4d1f695 --- /dev/null +++ b/Gateways/FE/projects/.resources/e4d768f50e9025e51319ea13e6bc7276c26751e93da2934708af0d788a9479d2 @@ -0,0 +1,50 @@ +# Definition of tag location to store tagpaths and updated data. +tagpath = '[default]System/DataTables/DOAS' +udt_type = 'Objects/Air/DOAS' +sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint' +} + +def update_data(config_tagpath, sub_paths_map): + ''' + config_tag_path: Path to the memory tag that contains the JSON with all the paths + sub_paths_map: Dictionary that maps all the sub_paths with the tag to be used in the table. + ''' + # 1. Read the list of tagpaths. + raw_data = system.tag.readBlocking(config_tagpath + '/Data')[0].value + paths_list = raw_data.get('paths', []) + if not paths_list: + return [] + # Order the keys to make sure the reading loop is consistent + col_names = sub_paths_map.keys() + + # 2. Build the reading list + read_paths = [] + for path in paths_list: + for col in col_names: + read_paths.append(path + sub_paths_map[col]) + # 3. Read all the values in one execution + reads = system.tag.readBlocking(read_paths) + + # 4. Process the result + output = [] + num_cols = len(col_names) + for device_idx, path in enumerate(paths_list): + item = {"device": path.split('/')[-1]} + for col_idx, col in enumerate(col_names): + global_idx = (device_idx * num_cols) + col_idx + tag_value = reads[global_idx].value + + + item[col] = tag_value if tag_value is not None else "0" + output.append(item) + return output + +def update_tagpaths(): + raw_paths = equipment.common.get_tagpaths(udt_type) + paths = [str(p) for p in raw_paths] + document = {'paths':paths} + system.tag.writeBlocking(tagpath + '/Data', document) \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/e528f3544b48b6d40292e0822122b42a97e7264b9b075b9b9adb28faca921aa8 b/Gateways/FE/projects/.resources/e528f3544b48b6d40292e0822122b42a97e7264b9b075b9b9adb28faca921aa8 deleted file mode 100644 index 447e08f..0000000 --- a/Gateways/FE/projects/.resources/e528f3544b48b6d40292e0822122b42a97e7264b9b075b9b9adb28faca921aa8 +++ /dev/null @@ -1,80 +0,0 @@ -# Find ALL the devices with a String, set 1 to Enable, 0 to Disable them -def UpdateAllDevices(target): - deviceDataset = system.device.listDevices() - for i in range(0, deviceDataset.getRowCount()): - deviceName = deviceDataset.getValueAt(i, "Name") - if target == 0: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Disabled %s"%(deviceName) - if target == 1: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Enabled %s"%(deviceName) - -#Update the devices with a specific string in the name. 1 to enable - 0 to disable -def UpdateDeviceType(taget, deviceType): - deviceDataset = system.device.listDevices() - for i in range(0, deviceDataset.getRowCount()): - deviceName = deviceDataset.getValueAt(i, "Name") - if deviceName.find(deviceType)>-1: - if target == 0: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Disabled %s"%(deviceName) - if target == 1: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Enabled %s"%(deviceName) - -def UpdatePanelParams(path, namespace, opc, tagname): - subpaths = [{'name':'/AC Primary Power Fault', 'ext':'.JA_01'}, - {'name':'/AC Secondary Power Fault', 'ext':'.JA_02'}, - {'name':'/DC Power Supply 1 Fault', 'ext':'.JA_03'}, - {'name':'/DC Power Supply 2 Fault', 'ext':'.JA_04'}, - {'name':'/High Temperature', 'ext':'.TAH'}, - {'name':'/Panel Intrusion', 'ext':'.XA'}] - print "===== Updating Panel Parameters =====" - for subtag in subpaths: - tagpath = str(path) + str(subtag['name']) - tag = system.tag.getConfiguration(tagpath) - name = str(tagname) + str(subtag['ext']) - tag[0]['parameters']['Namespace'] = namespace - tag[0]['parameters']['OPC'] = opc - tag[0]['parameters']['Tag'] = name - system.tag.configure(path, tag, "o") - print "updating: " + str(subtag) - print "===== Panel Parameters Updated =====" - -def UpdateUTParams(path, namespace, opc, tagname): - subpaths = [{'name':'/Liquid Level Alarm', 'ext':'.LA'}, - {'name':'/Liquid Temperature Alarm High', 'ext':'.TAH'}, - {'name':'/Liquid Temperature Alarm High High', 'ext':'.TAHH'}, - {'name':'/Pressure Relief Device Alarm', 'ext':'.PRD_ALM'}, - {'name':'/Pressure Switch', 'ext':'.PSW'}, - {'name':'/Rapid Rise Relay Tripped', 'ext':'.RRR_TRIP'}, - {'name':'/Rapid Rise Relay Warning', 'ext':'.RRR_ALM'}, - {'name':'/Source 1 Switch', 'ext':'.ZSO01'}, - {'name':'/Source 2 Switch', 'ext':'.ZSO02'}, - {'name':'/Vacuum Fault Interrupter1 Tripped', 'ext':'.VFI01'}, - {'name':'/Vacuum Fault Interrupter2 Tripped', 'ext':'.VFI02'}, - {'name':'/Vacuum Switch', 'ext':'.VSW'}] - - for subtag in subpaths: - tagpath = str(path) + str(subtag['name']) - tag = system.tag.getConfiguration(tagpath) - name = str(tagname) + str(subtag['ext']) - tag[0]['parameters']['Namespace'] = namespace - tag[0]['parameters']['OPC'] = opc - tag[0]['parameters']['Tag'] = name - system.tag.configure(path, tag, "o") - -#def setHistory(UDTNAme): - #parentPath = "[default]_types_/Objects/TEST" - #configs = system.tag.getConfiguration(parentPath, True) - -#for folder in configs[0]['tags']: -# UDTName = [folder['name']][0] -# print UDTName -# UDTs = system.tag.getConfiguration(parentPath +'/'+ UDTName, True) -# for tag in UDTs[0]['tags']: -# if str(tag['tagType']) == 'AtomicTag': -# tag['historyEnabled'] = True -# print tag - \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/e5b047390c6c3fb6cc4ea07cfe3ac1b9f62dc18b7250af6406e84e9f566e0e3a b/Gateways/FE/projects/.resources/e5b047390c6c3fb6cc4ea07cfe3ac1b9f62dc18b7250af6406e84e9f566e0e3a new file mode 100644 index 0000000..cdff5db Binary files /dev/null and b/Gateways/FE/projects/.resources/e5b047390c6c3fb6cc4ea07cfe3ac1b9f62dc18b7250af6406e84e9f566e0e3a differ diff --git a/Gateways/FE/projects/.resources/8d019fff10b8e14381df1d925b69b191fb985f52cc72954f663b4a83e13de06f b/Gateways/FE/projects/.resources/e5c34623bc22be4e7d9144ba371fe113c4928ea24cb0bc4f713a3446809184f7 similarity index 97% rename from Gateways/FE/projects/.resources/8d019fff10b8e14381df1d925b69b191fb985f52cc72954f663b4a83e13de06f rename to Gateways/FE/projects/.resources/e5c34623bc22be4e7d9144ba371fe113c4928ea24cb0bc4f713a3446809184f7 index 72b5641..dcc68bf 100644 --- a/Gateways/FE/projects/.resources/8d019fff10b8e14381df1d925b69b191fb985f52cc72954f663b4a83e13de06f +++ b/Gateways/FE/projects/.resources/e5c34623bc22be4e7d9144ba371fe113c4928ea24cb0bc4f713a3446809184f7 @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/e6be6515171366c3b45b64b8b2b59c0f01ea24b785197a865dd9562a03c7b61f b/Gateways/FE/projects/.resources/e6be6515171366c3b45b64b8b2b59c0f01ea24b785197a865dd9562a03c7b61f deleted file mode 100644 index 8f76b9f..0000000 --- a/Gateways/FE/projects/.resources/e6be6515171366c3b45b64b8b2b59c0f01ea24b785197a865dd9562a03c7b61f +++ /dev/null @@ -1,1634 +0,0 @@ -{ - "custom": { - "LA": "/Liquid Level Alarm", - "PRD": "/Pressure Relief Device Alarm", - "PSW": "/Pressure Switch", - "RRR_TRIP": "/Rapid Rise Relay Tripped", - "RRR_WRN": "/Rapid Rise Relay Warning", - "TAH": "/Liquid Temperature Alarm High", - "TAHH": "/Liquid Temperature Alarm High High", - "VFI01": "/Vacuum Fault Interrupter1 Tripped", - "VFI02": "/Vacuum Fault Interrupter2 Tripped", - "VSW": "/Vacuum Switch", - "ZSO01": "/Source 1 Switch", - "ZSO02": "/Source 2 Switch", - "inTagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_UT-M1" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_UT-M1" - }, - "propConfig": { - "custom.LA": { - "persistent": true - }, - "custom.PRD": { - "persistent": true - }, - "custom.PSW": { - "persistent": true - }, - "custom.RRR_TRIP": { - "persistent": true - }, - "custom.RRR_WRN": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.TAHH": { - "persistent": true - }, - "custom.VFI01": { - "persistent": true - }, - "custom.VFI02": { - "persistent": true - }, - "custom.VSW": { - "persistent": true - }, - "custom.ZSO01": { - "persistent": true - }, - "custom.ZSO02": { - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.ZSO01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.ZSO01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "150PX" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.ZSO01} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Source 1 Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.ZSO02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.ZSO02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "150PX" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.ZSO02} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Source 2 Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "150px" - }, - "props": { - "justify": "space-around", - "style": { - "gap": 5, - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.LA\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.LA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.LA} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Level Alarm", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.TAH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Temperature Alarm High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.TAHH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAHH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAHH} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Temperature Alarm High High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VSW\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VSW}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VSW} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.PSW\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.PSW}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_6" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.PSW} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Pressure Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.RRR_WRN\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.RRR_WRN}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_7" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.RRR_WRN} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Rapid Rise Relay Warning", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.RRR_TRIP\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.RRR_TRIP}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_8" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.RRR_TRIP} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Rapid Rise Realy Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.PRD\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.PRD}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_9" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.PRD} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Pressure Relief Device Alarm", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VFI01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VFI01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_10" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VFI01} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Fault Interrupter 1 Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VFI02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VFI02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_11" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VFI02} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Fault Interrupter 2 Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "310px" - }, - "props": { - "justify": "space-around", - "style": { - "gap": 15, - "padding": 10 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/e7fe95c8b58e2d201328f6310845072d20a027aa6b9a7b4e8ab1a81a43239098 b/Gateways/FE/projects/.resources/e7fe95c8b58e2d201328f6310845072d20a027aa6b9a7b4e8ab1a81a43239098 new file mode 100644 index 0000000..8c75ce2 Binary files /dev/null and b/Gateways/FE/projects/.resources/e7fe95c8b58e2d201328f6310845072d20a027aa6b9a7b4e8ab1a81a43239098 differ diff --git a/Gateways/FE/projects/.resources/e9a34d6858716b2acbed7a282ddbcbca9fe41e613035cd5cf682ddb011c93d47 b/Gateways/FE/projects/.resources/e9a34d6858716b2acbed7a282ddbcbca9fe41e613035cd5cf682ddb011c93d47 new file mode 100644 index 0000000..e702646 Binary files /dev/null and b/Gateways/FE/projects/.resources/e9a34d6858716b2acbed7a282ddbcbca9fe41e613035cd5cf682ddb011c93d47 differ diff --git a/Gateways/FE/projects/.resources/ea2e2cf13dc81fcc4797407b4afa2ffdd5a5e00db74adcd4ba439bc38f938168 b/Gateways/FE/projects/.resources/ea2e2cf13dc81fcc4797407b4afa2ffdd5a5e00db74adcd4ba439bc38f938168 new file mode 100644 index 0000000..7c9745c Binary files /dev/null and b/Gateways/FE/projects/.resources/ea2e2cf13dc81fcc4797407b4afa2ffdd5a5e00db74adcd4ba439bc38f938168 differ diff --git a/Gateways/FE/projects/.resources/ea5f431094334e61f73f356105cf758ed9c05878c78222bc474827074bcd53a4 b/Gateways/FE/projects/.resources/ea5f431094334e61f73f356105cf758ed9c05878c78222bc474827074bcd53a4 deleted file mode 100644 index b3b3b5b..0000000 Binary files a/Gateways/FE/projects/.resources/ea5f431094334e61f73f356105cf758ed9c05878c78222bc474827074bcd53a4 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/eacb7e16657f8cb36f54de56fb770e25ee49fd5fd107b7ec57b72b962dca2d0b b/Gateways/FE/projects/.resources/eacb7e16657f8cb36f54de56fb770e25ee49fd5fd107b7ec57b72b962dca2d0b deleted file mode 100644 index fff8a7b..0000000 --- a/Gateways/FE/projects/.resources/eacb7e16657f8cb36f54de56fb770e25ee49fd5fd107b7ec57b72b962dca2d0b +++ /dev/null @@ -1,162 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cold Aisle Space Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Hot Aisle Differential Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Differential Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cold Aisle Space Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Hot Aisle Space Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Dew Point Setpoint", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Data Hall" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/eaf903d46838275613c8ed13a653accbef9c9f0f0f8c7ae982269a7ff48c3d33 b/Gateways/FE/projects/.resources/eaf903d46838275613c8ed13a653accbef9c9f0f0f8c7ae982269a7ff48c3d33 deleted file mode 100644 index fe496f8..0000000 --- a/Gateways/FE/projects/.resources/eaf903d46838275613c8ed13a653accbef9c9f0f0f8c7ae982269a7ff48c3d33 +++ /dev/null @@ -1,449 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 200, - "width": 600 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "elementPosition": { - "shrink": 0 - }, - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_RTU_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3, - "setpointValue": "" - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexRepeater_0" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_RTU_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "backgroundColor": "var(--container)", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/c85c09183fcf8c2925f0f97bb0309301cfe5aa5c683015a7e9cbe6e80aad2dea b/Gateways/FE/projects/.resources/eafa768b23845212ce29c3dd675b625442235e99351d679eb79106d4d8afc920 similarity index 97% rename from Gateways/FE/projects/.resources/c85c09183fcf8c2925f0f97bb0309301cfe5aa5c683015a7e9cbe6e80aad2dea rename to Gateways/FE/projects/.resources/eafa768b23845212ce29c3dd675b625442235e99351d679eb79106d4d8afc920 index b9c90f2..049d8d0 100644 --- a/Gateways/FE/projects/.resources/c85c09183fcf8c2925f0f97bb0309301cfe5aa5c683015a7e9cbe6e80aad2dea +++ b/Gateways/FE/projects/.resources/eafa768b23845212ce29c3dd675b625442235e99351d679eb79106d4d8afc920 @@ -119,20 +119,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -391,8 +384,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/ebf2348399f12350622e635d3d19a3ef337e5afe322210c75a3443f1caeb87de b/Gateways/FE/projects/.resources/ebf2348399f12350622e635d3d19a3ef337e5afe322210c75a3443f1caeb87de new file mode 100644 index 0000000..b7abbe5 --- /dev/null +++ b/Gateways/FE/projects/.resources/ebf2348399f12350622e635d3d19a3ef337e5afe322210c75a3443f1caeb87de @@ -0,0 +1,411 @@ +{ + "custom": { + "tabsConfig": { + "showConfig": false, + "showControl": false, + "tabs": [ + "Status", + "Control", + "Config", + "Trend", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "auth": { + "almAck": true, + "almShelve": true, + "config": true, + "control": true + }, + "objectName": "FCU", + "tagPath": "[Ignition_Common_IO_Gtwy]FS1232/SATB1_HS2_FS1232_FCU21" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Controls" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.trendConfig": { + "persistent": true + }, + "params.auth": { + "paramDirection": "input", + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": {}, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Status" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Info" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Trend" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.selectedPens": { + "binding": { + "config": { + "path": "view.custom.trendConfig.selectedPens" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Trends" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Config" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Meta" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Templates/Meta" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Wiki" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Framework/Tag Notes/View Notes" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Control" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/ee80cd0c90b28851dfa1d513b6f81a6af3221afb37082d858b1975fc470ea293 b/Gateways/FE/projects/.resources/ee80cd0c90b28851dfa1d513b6f81a6af3221afb37082d858b1975fc470ea293 new file mode 100644 index 0000000..1cdc83a Binary files /dev/null and b/Gateways/FE/projects/.resources/ee80cd0c90b28851dfa1d513b6f81a6af3221afb37082d858b1975fc470ea293 differ diff --git a/Gateways/FE/projects/.resources/ef705d1dea0ca85d50a2b60a0f35a1afe2692337c0c4cc1026804e2312d1b74c b/Gateways/FE/projects/.resources/ef705d1dea0ca85d50a2b60a0f35a1afe2692337c0c4cc1026804e2312d1b74c new file mode 100644 index 0000000..bcd2d8d Binary files /dev/null and b/Gateways/FE/projects/.resources/ef705d1dea0ca85d50a2b60a0f35a1afe2692337c0c4cc1026804e2312d1b74c differ diff --git a/Gateways/FE/projects/.resources/f2297660360f68839ac3b514592de85c411a2d06cb0d394b5ca70f4399d91457 b/Gateways/FE/projects/.resources/f2297660360f68839ac3b514592de85c411a2d06cb0d394b5ca70f4399d91457 new file mode 100644 index 0000000..b764737 --- /dev/null +++ b/Gateways/FE/projects/.resources/f2297660360f68839ac3b514592de85c411a2d06cb0d394b5ca70f4399d91457 @@ -0,0 +1,323 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.2-1-1", + "P2.2-1-2", + "P2.2-1-3", + "P2.2-1-4", + "P2.2-1-5", + "P2.2-1-6", + "P2.2-2-1", + "P2.2-2-2", + "P2.2-2-3", + "P2.2-2-4", + "P2.2-2-5", + "P2.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f3dca1fc8c6fe22ab503e06c9909908d92e131566662c0bc9496e4317e0823d2 b/Gateways/FE/projects/.resources/f3dca1fc8c6fe22ab503e06c9909908d92e131566662c0bc9496e4317e0823d2 new file mode 100644 index 0000000..110a7a4 Binary files /dev/null and b/Gateways/FE/projects/.resources/f3dca1fc8c6fe22ab503e06c9909908d92e131566662c0bc9496e4317e0823d2 differ diff --git a/Gateways/FE/projects/.resources/f40f276d8f535f8b8c917b48f68b3e68256a8a157cd6ef35d8375acccff74639 b/Gateways/FE/projects/.resources/f40f276d8f535f8b8c917b48f68b3e68256a8a157cd6ef35d8375acccff74639 deleted file mode 100644 index 9f268a9..0000000 --- a/Gateways/FE/projects/.resources/f40f276d8f535f8b8c917b48f68b3e68256a8a157cd6ef35d8375acccff74639 +++ /dev/null @@ -1,506 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage AB", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage AN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage BC", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage BN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage CA", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage CN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-L Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-N Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52U" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f41eaf7560a7ecb7eb04c6cab4237f904b8d0ff329cd8c1ed8d86961fe1b8489 b/Gateways/FE/projects/.resources/f41eaf7560a7ecb7eb04c6cab4237f904b8d0ff329cd8c1ed8d86961fe1b8489 deleted file mode 100644 index 6e05f51..0000000 Binary files a/Gateways/FE/projects/.resources/f41eaf7560a7ecb7eb04c6cab4237f904b8d0ff329cd8c1ed8d86961fe1b8489 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/f463896cf7591e018bea301c7808c4b68a738ed0a599fca024617f63b156cde2 b/Gateways/FE/projects/.resources/f463896cf7591e018bea301c7808c4b68a738ed0a599fca024617f63b156cde2 new file mode 100644 index 0000000..44e04a7 --- /dev/null +++ b/Gateways/FE/projects/.resources/f463896cf7591e018bea301c7808c4b68a738ed0a599fca024617f63b156cde2 @@ -0,0 +1,592 @@ +{ + "custom": { + "data": { + "data": [ + { + "Alm": "0", + "BP": 0, + "OAD": 0, + "SAD": 0, + "SAT": 0, + "device": "DOAS1", + "path": "[default]simulator/DOAS/DOAS1" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS2", + "path": "[default]simulator/DOAS/DOAS2" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS3", + "path": "[default]simulator/DOAS/DOAS3" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4", + "path": "[default]simulator/DOAS/DOAS4" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS5", + "path": "[default]simulator/DOAS/DOAS5" + } + ] + } + }, + "params": {}, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]System/DataTables/DOAS/Data" + }, + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 190, + "width": 838 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.data.data" + }, + "transforms": [ + { + "code": "\treturn equipment.common.style_table(value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": [ + { + "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": "center", + "style": { + "classes": "" + }, + "title": "Device" + }, + "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": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "OAD", + "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": "Outdoor Air Dewpoint" + }, + "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": "SAT", + "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": "Supply Air Temp" + }, + "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": "SAD", + "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": "Supply Air Dewpoint" + }, + "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": "BP", + "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": "Building Pressure" + }, + "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": "" + } + ], + "pager": { + "bottom": false + }, + "selection": { + "data": [ + { + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4" + } + ], + "selectedColumn": "OAD", + "selectedRow": 3 + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "backgroundColor": "var(--container)", + "classes": "containers/card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f563a52ebe1686ac7734fdbf7702cc8b847a2d0bc513bd5e82764dbd61a1f1f0 b/Gateways/FE/projects/.resources/f563a52ebe1686ac7734fdbf7702cc8b847a2d0bc513bd5e82764dbd61a1f1f0 deleted file mode 100644 index f71d699..0000000 --- a/Gateways/FE/projects/.resources/f563a52ebe1686ac7734fdbf7702cc8b847a2d0bc513bd5e82764dbd61a1f1f0 +++ /dev/null @@ -1,415 +0,0 @@ -{ - "custom": { - "tabsConfig": { - "tabs": [ - "Status", - "Control", - "Config", - "Trend", - "Meta", - "Wiki" - ] - }, - "trendConfig": { - "selectedPens": [] - } - }, - "params": { - "auth": { - "almAck": true, - "almShelve": true, - "config": true, - "control": true - }, - "objectName": "AnalogIn", - "tagPath": "[Ignition_SATB1_IO5_default]SATB1_DH5_P5_SWBD5_XA_SPD" - }, - "propConfig": { - "custom.tabsConfig": { - "persistent": true - }, - "custom.tabsConfig.showConfig": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Config" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.tabsConfig.showControl": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "1": "{view.params.tagPath}" - }, - "tagPath": "{1}/Control" - }, - "transforms": [ - { - "expression": "coalesce({value},false) !\u003d false", - "type": "expression" - } - ], - "type": "tag" - } - }, - "custom.trendConfig": { - "persistent": true - }, - "params.auth": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Status" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Trend" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.selectedPens": { - "binding": { - "config": { - "path": "view.custom.trendConfig.selectedPens" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - }, - "path": "Library/Templates/Trends" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Config" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Config\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Meta" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Templates/Meta" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Wiki" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - } - }, - "props": { - "path": "Library/Framework/Tag Notes/View Notes" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Control" - }, - "propConfig": { - "position.tabIndex": { - "binding": { - "config": { - "expression": "{parent.props.tabs}" - }, - "transforms": [ - { - "code": "\treturn value.indexOf(self.meta.name)", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.params.auth": { - "binding": { - "config": { - "path": "view.params.auth" - }, - "type": "property" - } - }, - "props.params.tagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Control\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "TabContainer" - }, - "position": { - "basis": "300px", - "grow": 1 - }, - "propConfig": { - "props.tabs": { - "binding": { - "config": { - "expression": "{view.custom.tabsConfig}" - }, - "transforms": [ - { - "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "contentStyle": { - "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "enableDisablePen", - "pageScope": true, - "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f599026bece906091bf6fa2fa22e402ab11c547bf5637377f71ee11f8f73cea1 b/Gateways/FE/projects/.resources/f599026bece906091bf6fa2fa22e402ab11c547bf5637377f71ee11f8f73cea1 deleted file mode 100644 index 18d2f5f..0000000 --- a/Gateways/FE/projects/.resources/f599026bece906091bf6fa2fa22e402ab11c547bf5637377f71ee11f8f73cea1 +++ /dev/null @@ -1,210 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Communication Percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Contactor Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Current A THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 60, - "instanceStyle": { - "classes": "" - }, - "name": "Current B THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Current C THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Filter Controls Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Load Real Power Total", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 51, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 67, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA THD", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH48_HF" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f6e4f336a451da5962f6fd120a2a210e1def6c540702eb4a4dec7653a97050dd b/Gateways/FE/projects/.resources/f6e4f336a451da5962f6fd120a2a210e1def6c540702eb4a4dec7653a97050dd deleted file mode 100644 index 289ace3..0000000 --- a/Gateways/FE/projects/.resources/f6e4f336a451da5962f6fd120a2a210e1def6c540702eb4a4dec7653a97050dd +++ /dev/null @@ -1,181 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Application Matches", - "options": [ - "no Match", - "Match" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Primary PLC", - "options": [ - "A", - "B" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC A Fail", - "options": [ - "Not Failed", - "Failed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC A Online", - "options": [ - "Offline", - "Online" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC B Fail", - "options": [ - "Not Failed", - "Failed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC B Online", - "options": [ - "Offline", - "Online" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1272/SATB1_GAL1272_PNL23/Hot Standby Status" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/f871706bdff841d9f99fefb2f9f2298dfab7fa938b84f3de80ff4d9479261487 b/Gateways/FE/projects/.resources/f871706bdff841d9f99fefb2f9f2298dfab7fa938b84f3de80ff4d9479261487 new file mode 100644 index 0000000..c03ba1b --- /dev/null +++ b/Gateways/FE/projects/.resources/f871706bdff841d9f99fefb2f9f2298dfab7fa938b84f3de80ff4d9479261487 @@ -0,0 +1,841 @@ +{ + "custom": { + "refreshTimerInterval": "60000" + }, + "params": { + "deviceType": "VM", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/VM" + }, + "propConfig": { + "custom.automaticUpdateEnabled": { + "binding": { + "config": { + "bidirectional": true, + "coalesce": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Enable Automatic Refresh" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.deviceData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Device Data" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.isLoaded": { + "binding": { + "config": { + "struct": { + "deviceData": "{view.custom.deviceData}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "True", + "type": "expression" + } + ], + "type": "expr-struct" + }, + "persistent": false + }, + "custom.lastUpdate": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Last Update" + }, + "transforms": [ + { + "expression": "//dateFormat({value}, \"MM/dd, hh:mm:ss aa\")\r\ndateFormat(dateArithmetic({value}, -7, \"hour\"), \"MM/dd, hh:mm:ss aa\")", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": false + }, + "custom.refreshTimerInterval": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.Refresh Timer Interval" + }, + "type": "tag" + }, + "persistent": true + }, + "custom.tableColumns": { + "binding": { + "config": { + "path": "view.custom.tagsToRead" + }, + "transforms": [ + { + "code": "\timport copy, time\n\t\n\t# Convert a string to camelCase. We do this because Ignition doesn\u0027t like\n\t# keys being spaced strings. (i.e \u0027Discharge Air Temperature\u0027)\n\tdef to_camel_case(text):\n\t words \u003d text.split()\n\t return words[0].lower() + \u0027\u0027.join(word.capitalize() for word in words[1:])\n\t \n\t# Define the default configuration for a column.\n\tbase_config \u003d {\n\t \"field\": \"\",\n\t \"visible\": True,\n\t \"editable\": False,\n\t \"render\": \"auto\",\n\t \"justify\": \"auto\",\n\t \"align\": \"center\",\n\t \"resizable\": True,\n\t \"sortable\": True,\n\t \"sort\": \"none\",\n\t \"filter\": {\n\t \"enabled\": False,\n\t \"visible\": \"on-hover\",\n\t \"string\": {\"condition\": \"\", \"value\": \"\"},\n\t \"number\": {\"condition\": \"\", \"value\": \"\"},\n\t \"boolean\": {\"condition\": \"\"},\n\t \"date\": {\"condition\": \"\", \"value\": \"\"}\n\t },\n\t \"viewPath\": \"\",\n\t \"viewParams\": {},\n\t \"boolean\": \"checkbox\",\n\t \"number\": \"value\",\n\t \"progressBar\": {\n\t \"max\": 100,\n\t \"min\": 0,\n\t \"bar\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"track\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"value\": {\n\t \"enabled\": True,\n\t \"format\": \"0,0.##\",\n\t \"justify\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t }\n\t },\n\t \"toggleSwitch\": {\n\t \"color\": {\"selected\": \"\", \"unselected\": \"\"}\n\t },\n\t \"nullFormat\": {\n\t \"includeNullStrings\": False,\n\t \"strict\": False,\n\t \"nullFormatValue\": \"\"\n\t },\n\t \"numberFormat\": \"0,0.##\",\n\t \"dateFormat\": \"MM/DD/YYYY\",\n\t \"width\": \"\",\n\t \"strictWidth\": False,\n\t \"header\": {\n\t \"title\": \"nothingBurger\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"footer\": {\n\t \"title\": \"\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"style\": {\"classes\": \"\"}\n\t}\n\t\n\tres \u003d []\n\tfor idx, column in enumerate(value): # Expects \u0027CHW Valve Command\u0027\n\t\tconfig \u003d copy.deepcopy(base_config)\n\t\t\n\t\t# Convert \"Meta/Building\" -\u003e \"Building\"\n\t\tif \u0027/\u0027 in column:\n\t\t\tcolumn \u003d column.split(\u0027/\u0027)[-1] \n\t\t\t\n\t\tif \u0027Parameters\u0027 in column:\n\t\t\tcolumn \u003d column[10:]\n\t\t\t\n\t\tif idx \u003d\u003d 0: # Set extra width to the device name column.\n\t\t\tconfig[\u0027width\u0027] \u003d 120\n\t\t\t\n\t\t# Update the column data and header to the tagToRead.\n\t\tconfig[\u0027field\u0027] \u003d to_camel_case(column) # \"CHW Valve Command\" -\u003e \"chwValveCommand\"\n\t\tconfig[\u0027header\u0027][\u0027title\u0027] \u003d column\n\t\tres.append(config)\n\n\treturn res\n\t", + "type": "script" + } + ], + "type": "property" + }, + "persistent": false + }, + "custom.tagsToRead": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Tags To Read" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.updateTableTimer": { + "binding": { + "config": { + "expression": "now(15000) // This updates the binding every fifteen seconds, which triggers the on-change script." + }, + "enabled": false, + "transforms": [ + { + "expression": "dateFormat({value}, \"h:mm:ss a\")", + "type": "expression" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.automaticUpdateEnabled:\n\t\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "persistent": false + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Location/Table.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "output", + "persistent": false + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 608, + "width": 1214 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Virtual Machines", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "updateLabel" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.custom.lastUpdate" + }, + "transforms": [ + { + "expression": "concat(\"Last Update: \", {value})", + "type": "expression" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027flashTimerText\u0027, {})" + }, + "persistent": true + } + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "Last Update: 12/03, 02:19:41 PM", + "style": { + "alignContent": "center", + "classes": "labels/text-sm, Animation/fadeToBlack_B", + "cursor": "pointer", + "fontWeight": "400", + "opacity": 0.5, + "paddingRight": "0.25rem", + "textAlign": "right" + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "size": "large" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Device List", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "justify": "space-between", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "SmallHeader" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "BreakpointContainer" + }, + "position": { + "basis": "2.5rem", + "shrink": 0 + }, + "props": { + "breakpoint": 480 + }, + "type": "ia.container.breakpt" + }, + { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "props": { + "source": "Loading...", + "style": { + "classes": "Animation/loading labels/text-xl", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Progress" + }, + "props": { + "bar": { + "color": "#D5D5D5" + }, + "mode": "indeterminate", + "style": { + "height": "0.5rem", + "width": "12rem" + }, + "track": { + "color": "#AAAAAA" + } + }, + "type": "ia.display.progress" + } + ], + "meta": { + "name": "Loading" + }, + "position": { + "basis": "100%", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.isLoaded}" + }, + "type": "expr" + } + } + }, + "props": { + "alignItems": "center", + "direction": "column", + "justify": "center", + "style": { + "backgroundColor": "#d9d8d4", + "gap": "1rem" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "#\tsystem.perspective.print(\u0027attempting to open\u0027)\n\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + }, + "persistent": false + }, + "props.columns": { + "binding": { + "config": { + "path": "view.custom.tableColumns" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "path": "view.custom.deviceData" + }, + "type": "property" + } + } + }, + "props": { + "cells": { + "style": { + "cursor": "pointer" + } + }, + "emptyMessage": { + "noData": { + "text": "N/A" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "rows": { + "striped": { + "color": { + "even": "#D5D5D5" + } + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Location" + }, + "position": { + "basis": "33%", + "grow": 1 + }, + "props": { + "alignContent": "space-between", + "direction": "column", + "justify": "space-around", + "style": { + "gap": "0.25rem", + "height": "100%", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "updateTableData", + "pageScope": true, + "script": "\t# If the data hasn\u0027t loaded, don\u0027t refresh.\n\tif not self.view.custom.isLoaded:\n\t\treturn\n\t\n\t# Write to the manual refresh command and refresh the time.\n\tsystem.tag.writeBlocking(self.view.params.tagPath + \u0027/Config/Manual Refresh Command\u0027, True)\n#\tcurrentTime \u003d \u0027Last Update: *{}*\u0027.format(system.date.format(system.date.now(), \"hh:mm:ss aa\"))\n#\tself.getChild(\"Location\").getChild(\"FlexContainer\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.source \u003d currentTime\n\t\n#\t\t\n#\ttry:\n#\t\tself.view.refreshBinding(\u0027custom.deviceData\u0027)\n#\texcept:\n#\t\tsystem.perspective.print(\u0027Device data binding disabled.\u0027)", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "flashTimerText", + "pageScope": true, + "script": "\t\"\"\"\n\t\tHelper function called by the \u0027Last Update:\u0027 text to flash when it updates.\n\t\"\"\"\n\tclasses \u003d self.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes\n\t\n\t# Refresh the animation by toggling between two identical classes.\n\tif \u0027fadeToBlack_A\u0027 in classes:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_B\"\n\telse:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_A\"", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/b6dfe9fd6b99512d69390d7bb2846031c100ea76cd8142c02d9b2bf8eebce8b8 b/Gateways/FE/projects/.resources/f8f5128121207e9850afbcabb303eba4aaf7c13ddd5e57881ddef2888bd36752 similarity index 94% rename from Gateways/FE/projects/.resources/b6dfe9fd6b99512d69390d7bb2846031c100ea76cd8142c02d9b2bf8eebce8b8 rename to Gateways/FE/projects/.resources/f8f5128121207e9850afbcabb303eba4aaf7c13ddd5e57881ddef2888bd36752 index bdc034f..0afc10f 100644 --- a/Gateways/FE/projects/.resources/b6dfe9fd6b99512d69390d7bb2846031c100ea76cd8142c02d9b2bf8eebce8b8 +++ b/Gateways/FE/projects/.resources/f8f5128121207e9850afbcabb303eba4aaf7c13ddd5e57881ddef2888bd36752 @@ -2,9 +2,8 @@ "custom": { "tabsConfig": { "tabs": [ - "Status", + "Info", "Control", - "Config", "Trend", "Meta", "Wiki" @@ -21,8 +20,8 @@ "config": true, "control": true }, - "objectName": "ATS", - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/ATS" + "objectName": "VAVMaster", + "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" }, "propConfig": { "custom.tabsConfig": { @@ -34,9 +33,9 @@ "fallbackDelay": 2.5, "mode": "indirect", "references": { - "1": "{view.params.tagPath}" + "tagPath": "{view.params.tagPath}" }, - "tagPath": "{1}/Config" + "tagPath": "{tagPath}/Config" }, "transforms": [ { @@ -53,9 +52,9 @@ "fallbackDelay": 2.5, "mode": "indirect", "references": { - "1": "{view.params.tagPath}" + "tagPath": "{view.params.tagPath}" }, - "tagPath": "{1}/Control" + "tagPath": "{tagPath}/Control" }, "transforms": [ { @@ -113,20 +112,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -318,6 +310,14 @@ "type": "expr" } }, + "props.params.auth": { + "binding": { + "config": { + "path": "view.params.auth" + }, + "type": "property" + } + }, "props.params.tagPath": { "binding": { "config": { @@ -358,7 +358,7 @@ }, "transforms": [ { - "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\treturn tabs", "type": "script" } ], @@ -369,8 +369,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/f93b4497db55ee9c162d9f1804f4aec4448d5f11ee49f71a4caa1ea71f2097ae b/Gateways/FE/projects/.resources/f93b4497db55ee9c162d9f1804f4aec4448d5f11ee49f71a4caa1ea71f2097ae new file mode 100644 index 0000000..c555be0 Binary files /dev/null and b/Gateways/FE/projects/.resources/f93b4497db55ee9c162d9f1804f4aec4448d5f11ee49f71a4caa1ea71f2097ae differ diff --git a/Gateways/FE/projects/.resources/1f67947f0e170ae0b6270c03d46b336ed9eca3b1e21b74b870bfcfe8c8b39abb b/Gateways/FE/projects/.resources/f9839632ce1f0a407d6b5353515725bc35d214f2bd6d63989fc4778d5ad718fc similarity index 97% rename from Gateways/FE/projects/.resources/1f67947f0e170ae0b6270c03d46b336ed9eca3b1e21b74b870bfcfe8c8b39abb rename to Gateways/FE/projects/.resources/f9839632ce1f0a407d6b5353515725bc35d214f2bd6d63989fc4778d5ad718fc index fd6ff1b..f218c4a 100644 --- a/Gateways/FE/projects/.resources/1f67947f0e170ae0b6270c03d46b336ed9eca3b1e21b74b870bfcfe8c8b39abb +++ b/Gateways/FE/projects/.resources/f9839632ce1f0a407d6b5353515725bc35d214f2bd6d63989fc4778d5ad718fc @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/.resources/fb96863e5fc512f888a92e29eff67eaeafc5d973792ba8788f8c03feb498c9d9 b/Gateways/FE/projects/.resources/fb96863e5fc512f888a92e29eff67eaeafc5d973792ba8788f8c03feb498c9d9 new file mode 100644 index 0000000..4db24cc Binary files /dev/null and b/Gateways/FE/projects/.resources/fb96863e5fc512f888a92e29eff67eaeafc5d973792ba8788f8c03feb498c9d9 differ diff --git a/Gateways/FE/projects/.resources/fbdad4de54261c3a3d8c585e379c9320216e3c61963b6d694fa9140bb972f9fd b/Gateways/FE/projects/.resources/fbdad4de54261c3a3d8c585e379c9320216e3c61963b6d694fa9140bb972f9fd deleted file mode 100644 index 47ac10a..0000000 --- a/Gateways/FE/projects/.resources/fbdad4de54261c3a3d8c585e379c9320216e3c61963b6d694fa9140bb972f9fd +++ /dev/null @@ -1,563 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 VFD Speed", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 VFD Speed", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 3 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control Mode", - "options": [ - "Supply Air Cooling Only", - "Supply Air Tempering", - "Outdoor Temperature Control", - "Return Air Constant Volume Mode", - "Space Temp Constant Volume Mode", - "Space Temp w/ High OA Content", - "Single Zone VAV" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control Status", - "options": [ - "Unoccupied", - "Occupied", - "Override Mode", - "Holiday Unoccupied", - "Holiday Occupied", - "Force Occupied", - "Force Unoccupied", - "Remote Contact Occupied" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cooling Enabled", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.####", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Duct Static Pressure", - "numDecimals": 4, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Duct Static Pressure Control Signal", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Economizer Enabled Status", - "options": [ - "Disabled", - "Enabled" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "HVAC Mode", - "options": [ - "Off", - "Vent Mode", - "Cooling Mode", - "Heating Mode", - "Ven RH Mode", - "Cooling RH Mode", - "Heating RH Mode", - "Warm UP Mode", - "Purge Mode", - "Defrost Mode", - "Cool Down Mode" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heating Enabled Status", - "options": [ - "Disabled", - "Enabled" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulating Heat Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulation Hot Gas Reheat Valve Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Enthalpy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.#", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Temperature", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Quantity Of Requests", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 3, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Remote Forced Occupied Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Damper", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Enthalpy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Control Signal", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Pressure SP", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Runtime", - "numDecimals": 1, - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/.resources/fc3ac47bd7b53194fba6aa04e465563e838ce6a5240bbc871ed469bebeeda2ca b/Gateways/FE/projects/.resources/fc3ac47bd7b53194fba6aa04e465563e838ce6a5240bbc871ed469bebeeda2ca deleted file mode 100644 index 3a8a766..0000000 Binary files a/Gateways/FE/projects/.resources/fc3ac47bd7b53194fba6aa04e465563e838ce6a5240bbc871ed469bebeeda2ca and /dev/null differ diff --git a/Gateways/FE/projects/.resources/fcc21ac05ecada817f46e63af3b952f5d8ec71f8ac692da0bcefcd0f6c36e419 b/Gateways/FE/projects/.resources/fcc21ac05ecada817f46e63af3b952f5d8ec71f8ac692da0bcefcd0f6c36e419 new file mode 100644 index 0000000..ace7deb Binary files /dev/null and b/Gateways/FE/projects/.resources/fcc21ac05ecada817f46e63af3b952f5d8ec71f8ac692da0bcefcd0f6c36e419 differ diff --git a/Gateways/FE/projects/.resources/fe9f0cc48439c9c6cd7000f53f3a26e64cc2a410e9d96885d2be2bfec4de3c3b b/Gateways/FE/projects/.resources/fe9f0cc48439c9c6cd7000f53f3a26e64cc2a410e9d96885d2be2bfec4de3c3b new file mode 100644 index 0000000..804fdcb Binary files /dev/null and b/Gateways/FE/projects/.resources/fe9f0cc48439c9c6cd7000f53f3a26e64cc2a410e9d96885d2be2bfec4de3c3b differ diff --git a/Gateways/FE/projects/.resources/fec22e0ad53855c61f65911fb4d50905001820d264a1c201caebe0ff28887049 b/Gateways/FE/projects/.resources/fec22e0ad53855c61f65911fb4d50905001820d264a1c201caebe0ff28887049 deleted file mode 100644 index 1b58c4f..0000000 Binary files a/Gateways/FE/projects/.resources/fec22e0ad53855c61f65911fb4d50905001820d264a1c201caebe0ff28887049 and /dev/null differ diff --git a/Gateways/FE/projects/.resources/fee0047e8e57e41f3b66c5d36c86d7d1a21bcc84dace8ec8ebef244a574e648d b/Gateways/FE/projects/.resources/fee0047e8e57e41f3b66c5d36c86d7d1a21bcc84dace8ec8ebef244a574e648d deleted file mode 100644 index d45d0f7..0000000 Binary files a/Gateways/FE/projects/.resources/fee0047e8e57e41f3b66c5d36c86d7d1a21bcc84dace8ec8ebef244a574e648d and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/session-props/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/session-props/resource.json index 34d98dc..4fa96e9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/session-props/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/session-props/resource.json @@ -7,10 +7,10 @@ "props.json" ], "attributes": { - "lastModificationSignature": "2d755c92157bd569b632664e7e00c04448e904254064e74b7c4c3a68d0804026", + "lastModificationSignature": "98fdd0962800ce601ab1f48547957af5bcea1c517732a2f99b9ee082de499f4f", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:32:58Z" + "timestamp": "2026-05-05T22:26:44Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/resource.json index 7463a82..997f9a7 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/resource.json @@ -7,10 +7,10 @@ "style.json" ], "attributes": { - "lastModificationSignature": "ca2007adbba24701febf3749f1e229d418b8f8a0bc67cea8cafae5b72e7c2fa2", + "lastModificationSignature": "2ef35e386dcdc0b4f8ff902aaa9623c0afc650298ebf20c116d1c57e1fcc3ce4", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-20T20:00:25Z" + "timestamp": "2026-05-05T15:36:32Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/style.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/style.json index d5f2556..c9d9e29 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/style.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/style-classes/containers/card/style.json @@ -10,7 +10,11 @@ "outlineColor": "var(--border)", "outlineStyle": "solid", "outlineWidth": "1px", - "overflow": "visible" + "overflow": "visible", + "paddingBottom": "var(--space-sm)", + "paddingLeft": "var(--space-sm)", + "paddingRight": "var(--space-sm)", + "paddingTop": "var(--space-sm)" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/resource.json index 553d103..d721a3b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "8fbaa2746444344baea75771f6765a6e0bdc210a6bfc4cd93ae53614058e8f33", + "lastModificationSignature": "86e4e97ef521f778e9a87ccefdf7ad3d7de090b63967181a6d7ada9a8a20564d", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T02:06:35Z" + "timestamp": "2026-05-05T21:00:28Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/thumbnail.png index cb8b1ba..61a473f 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/view.json index c1f64f4..087481e 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Development/testCoord/view.json @@ -306,6 +306,78 @@ ] }, "type": "ia.display.sparkline" + }, + { + "meta": { + "name": "Map" + }, + "position": { + "height": 400, + "width": 400, + "x": 141.5, + "y": 187.5 + }, + "props": { + "init": { + "center": { + "lat": 38.660867, + "lng": -121.159728 + }, + "zoom": 12 + }, + "layers": { + "raster": { + "tile": [ + { + "WMS": { + "format": "image/jpeg", + "layers": "", + "styles": "", + "transparent": false, + "uppercase": false, + "version": "1.1.1" + }, + "options": { + "attribution": "Map data \u0026copy; \u003ca href\u003d\u0027https://www.openstreetmap.org/\u0027\u003eOpenStreetMap\u003c/a\u003e contributors, \u003ca href\u003d\u0027https://creativecommons.org/licenses/by-sa/2.0/\u0027\u003eCC-BY-SA\u003c/a\u003e", + "crossOrigin": false, + "detectRetina": false, + "errorTileUrl": "", + "opacity": 1, + "subdomains": [ + "a", + "b", + "c" + ], + "tileSize": { + "height": 256, + "width": 256 + }, + "tms": false, + "update": { + "interval": 200, + "whenIdle": false, + "whenZooming": true + }, + "zIndex": 1, + "zoom": { + "max": 18, + "min": 0, + "native": { + "max": null, + "min": null + }, + "offset": 0, + "reverse": false + } + }, + "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + "urlTemplateParams": {} + } + ] + } + } + }, + "type": "ia.display.map" } ], "meta": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/resource.json index 335d94a..cdba5ab 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "99327235546dc5062b40bf5d2de14995335c76b8c9a472370b77dc1d33154368", + "lastModificationSignature": "27cf7301eec107f42d77dd965c86a524843e8bb2e156259b859ea6150da563a2", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T02:06:23Z" + "timestamp": "2026-05-05T20:57:09Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/thumbnail.png index de003e8..ace7deb 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/view.json index d727045..81fb2ae 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_CH_Status/view.json @@ -791,12 +791,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -811,6 +814,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -868,12 +872,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -888,6 +895,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/resource.json index 5f311c8..1775e59 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "e30a81a9c712c7cc73ec603b996233a285dd30f512fadd7e97115a81cc81b9c6", + "lastModificationSignature": "252d6f1c98ca25b52437076c165daea8748896a6bf6cb7d0027119caec4a569b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-16T22:42:46Z" + "timestamp": "2026-05-05T15:31:10Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/thumbnail.png index df40243..110a7a4 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/view.json index 3a3772f..dbbfd0a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DH/view.json @@ -49,7 +49,409 @@ { "custom": { "raw": [], - "tags": [] + "tags": [], + "test1": [ + { + "realistic_1d": 54.160333333333334, + "t_stamp": 1777991280457 + }, + { + "realistic_1d": 53.660333333333334, + "t_stamp": 1777991316457 + }, + { + "realistic_1d": 53.160333333333334, + "t_stamp": 1777991352457 + }, + { + "realistic_1d": 52.660333333333334, + "t_stamp": 1777991388457 + }, + { + "realistic_1d": 52.160333333333334, + "t_stamp": 1777991424457 + }, + { + "realistic_1d": 52, + "t_stamp": 1777991460457 + }, + { + "realistic_1d": 51.160333333333334, + "t_stamp": 1777991496457 + }, + { + "realistic_1d": 50.660333333333334, + "t_stamp": 1777991532457 + }, + { + "realistic_1d": 50.160333333333334, + "t_stamp": 1777991568457 + }, + { + "realistic_1d": 49.660333333333334, + "t_stamp": 1777991604457 + }, + { + "realistic_1d": 49.160333333333334, + "t_stamp": 1777991640457 + }, + { + "realistic_1d": 49, + "t_stamp": 1777991676457 + }, + { + "realistic_1d": 47.60055555555556, + "t_stamp": 1777991712457 + }, + { + "realistic_1d": 46.76722222222222, + "t_stamp": 1777991748457 + }, + { + "realistic_1d": 45.93388888888889, + "t_stamp": 1777991784457 + }, + { + "realistic_1d": 45.10055555555556, + "t_stamp": 1777991820457 + }, + { + "realistic_1d": 44.26722222222222, + "t_stamp": 1777991856457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777991892457 + }, + { + "realistic_1d": 42.88044444444444, + "t_stamp": 1777991928457 + }, + { + "realistic_1d": 42.21377777777778, + "t_stamp": 1777991964457 + }, + { + "realistic_1d": 41.547111111111114, + "t_stamp": 1777992000457 + }, + { + "realistic_1d": 40.88044444444444, + "t_stamp": 1777992036457 + }, + { + "realistic_1d": 40.21377777777778, + "t_stamp": 1777992072457 + }, + { + "realistic_1d": 40, + "t_stamp": 1777992108457 + }, + { + "realistic_1d": 40.839666666666666, + "t_stamp": 1777992144457 + }, + { + "realistic_1d": 41.339666666666666, + "t_stamp": 1777992180457 + }, + { + "realistic_1d": 41.839666666666666, + "t_stamp": 1777992216457 + }, + { + "realistic_1d": 42.339666666666666, + "t_stamp": 1777992252457 + }, + { + "realistic_1d": 42.839666666666666, + "t_stamp": 1777992288457 + }, + { + "realistic_1d": 43, + "t_stamp": 1777992324457 + }, + { + "realistic_1d": 43.27988888888889, + "t_stamp": 1777992360457 + }, + { + "realistic_1d": 43.446555555555555, + "t_stamp": 1777992396457 + }, + { + "realistic_1d": 43.61322222222222, + "t_stamp": 1777992432457 + }, + { + "realistic_1d": 43.77988888888889, + "t_stamp": 1777992468457 + }, + { + "realistic_1d": 43.946555555555555, + "t_stamp": 1777992504457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777992540457 + }, + { + "realistic_1d": 44.27988888888889, + "t_stamp": 1777992576457 + }, + { + "realistic_1d": 44.446555555555555, + "t_stamp": 1777992612457 + }, + { + "realistic_1d": 44.61322222222222, + "t_stamp": 1777992648457 + }, + { + "realistic_1d": 44.77988888888889, + "t_stamp": 1777992684457 + }, + { + "realistic_1d": 44.946555555555555, + "t_stamp": 1777992720457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777992756457 + }, + { + "realistic_1d": 44.72011111111111, + "t_stamp": 1777992792457 + }, + { + "realistic_1d": 44.553444444444445, + "t_stamp": 1777992828457 + }, + { + "realistic_1d": 44.38677777777778, + "t_stamp": 1777992864457 + }, + { + "realistic_1d": 44.22011111111111, + "t_stamp": 1777992900457 + }, + { + "realistic_1d": 44.053444444444445, + "t_stamp": 1777992936457 + }, + { + "realistic_1d": 44, + "t_stamp": 1777992972457 + }, + { + "realistic_1d": 44.27988888888889, + "t_stamp": 1777993008457 + }, + { + "realistic_1d": 44.446555555555555, + "t_stamp": 1777993044457 + }, + { + "realistic_1d": 44.61322222222222, + "t_stamp": 1777993080457 + }, + { + "realistic_1d": 44.77988888888889, + "t_stamp": 1777993116457 + }, + { + "realistic_1d": 44.946555555555555, + "t_stamp": 1777993152457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993188457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993224457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993260457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993296457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993332457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993368457 + }, + { + "realistic_1d": 45, + "t_stamp": 1777993404457 + }, + { + "realistic_1d": 44.160333333333334, + "t_stamp": 1777993440457 + }, + { + "realistic_1d": 43.660333333333334, + "t_stamp": 1777993476457 + }, + { + "realistic_1d": 43.160333333333334, + "t_stamp": 1777993512457 + }, + { + "realistic_1d": 42.660333333333334, + "t_stamp": 1777993548457 + }, + { + "realistic_1d": 42.160333333333334, + "t_stamp": 1777993584457 + }, + { + "realistic_1d": 42, + "t_stamp": 1777993620457 + }, + { + "realistic_1d": 43.11955555555556, + "t_stamp": 1777993656457 + }, + { + "realistic_1d": 43.78622222222222, + "t_stamp": 1777993692457 + }, + { + "realistic_1d": 44.452888888888886, + "t_stamp": 1777993728457 + }, + { + "realistic_1d": 45.11955555555556, + "t_stamp": 1777993764457 + }, + { + "realistic_1d": 45.78622222222222, + "t_stamp": 1777993800457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777993836457 + }, + { + "realistic_1d": 45.160333333333334, + "t_stamp": 1777993872457 + }, + { + "realistic_1d": 44.660333333333334, + "t_stamp": 1777993908457 + }, + { + "realistic_1d": 44.160333333333334, + "t_stamp": 1777993944457 + }, + { + "realistic_1d": 43.660333333333334, + "t_stamp": 1777993980457 + }, + { + "realistic_1d": 43.160333333333334, + "t_stamp": 1777994016457 + }, + { + "realistic_1d": 43, + "t_stamp": 1777994052457 + }, + { + "realistic_1d": 41.88044444444444, + "t_stamp": 1777994088457 + }, + { + "realistic_1d": 41.21377777777778, + "t_stamp": 1777994124457 + }, + { + "realistic_1d": 40.547111111111114, + "t_stamp": 1777994160457 + }, + { + "realistic_1d": 39.88044444444444, + "t_stamp": 1777994196457 + }, + { + "realistic_1d": 39.21377777777778, + "t_stamp": 1777994232457 + }, + { + "realistic_1d": 39, + "t_stamp": 1777994268457 + }, + { + "realistic_1d": 39.839666666666666, + "t_stamp": 1777994304457 + }, + { + "realistic_1d": 40.339666666666666, + "t_stamp": 1777994340457 + }, + { + "realistic_1d": 40.839666666666666, + "t_stamp": 1777994376457 + }, + { + "realistic_1d": 41.339666666666666, + "t_stamp": 1777994412457 + }, + { + "realistic_1d": 41.839666666666666, + "t_stamp": 1777994448457 + }, + { + "realistic_1d": 42, + "t_stamp": 1777994484457 + }, + { + "realistic_1d": 43.11955555555556, + "t_stamp": 1777994520457 + }, + { + "realistic_1d": 43.78622222222222, + "t_stamp": 1777994556457 + }, + { + "realistic_1d": 44.452888888888886, + "t_stamp": 1777994592457 + }, + { + "realistic_1d": 45.11955555555556, + "t_stamp": 1777994628457 + }, + { + "realistic_1d": 45.78622222222222, + "t_stamp": 1777994664457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994700457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994736457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994772457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994808457 + }, + { + "realistic_1d": 46, + "t_stamp": 1777994844457 + } + ] }, "meta": { "name": "Temp_Chart" @@ -133,6 +535,7 @@ ], "valueFormat": "DOCUMENT" }, + "enabled": false, "type": "tag-history" } }, @@ -3209,12 +3612,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -3229,6 +3635,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -3286,12 +3693,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -3306,6 +3716,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -4067,6 +4478,10 @@ "type": "ia.chart.xy" }, { + "custom": { + "raw": [], + "tags": [] + }, "meta": { "name": "Hum_Chart" }, @@ -4099,6 +4514,7 @@ "tags": "{this.custom.tags}", "valueFormat": "DOCUMENT" }, + "enabled": false, "type": "tag-history" } }, @@ -4110,6 +4526,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\toutput \u003d []\n\taggregate \u003d \"LastValue\"\n\talias \u003d \"Value\"\n\thistProvider \u003d {\"Ignition_Common_IO_Gtwy\":\"Ignition_Hist/ignition-satb1-io6:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO1_Gtwy\":\"Ignition_Hist/ignition-satb1-io1:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO2_Gtwy\":\"Ignition_Hist/ignition-satb1-io2:default\",\n\t\t\t\t\t\"Ignition_SATB1_IO3_Gtwy\":\"Ignition_Hist/ignition-satb1-io3:default\"}\n\ttags \u003d system.tag.browse(self.view.params.tagPath, {\"name\":\"*_HT**_C*\",\"typeId\":\"Objects/Basic/AnalogIn_RS485\",\"tagType\":\"UdtInstance\"})\n\tfor item in tags:\n\t\ttagname \u003d str(item[\"fullPath\"]) + \"/Val\"\n\t\tnameparts \u003d tagname.split(\"]\")\n\t\tprovider\u003d histProvider[nameparts[0][1:]]\n\t\trun_path \u003d \"[{}]{}\".format(provider, nameparts[1])\n\t\toutput.append({\"aggregate\": aggregate, \"alias\": str(item[\"name\"]), \"path\": run_path})\n\t\n\treturn output\n\t\n\t\n\t\t\n\t\t", @@ -7192,12 +7609,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -7212,6 +7632,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, @@ -7269,12 +7690,15 @@ }, "height": 10, "label": { + "hideOversized": true, "position": { "dx": 0, "dy": 0 }, - "text": "{value}" + "text": "{value}", + "truncate": true }, + "radius": 5, "render": "circle", "rotation": 0, "stroke": { @@ -7289,6 +7713,7 @@ }, "cornerRadius": 3, "enabled": true, + "getFillFromObject": true, "pointerLength": 4, "text": "{name}: [bold]{valueY}[/]" }, diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/resource.json index 96801cd..7931c02 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "f0b3d222807691552e796a9ca82f761f75c7d802170dde686b9631d85572cf27", + "lastModificationSignature": "b5244d8697787a8b75613256eb7ba9f343aa5d9e456b9981882e1adbe7389d58", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-23T14:51:38Z" + "timestamp": "2026-05-05T21:41:30Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/thumbnail.png index 9cbbc6f..245170c 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/view.json index ab4ae8a..44e04a7 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_DOAS/view.json @@ -1,434 +1,581 @@ { - "custom": {}, + "custom": { + "data": { + "data": [ + { + "Alm": "0", + "BP": 0, + "OAD": 0, + "SAD": 0, + "SAT": 0, + "device": "DOAS1", + "path": "[default]simulator/DOAS/DOAS1" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS2", + "path": "[default]simulator/DOAS/DOAS2" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS3", + "path": "[default]simulator/DOAS/DOAS3" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4", + "path": "[default]simulator/DOAS/DOAS4" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS5", + "path": "[default]simulator/DOAS/DOAS5" + } + ] + } + }, "params": {}, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]System/DataTables/DOAS/Data" + }, + "type": "tag" + }, + "persistent": true + } + }, "props": { "defaultSize": { - "height": 200, - "width": 600 + "height": 190, + "width": 838 } }, "root": { "children": [ { "meta": { - "name": "FlexRepeater" + "name": "Table" }, "position": { - "basis": "15%", "grow": 1 }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.data.data" + }, + "transforms": [ + { + "code": "\treturn equipment.common.style_table(value)", + "type": "script" + } + ], + "type": "property" + } + } + }, "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "elementPosition": { - "shrink": 0 - }, - "instances": [ + "columns": [ { - "instancePosition": {}, - "instanceStyle": { + "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": "center", + "style": { + "classes": "" + }, + "title": "Device" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 }, { - "instancePosition": {}, - "instanceStyle": { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "OAD", + "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": "Outdoor Air Dewpoint" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" }, { - "instancePosition": {}, - "instanceStyle": { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SAT", + "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": "Supply Air Temp" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SAD", + "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": "Supply Air Dewpoint" + }, + "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": "BP", + "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": "Building Pressure" + }, + "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": "" } ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_DOAS_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" + "pager": { + "bottom": false }, - { - "children": [ + "selection": { + "data": [ { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4" } ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 65, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 60, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8, - "setpointValue": "" - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" + "selectedColumn": "OAD", + "selectedRow": 3 } - ], - "meta": { - "name": "FlexContainer_0" }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexRepeater_0" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_DOAS_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 60, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 55, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 80, - "desiredLow": 60, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 55, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 50, - "processValue": 64.8 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" + "type": "ia.display.table" } ], "meta": { @@ -437,11 +584,7 @@ "props": { "style": { "backgroundColor": "var(--container)", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "overflow": "visible" + "classes": "containers/card" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/resource.json index 96afa41..df9e684 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "bb89690b5355c5a17c4fca925caceaea9d3490edab5bf9ed510678689ca8b4f4", + "lastModificationSignature": "3387deb7b62390721217ca11e395bc06864529527bd1aeea5399b776d5bcbd02", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T20:55:23Z" + "timestamp": "2026-05-05T22:12:12Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/thumbnail.png index f162487..c180144 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/view.json index ce0ff42..61289d4 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_L3_Navigation/view.json @@ -1,6 +1,78 @@ { - "custom": {}, - "params": {}, + "custom": { + "data": { + "data": [ + { + "Alm": "0", + "BP": 0, + "OAD": 0, + "SAD": 0, + "SAT": 0, + "device": "DOAS1", + "path": "[default]simulator/DOAS/DOAS1" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS2", + "path": "[default]simulator/DOAS/DOAS2" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS3", + "path": "[default]simulator/DOAS/DOAS3" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS4", + "path": "[default]simulator/DOAS/DOAS4" + }, + { + "Alm": "0", + "BP": "0", + "OAD": "0", + "SAD": "0", + "SAT": "0", + "device": "DOAS5", + "path": "[default]simulator/DOAS/DOAS5" + } + ] + } + }, + "params": { + "device": "DOAS" + }, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "device": "{view.params.device}" + }, + "tagPath": "[default]System/DataTables/{device}/Data" + }, + "type": "tag" + }, + "persistent": true + }, + "params.device": { + "paramDirection": "input", + "persistent": true + } + }, "props": { "defaultSize": { "height": 1000, @@ -121,20 +193,15 @@ "props.data": { "binding": { "config": { - "struct": { - "paths": "{view.custom.data}", - "time": "now(5000)" - }, - "waitOnAll": true + "path": "view.custom.data.data" }, - "enabled": false, "transforms": [ { - "code": "\toutput \u003d []\n\tdata \u003d value[\"paths\"]\n\tfor item in data:\n\t\ttry:\n\t\t\tAlmS \u003d alarm.summary.calcMaxPriority(item)\n\t\texcept:\n\t\t\tAlmS \u003d -1\n\t\tif(AlmS \u003d\u003d 1):\n\t\t\tAlarmSeverity \u003d \"Controller\"\n\t\telif(AlmS \u003d\u003d 2):\n\t\t\tAlarmSeverity \u003d \"Info\"\n\t\telif(AlmS \u003d\u003d 3):\n\t\t\tAlarmSeverity \u003d \"Warning\"\n\t\telif(AlmS \u003d\u003d 4):\n\t\t\tAlarmSeverity \u003d \"Critical\"\n\t\telse:\n\t\t\tAlarmSeverity \u003d \" \"\n\t\tRAT \u003d system.tag.readBlocking(item + \"/Return Air Temperature\")[0].value\n\t\tSAT \u003d system.tag.readBlocking(item + \"/Supply Air Temperature\")[0].value\n\t\t#Name \u003d system.tag.readBlocking(item + \"/Meta/EqName\")[0].value\n\t\tName \u003d item.split(\u0027_\u0027)[5]\n\t\t#Tag \u003d system.tag.readBlocking(item + \"/Meta/Ignition Tag Name\")[0].value\n\t\tTag \u003d item.split(\u0027/\u0027)[1]\n\t\ttagPath \u003d item\n\t\toutput.append({\n\t\t\t\t\t\t\"RAT\": RAT,\n\t\t\t\t\t\t\"SAT\": SAT,\n\t\t\t\t\t\t\"Name\": Name,\n\t\t\t\t\t\t\"Tag\": Tag,\n\t\t\t\t\t\t\"AlarmSeverity\": AlarmSeverity,\n\t\t\t\t\t\t\"tagPath\": tagPath})\n\treturn output", + "code": "\treturn equipment.common.style_table(value)", "type": "script" } ], - "type": "expr-struct" + "type": "property" } } }, @@ -508,48 +575,6 @@ "visible": true, "width": "" } - ], - "data": [ - { - "AlarmSeverity": " ", - "Name": "DOAS01", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS02", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS03", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS03", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS04", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS04", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - }, - { - "AlarmSeverity": " ", - "Name": "DOAS05", - "RAT": null, - "SAT": null, - "Tag": "SATB1_RF_DOAS05", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" - } ] }, "type": "ia.display.table" diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/resource.json index 7b23b1c..bc3804a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "bbd0f270bc24b5aaf27ff9d2f413c8f8345a146f4c08661ca03fd35684bbb718", + "lastModificationSignature": "b5be6c36139ce1c7887785364cc10603870fc7eab5c29e445704f89f77b6bbb3", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-23T14:54:35Z" + "timestamp": "2026-05-05T16:16:28Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/thumbnail.png index 8dfb004..e0dd1f5 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/view.json index fe496f8..62f2d64 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Cards/Card_RTU/view.json @@ -1,434 +1,557 @@ { - "custom": {}, + "custom": { + "data": { + "data": [ + { + "OAF": 0, + "RPP": 0, + "SAD": 0, + "SAT": 0, + "device": "RTU1", + "path": "[default]simulator/RTU/RTU1" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU2", + "path": "[default]simulator/RTU/RTU2" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU3", + "path": "[default]simulator/RTU/RTU3" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU4", + "path": "[default]simulator/RTU/RTU4" + }, + { + "OAF": "0", + "RPP": "0", + "SAD": "0", + "SAT": "0", + "device": "RTU5", + "path": "[default]simulator/RTU/RTU5" + } + ] + } + }, "params": {}, + "propConfig": { + "custom.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]System/DataTables/RTU/Data" + }, + "type": "tag" + }, + "persistent": true + } + }, "props": { "defaultSize": { - "height": 200, - "width": 600 + "height": 190, + "width": 838 } }, "root": { "children": [ { "meta": { - "name": "FlexRepeater" + "name": "Table" }, "position": { - "basis": "15%", "grow": 1 }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.data.data" + }, + "type": "property" + } + } + }, "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "elementPosition": { - "shrink": 0 - }, - "instances": [ + "columns": [ { - "instancePosition": {}, - "instanceStyle": { + "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": "center", + "style": { + "classes": "" + }, + "title": "Device" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 }, { - "instancePosition": {}, - "instanceStyle": { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "OAF", + "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": "Outside Air Flow" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" }, { - "instancePosition": {}, - "instanceStyle": { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SAT", + "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": "Supply Air Temp" + }, + "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": "" }, - "objectName": "DOAS", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03" + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SAD", + "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": "Supply Air Dewpoint" + }, + "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": "RPP", + "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": "Return Plenum Pressure" + }, + "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": "" } ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_RTU_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3, - "setpointValue": "" - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" + "pager": { + "bottom": false } - ], - "meta": { - "name": "FlexContainer_0" }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexRepeater_0" - }, - "position": { - "basis": "15%", - "grow": 1 - }, - "props": { - "alignContent": "space-around", - "alignItems": "center", - "direction": "column", - "instances": [ - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU01", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - { - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "objectName": "RTU02", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02" - } - ], - "justify": "space-around", - "path": "Library/Symbols/HVAC/Sym_RTU_Status", - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "40px" - }, - "props": { - "text": "Temp", - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "MovingAnalogIndicator" - }, - "position": { - "basis": "149.7px" - }, - "propConfig": { - "props.processValue": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02/Supply Air Temperature" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "desiredHigh": 70, - "desiredLow": 50, - "desiredRangeColor": "lightblue", - "highAlarm": 90, - "highHighAlarm": null, - "highInterlock": null, - "lowAlarm": 40, - "lowInterlock": null, - "lowLowAlarm": null, - "minValue": 32, - "processValue": 58.3 - }, - "type": "ia.display.moving-analog-indicator" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "30%" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "25%", - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" + "type": "ia.display.table" } ], "meta": { @@ -437,11 +560,7 @@ "props": { "style": { "backgroundColor": "var(--container)", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "overflow": "visible" + "classes": "containers/card" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/resource.json index 5dbcd71..918ca3a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "c98b0606add47b6c97974d59f52d3c74e98c2746b111038702aaa9a2c350b839", + "lastModificationSignature": "1143ccc5fef5450f3697ea15d4711f25cd42b36db3eafd41efdf22e99fa64795", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T13:11:35Z" + "timestamp": "2026-05-04T20:15:52Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/thumbnail.png index 7aec370..d444c8e 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_DOAS/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/resource.json index 040964c..e52f098 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "d14c1cff649ec68d57977294e7854b28b03f49144f541f9aac5ad73efb04ca2b", + "lastModificationSignature": "36523329baad691ce1530cddd4f07fea9c7ff423da3c0da949bea83bf03884fb", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-21T01:30:24Z" + "timestamp": "2026-05-04T20:15:35Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/thumbnail.png index 106880c..e702646 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/view.json index 910a288..75665ba 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Diagrams/HVAC/Dgrm_RTU/view.json @@ -50,7 +50,8 @@ }, "props": { "defaultSize": { - "height": 500 + "height": 445, + "width": 807 } }, "root": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/resource.json index 42672aa..6fb91bf 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "3a539222b9a1b044c63013b968d5df4ede8f262c9318654ddb8e47d562bd0e1e", + "lastModificationSignature": "c2c19e58e451f381f90b600305ac616ffde6148a8fbf0cf0ee20df93c229c111", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T13:16:15Z" + "timestamp": "2026-05-04T20:08:29Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/thumbnail.png index 324a1b8..1e86ecd 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/view.json index 39e7b34..6cf805c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Framework/Tag ConfigShort/view.json @@ -3,6 +3,7 @@ "params": { "dataType": "Int4", "enabled": false, + "label": "value", "tagPath": "[default]simulator/New Tag", "visible": true }, @@ -15,6 +16,10 @@ "paramDirection": "input", "persistent": true }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, "params.tagPath": { "paramDirection": "input", "persistent": true @@ -40,7 +45,9 @@ } }, "position": { - "basis": "100px" + "basis": "50%", + "grow": 1, + "shrink": 0 }, "propConfig": { "meta.tooltip.text": { @@ -64,7 +71,7 @@ "references": { "tagPath": "{view.params.tagPath}" }, - "tagPath": "{tagPath}.Tooltip" + "tagPath": "{tagPath}.Name" }, "type": "tag" } @@ -77,7 +84,7 @@ "name": "Input" }, "position": { - "basis": "75px" + "basis": "65px" }, "propConfig": { "props.params.enabled": { @@ -105,11 +112,6 @@ } } }, - "props": { - "style": { - "minWidth": "10px" - } - }, "type": "ia.display.view" }, { @@ -117,7 +119,7 @@ "name": "Units" }, "position": { - "basis": "20px" + "basis": "35px" }, "propConfig": { "props.text": { @@ -156,10 +158,11 @@ } }, "props": { + "justify": "center", "style": { - "gap": "10px", + "gap": "var(--space-xs)", "overflow": "visible", - "padding": "0 10px" + "padding": "var(--space-xs)" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/resource.json index c3ad323..467758a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "f8dda42128eb7f5791ca71ab65a4f9d3550e491aa60739444889dbdf155b055f", + "lastModificationSignature": "daae98875a08620d2de8d741de866c75a0e306cfb86ac889443f70625e818f1d", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-28T22:16:22Z" + "timestamp": "2026-05-05T21:03:36Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/thumbnail.png index a7ac9e0..804fdcb 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/view.json index e9917c4..cab8b36 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/Docked/Header/view.json @@ -1,6 +1,7 @@ { "custom": { - "path": "/" + "path": "/", + "test": 0 }, "params": {}, "propConfig": { @@ -13,11 +14,14 @@ "type": "expr" }, "persistent": true + }, + "custom.test": { + "persistent": true } }, "props": { "defaultSize": { - "height": 51, + "height": 80, "width": 1094 } }, @@ -136,6 +140,9 @@ "meta": { "name": "EmbeddedView" }, + "position": { + "display": false + }, "propConfig": { "custom.paths": { "binding": { @@ -165,6 +172,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tvalues \u003d system.tag.readBlocking(value[\u0027paths\u0027])\n\tfor item in values:\n\t\tif item.value \u003e 150:\n\t\t\treturn True\n\treturn False", @@ -187,10 +195,17 @@ { "events": { "component": { + "onRowClick": { + "config": { + "script": "\tself.view.custom.test \u003d event.row" + }, + "scope": "G", + "type": "script" + }, "onRowDoubleClick": { "config": { "params": {}, - "view": "Pages/Dev/F_Alarms/L1/Alarm Status" + "view": "Pages/Alarms/Active Alarms" }, "scope": "C", "type": "nav" @@ -421,9 +436,6 @@ "fontSize": 16 } }, - "selection": { - "enableRowSelection": false - }, "style": { "marginBottom": "5px", "marginTop": "5px", diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/resource.json index e401d48..119ed2c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "fc2d7efddeb8e5dead3a5393604eca691fe3a4cc4fd658634e5ce57022fdb992", + "lastModificationSignature": "b0cbe151299187b46c7444d90ccf7a23119dff2ecbe0283ed29e286756ad909a", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-24T15:13:08Z" + "timestamp": "2026-05-04T20:17:31Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/thumbnail.png index 61d8556..51993b2 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/view.json index fd73255..fa1bb1c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Layouts/LLS/Device LLS/view.json @@ -2889,7 +2889,7 @@ "children": [ { "meta": { - "name": "Label" + "name": "Title" }, "position": { "grow": 1 @@ -2916,7 +2916,7 @@ } }, "meta": { - "name": "Button_1" + "name": "ClosedButton" }, "position": { "basis": "24px", @@ -2942,7 +2942,7 @@ } ], "meta": { - "name": "FlexContainer_0" + "name": "Header" }, "position": { "basis": "40px", @@ -2958,629 +2958,318 @@ { "children": [ { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Stage Up Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 60 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_StageUpDelaySP" + "name": "EmbeddedView" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Stage Up Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Stage Down Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 60 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_StageDownDelaySP" + "name": "EmbeddedView_0" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Stage Down Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Transition Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 300 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_TransitionDelaySP" + "name": "EmbeddedView_1" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Transition Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Off Delay SP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 10 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_OffDelaySP" + "name": "EmbeddedView_2" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Off Delay Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Max Demand" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 54 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_MaxDemand" + "name": "EmbeddedView_3" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Max Demand", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Min Demand" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "access": "PUBLIC", - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 2 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_MinDemand" + "name": "EmbeddedView_4" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Min Demand", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort", + "style": { + "overflow": "visible" + } + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Fail to Run Delay" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 360 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_FTR_SP" + "name": "EmbeddedView_5" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Fail To Run Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort" + }, + "type": "ia.display.view" }, { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "text": "Fail to Stop Delay" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NumericEntryField" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.auth.config" - }, - "enabled": false, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.custom.tagPath1}" - }, - "tagPath": "{tagPath}/Cfg Num Weeks Rotate" - }, - "enabled": false, - "type": "tag" - } - } - }, - "props": { - "containerStyle": { - "color": "red" - }, - "spinner": { - "enabled": false - }, - "style": { - "backgroundColor": "lightgray", - "color": "var(--action-primary)" - }, - "value": 360 - }, - "type": "ia.input.numeric-entry-field" - } - ], "meta": { - "name": "Cfg_FTS_SP" + "name": "EmbeddedView_6" }, "position": { + "basis": "35px", + "grow": 1, "shrink": 0 }, - "props": { - "style": { - "gap": "10px" + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.custom.tagPath1}" + }, + "tagPath": "{tagPath}/Cfg Num Weeks Rotate" + }, + "enabled": false, + "type": "tag" + } } }, - "type": "ia.container.flex" + "props": { + "params": { + "dataType": "Int4", + "enabled": false, + "tagPath": "[default]_types_/Objects/Mechanical/LLS/Config/Fail To Stop Setpoint", + "visible": true + }, + "path": "Library/Framework/Tag ConfigShort" + }, + "type": "ia.display.view" }, { "children": [ @@ -3866,7 +3555,7 @@ } ], "meta": { - "name": "FlexContainer" + "name": "Fields" }, "position": { "grow": 1 @@ -3875,8 +3564,8 @@ "direction": "column", "style": { "borderRight": "1px solid var(--border)", - "gap": "10px", - "padding": "10px" + "gap": "var(--space-md)", + "padding": "var(--space-md)" } }, "type": "ia.container.flex" diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/resource.json index c48cb06..daeef6d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "cff232b12abd18bf861437021389e8f52fe852579173471b3b4a5a0757aa1588", + "lastModificationSignature": "fcc049861a6f9e042fecdd9dd28ba1679598f86c1953f9b0eede6d28c437a614", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:06Z" + "timestamp": "2026-05-05T22:31:12Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/thumbnail.png index b75e792..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/view.json index bdc034f..85bbef1 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -369,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/thumbnail.png deleted file mode 100644 index 86ca13d..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/view.json deleted file mode 100644 index 1bae414..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/view.json +++ /dev/null @@ -1,423 +0,0 @@ -{ - "custom": { - "CPStateEngUnit": null, - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Frequency", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Frequency", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "CP State Data", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage AB", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage BC", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Voltage CA", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage AB", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage BC", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Voltage CA", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Source 1", - "numDecimals": 1, - "options": [ - "False", - "Bypassed" - ] - }, - { - "dataType": "", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "CP State", - "numDecimals": 1 - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "On Source 1", - "numDecimals": 1, - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "On Source 2", - "numDecimals": 1, - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Operating Mode", - "numDecimals": 1, - "options": [ - "Normal", - "Emergency" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Source", - "numDecimals": 1, - "options": [ - "Utility", - "Generator" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Available", - "numDecimals": 1, - "options": [ - "not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Source 1 Breaker Tripped", - "numDecimals": 1, - "options": [ - "Normal", - "Tripped" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Available", - "numDecimals": 1, - "options": [ - "not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Source 2 Breaker Tripped", - "numDecimals": 1, - "options": [ - "Normal", - "Tripped" - ] - } - ], - "textArray": [ - "Load on Normal, Normal OK", - "Timer 1C (TDES) running", - "Waiting for Emergency acceptable", - "Transfer to Emergency inhibited by F6Z", - "Transfer to Emergency inhibited by F34B", - "Timer 2B (TDNE) running", - "Timer 31F (N to E pre transfer signal) running", - "In phase monitor time delay (OTTS N to E transfer)", - "Waiting for in phase (OTTS N to E transfer)", - "In phase monitor time delay with load shed", - "Waiting for in phase with load shed", - "In sync monitor time delay", - "Waiting for in sync", - "Sources paralleled", - "Load disconnected CT bypass", - "Load disconnected", - "Normal to Emergency load shed is active", - "Timer 31M running", - "Load on Emergency waiting for removal of transfer requests", - "Timer 3A running", - "Transfer to Normal inhibited by G6C", - "Transfer to N inhibited by F34A", - "Timer 31G runing", - "In phase monitor time time delay", - "waiting for in phase", - "In phase monitor time delay with load shed", - "Waiting for in shed load shed", - "In sync monitor time delay", - "Waiting for in sync", - "Sources paralleled", - "Load disconnected CT bypass", - "Load disconnected", - "Emergency to Normal load shed is active", - "Timer 31N", - "Timer 2E (Cooldown)", - "Timer 1C while timer 2E running", - "Power up inhibit", - "Transition state" - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_ATS" - }, - "propConfig": { - "custom.CPStateEngUnit": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/CP State" - }, - "transforms": [ - { - "code": "\tsystem.tag.writeBlocking(self.params.tagPath+\u0027/CP State Data.EngUnit\u0027,self.custom.textArray[value])\n\t#[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_ATS/CP State Data.EngUnit\n\treturn self.custom.textArray[value]", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"numDecimals\": 1,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[10].options": { - "binding": { - "config": { - "path": "view.custom.textArray" - }, - "type": "property" - } - }, - "custom.textArray": { - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/resource.json index 9555b01..516cc67 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "45a017a7353520b1e9324e242b2fb663b71299a51a0ecc20965f0b458bd24cdb", + "lastModificationSignature": "f929106c0cf8369890df94338a8ebdce3efa10dae05a4e27cdb51097b692bdf8", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:05Z" + "timestamp": "2026-05-05T22:37:11Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/thumbnail.png index b75e792..aedb60b 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/view.json index 2fe333e..5b11950 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/thumbnail.png deleted file mode 100644 index dfabdd3..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/view.json deleted file mode 100644 index 897b5e1..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/view.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH1/SATB1_DH1_PD43" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/resource.json index 99e4a0e..c8b52bc 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "3d8b2d2cfe6ea42f12cab942c0d05043cbb7b8510795fedc384046b24f2a7191", + "lastModificationSignature": "ddd408adee432acb7560cc5be4ee8ed7db3d456de0a066e2316aedc5f46b2c73", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:04Z" + "timestamp": "2026-05-05T22:31:52Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/thumbnail.png index e09e21a..ffbdbef 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/view.json index 9aa5750..b7a4451 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -386,7 +379,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 1 + "currentTabIndex": 3 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/thumbnail.png deleted file mode 100644 index ce16137..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/view.json deleted file mode 100644 index cbf1b57..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/view.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm_Percentage", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Dropping", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Rising", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "ROC Val", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1152/SATB1_RM1152_TL200_DHT01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/resource.json index 11b1d5a..0d1dbe0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "6c4d272e0d4ebfe002859b9afd38b52bb4a5e679b6aa4f4492fbb0723347b431", + "lastModificationSignature": "8121300217f786d8813fa0be062babc172cedceb1badb7fe13734cbd947eae9d", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:03Z" + "timestamp": "2026-05-05T22:32:07Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/thumbnail.png index 9126dc1..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/view.json index 8420dbf..a70b720 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/thumbnail.png deleted file mode 100644 index b3b3b5b..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/view.json deleted file mode 100644 index b2e46eb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/view.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm_Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH5/SATB1_DH5_PNL16_C1_HT01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/resource.json index 1cdf50e..f369b07 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "48a7fe30d8ad2b39cfdef0feb15453ce469239440c7f8d9be703e4eb460ed6bf", + "lastModificationSignature": "2b7de86365e65d6b67ab69f311b11d56afaa09faea9301baacaff3a57339a2fe", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:02Z" + "timestamp": "2026-05-05T22:32:25Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/view.json index cacb3ce..bd5e081 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/resource.json deleted file mode 100644 index 36bd48c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "9e9f7483708ee28234857e5ec2a3aa1ac8a7c78737a37e5496e48722ccd2d0ab", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/thumbnail.png deleted file mode 100644 index 583246a..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/view.json deleted file mode 100644 index 41f6161..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AvgMinMax/Info/view.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value AVG", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value MAX", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value MIN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value OUT", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]DH5/DH5_DP_AvgObj" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/resource.json index f528f25..2bcc21a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "4bb3632ce135629e8d45c2aac59afb5e8c66e24b862267279f30ba9e5d612c47", + "lastModificationSignature": "5cf24f61bb286b281f4ab7bc2f7377d0739c0f8548175552e1ef0922e906164b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:01Z" + "timestamp": "2026-05-05T22:32:43Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/thumbnail.png index 245ba01..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/view.json index 7e986f5..6ff0de0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Body/view.json @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker A/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/resource.json deleted file mode 100644 index ece4559..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "294be13f2baee7097334740a373f69530612d90ff10699d3fbb10949172bcb50", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/thumbnail.png deleted file mode 100644 index fb8facb..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/view.json deleted file mode 100644 index 0bef607..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker A/Info/view.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 4, - "options": [], - "visible": true - }, - { - "dataType": "Int4", - "display": true, - "displaySelection": 1, - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE2" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/resource.json index 109b55f..293d157 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "302a783f84430bd3e155d693e8924d0c5c5ac65251b543bdfc66717781fd54b9", + "lastModificationSignature": "4731eb1dd94d3c1530080b674633a727184c7f69ad2f666f14f4f7bdda17d54e", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:14:00Z" + "timestamp": "2026-05-05T22:32:53Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/view.json index 3ab7cac..6ff0de0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Body/view.json @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker E/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/resource.json deleted file mode 100644 index 5ade187..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "ca357704ccf7f2c703d038263f6b3f3517bf2cb8d4a250454eda21388d9e82bd", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/thumbnail.png deleted file mode 100644 index de9c80e..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/view.json deleted file mode 100644 index 834711a..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker E/Info/view.json +++ /dev/null @@ -1,285 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52F3\n" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/resource.json index 7b0a657..75b15bb 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "f5fd3bd56cfaa925248fa87a066f15d677a3fc1156e8182a50ca4c8fbcae519f", + "lastModificationSignature": "2e6314aa3229f2bbbf26ecdcadd1b966846faf6029b839b87126548a4fab90d4", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:13:59Z" + "timestamp": "2026-05-05T22:33:06Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/view.json index 235abc1..6ff0de0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Body/view.json @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker P/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/resource.json deleted file mode 100644 index d946a1b..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "f3362342f8dec4a450c4f022ea96d6d3b57ef507ebb343ed8a5e6f6b7cca4b1e", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/thumbnail.png deleted file mode 100644 index d282e69..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/view.json deleted file mode 100644 index 9e952d5..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker P/Info/view.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-L Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-N Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 2, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52F1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/resource.json index ba38132..5fddc5d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "7b7a482a7bff0c170636361c1a482bfa5fa92e50ce58fbcd89166de1db2f5447", + "lastModificationSignature": "391ad35c2efbae9ad7815147bfe5b68b893c9fefe9e152e2bb27b21efd878a15", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:13:58Z" + "timestamp": "2026-05-05T22:33:16Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/view.json index d8436cd..6ff0de0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Body/view.json @@ -119,7 +119,7 @@ "loading": { "order": "with-parent" }, - "path": "Library/Templates/Breaker X/Info" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -362,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/resource.json deleted file mode 100644 index d512327..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "415f8be3238ed103b7ed2b670bb83b4bbf6e1ac170f9313f71d03c1a25b91d87", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/thumbnail.png deleted file mode 100644 index f9fffe2..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/view.json deleted file mode 100644 index 9f268a9..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Breaker X/Info/view.json +++ /dev/null @@ -1,506 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage AB", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage AN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage BC", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage BN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage CA", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage CN", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AB Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "AN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BC Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CA Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CN Voltage", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-L Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "L-N Voltage Avg", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power Total", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Demand KW", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "numDecimals": 1, - "options": [ - "Open", - "Closed" - ], - "visible": true - }, - { - "dataType": "Float4", - "display": true, - "displaySelection": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "numDecimals": 1, - "options": [], - "visible": true - }, - { - "dataType": "Boolean", - "display": true, - "displaySelection": 1, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Tripped", - "numDecimals": 1, - "options": [ - "Not Tripped", - "Tripped" - ], - "visible": true - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SWBD/SATB1_ER1242_CB-52U" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n if system.tag.read(tagPath).value \u003d\u003d None:\n \tdisplay \u003d False\n else:\n \tdisplay \u003d True\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"numDecimals\":1,\n \"options\": [],\n \"visible\": True,\n \"display\": display,\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/resource.json index 0aa24cd..f88f156 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "4a71c5940a5a167c8e5d8ff72dfd13ef421d7c443576dc2bfc266fcf686e3b38", + "lastModificationSignature": "104e7f60e625b608a6ed6cbe900b5d57d05c6a6be02ab41b67e5fbbd80a4f53a", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:13:57Z" + "timestamp": "2026-05-05T22:37:09Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/thumbnail.png index c8f3ae8..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/view.json index ec1d064..66f32f9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/resource.json deleted file mode 100644 index 38d731a..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "5f7486d4011286e899a17ace17462e8a704a1ac1ad79ff1feacc8789c058c675", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/thumbnail.png deleted file mode 100644 index 1f9e0d2..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/view.json deleted file mode 100644 index 8ef0b5b..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/CRAH/Info/view.json +++ /dev/null @@ -1,314 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1000, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1005, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1010, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Speed 3", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Speed Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "heart": true, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "BMS Heart Beat", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comms", - "options": [ - "Disconnected", - "Connected" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1002, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 1 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1007, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 2 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1012, - "instanceStyle": { - "classes": "" - }, - "name": "Fan 3 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 900, - "instanceStyle": { - "classes": "" - }, - "name": "Control Mode", - "options": [ - "BMS", - "Hand" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Dirty Filter", - "options": [ - "OK", - "Dirty" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "###.##", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - } - ], - "dictionary": { - "ER1242": 1, - "key_1": 2 - }, - "room": "ER1242" - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SATB1_P1_1_ER1242_CRAH_01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.dictionary": { - "persistent": true - }, - "custom.room": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Meta/Room" - }, - "type": "tag" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/resource.json index 34babdb..3e53c25 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "1e151713dfbbe15d26b034cc6277055b340c4b3124d5eebe6e61d6fb1e9a7548", + "lastModificationSignature": "7837ccb44a797d982d4abd486c3f8ec0fe46bb4dade12f1483a8bc4660b9eb16", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:16:29Z" + "timestamp": "2026-05-05T22:37:06Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/view.json index 72b5641..dcc68bf 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/resource.json deleted file mode 100644 index 83a3225..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "fed0f05ad76da28d6d99ea1700c9d65d142d28159449143a03cd1e3ae405dd74", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/thumbnail.png deleted file mode 100644 index 9ac3e15..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/view.json deleted file mode 100644 index 341494c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller LLS/Info/view.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Device Runtime", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ref_Devices", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_Avail_Devices", - "options": [] - }, - { - "dataType": "Int4Array", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_Devices", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_LineUp_Adjusting", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_LineUp_Complete", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Sts_TransActive", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Avail", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Demand", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Val_Fdbk", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Chiller LLS 1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/resource.json index bcd87dd..3bb6998 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "242225a8c1ce9247da86dadc37c6086e11e157f6ce0a51864c80dfa099dad4b8", + "lastModificationSignature": "a05a0906f388fbba6d3c1ced0d6eccf38c81e70ac8a498d7ed479e1471311900", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:16:30Z" + "timestamp": "2026-05-05T22:37:07Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/thumbnail.png index e09e21a..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/view.json index 5239f9e..ed68cf0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 1 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/resource.json deleted file mode 100644 index 5d471a7..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "4cb5cb6fc1ae73c581485ebea87da411ead23416413b405aaa4510eb7422c6ff", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:24:15Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/thumbnail.png deleted file mode 100644 index a5e6930..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/view.json deleted file mode 100644 index 3be1e8b..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Chiller/Info/view.json +++ /dev/null @@ -1,827 +0,0 @@ -{ - "custom": { - "OP_Codes": [ - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "No code", - "Manual Override", - "Daily Schedule Shutdown", - "Unit Switch Off", - "Remote Controlled Shutdown", - "Reserved", - "Flow Switch Shutdown", - "VSD Cooling Shutdown", - "Serial Number Shutdown", - "Reserved", - "Discharge Spuerheat Recovery", - "Reserved", - "No Run Permissive", - "Anti-Recycle Timer Active", - "System Switch Off", - "System Not Running", - "System Running", - "Discharge Pressure Limiting", - "Suction Pressure Limiting", - "Motor Current Limiting", - "Free Cooliong", - "ISN/BAS Motor Current Limiting", - "Remote Motor Current Limiting", - "System Shutting Down", - "VSD Pre-Charging", - "VSD Baseplate Temp Limiting", - "VSD Internal Ambient Temp Limiting", - "Sounf Limiting", - "ISN Sounf Limiting", - "Remote Sound Limiting", - "Pulldown Motor Current Limiting", - "Cooling Demand Shutdown", - "Input Current Limiting", - "ISN Input Current Limiting", - "Remote Input Current Limiting", - "Pulldown Input Current Limiting" - ], - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Interface Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 1 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 2 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Compressor 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Compressor 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power System 1 Fan", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power System 2 Fan", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "VSD CMD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "VSD Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ambient Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator In Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Out Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Active Setpoint", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller System Available", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Heater Status", - "options": [ - "Off", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Pump Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Switch", - "options": [ - "OFF", - "Activated" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 0, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 OpCode" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 OpCode" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System HOA", - "options": [ - "LOCAL", - "REMOTE" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Interlock Active", - "options": [ - "OK", - "Interlocked" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Permissive OK", - "options": [ - "Not OK", - "value" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Suction Cutout", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH31_SYSTEM" - }, - "propConfig": { - "custom.OP_Codes": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[40].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "custom.allTags[41].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/resource.json index 0c5e287..f540ab9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "c17bd1a128819f01237ca5b83195128d386d55d8e46c68e54141a620ee49f611", + "lastModificationSignature": "4300ff3e93981baeaa7869c2f8240e340c85ea21f3211a0bd692e4d6c2ff693b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:16:27Z" + "timestamp": "2026-05-05T22:37:05Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/thumbnail.png index 3a8a766..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/view.json index a8fd2d7..48f7e49 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/resource.json deleted file mode 100644 index 85b6497..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "c75f442f49c1f4742bc23d1a29fb49ef47b616182462af4ed3c537ac31e20474", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/thumbnail.png deleted file mode 100644 index a93220e..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/view.json deleted file mode 100644 index 186d8bb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ChillerSystem/Info/view.json +++ /dev/null @@ -1,918 +0,0 @@ -{ - "custom": { - "FLT_Codes": [ - "0: No Fault", - "1: Low Ambient Temperature", - "2: High Ambient Temperature", - "3: Low Chilled Liquid Temperature", - "4: VSD Initialization Failure", - "5: Low RTC Battery Voltage", - "6: Invalid Number of Compressors Selected", - "7: VSD Communications Failure", - "8: Pre-charge Low DC Bus Voltage", - "9: Pre-charge DC Bus Voltage Imbalance", - "10: High DC Bus Voltage", - "11: Low DC Bus Voltage", - "12: DC Bus Voltage Imbalance", - "13: High VSD Ambien Temperature", - "14: Single Phase Input", - "15: VSD Power Supply Fault", - "16: VSD Logic Board Fault", - "17: Motor Current Overload (Hardware)", - "18: CT Plug Fault", - "19: High Harmonic Filter Temperature", - "20: Evap Anti-Freeze Pump Fault", - "21: Low Heat Exchange Temperature", - "22: Replace RTC Battery", - "23: N/A", - "24: N/A", - "25: N/A", - "26: N/A", - "27: High Discharge Pressure", - "28: High Differential Oil Pressure", - "29: Low Differential Oil Pressure", - "30: Low Suction Pressure", - "31: High Discharge Temperature", - "32: N/A", - "33: Eductor Clog Fault", - "34: Sensor Failure", - "35: Low Motor Current", - "36: High Motor Temperature", - "37: Pre-charge Low DC Bus Voltage Immbalance", - "38: Pre-charge DC Bus Voltage Imbalance", - "39: High DC Bus Voltage", - "40: Low DC Bus Voltage", - "41: DC Bus Voltage Imbalance", - "42: High Motor Current", - "43: Motor Current Overload", - "44: IGBT Gate Driver Fault", - "45: High Baseplate Temperature", - "46: Single Phase Input", - "47: VSD Run Signal Fault", - "48: High Discharge Press (HPCO)", - "49: Low Suction Superheat", - "50: Control Valve Fault", - "51: Low Discharge Superheat", - "52: Low Suction PRessure Smart Freeze", - "53: Isolation Valve Failed to Close Warning", - "54: Isolation Valve failed to Open Fault", - "55: High Discharge Pressure Rate", - "56: Condenser Fan VSD Fault Warning", - "57: N/A", - "58: N/A", - "59: N/A", - "60: N/A", - "61: N/A", - "62: N/A" - ], - "OP_Codes": [ - "0: No code", - "1: No code", - "2: No code", - "3: No code", - "4: No code", - "5: No code", - "6: No code", - "7: No code", - "8: No code", - "9: No code", - "10: No code", - "11: No code", - "12: No code", - "13: No code", - "14: 1No code", - "15: No code", - "16: No code", - "17: No code", - "18: No code", - "19: No code", - "20: No code", - "21: No code", - "22: No code", - "23: No code", - "24: No code", - "25: No code", - "26: No code", - "27: No code", - "28: No code", - "29: No code", - "30: No code", - "31: No code", - "32: No code", - "33: No code", - "34: No code", - "35: No code", - "36: No code", - "37: No code", - "38: No code", - "39: No code", - "40: No code", - "41: No code", - "42: No code", - "43: No code", - "44: No code", - "45: No code", - "46: No code", - "47: No code", - "48: No code", - "49: No code", - "50: No code", - "51: No code", - "52: No code", - "53: No code", - "54: No code", - "55: No code", - "56: No code", - "57: No code", - "58: No code", - "59: No code", - "60: No code", - "61: No code", - "62: No code", - "63: Manual Override", - "64: Daily Schedule Shutdown", - "65: Unit Switch Off", - "66: Remote Controlled Shutdown", - "67: Loss of External Communications", - "68: Flow Switch Shutdown", - "69: VSD Cooling Shutdown", - "70: Serial Number Shutdown", - "71: N/A", - "72: Discharge Spuerheat Recovery", - "73: N/A", - "74: No Run Permissive", - "75: Anti-Recycle Timer Active", - "76: System Switch Off", - "77: System Not Running", - "78: System Running", - "79: Discharge Pressure Limiting", - "80: Suction Pressure Limiting", - "81: Motor Current Limiting", - "82: Free Cooliong", - "83:BAS Motor Current Limiting", - "84: Remote Motor Current Limiting", - "85: System Pumping Down", - "86: VSD Pre-Charging", - "87: VSD Baseplate Temp Limiting", - "88: VSD Internal Ambient Temp Limiting", - "89: Sounf Limiting", - "90: BAS Sounf Limiting", - "91: Remote Sound Limiting", - "92: Pulldown Motor Current Limiting", - "93: Cooling Demand Shutdown", - "94: Input Current Limiting", - "95: BAS Input Current Limiting", - "96: Remote Input Current Limiting", - "97: Pulldown Input Current Limiting" - ], - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Interface Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 43, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 44, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Economizer Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 51, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 52, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 1 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "FLA Motor 2 Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Fan Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Fan Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "VSD CMD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "VSD Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Ambient Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Eductor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Motor Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 53, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 54, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator In Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Out Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 45, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 46, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Active Setpoint", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller System Available", - "options": [ - "Not ready", - "Ready" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 47, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Status", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 48, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Starts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Status", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 49, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 1 Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser 2 Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Heater Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Evaporator Pump Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Switch", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": -3, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 OpCode" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 0, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Fault Code" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Fault Code" - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": -2, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 OpCode" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "System HOA", - "options": [ - "Local", - "Remote" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "System Interlock Active", - "options": [ - "Not Tripped", - "Tripped" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "System Permissive OK", - "options": [ - "Not Ready", - "Ready" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 41, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 42, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Discharge Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "System 2 Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "System Suction Cutout", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "System 1 Discharge Pressure", - "options": [], - "visible": false - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH06_SYSTEM" - }, - "propConfig": { - "custom.FLT_Codes": { - "persistent": true - }, - "custom.OP_Codes": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.allTags[38].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "custom.allTags[39].options": { - "binding": { - "config": { - "path": "view.custom.FLT_Codes" - }, - "type": "property" - } - }, - "custom.allTags[40].options": { - "binding": { - "config": { - "path": "view.custom.FLT_Codes" - }, - "type": "property" - } - }, - "custom.allTags[41].options": { - "binding": { - "config": { - "path": "view.custom.OP_Codes" - }, - "type": "property" - } - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/resource.json index 5cd44a1..3a36bc9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "d27cc53067a780d71eeb7440466f16101fe06b19aa17f76ec9e2dae86c67b411", + "lastModificationSignature": "08c6f6ef190813a5980666938be7b8a338798c78cdc9bf6898236a5dd15afa2c", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:18:25Z" + "timestamp": "2026-05-05T22:37:30Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/thumbnail.png index 4bab4ec..6b17c90 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/view.json index 2e6220c..74dc79a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Body/view.json @@ -145,20 +145,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/resource.json deleted file mode 100644 index 8c93972..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "c9df01c6a92ee09b7a7aa31e20d4f486036f8ebb9d17985011114bf9c408f4e8", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-05-02T03:17:04Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/thumbnail.png deleted file mode 100644 index d4658e6..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/view.json deleted file mode 100644 index 240cf88..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DOAS/Info/view.json +++ /dev/null @@ -1,398 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor A Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser A Signal", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Condenser B Signal", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulating Hot Gas Reheat Valve Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Building Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor A Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B1 Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor B2 Enabled", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Economizer Enabled Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Exhaust Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heating Enabled Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Remote Forced Occupied Status", - "options": [ - "Unforced", - "Forced" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge A Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge B Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outdoor Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/resource.json index 6fc16f4..1e8bc21 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a4cb41168cec406ad88479714dea13c193ccae1cb574a9af87fef681b6d45e2c", + "lastModificationSignature": "528388e618c7707e337ddfeb726333b8644b17420897b3972cb5611d15f42c5b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:19:33Z" + "timestamp": "2026-05-05T22:45:47Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/thumbnail.png index 662b97d..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/view.json index 43ac799..74c5bcf 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Body/view.json @@ -116,20 +116,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/resource.json deleted file mode 100644 index cac4196..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "9eb2d8c728e250659a980b4ff39b1b034193e196fcd6557f67bd5ff055f2729d", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-16T14:07:08Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/thumbnail.png deleted file mode 100644 index 5d65c28..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/view.json deleted file mode 100644 index 29cf23c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DS/Info/view.json +++ /dev/null @@ -1,597 +0,0 @@ -{ - "custom": {}, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_DS-1A3" - }, - "propConfig": { - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "01" - }, - "meta": { - "name": "Way 1" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "10px 0" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "02" - }, - "meta": { - "name": "Way 2" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "03" - }, - "meta": { - "name": "Way 3" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Way \u0027+{parent.custom.wayNumber}+\u0027 Status:\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "gap": "5px" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Status": {} - }, - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.Status.Closed": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Closed Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Grounded": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Grounded Way {wayNumber}" - }, - "type": "tag" - } - }, - "custom.Status.Open": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}", - "wayNumber": "{parent.custom.wayNumber}" - }, - "tagPath": "{tagPath}/Breaker Open Way {wayNumber}" - }, - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "struct": { - "Closed": "{this.custom.Status.Closed}", - "Grounded": "{this.custom.Status.Grounded}", - "Open": "{this.custom.Status.Open}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "expression": "if({value}[\u0027Closed\u0027],1,\r\nif({value}[\u0027Open\u0027],2,\r\nif({value}[\u0027Grounded\u0027],3,0\r\n)))", - "type": "expression" - }, - { - "fallback": "Error", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Closed" - }, - { - "input": 2, - "output": "Open" - }, - { - "input": 3, - "output": "Grounded" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "gap": "5px" - }, - "textStyle": { - "color": "var(--tagvalue-color)" - } - }, - "type": "ia.display.label" - } - ], - "custom": { - "wayNumber": "04" - }, - "meta": { - "name": "Way 4" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/resource.json index 03775e3..30f7774 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "5ed7f82d741e803922c89f68435311e139a31417871c6b9639b79b3e08e51f66", + "lastModificationSignature": "8f9e117c3d42311020b9cd96189a78be4a16dbf0d065e11e794b4f22910e6b85", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:20:10Z" + "timestamp": "2026-05-05T22:45:48Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/thumbnail.png index 9d3b654..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/view.json index 1673fc1..2314074 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -390,8 +383,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/resource.json deleted file mode 100644 index 6574330..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "7cd51f7fbd25ef413b6c8213f6b164d6e7ebcd4889a64a653526812cd2b3f535", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/thumbnail.png deleted file mode 100644 index 92d9cdc..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/view.json deleted file mode 100644 index fff8a7b..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Data Hall/Info/view.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cold Aisle Space Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Hot Aisle Differential Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Differential Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cold Aisle Space Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Hot Aisle Space Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Dew Point Setpoint", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/Data Hall" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/resource.json index 68e435a..da765fd 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "4cb9f6c62d05d32e954d78f0023640dd8166e27b00bc47f484313f9aa7ab4bd4", + "lastModificationSignature": "c812c1131863fa728c73d496149ace54e36203cd644467eafd9f0d3bb712ce1b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:22:01Z" + "timestamp": "2026-05-05T22:45:48Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/view.json index 363a33f..eb2e7e5 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/resource.json deleted file mode 100644 index b98b932..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "4592c31a9960f39d3b23571320f037603c24e1f0cc4c969b3f42daa27c618cf8", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/thumbnail.png deleted file mode 100644 index 1ec3897..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/view.json deleted file mode 100644 index bda7587..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/DiscreteIn/Info/view.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Value", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2/Device Fault" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/resource.json index f2021fa..a2521c6 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "591e8f1f81515caa7a14d7268467641ea454fe74ecbdb3fa5e1b26518fe213c6", + "lastModificationSignature": "725b1b2d794743f550ec196f11a4008e9d13a2205b3d51fb127849a443c917fa", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:22:00Z" + "timestamp": "2026-05-05T22:45:49Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/thumbnail.png index 36cbecc..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/view.json index b78fe5a..4b4876b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/resource.json deleted file mode 100644 index 2d1fd09..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "1032687dabca31c0d1c2a1c2cd80048c4d1a7f2a0bd7991d6cf5bf5237385dcd", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/thumbnail.png deleted file mode 100644 index c430d72..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/view.json deleted file mode 100644 index 427e32c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/EF/Info/view.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH01_MOTOR" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/resource.json index d473ca7..d7c99c2 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "2ff0f8dbddd8cc5d3506657538b35fa7da9768d9ca8cddece9ec438aadd50ade", + "lastModificationSignature": "3d4c870433c207c10db2022261e2cd479d9b074d437c35989727b7a9ad378a37", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:21:55Z" + "timestamp": "2026-05-05T22:38:46Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/thumbnail.png index 5edd314..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/view.json index b78fe5a..4b4876b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/resource.json deleted file mode 100644 index 323f3ba..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "bf120d6f726ab475b8db6528e5ef05757bc4c04b08aa4035d22c26c44d34902d", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/thumbnail.png deleted file mode 100644 index b749901..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/view.json deleted file mode 100644 index 427e32c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ESP/Info/view.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH01_MOTOR" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/resource.json index 8995bf6..cb0693d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "21437237b021932be426eafd2cc7fa6d97d19df69b0c7a48ea87ec389897c593", + "lastModificationSignature": "e0b7ea473f2d35c0c5cec33214ec31704c2e49d25199953e548190b0c205e4de", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:35Z" + "timestamp": "2026-05-05T22:38:58Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/view.json index b4b4166..b7abbe5 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FCU/Body/view.json @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "\r\nif (split({view.params.tagPath},\u0027_\u0027)[6,0] \u003d \"FCU21\",\r\nconcat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info_\u0027,split({view.params.tagPath},\u0027_\u0027)[6,0]),\r\nconcat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027))" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/resource.json index ddc9b10..5b75c4f 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "b04a20163209f4036a73d59b033673217f05a098860c40e40c98dae6d97a67c5", + "lastModificationSignature": "b0cf7f283140702f5434cd539f0814e74d681640a13914093f294c1fd85094f6", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:34Z" + "timestamp": "2026-05-05T22:45:36Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/view.json index f71d699..5b11950 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/resource.json deleted file mode 100644 index 02014f8..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "ea6569a641b754ec11d1f7f3f10ad5d52b404cc433e5178c48bf8547b02453e7", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/thumbnail.png deleted file mode 100644 index 9094cd2..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/view.json deleted file mode 100644 index 015a539..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Fire Panel/Info/view.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire Alarm Trouble", - "options": [ - "Normal", - "Alarmed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire alarm Event", - "options": [ - "Normal", - "Alarmed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fire alarm Supervisory (Notification Alarm)", - "options": [ - "Normal", - "Alarmed" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1102/SATB1_RM1102_Fire System Panel" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": false - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/resource.json index ca16854..1f5685f 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a6b7dc3b13c21750935f6b626f206b3f9fff8a9f2f744bf92a3150da69f65918", + "lastModificationSignature": "2e261430adbe9773dcdbc73f217f2fc1a86cdf489ec605ffef5c5e8435626320", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:33Z" + "timestamp": "2026-05-05T22:45:34Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/thumbnail.png index 3a72b3f..f7fac91 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/view.json index 47e6c8a..ce3e5eb 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/Body/view.json @@ -41,9 +41,10 @@ }, "props": { "params": { + "deviceDataset": "[default]Device Datasets/VM/Info", "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -58,7 +59,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP09" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -73,7 +74,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP10" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -88,7 +89,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP11" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -103,7 +104,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP12" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -118,7 +119,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP13" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -133,7 +134,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP14" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -148,7 +149,7 @@ "params": { "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP15" }, - "path": "Library/Templates/FltCodeEnables/lnUp" + "path": "Library/Templates/Info" }, "type": "ia.display.view" } @@ -180,7 +181,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 4 + "currentTabIndex": 7 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/resource.json index f08a1fd..e21791c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "e58c634bc1aa147518c63d1f53fc2776a7f031214c2ff4de2202dcb2d58acba2", + "lastModificationSignature": "1d9dd9ec20cbfb4e2c35edb9c36b04fbaf611530e1ce7b00cb55d68ad7f47a7f", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-22T23:23:35Z" + "timestamp": "2026-05-05T22:40:30Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/thumbnail.png index a422c9e..d7e6118 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/view.json index 150863f..75d5d80 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/FltCodeEnables/lnUp/view.json @@ -1,805 +1,6 @@ { "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "0: No Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[0]", - "value": false - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "1: Low Ambient Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[1]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "2: High Ambient Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[2]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "3: Low Chilled Liquid Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[3]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "4: VSD Initialization Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[4]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "5: Low RTC Battery Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[5]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "6: Invalid Number of Compressors Selected", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[6]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "7: VSD Communications Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[7]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "8: Pre-charge Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[8]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "9: Pre-charge DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[9]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "10: High DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[10]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "11: Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[11]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "12: DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[12]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "13: High VSD Ambien Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[13]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "14: Single Phase Input", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[14]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "15: VSD Power Supply Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[15]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "16: VSD Logic Board Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[16]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "17: Motor Current Overload (Hardware)", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[17]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "18: CT Plug Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[18]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "19: High Harmonic Filter Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[19]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "20: Evap Anti-Freeze Pump Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[20]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "21: Low Heat Exchange Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[21]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "22: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[22]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "23: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[23]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "24: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[24]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "25: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[25]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "26: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[26]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "27: High Discharge Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[27]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "28: High Differential Oil Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[28]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "29: Low Differential Oil Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[29]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "30: Low Suction Pressure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[30]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "31: High Discharge Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[31]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "32: N/A", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[32]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "33: Eductor Clog Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[33]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "34: Sensor Failure", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[34]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "35: Low Motor Current", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[35]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "36: High Motor Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[36]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "37: Pre-charge Low DC Bus Voltage Immbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[37]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "38: Pre-charge DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[38]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "39: High DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[39]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "40: Low DC Bus Voltage", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[40]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "41: DC Bus Voltage Imbalance", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[41]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "42: High Motor Current", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[42]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "43: Motor Current Overload", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[43]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "44: IGBT Gate Driver Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[44]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "45: High Baseplate Temperature", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[45]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "46: Single Phase Input", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[46]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "47: VSD Run Signal Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[47]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "48: High Discharge Press (HPCO)", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[48]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "49: Low Suction Superheat", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[49]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "50: Control Valve Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[50]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "51: Low Discharge Superheat", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[51]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "52: Low Suction PRessure Smart Freeze", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[52]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "53: Isolation Valve Failed to Close Warning", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[53]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "54: Isolation Valve failed to Open Fault", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[54]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "55: High Discharge Pressure Rate", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[55]", - "value": true - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "isArray": true, - "name": "56: Condenser Fan VSD Fault Warning", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]ChillerFltCodes/CP08[56]", - "value": true - } - ], + "allTags": null, "fltCodes": [ "0: No Fault", "1: Low Ambient Temperature", diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/resource.json index 5b76025..419ea4b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "6b36e399806bdb96a4eea3e75724074e07c5c9fba387934b4905be4d1659f702", + "lastModificationSignature": "e95a758c01ad2f1fcef8e83c46237404f9e0094356911ac0aa9669ddaf2c3ae8", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:32Z" + "timestamp": "2026-05-05T22:45:39Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/thumbnail.png index 58bfa35..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/view.json index 586c790..6ef5784 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Body/view.json @@ -116,20 +116,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/resource.json deleted file mode 100644 index 90c26ee..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "0d211a20ced2394bc25c7876249d6b627a8ef59b248330d3e58e7aab6947043a", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/thumbnail.png deleted file mode 100644 index aa39c66..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/view.json deleted file mode 100644 index afff557..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/GEN/Info/view.json +++ /dev/null @@ -1,441 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Average Current", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Voltage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Coolant Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Engine RPM", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Gallons", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Percent", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Rate", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fuel Usage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Manifold Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number Of Starts", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Oil Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Oil Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Status", - "options": [ - "Stopped", - "Running" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Load", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kVA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kVAR", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kW", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total kWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Communication Percent", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_GEN-P3-5" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/resource.json index 63793f0..d3f220c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "46f3bca624b0aee66ca9d1cc0a684041dce3c76bd708707ad58211a44499cddb", + "lastModificationSignature": "1d14f0198a42583a60e8ac22adf4ddfae0f6abf74e70969f7bc4ef8967dfea4d", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:31Z" + "timestamp": "2026-05-05T22:45:40Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/thumbnail.png index 0d0407e..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/view.json index 624cd3f..044412e 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Body/view.json @@ -113,14 +113,6 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { @@ -130,7 +122,8 @@ "params": { "embedded": false, "objectName": "DiscreteIn" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/resource.json deleted file mode 100644 index 609269c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "cfc9afea1aeca104d1fd1516df26f3a662cb48657a9c6735a67f2f2c302481f6", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-23T19:23:02Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/thumbnail.png deleted file mode 100644 index ffcd78d..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/view.json deleted file mode 100644 index d3f1178..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/H2/Info/view.json +++ /dev/null @@ -1,467 +0,0 @@ -{ - "custom": { - "XA": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2/Device Fault", - "XAH": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2/Alarm High", - "XAHH": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2/Alarm High High" - }, - "params": { - "embedded": false, - "objectName": "H2", - "tagPath": "[Ignition_Common_IO_Gtwy]ER1159/SATB1_ER1159_H2" - }, - "propConfig": { - "custom.XA": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "transforms": [ - { - "expression": "{value} + \u0027/Device Fault\u0027", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.XAH": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "transforms": [ - { - "expression": "{value} + \u0027/Alarm High\u0027", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.XAHH": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "transforms": [ - { - "expression": "{value} + \u0027/Alarm High High\u0027", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d \n\tobjectName \u003d \u0027DiscreteIn\u0027\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.XA}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Device Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.custom.XAH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.XAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.XAH}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Alarm High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.custom.XAHH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.XAHH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.XAHH}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Alarm High High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "132px" - }, - "props": { - "justify": "space-around", - "style": { - "gap": 5, - "padding": 5 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/resource.json index 447103e..a7d1c49 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "30fbe971cd4d5cfe853e8941d08bbfc52fd2049f3c92a4488f5aa7a878a8dc6a", + "lastModificationSignature": "1e5872f16b28ed1dfca1117fd855affddaaef19ba2183d0957b6980cb1ab0691", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:30Z" + "timestamp": "2026-05-05T22:45:42Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/view.json index fd6ff1b..f218c4a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,8 +381,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/resource.json deleted file mode 100644 index fbfa2af..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "20e0e9db181506d2166ba7edb4c7cf38037cde67dc4a903e8791e0d1f8ac2340", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/thumbnail.png deleted file mode 100644 index d923eb5..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/view.json deleted file mode 100644 index f7c86d2..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HUM/Info/view.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Max Output", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Relative Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Run Hours", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Drain Valve Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fill Valve Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Ready", - "Ready" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Unit Status", - "options": [ - "Not Enabled", - "Enabled" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1262/SATB1_GAL1262_HUM_02" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\t\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/resource.json index 024ed80..33a62c6 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "b626ce55b661871119e25d5b7be73715b016082f25db57b5e6fa6cd9a3021fdb", + "lastModificationSignature": "56e45a54202a458a987c8cc1b2da4f2d26d8af2275d06dbadeda688d4775b66a", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:29Z" + "timestamp": "2026-05-05T22:45:43Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/thumbnail.png index 918e355..567de77 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/view.json index 980d79e..4b3e5df 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Body/view.json @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,7 +382,6 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 3, "tabs": [ "Status", "Config", diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/resource.json deleted file mode 100644 index 68efe53..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "1c3419e691b9ae7955f536eb8c7216e165e1c4628101c9c3927b3a8d4abd6212", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/thumbnail.png deleted file mode 100644 index 4fb2f32..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/view.json deleted file mode 100644 index 18d2f5f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/HarmonicFilter/Info/view.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Communication Percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Contactor Status", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Current A THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 60, - "instanceStyle": { - "classes": "" - }, - "name": "Current B THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Current C THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Filter Controls Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Load Real Power Total", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 51, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 67, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC THD", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA THD", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH48_HF" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/resource.json similarity index 60% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/resource.json index 6a7b5e0..7f9d393 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInRS485/Info/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "8d471031dc3cefb0f1fd1d74d5b40fbee82e98b580b8e414e389a09144cc03c1", + "lastModificationSignature": "695b95d114baf3a9a0b0eb2e75a1099b7908ae014998ce6d2bb0625f870b8009", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" + "timestamp": "2026-05-05T22:26:26Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/thumbnail.png new file mode 100644 index 0000000..d7e6118 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/view.json new file mode 100644 index 0000000..4425c96 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Info/view.json @@ -0,0 +1,81 @@ +{ + "custom": {}, + "params": { + "deviceDataset": "[default]Device Datasets/VM/Info", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "params.deviceDataset": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "deviceDataset": "{view.params.deviceDataset}" + }, + "tagPath": "{deviceDataset}" + }, + "transforms": [ + { + "code": "\treturn Global.DeviceDatasets.getTagInstances(deviceDataset\u003dvalue, tagPath\u003dself.view.params.tagPath)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/resource.json index db8102c..51a9bd1 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "dcb5896a8cb1980b6b63a709fe4fb7e433e9f0df44c9a95633536fac0761e4fc", + "lastModificationSignature": "90a6af7ad4f91a929f2dd894fb2cba1bcac431a40e4d0eb0e8c47f842a49d967", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:28Z" + "timestamp": "2026-05-05T22:45:44Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/view.json index 412c7ec..8489771 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/resource.json deleted file mode 100644 index 3a4b46d..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "3d33f337e8a14bf359ccfc7b6512f16ccfdc906a01123ba7691ec7500fd00e70", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/thumbnail.png deleted file mode 100644 index 749418f..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/view.json deleted file mode 100644 index 54de3bb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LD/Info/view.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Cable break alarm", - "options": [ - "Good", - "Broken" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Cable length", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Contamination detected", - "options": [ - "Good", - "Contaminated" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Leak Detected", - "options": [ - "Good", - "Leak" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Leak distance", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Unit of measure", - "options": [ - "meters", - "feet" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]GAL1261/SATB1_DH1_LD1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/resource.json index 518d787..b576505 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "987e1dac0758c4f7e5373ac0d031fb48b4bc5f67790a247e8d39a6344f19b315", + "lastModificationSignature": "f2cf5364ade6ba2c93b322c9898b22462908ab7ffba3b2ddd9e7145031ce355f", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:27Z" + "timestamp": "2026-05-05T22:45:25Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/thumbnail.png index 584543c..4db24cc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/view.json index 89683e7..4f98c84 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/resource.json deleted file mode 100644 index 4e5d389..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "fc053c3e7e5ed2feddfb4021ae710645373391a2a3d0d4b87845403b0fe515a0", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/thumbnail.png deleted file mode 100644 index 72f2932..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/view.json deleted file mode 100644 index 8dd8481..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV Feeder/Info/view.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Average Phase Current", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Average Phase Voltage", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVAR", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW Demand", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total KWH", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage C", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/LV Feeder 1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/resource.json index a59847c..d3bcf5d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "163691242a172ca7f7ae8ba1da3ba87d6679920851e1f988bd1e90a34b231155", + "lastModificationSignature": "cc84e4ce5bfa3e97190dd6f7f7ff7097a24fa703d00aba99eb5026aed19d755c", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:26Z" + "timestamp": "2026-05-05T22:45:22Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/thumbnail.png index ef658e8..91b7708 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/view.json index 04c82a9..3c45d90 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/resource.json deleted file mode 100644 index 2344481..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "9498f16b5b951c009169fc78257d47e81ce6dea0145b921e2e9ded17284e5ff9", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/thumbnail.png deleted file mode 100644 index f43c90f..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/view.json deleted file mode 100644 index 278cdb3..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/LV SWBD/Info/view.json +++ /dev/null @@ -1,448 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps G", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Average Phase Voltage", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- GFD", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- GFPU", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- INST", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- LTD", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- LTPU", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- Rating Plug Type", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- STD", - "options": [] - }, - { - "dataType": "", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Setpoint- STPU", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVAR", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total KWH", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Sag_Swell", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Waveform Capture", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/LV SWBD 1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/resource.json index 6cc150f..74bb84a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "c783cab3b97020697f2ebf81400cbd9de8a1b2a1dc5d1ad125c8069d35f842e4", + "lastModificationSignature": "fdd4102bbab49fde0a4dbcb78d984a52cf3f61a71acc0c690dbc8b416a540420", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:25Z" + "timestamp": "2026-05-05T22:45:24Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/view.json index acbdd6c..77c20cc 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/resource.json deleted file mode 100644 index 0e57508..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "4d58ef81e5f30d386ad3d07d22847851c90936a4844abf82c2fc307c4fc4a974", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/thumbnail.png deleted file mode 100644 index 34ce0db..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/view.json deleted file mode 100644 index f478ea0..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/MV SWGR/Info/view.json +++ /dev/null @@ -1,327 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps A", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps B", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps C", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Amps N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Average Phase Current", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KVAR", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "KW Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "MVAR", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "MWH", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "THD Voltage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Sag_Swell", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Waveform Capture", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/MV SWGR 1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/resource.json index 04195fc..c4e58a6 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "ec23bfebdc86577958232bfe62d4da5414c1fbcbec5d5fcebb76267feda163ed", + "lastModificationSignature": "4afcd349d5060bd3f262a27ad162e484d1048ef900fa4645dfa69cc3f2f444da", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:23Z" + "timestamp": "2026-05-05T22:45:29Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/view.json index f4849f1..0332c6b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Body/view.json @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/resource.json deleted file mode 100644 index 2cbf8c1..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "0618947335053d046e232c1551b0e584a0e10ca089c91eff855e7689ccb449c2", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/thumbnail.png deleted file mode 100644 index 191b579..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/view.json deleted file mode 100644 index 40577d1..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor JockeyFP/Info/view.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Off", - "On" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1141/SATB1_RM1141_PMP_02" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/resource.json index aeb4a96..2618036 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "cb52ae8f4ff0ef77cc75e6f4589f7c4345113ebe7d80f694837415ab2703feea", + "lastModificationSignature": "6452a9cfd6ea949e9c3e4e007cc56b9c9f83676502e772cfff0e4addce11ad58", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:22Z" + "timestamp": "2026-05-05T22:45:30Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/view.json index a522e34..0da58ab 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Body/view.json @@ -117,20 +117,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -389,8 +382,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/resource.json deleted file mode 100644 index 1dfb1a1..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "73f8a0b49a6f94867cbfe171607c3b5e50816f3411b3796cca33428469e9ee53", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/thumbnail.png deleted file mode 100644 index 8457d0b..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/view.json deleted file mode 100644 index 87e3777..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor MainFP/Info/view.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 1", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 2", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "AC Amps Line 3", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Suction Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "System Pressure", - "options": [] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Emergency Power Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Normal Power Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": 0, - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Transfer Switch Emergency", - "options": [ - "Not Active", - "Active" - ] - }, - { - "dataType": "Bool", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Transfer Switch Normal", - "options": [ - "Not Active", - "Active" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1141/SATB1_RM1141_PMP_01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/resource.json index beb89bb..9327eaf 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "5b36986ecbf3a3401359472be7b796385bd9177b3e4443fe9afe3769733cfd22", + "lastModificationSignature": "fcdc085c29b53dfa5b10e8955ce107a7c711b986df27903a40b8fd93e865c2df", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:29:24Z" + "timestamp": "2026-05-05T22:45:28Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/thumbnail.png index 6884a62..91b7708 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/view.json index b78fe5a..4b4876b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/resource.json deleted file mode 100644 index 948db39..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "1d8d86432d62ae6f11b08650ec5646778b61e8509257c7c9a54577761e8e3f46", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/thumbnail.png deleted file mode 100644 index 0517480..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/view.json deleted file mode 100644 index c8c045f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Motor/Info/view.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Stopped", - "Running" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH01_MOTOR" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/resource.json index 2a356c7..0eab6d3 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "3172e198ad3b283606120d9c92fe3ad387ee34d0dd553fced0bf826db0c82983", + "lastModificationSignature": "1eca96835cf1ea1a7b7e197df9ea34c23045739dd9d39efced10ef512e8164b0", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:31:10Z" + "timestamp": "2026-05-05T22:45:31Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/thumbnail.png index 9b1328b..44336bf 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/view.json index 6659690..0917c50 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Body/view.json @@ -118,20 +118,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -458,8 +451,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 3 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/resource.json deleted file mode 100644 index 55c9605..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "c64beaecd522139b373735d5fb0cb6fb9116cb7e7ceb9c1a81d4bf82276e950c", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/thumbnail.png deleted file mode 100644 index ce8c56c..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/view.json deleted file mode 100644 index e63f4cb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info/view.json +++ /dev/null @@ -1,504 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 1", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 2", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 3", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 4", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 5", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 130, - "instanceStyle": { - "classes": "" - }, - "name": "Ground Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 70, - "instanceStyle": { - "classes": "" - }, - "name": "Input AB THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 90, - "instanceStyle": { - "classes": "" - }, - "name": "Input BC THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 110, - "instanceStyle": { - "classes": "" - }, - "name": "Input CA THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 150, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 80, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 100, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 120, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 60, - "instanceStyle": { - "classes": "" - }, - "name": "Main Breaker", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 140, - "instanceStyle": { - "classes": "" - }, - "name": "Neutral Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 170, - "instanceStyle": { - "classes": "" - }, - "name": "Output A KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 180, - "instanceStyle": { - "classes": "" - }, - "name": "Output A PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 190, - "instanceStyle": { - "classes": "" - }, - "name": "Output B KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 200, - "instanceStyle": { - "classes": "" - }, - "name": "Output B PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 210, - "instanceStyle": { - "classes": "" - }, - "name": "Output C KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 220, - "instanceStyle": { - "classes": "" - }, - "name": "Output C PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 230, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 250, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 270, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 240, - "instanceStyle": { - "classes": "" - }, - "name": "Output KVA", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 260, - "instanceStyle": { - "classes": "" - }, - "name": "Output KWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 280, - "instanceStyle": { - "classes": "" - }, - "name": "Output Total KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 290, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 300, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 310, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 320, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 330, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 340, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 160, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [], - "visible": false - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [ - "No Alarm", - "Alarmed" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO2_default]GAL1271/SATB1_GAL1271_PDU_P2-2-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/resource.json deleted file mode 100644 index aac1378..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "61ee6034a4b675f168b312f53ae092fc876b6b9816e5e0724a5e0dcfcae474a7", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/thumbnail.png deleted file mode 100644 index d584e02..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/view.json deleted file mode 100644 index 7c2e95f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PDU/Info2/view.json +++ /dev/null @@ -1,489 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 1", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 2", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 3", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 4", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker 5", - "options": [ - "Closed", - "Open" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Ground Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input AB THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input BC THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input CA THD-F", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Voltage CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Main Breaker", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Neutral Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output A KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output A PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output B KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output B PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output C KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output C PF", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current A", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current B", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output KVA", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output KWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Total KW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage AN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage BN", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CA", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Voltage CN", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO2_default]GAL1271/SATB1_GAL1271_PDU_P2-2-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/resource.json index ef87a84..f80bec9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "b0e2a5df55109e54bea0237b53124c7d95f5c91117b54b0f436f14c64441ab46", + "lastModificationSignature": "87bd7162d1ecc349f10fa8f274d0157cf5465e7c0552ce7ae54255d47b97f158", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:31:17Z" + "timestamp": "2026-05-05T22:45:32Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/view.json index ff3cbba..ebbfe85 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/resource.json deleted file mode 100644 index 638f0a6..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "6a677f6713728dfebea5104cfd46525dc0612896f172b3ad9d70ceabe7bd8050", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/thumbnail.png deleted file mode 100644 index bd60e76..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/view.json deleted file mode 100644 index 4d053b3..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PID_Loop/Info/view.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "At Max", - "options": [ - "No", - "Yes" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "At Min", - "options": [ - "No", - "Yes" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Error", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Activate", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input PV", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Out CV", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/CHWBPV_PID_2" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/resource.json deleted file mode 100644 index d770ac8..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "8ba82e37d7e12fdb44f08f1b58df950045a92f08ee03c4603abe452ec85c0c50", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-05-02T03:31:15Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/thumbnail.png deleted file mode 100644 index 6884a62..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/resource.json deleted file mode 100644 index e1bc339..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "0251a9dc86d8122ef7c1ba3248c533acb4ec7e46c189cebb658b18a95eaf079a", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:23:34Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/resource.json deleted file mode 100644 index 14786f8..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "aadb5a1ef29afd29c0b276498c4e73a335ec651e0b6bc662382d7ef866eaafe3", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-24T14:22:05Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/thumbnail.png deleted file mode 100644 index 752deb7..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/view.json deleted file mode 100644 index 119226b..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Info/view.json +++ /dev/null @@ -1,1019 +0,0 @@ -{ - "custom": { - "JA01": "/AC Primary Power Fault", - "JA02": "/AC Secondary Power Fault", - "JA03": "/DC Power Supply 1 Fault", - "JA04": "/DC Power Supply 2 Fault", - "PLC_A_Fail": false, - "PLC_A_Online": false, - "PLC_B_Fail": false, - "PLC_B_Online": false, - "RedundancySTS": "/Hot Standby Status", - "TAH": "/High Temperature", - "XA": "/Panel Intrusion", - "allTags": [ - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail" - } - ], - "inTagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_PNL24" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_PNL24" - }, - "propConfig": { - "custom.JA01": { - "persistent": true - }, - "custom.JA02": { - "persistent": true - }, - "custom.JA03": { - "persistent": true - }, - "custom.JA04": { - "persistent": true - }, - "custom.PLC_A_Fail": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC A Fail" - }, - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_A_Online": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC A Online" - }, - "transforms": [ - { - "expression": "!{value}", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_B_Fail": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC B Fail" - }, - "type": "tag" - }, - "persistent": true - }, - "custom.PLC_B_Online": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "tagPath": "{view.params.tagPath}" - }, - "tagPath": "{tagPath}/Hot Standby Status/PLC B Online" - }, - "transforms": [ - { - "expression": "!{value}", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.RedundancySTS": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.XA": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "Redundancy", - "tagPath": "{view.custom.inTagPath}{view.custom.RedundancySTS}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_6" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "struct": { - "PLC_A": "{view.custom.PLC_A_Fail}", - "PLC_A_On": "{view.custom.PLC_A_Online}", - "PLC_B": "{view.custom.PLC_B_Fail}", - "PLC_B_On": "{view.custom.PLC_B_Online}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tif value[\u0027PLC_A\u0027] or value[\u0027PLC_B\u0027] or value[\u0027PLC_A_On\u0027] or value[\u0027PLC_B_On\u0027]:\n\t\treturn \u0027var(--elec-on)\u0027\n\telse:\n\t\treturn \u0027var(--state-standby)\u0027", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Redundancy Status", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "136px" - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/resource.json index 5d1d76d..8fa36ca 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "bdaadce176521ce80337bdaf98a63699907e412e19e4fe5199ff0cca941e5635", + "lastModificationSignature": "2e3bdc2bc5c1046293795f8d9ec6de5a6675fbdabb20c6036a0e1671d89ad256", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:31:16Z" + "timestamp": "2026-05-05T22:45:33Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/thumbnail.png index 6884a62..1cdc83a 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/view.json index cacb3ce..bd5e081 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/resource.json deleted file mode 100644 index 7483ddb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "c68874da897e262ae18b57a8d92be3a5eb7de57fcba4fc15178126e416be961c", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-23T19:23:02Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/thumbnail.png deleted file mode 100644 index 1b58c4f..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/view.json deleted file mode 100644 index ce226a2..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel/Info/view.json +++ /dev/null @@ -1,1606 +0,0 @@ -{ - "custom": { - "JA01": "/AC Primary Power Fault", - "JA02": "/AC Secondary Power Fault", - "JA03": "/DC Power Supply 1 Fault", - "JA04": "/DC Power Supply 2 Fault", - "TAH": "/High Temperature", - "XA": "/Panel Intrusion", - "allTags": [ - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low" - }, - { - "dataType": "Boolean", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail" - } - ], - "inTagPath": "[Ignition_Common_IO_Gtwy]PLC/SATB1_MPR1240_PNL58" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]PLC/SATB1_MPR1240_PNL58" - }, - "propConfig": { - "custom.JA01": { - "persistent": true - }, - "custom.JA02": { - "persistent": true - }, - "custom.JA03": { - "persistent": true - }, - "custom.JA04": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.XA": { - "persistent": true - }, - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "136px", - "display": false - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA01}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Primary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA02}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "AC Secondary Power Failure", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA03\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA03}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA03}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 1 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.JA04\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.JA04}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.JA04}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "DC Power Supply 2 Fault", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.TAH}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Temperature High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + \"/AC Primary Power Fault\"\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.XA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "112px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm Target Disagree\") || tag({view.custom.inTagPath}+{view.custom.XA}+\"/Alarms/Alarm IO Fail\")" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none" - }, - "text": "Panel Intrusion", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "136px" - }, - "props": { - "justify": "space-evenly", - "style": { - "gap": 5, - "overflow": "visible", - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/resource.json index bf4d8ae..16138f3 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "2951dbd4238211980584cc808c1f93718f2e0c10b6ee3bcd5302cd199d56b3ef", + "lastModificationSignature": "682d87a986e2b0bab5a22757aba99f82ea1efded86aa9733ac3561b5bfa6228e", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:27Z" + "timestamp": "2026-05-05T22:44:35Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/thumbnail.png index 6ba658e..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/view.json index cacb3ce..bd5e081 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/resource.json deleted file mode 100644 index 5054903..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "764eaa8ab1ceeec0eaef77e5921f2cf568f53f666daa2629563edfd92d9b6a44", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/thumbnail.png deleted file mode 100644 index ad1a55a..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/view.json deleted file mode 100644 index 2c1951d..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/PlantFailure/Info/view.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail", - "options": [ - "No Fail", - "Fail" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail", - "options": [ - "No Fail", - "Fail" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low", - "options": [ - "Normal", - "Low" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Difference", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail", - "options": [ - "No Fail", - "Fail" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "instances": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Chiller Quantity Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Chiller Quantity Fail" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/DP Fail" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "DP Low", - "options": [ - "Normal", - "Low" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/DP Low" - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Flow Difference", - "options": [], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Flow Difference" - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Temp Fail", - "options": [ - "No Fail", - "Fail" - ], - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/SATB1_PlantFailureParameters/Supply Temp Fail" - } - ], - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/resource.json similarity index 60% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/resource.json index 43f7357..821de23 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ATS/Info/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "ddbdf70cc33d792324cb768a24171ae44f649a124c633a00ce0becaeff39398a", + "lastModificationSignature": "9159645618213dbb385fd0dd3ef4bc8e0cc137aad814c09be0a2366a2657a41e", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:32Z" + "timestamp": "2026-05-05T22:44:52Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/thumbnail.png new file mode 100644 index 0000000..c61ae7c Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/view.json similarity index 97% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/view.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/view.json index db4b4dd..286953b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/resource.json similarity index 60% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/resource.json index 7d63d4e..47a271c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogIn/Info/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a565b5dbfce9f5c5c41526e1fb71411fef18eb97e0c94a677312a6c15d9058dd", + "lastModificationSignature": "f84e6d354a28dea44c76a07e1fe86aebf4651936d609a22abe5a7ac289138c92", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" + "timestamp": "2026-05-05T22:29:48Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/thumbnail.png similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/thumbnail.png rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/thumbnail.png diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/view.json similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/view.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Config/view.json diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/resource.json similarity index 60% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/resource.json index 171bdc6..380b908 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/AnalogInROCRS485/Info/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "32d2c66700c3c6d6bd830508ada9e52adb353917c9858f252f8b776c88b661a7", + "lastModificationSignature": "30bbb720a5841eae980d5323445aa2d6f074b70329d36b75837145e576663dff", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" + "timestamp": "2026-05-05T22:29:48Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/thumbnail.png similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/thumbnail.png rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/thumbnail.png diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/view.json similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/view.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU/Control/view.json diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/resource.json deleted file mode 100644 index bc007bd..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "d35703b1693cb5bb53348421da259256a7c6d866cf463be75c3dfff9650a9273", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/thumbnail.png deleted file mode 100644 index 6884a62..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Body/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/resource.json deleted file mode 100644 index a5069be..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Config/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "9e5436b5763aa938ab81e6a1af50cb82af83aa3a2c8bbc29db5c9a2c6ff71b2e", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:23:35Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/resource.json deleted file mode 100644 index 4312556..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Control/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "ffcadbf00e279980c1cc124e0b7820db5ef144e4a48522ce7c2a1ad1574eba31", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-16T14:26:15Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/resource.json deleted file mode 100644 index 413033f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "1a04d9475053c7ab959b4642bd707a663e152b503943c16d98ece55f12b757d0", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/thumbnail.png deleted file mode 100644 index b20b550..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/view.json deleted file mode 100644 index 47ac10a..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/RTU01/Info/view.json +++ /dev/null @@ -1,563 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 1 VFD Speed", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 2 VFD Speed", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor 3 Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control Mode", - "options": [ - "Supply Air Cooling Only", - "Supply Air Tempering", - "Outdoor Temperature Control", - "Return Air Constant Volume Mode", - "Space Temp Constant Volume Mode", - "Space Temp w/ High OA Content", - "Single Zone VAV" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control Status", - "options": [ - "Unoccupied", - "Occupied", - "Override Mode", - "Holiday Unoccupied", - "Holiday Occupied", - "Force Occupied", - "Force Unoccupied", - "Remote Contact Occupied" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cooling Enabled", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.####", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Duct Static Pressure", - "numDecimals": 4, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Duct Static Pressure Control Signal", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Economizer Enabled Status", - "options": [ - "Disabled", - "Enabled" - ] - }, - { - "dataType": "Int8", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "HVAC Mode", - "options": [ - "Off", - "Vent Mode", - "Cooling Mode", - "Heating Mode", - "Ven RH Mode", - "Cooling RH Mode", - "Heating RH Mode", - "Warm UP Mode", - "Purge Mode", - "Defrost Mode", - "Cool Down Mode" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heating Enabled Status", - "options": [ - "Disabled", - "Enabled" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulating Heat Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Modulation Hot Gas Reheat Valve Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Enthalpy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.#", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Outside Air Temperature", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Quantity Of Requests", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 3, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Remote Forced Occupied Status", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Damper", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Enthalpy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Fan Speed", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Fan Status", - "options": [ - "Off", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Control Signal", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Pressure", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Return Plenum Pressure SP", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Running", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Dewpoint", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Humidity", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Compressor Runtime", - "numDecimals": 1, - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Fan Runtime", - "numDecimals": 1, - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/resource.json index c3ab74d..d12ec8f 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "046e292641deaa3c2cd88f78fb9d9ffeb5c4cb0815b173286391b5635524676e", + "lastModificationSignature": "1116d0dff2bb508f515dab507777679b2ae4c946b6684cab26d328b03bbbe26b", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:25Z" + "timestamp": "2026-05-05T22:45:07Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/thumbnail.png index 6884a62..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/view.json index ec1d064..66f32f9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/resource.json deleted file mode 100644 index 2f33303..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "2f215db9f0478bef0d20990b4745e8cfff286ab1eef6c19fa4894dcbeba0a004", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/thumbnail.png deleted file mode 100644 index 1a67a5b..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/view.json deleted file mode 100644 index 289ace3..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundancy/Info/view.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Application Matches", - "options": [ - "no Match", - "Match" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Primary PLC", - "options": [ - "A", - "B" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC A Fail", - "options": [ - "Not Failed", - "Failed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC A Online", - "options": [ - "Offline", - "Online" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC B Fail", - "options": [ - "Not Failed", - "Failed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "PLC B Online", - "options": [ - "Offline", - "Online" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1272/SATB1_GAL1272_PNL23/Hot Standby Status" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/resource.json new file mode 100644 index 0000000..59e0ce4 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "f814602bfdd6067261209aa37fdd397b8ecf2cf641b576319b709b0cf50d43ee", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T22:45:19Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/thumbnail.png new file mode 100644 index 0000000..5222ca7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/view.json similarity index 97% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/view.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/view.json index cacb3ce..bd5e081 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/resource.json new file mode 100644 index 0000000..031b535 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "ef03285ccca45478d6819601015ac9efaa44db0a1cd07437d86e15403b61ee0f", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T22:29:41Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/thumbnail.png similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/thumbnail.png rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/thumbnail.png diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/view.json similarity index 100% rename from Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Panel Red/Config/view.json rename to Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/Redundant-Panel/Config/view.json diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/resource.json index 8378b29..e47dc87 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a51661e228f2dcd8efaae82585a2ed12db5f64d8ea219ed95ba8511b1840418c", + "lastModificationSignature": "b5ba60e073fd7eb55cff343bea1cabb38acf963967d290fdf07225651e2ee0ef", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:24Z" + "timestamp": "2026-05-05T22:52:36Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/view.json index 28204df..c9a848a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/resource.json deleted file mode 100644 index 142ec06..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "ae43517bcde4e972530f776888c86033511a5c4079c8d18e2435015a43530f25", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/thumbnail.png deleted file mode 100644 index 9c6c59a..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/view.json deleted file mode 100644 index 93df9bb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-735/Info/view.json +++ /dev/null @@ -1,534 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Current Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Current N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Apparent Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Apparent Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Reactive Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Reactive Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Real Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 35, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Real Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Apparent Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Apparent Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Reactive Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Reactive Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Real Power Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Real Power Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 36, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy Delivered", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy Received", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CN", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_SES_1A/PQM_Main" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\ttag[\u0027visible\u0027] \u003d True\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - }, - "props.instances[22].visible": { - "binding": { - "config": { - "expression": "False" - }, - "type": "expr" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/resource.json index 5ec5fb7..b01a18b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "9e5be39cc68e705ccc4b4f433f535facca87cde2b37e16e3d0dbcddaa94f2ab3", + "lastModificationSignature": "6465eab0c5782150314d3a739fee66c22a64022b1e352b7320b4f00f2f0435cd", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:23Z" + "timestamp": "2026-05-05T22:52:33Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/thumbnail.png index 6884a62..6214565 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/view.json index dbe1577..1e34a51 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/resource.json deleted file mode 100644 index f3bd591..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "fa2182ec03787ae10b58e16705cf92d26311c731096ec379f6d9a2dcaad1fc23", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/thumbnail.png deleted file mode 100644 index 0785dfe..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/view.json deleted file mode 100644 index 5eb0198..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SEL-751/Info/view.json +++ /dev/null @@ -1,656 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 25, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 27, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 29, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Position", - "options": [ - "Racked In", - "Unracked" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Current G", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 21, - "instanceStyle": { - "classes": "" - }, - "name": "Current Imbalance", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Current N", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Current avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 31, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 33, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 35, - "instanceStyle": { - "classes": "" - }, - "name": "Demand Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "EXT Trips", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 34, - "instanceStyle": { - "classes": "" - }, - "name": "Energy In (VAR)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 36, - "instanceStyle": { - "classes": "" - }, - "name": "Energy In (W)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 38, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Out (VAR)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 40, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Out (W)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 42, - "instanceStyle": { - "classes": "" - }, - "name": "Energy Tot (VA)", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 37, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 39, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 41, - "instanceStyle": { - "classes": "" - }, - "name": "Peak Demand Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 26, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 28, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 30, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 32, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 44, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 46, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 48, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 50, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 43, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 45, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 47, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 49, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Relay Status", - "options": [ - "Enabled", - "Disabled" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Relay Trips", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average Line", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Average Phase", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CN", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 20, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage DC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Imbalance", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_SES_1A/SEL_Main" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\t\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/resource.json index 68461c6..4089981 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "23ddbd2a663267f9b55247b193d179b582989282e0b9dd28530fd72a312e8589", + "lastModificationSignature": "509e4d49dff0170bce22cafdeedcfe6da3aeb1f7905a243764726fd49dbd7e33", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:22Z" + "timestamp": "2026-05-05T22:52:35Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/view.json index b9c90f2..049d8d0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Body/view.json @@ -119,20 +119,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -391,8 +384,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/resource.json deleted file mode 100644 index a999b62..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "051fe0d87e8fd8c9b21cc8fc33aff0ee01fce549c95f0b90d0263b93d46a157d", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/thumbnail.png deleted file mode 100644 index 6e05f51..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/view.json deleted file mode 100644 index 8ad22bb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/STU/Info/view.json +++ /dev/null @@ -1,419 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Feedback", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "CHW Valve Command", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "CMD_Out", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Comm Percentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Discharge Air Temperature C", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": 0, - "instancePosition": 22, - "instanceStyle": { - "classes": "" - }, - "name": "EquipCounts", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Return Air Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 14, - "instanceStyle": { - "classes": "" - }, - "name": "Return Water Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 23, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 16, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Manual", - "Auto" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 18, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Not Running", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Speed Feedback", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1A", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1B", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1C", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1D", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1E", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 13, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1F", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 15, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1G", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 17, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1H", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 19, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Fan Status 1I", - "options": [ - "OFF", - "ON" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 12, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Water Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 24, - "instanceStyle": { - "classes": "" - }, - "name": "Unit Status", - "options": [ - "Unknown", - "Unit OFF - Normal", - "Controller Powered", - "Unit ON Fans only", - "Unit ON CW Cooling", - "Unit ON Alarm", - "Unit Failure", - "Unit Starting" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]GAL1261/SATB1_GAL1261_DH1_STU01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 821, - "width": 816 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/resource.json index 2342257..2193cf0 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "52a031cd8c08e9c771e448f04bf1874d47ab0e17d556a38ed6ed9ec5b05a9b00", + "lastModificationSignature": "902bee7f78e552ed6551e429e938d3b7a1be97479115f8b3e6a2d3cabea19cea", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:21Z" + "timestamp": "2026-05-05T22:52:44Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/thumbnail.png index 6884a62..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/view.json index e235c12..289e7ee 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -369,8 +362,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/resource.json deleted file mode 100644 index 30eff17..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "7c88b913139d5fa91653a565c9aed1bf62150eca057a92e826db6a6cdd556c49", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/thumbnail.png deleted file mode 100644 index 407a8c3..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/view.json deleted file mode 100644 index 4c494e4..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/SWBDPQM/Info/view.json +++ /dev/null @@ -1,395 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current Crest Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Current THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "K Factor C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Power Factor", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Reactive Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Energy", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Real Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "SPD Alarm", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Avg", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage Unbalance", - "numDecimals": 2, - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1244/SWBD/SATB1_ER1244_PQM1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/resource.json index e2caa11..a76d9f7 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a5666cefd7d355cefc1c94e65f8a4200e341f49d60a66ca945149ac03742a94d", + "lastModificationSignature": "7acc3753e7ecaf125130d1b5377aaa6995536e33a9cd3de8be1732828eb79e6c", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:35:20Z" + "timestamp": "2026-05-05T22:52:41Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/thumbnail.png index 6884a62..e03aea9 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/view.json index ad6feeb..38a6845 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/resource.json deleted file mode 100644 index 4470854..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "1b2b9618fcf0749bc7e6562b2b6c1fb6a914c3878f4b71ad39992ba90f235b4c", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/thumbnail.png deleted file mode 100644 index e724108..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/view.json deleted file mode 100644 index 5b753fb..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/TES/Info/view.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Depleting Elapsed Time", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Mode", - "options": [ - "Off", - "Normal", - "Depleted", - "Recharging" - ] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Recharge Fail Elapsed Time", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "System Not Ready", - "options": [ - "Ready", - "Not Ready" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_DH5_Thermal_System" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/resource.json index bcc0ef0..8a05a56 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "af500126add7a6de18f405929a07bc54b8290f5c83b9540e76dbb46b381aeec5", + "lastModificationSignature": "5e1bfe971ee93bb9223e1af792d4b057cf76f4a9762190ebbcfff887a5427c29", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:36:15Z" + "timestamp": "2026-05-05T22:52:44Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/thumbnail.png index 611b737..65bb65d 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/view.json index 3333454..9e7178c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Body/view.json @@ -122,20 +122,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -388,16 +381,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack1 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -421,16 +409,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack2 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -454,16 +437,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack3 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -487,16 +465,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack4 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" }, { @@ -520,16 +493,11 @@ ], "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info Rack5 Batt\u0027)" - }, - "type": "expr" - } } }, + "props": { + "path": "Library/Templates/Info" + }, "type": "ia.display.view" } ], @@ -560,7 +528,7 @@ "contentStyle": { "backgroundColor": "var(--container)" }, - "currentTabIndex": 2 + "currentTabIndex": 6 }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/resource.json deleted file mode 100644 index 469addf..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "8ac32e865e70fdf885f028c73019619b644b860928e15f9d519c9e68f9b2cb4e", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/thumbnail.png deleted file mode 100644 index d93749c..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/view.json deleted file mode 100644 index e9bc4c8..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UPS/Info/view.json +++ /dev/null @@ -1,779 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker1", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker2", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker3", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Breaker4", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Charge Percent", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Charging", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Discharge Current", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Float Charging", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Temperature Celsius", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery Voltage", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery number of Racks in service", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery runtime remaining Hours", - "options": [] - }, - { - "dataType": "Int8", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Battery runtime remaining minutes", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Amps C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Total Active Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Total Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Bypass Volts CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Amps C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Frequency", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts AB", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts BC", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Input Volts CA", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Main Input Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Maintenance Bypass Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Operating On Battery", - "options": [ - "False", - "True" - ] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Operation Modes", - "options": [ - "None", - "Normal Operation", - "Battery Operation", - "Battery Test", - "Requested Static Bypass", - "Forced Static Bypass", - "Maintenance Bypass", - "Off", - "Emergency Static Bypass", - "Static Bypass Standby", - "Inverter Standby", - "Power Saving Mode", - "Inverter SPoT Mode", - "ECO Mode", - "ECOnversion", - "Charger SPoT Mode", - "Battery Discharge SPoT Mode" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Amps C", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Breaker Status", - "options": [ - "Open", - "Closed" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Current THD C", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Frequency", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts AB", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts BC", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output Volts CA", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage A", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage B", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Output kVA percentage C", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input Active Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input Apparent Power", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Input kWh", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output Apparent Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output Percent Load", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output kW", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Total Output kWh", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "UPS Operating On Battery", - "options": [ - "False", - "True" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_SATB1_IO1_default]ER1242/SATB1_ER1242_UPS-1" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 1200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/resource.json index 5a0a983..0e186e9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "4cedd2437c815f857c03b70532d11ec64d18c4a3df5e2b368233cea79b1723b2", + "lastModificationSignature": "b0d7edb7193d373f520d35258828d724a8dee6f5645ade7cdc8766ace5ff1b6a", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T03:36:52Z" + "timestamp": "2026-05-05T22:52:46Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/thumbnail.png index c8f3ae8..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/view.json index c3cad46..c454ca1 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/resource.json deleted file mode 100644 index adb2ce0..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "aa23e6e50046e2b87963681716d4ee97ada7dac6901cd93bec323bee0e6da333", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-23T19:23:02Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/thumbnail.png deleted file mode 100644 index 1e67ee2..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/view.json deleted file mode 100644 index 8f76b9f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/UT/Info/view.json +++ /dev/null @@ -1,1634 +0,0 @@ -{ - "custom": { - "LA": "/Liquid Level Alarm", - "PRD": "/Pressure Relief Device Alarm", - "PSW": "/Pressure Switch", - "RRR_TRIP": "/Rapid Rise Relay Tripped", - "RRR_WRN": "/Rapid Rise Relay Warning", - "TAH": "/Liquid Temperature Alarm High", - "TAHH": "/Liquid Temperature Alarm High High", - "VFI01": "/Vacuum Fault Interrupter1 Tripped", - "VFI02": "/Vacuum Fault Interrupter2 Tripped", - "VSW": "/Vacuum Switch", - "ZSO01": "/Source 1 Switch", - "ZSO02": "/Source 2 Switch", - "inTagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_UT-M1" - }, - "params": { - "embedded": false, - "objectName": "DiscreteIn", - "tagPath": "[Ignition_Common_IO_Gtwy]Yard/SATB1_YARD_UT-M1" - }, - "propConfig": { - "custom.LA": { - "persistent": true - }, - "custom.PRD": { - "persistent": true - }, - "custom.PSW": { - "persistent": true - }, - "custom.RRR_TRIP": { - "persistent": true - }, - "custom.RRR_WRN": { - "persistent": true - }, - "custom.TAH": { - "persistent": true - }, - "custom.TAHH": { - "persistent": true - }, - "custom.VFI01": { - "persistent": true - }, - "custom.VFI02": { - "persistent": true - }, - "custom.VSW": { - "persistent": true - }, - "custom.ZSO01": { - "persistent": true - }, - "custom.ZSO02": { - "persistent": true - }, - "custom.inTagPath": { - "binding": { - "config": { - "path": "view.params.tagPath" - }, - "type": "property" - }, - "persistent": true - }, - "params.embedded": { - "paramDirection": "input", - "persistent": true - }, - "params.objectName": { - "paramDirection": "input", - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.ZSO01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.ZSO01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "150PX" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.ZSO01} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA01}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Source 1 Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.ZSO02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.ZSO02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "150PX" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.ZSO02} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA02}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Source 2 Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "150px" - }, - "props": { - "justify": "space-around", - "style": { - "gap": 5, - "padding": 5 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.LA\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.LA}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.LA} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA03}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Level Alarm", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.TAH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.JA04}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Temperature Alarm High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.TAHH\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.TAHH}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_4" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAHH} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.TAH}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Liquid Temperature Alarm High High", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VSW\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VSW}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_5" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VSW} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.PSW\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.PSW}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_6" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.PSW} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Pressure Switch", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.RRR_WRN\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.RRR_WRN}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_7" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.RRR_WRN} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Rapid Rise Relay Warning", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.RRR_TRIP\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.RRR_TRIP}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_8" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.RRR_TRIP} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Rapid Rise Realy Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.PRD\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.PRD}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_9" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.PRD} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Pressure Relief Device Alarm", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VFI01\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VFI01}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_10" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VFI01} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Fault Interrupter 1 Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": [ - { - "config": { - "script": "\ttagPath \u003d self.view.params.tagPath + self.view.custom.VFI02\n\tobjectName \u003d self.view.params.objectName\n\tif(self.view.params.embedded \u003d\u003d True):\n\t\tpageId \u003d self.page.props.pageId\n\t\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\t\t\n\t\tutils.nav.openEQPopup(objectName, tagPath)\n\telse:\n\t\tpayload\u003d{\n\t\t\t\u0027objectName\u0027: objectName,\n\t\t\t\u0027tagPath\u0027: tagPath,\n\t\t\t\u0027modal\u0027: False,\n\t\t\t\u0027resizable\u0027: True,\n\t\t\t\u0027draggable\u0027: True,\n\t\t\t\u0027position\u0027: {\n\t#\t\t\t\u0027left\u0027:\u00270\u0027,\n\t#\t\t\t\u0027top\u0027:\u00270\u0027,\n\t\t\t\u0027width\u0027: \u00271000px\u0027,\n\t\t\t\u0027height\u0027: \u0027800px\u0027\n\t\t\t}\n\t\t}\n\t\tutils.nav.eqPopupMsg(self, payload)\n\t\n\t" - }, - "enabled": false, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "sII9XbeP", - "modal": false, - "overlayDismiss": false, - "position": { - "height": 800, - "width": 1000 - }, - "positionType": "exact", - "resizable": true, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "objectName": "DiscreteIn", - "tagPath": "{view.custom.inTagPath}{view.custom.VFI02}" - }, - "viewPath": "Library/Templates/Base", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Label_11" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.VFI02} +\"/Alarms/Alarm Target Disagree\"" - }, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "var(--state-faulted)" - }, - { - "input": false, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "expression", - "tagPath": "{view.custom.inTagPath} + {view.custom.XA}+\"/VAL\"" - }, - "enabled": false, - "transforms": [ - { - "fallback": "purple", - "inputType": "scalar", - "mappings": [ - { - "input": false, - "output": "white" - }, - { - "input": true, - "output": "var(--state-standby)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 4, - "borderBottomRightRadius": 4, - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "classes": "containers/HoverOver", - "outlineStyle": "none", - "paddingBottom": 5, - "paddingLeft": 5, - "paddingRight": 5, - "paddingTop": 5 - }, - "text": "Vacuum Fault Interrupter 2 Tripped", - "textStyle": { - "color": "white", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "310px" - }, - "props": { - "justify": "space-around", - "style": { - "gap": 15, - "padding": 10 - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/resource.json index f969495..ae34b7c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "961db477f2c9aea7016b8f1aa17975e3c2ab0a45eeb83cf054b9413c5d3d80ae", + "lastModificationSignature": "2b167be40acb82cebec9f52914cb43f1f5bd2800c676351f2b9a61ccdfd7b1ca", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T05:19:24Z" + "timestamp": "2026-05-05T22:52:47Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/thumbnail.png index 9107efb..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/view.json index 024f2aa..aa82ba1 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 1 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/resource.json deleted file mode 100644 index 1938470..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "44a186be2a2fca16d0f9cdee52481a7ef36ec7bb2186fa3bc620f0a8470c8d66", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-05-02T03:36:47Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/thumbnail.png deleted file mode 100644 index 30c3f3b..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/view.json deleted file mode 100644 index 9394061..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAV/Info/view.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Air Flow", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Air Flow Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Control SP", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Cooling Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Damper Position", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Heat Demand", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Max allowed Temperature", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Min allowed Temperature", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Mode", - "options": [ - "No Mode", - "Occupancy", - "Unoccupied", - "Standby Mode" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Occupancy Sensor", - "options": [ - "No Movement", - "Activity" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Space Temperature", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Stage-1 Heater Sts", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Stage-2 Heater Sts", - "options": [ - "Off", - "On" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Supply Air Temperature", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]RM1109/SATB1_HS1_RM1109_VAV06" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/resource.json index fa20f86..518d00b 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "5ba52bb449664680a26ae5889605cb836ecc394598240c8ae687812026783405", + "lastModificationSignature": "59fdaaf762999ce40e62fd88a0b0680c00e997a586429a0364efac4994c4dd62", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T05:19:49Z" + "timestamp": "2026-05-05T22:49:07Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/thumbnail.png index 3bca727..843f181 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/view.json index ec32ae8..0afc10f 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Body/view.json @@ -112,20 +112,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -348,18 +341,6 @@ } }, "type": "ia.display.view" - }, - { - "meta": { - "name": "Info" - }, - "props": { - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" - }, - "path": "Library/Templates/VAVMaster/Info" - }, - "type": "ia.display.view" } ], "meta": { @@ -388,8 +369,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/resource.json deleted file mode 100644 index ca3e1c5..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "be5baf3596ed8d5d2f84baf11a1fc2e69d864ddff313c9cb310741b9a76462a5", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/thumbnail.png deleted file mode 100644 index 07b47fb..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/view.json deleted file mode 100644 index 09463d2..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VAVMaster/Info/view.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number of Occupied Zones", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Number of Unccupied Zones", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]VAV/SATB1_VAV_Master" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/resource.json index 97c75cc..d1035c8 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "73f69ec6062055ef897ae46041d89a1be11626bf6bcb342120a76122277f0a94", + "lastModificationSignature": "c1a89447d07d8e6385cf88733e79609ce73c0ef6a3cc3bd68075f5f8217b057f", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T05:20:15Z" + "timestamp": "2026-05-05T22:49:25Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/thumbnail.png index c8f3ae8..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/view.json index df0093e..bf6168e 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/resource.json deleted file mode 100644 index 225bc07..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "97edeb15730a3c9d55837f2dbc1f1b040175304bc2a01cf6ec51927b669bb7ad", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-05-02T02:11:51Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/thumbnail.png deleted file mode 100644 index 9ac65da..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/view.json deleted file mode 100644 index 5ab6e4c..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/VSD/Info/view.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "CommPercentage", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 4, - "instanceStyle": { - "classes": "" - }, - "name": "Current", - "options": [] - }, - { - "dataType": "Int4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 8, - "instanceStyle": { - "classes": "" - }, - "name": "Equipment Count", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 6, - "instanceStyle": { - "classes": "" - }, - "name": "Power", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 10, - "instanceStyle": { - "classes": "" - }, - "name": "Runtime", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 7, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 9, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Feedback", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 11, - "instanceStyle": { - "classes": "" - }, - "name": "Speed Feedback RPM", - "options": [] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 3, - "instanceStyle": { - "classes": "" - }, - "name": "Status HOA", - "options": [ - "Local", - "Remote" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 1, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 5, - "instanceStyle": { - "classes": "" - }, - "name": "Status Running", - "options": [ - "Not Running", - "Running" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 2, - "instanceStyle": { - "classes": "" - }, - "name": "Voltage", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_MPR1140_VFD01" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/resource.json index 70317eb..14831e5 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "509626bf56747be1e12f4a9230292b820a69080c2781c12d966d48fbb435fedf", + "lastModificationSignature": "a9d44add2a560a3a271e6c576f5b726eb3cc8b6af7b3df33a14c33d301d09164", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T05:20:37Z" + "timestamp": "2026-05-05T22:52:49Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/thumbnail.png index c8f3ae8..86bfbbc 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/view.json index 2e6a363..03fa361 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Body/view.json @@ -113,20 +113,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -385,8 +378,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/resource.json deleted file mode 100644 index 51e34d3..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "08365bcc6ef7a7a972404dcd832be2f722bea368f17c47c52a50f2658e6bfd60", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/thumbnail.png deleted file mode 100644 index 783d3a1..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/view.json deleted file mode 100644 index 46e99c1..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveC/Info/view.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Closed", - "options": [ - "Not Closed", - "Closed" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Open", - "options": [ - "Not Open", - "Open" - ] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Valve Position Command", - "options": [] - }, - { - "dataType": "Float4", - "displaySelection": 0, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Valve Position Feedback", - "options": [] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/SATB1_CHW_TES01_MOV50" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "33%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/resource.json index ec111b2..c8c32b9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "0c2aee440eeb19e03676ee52877411e5db7192d3ebee0c9ab36e3fd031dcbe7d", + "lastModificationSignature": "32a92f09f53573e2e228651a007581ee5bdef1d836344d728350f0955be6a944", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-02T05:21:00Z" + "timestamp": "2026-05-05T22:49:50Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/thumbnail.png index c8f3ae8..5222ca7 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/view.json index 1eb0c6f..a25ffb6 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Body/view.json @@ -108,20 +108,13 @@ }, "type": "property" } - }, - "props.path": { - "binding": { - "config": { - "expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)" - }, - "type": "expr" - } } }, "props": { "loading": { "order": "with-parent" - } + }, + "path": "Library/Templates/Info" }, "type": "ia.display.view" }, @@ -380,8 +373,7 @@ "props": { "contentStyle": { "backgroundColor": "var(--container)" - }, - "currentTabIndex": 2 + } }, "type": "ia.container.tab" } diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/resource.json deleted file mode 100644 index e83890f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModificationSignature": "79248ae20b1d778ab6847781dfa6dc36e4be5bf2136082c80d53212513b9ae56", - "lastModification": { - "actor": "Emmanuel", - "timestamp": "2026-04-22T23:22:26Z" - } - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/thumbnail.png deleted file mode 100644 index 021e4bb..0000000 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/thumbnail.png and /dev/null differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/view.json deleted file mode 100644 index 69b888d..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Templates/ValveM/Info/view.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "custom": { - "allTags": [ - { - "dataType": "Boolean", - "displaySelection": 1, - "format": "0.0", - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Available", - "options": [ - "Not Available", - "Available" - ] - }, - { - "dataType": "Boolean", - "displaySelection": 1, - "format": 0, - "instancePosition": 999, - "instanceStyle": { - "classes": "" - }, - "name": "Status Open-Closed", - "options": [ - "Closed", - "Open", - "Transitioning", - "Error" - ] - } - ] - }, - "params": { - "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_CH13_CV13" - }, - "propConfig": { - "custom.allTags": { - "binding": { - "config": { - "struct": { - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "enabled": false, - "transforms": [ - { - "code": "\toutput \u003d []\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \t#sortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n if dataType \u003d\u003d \u0027Boolean\u0027:\n \tdisplaySel \u003d 1\n else:\n \tdisplaySel \u003d 0\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": 999,\n \"name\": name,\n \"dataType\": dataType,\n \"displaySelection\": displaySel,\n \"format\": \"0.0\",\n \"options\": []\n }\n output.append(instance)\n\t# Return or process the sorted output\n\treturn output", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagPath": { - "paramDirection": "input", - "persistent": true - } - }, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "FlexRepeater", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "struct": { - "allTags": "{view.custom.allTags}", - "tagPath": "{view.params.tagPath}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\toutput_sorted \u003d sorted(output, key\u003dlambda item: item[\"instancePosition\"])\n\treturn output_sorted", - "type": "script" - } - ], - "type": "expr-struct" - } - } - }, - "props": { - "alignContent": "flex-start", - "elementPosition": { - "basis": "50%", - "grow": 0 - }, - "loading": { - "order": "with-parent" - }, - "path": "Library/Framework/Tag Info", - "style": { - "border": "1px solid var(--border)", - "gap": "10px 0", - "padding": "10px" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "containers/padded-container" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/resource.json index 8ea34a4..3c2fe3c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "bde9115db7cae7691442ff0d02b428400789005e4b3589a826bfea00f0acfc1b", + "lastModificationSignature": "09db190d555df3845af31b7a0c28d13bf358182071fb8dba85d7079a8f0e36ee", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-23T21:24:25Z" + "timestamp": "2026-05-05T15:39:27Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/thumbnail.png index fa964d7..d7f55ab 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/view.json index da3693e..1ec3f19 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Library/Widgets/HVAC/Wdg_Dewpoint/view.json @@ -1110,6 +1110,7 @@ "config": { "expression": "now()" }, + "enabled": false, "transforms": [ { "formatType": "datetime", @@ -1129,6 +1130,7 @@ "style": { "overflow": "visible" }, + "text": "10:26 AM", "textStyle": { "fontSize": 8 } @@ -1151,6 +1153,7 @@ "config": { "expression": "now()-7200000" }, + "enabled": false, "transforms": [ { "formatType": "datetime", @@ -1167,6 +1170,7 @@ } }, "props": { + "text": "8:26 AM", "textStyle": { "fontSize": 8 } @@ -1174,10 +1178,257 @@ "type": "ia.display.label" }, { + "custom": { + "data": [ + 48.93775767938427, + 48.93954980623839, + 48.94134193309251, + 48.94313405994663, + 48.94492618680076, + 48.94671831365488, + 48.948510440509, + 48.95030256736312, + 48.952094694217244, + 48.953826904296875, + 48.954286565869715, + 48.95473135660561, + 48.95517614734151, + 48.955620938077416, + 48.956065728813314, + 48.95651051954921, + 48.95695531028512, + 48.957400101021015, + 48.95784489175691, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.96246632260701, + 48.966522594831275, + 48.97057886705554, + 48.97463513927981, + 48.97869141150408, + 48.98261260986328, + 48.97307560214996, + 48.970306396484375, + 48.98039213175324, + 48.98632503353692, + 48.9922579353206, + 48.99799346923828, + 48.98232587224112, + 48.96766662597656, + 48.99042862892151, + 49.01172637939453, + 49.00887027115255, + 49.0061060279271, + 49.00334178470165, + 49.0005775414762, + 48.99781329825075, + 48.99504905502529, + 48.99228481179984, + 48.991455078125, + 48.99073126712821, + 48.99030545420727, + 48.98987964128632, + 48.98945382836538, + 48.98902801544443, + 48.98860220252349, + 48.98817638960254, + 48.9877505766816, + 48.987324763760654, + 48.98689895083971, + 48.986473137918765, + 48.98604732499782, + 48.985621512076875, + 48.98519569915593, + 48.984769886234986, + 48.984642028808594, + 48.98321690333607, + 48.982378462714486, + 48.9815400220929, + 48.980701581471315, + 48.97986314084974, + 48.97902470022815, + 48.97818625960657, + 48.97734781898499, + 48.9765093783634, + 48.97567093774182, + 48.97513961791992, + 48.98038324575191, + 48.98422107626643, + 48.98805890678095, + 48.99189673729547, + 48.99304962158203, + 49.01760207339745, + 49.06324768066406, + 49.072952395248414, + 49.075775146484375, + 49.162017822265625, + 49.18662643432617, + 49.22480392456055, + 49.33439254760742, + 49.34982358887006, + 49.36427307128906, + 49.4187126159668, + 49.44184112548828, + 49.41184616088867, + 49.43357675565803, + 49.44950555188255, + 49.46491241455078, + 49.44029998779297, + 49.502130354649005, + 49.547393061895804, + 49.56104278564453, + 49.56673410634496, + 49.56774139404297, + 49.60948944091797, + 49.63447910619303, + 49.652772258265934, + 49.65827178955078, + 49.648982267634075, + 49.6473388671875, + 49.67273498431588, + 49.68767944428825, + 49.70262390426062, + 49.71756836423299, + 49.72704315185547, + 49.71781476653944, + 49.711058993980124, + 49.70430322142081, + 49.70001983642578, + 49.745941162109375, + 49.75809344210157, + 49.769861685097325, + 49.78162992809309, + 49.79301452636719, + 49.808630525051086, + 49.81317901611328, + 49.83413907283911, + 49.84647408081868, + 49.85880908879825, + 49.87074279785156, + 49.885271069335936, + 49.89934158020019, + 49.90826416015625, + 49.88678741455078, + 49.91400348516351, + 49.93002047587251, + 49.94017791748047, + 49.943929290771486, + 49.94567108154297, + 49.96929489002284, + 49.98027801513672, + 49.9922582574515, + 50.00103499174805, + 50.009811726044596, + 50.01858846034114, + 50.02708053588867, + 50.05751037597656, + 50.043951386451724, + 50.034023636817935, + 50.031036376953125, + 50.05364536853735, + 50.06652069091797, + 50.10275988273621, + 50.11332321166992, + 50.121934487276356, + 50.12683868408203, + 50.145294189453125, + 50.132325863933566, + 50.12283012876511, + 50.119972229003906, + 50.137004795774764, + 50.14002227783203, + 50.15262167358399, + 50.15979766845703, + 50.19883644354051, + 50.21022033691406, + 50.216957381629946, + 50.22092275943756, + 50.22488813724518, + 50.2288535150528, + 50.23136901855469, + 50.25269383798683, + 50.268309171115895, + 50.28392450424496, + 50.29383087158203, + 50.31239318847656, + 50.32179212990103, + 50.33089727852973, + 50.340002427158446, + 50.34910757578715, + 50.358212724415864, + 50.37303924560547, + 50.35304260253906, + 50.390848921012875, + 50.418535040092465, + 50.42687225341797, + 50.427852677998885, + 50.42842978307732, + 50.429006888155754, + 50.4295654296875, + 50.45530620416005, + 50.47944259643555, + 50.476891190950184, + 50.47441929802072, + 50.47285079956055, + 50.50048065185547, + 50.512048176552, + 50.52289581298828, + 50.528133008651736, + 50.53320731895447, + 50.5382816292572, + 50.53981018066406, + 50.526655430376614, + 50.524322509765625, + 50.54762676143646, + 50.56090545654297, + 50.56719805994804, + 50.57329514999882, + 50.5793922400496, + 50.58548933010038, + 50.59158642015116, + 50.59748840332031, + 50.61288116455078, + 50.6273193359375, + 50.621309860229495, + 50.61567306518555, + 50.65073530124952, + 50.683624267578125, + 50.68858735597029, + 50.69339670548949, + 50.6982060550087, + 50.703015404527896, + 50.7078247540471, + 50.70927429199219, + 50.7228862356048, + 50.73064422607422, + 50.7369174785509, + 50.74299680065254, + 50.74907612275418, + 50.755155444855816, + 50.76123476695746, + 50.767120361328125, + 50.77496639402143, + 50.78257012127299, + 50.790173848524546, + 50.7977775757761, + 50.80260467529297, + 50.788244449297586, + 50.78156661987305, + 50.78156661987305 + ], + "max": 50.80260467529297, + "min": 48.93775767938427 + }, "meta": { "name": "Sparkline", "tooltip": { - "enabled": true + "enabled": true, + "text": "Max: 50.80260467529297 | Min: 48.93775767938427" } }, "position": { @@ -1192,6 +1443,7 @@ "config": { "path": "view.custom.data" }, + "enabled": false, "transforms": [ { "code": "\tdata \u003d []\n\tfor item in value:\n\t\tdata.append(item[\u0027dwpt\u0027])\n\treturn data", @@ -1206,6 +1458,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "transforms": [ { "expression": "max({value})", @@ -1220,6 +1473,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "transforms": [ { "expression": "min({value})", @@ -1238,6 +1492,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "expression": "\"Max: \" + {value}[\u0027max\u0027] + \" | \" + \"Min: \" + {value}[\u0027min\u0027]\r\n", @@ -1252,6 +1507,7 @@ "config": { "path": "view.custom.hiRange" }, + "enabled": false, "type": "property" } }, @@ -1260,6 +1516,7 @@ "config": { "path": "view.custom.hiRange" }, + "enabled": false, "type": "property" } }, @@ -1268,6 +1525,7 @@ "config": { "path": "this.custom.data" }, + "enabled": false, "type": "property" } }, @@ -1280,6 +1538,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tif value[\u0027max\u0027] \u003c value[\u0027range\u0027]:\n\t\treturn value[\u0027range\u0027]\n\telse:\n\t\treturn value[\u0027max\u0027]+0.7", @@ -1298,6 +1557,7 @@ }, "waitOnAll": true }, + "enabled": false, "transforms": [ { "code": "\tif value[\u0027min\u0027] \u003e value[\u0027range\u0027]:\n\t\treturn value[\u0027range\u0027]\n\telse:\n\t\treturn value[\u0027min\u0027]-0.7", @@ -1312,7 +1572,9 @@ "desired": { "fill": { "color": "var(--container)" - } + }, + "high": 65, + "low": 65 }, "marker": { "high": { @@ -1324,7 +1586,252 @@ } } }, - "range": {} + "points": [ + 48.93775767938427, + 48.93954980623839, + 48.94134193309251, + 48.94313405994663, + 48.94492618680076, + 48.94671831365488, + 48.948510440509, + 48.95030256736312, + 48.952094694217244, + 48.953826904296875, + 48.954286565869715, + 48.95473135660561, + 48.95517614734151, + 48.955620938077416, + 48.956065728813314, + 48.95651051954921, + 48.95695531028512, + 48.957400101021015, + 48.95784489175691, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.958274841308594, + 48.96246632260701, + 48.966522594831275, + 48.97057886705554, + 48.97463513927981, + 48.97869141150408, + 48.98261260986328, + 48.97307560214996, + 48.970306396484375, + 48.98039213175324, + 48.98632503353692, + 48.9922579353206, + 48.99799346923828, + 48.98232587224112, + 48.96766662597656, + 48.99042862892151, + 49.01172637939453, + 49.00887027115255, + 49.0061060279271, + 49.00334178470165, + 49.0005775414762, + 48.99781329825075, + 48.99504905502529, + 48.99228481179984, + 48.991455078125, + 48.99073126712821, + 48.99030545420727, + 48.98987964128632, + 48.98945382836538, + 48.98902801544443, + 48.98860220252349, + 48.98817638960254, + 48.9877505766816, + 48.987324763760654, + 48.98689895083971, + 48.986473137918765, + 48.98604732499782, + 48.985621512076875, + 48.98519569915593, + 48.984769886234986, + 48.984642028808594, + 48.98321690333607, + 48.982378462714486, + 48.9815400220929, + 48.980701581471315, + 48.97986314084974, + 48.97902470022815, + 48.97818625960657, + 48.97734781898499, + 48.9765093783634, + 48.97567093774182, + 48.97513961791992, + 48.98038324575191, + 48.98422107626643, + 48.98805890678095, + 48.99189673729547, + 48.99304962158203, + 49.01760207339745, + 49.06324768066406, + 49.072952395248414, + 49.075775146484375, + 49.162017822265625, + 49.18662643432617, + 49.22480392456055, + 49.33439254760742, + 49.34982358887006, + 49.36427307128906, + 49.4187126159668, + 49.44184112548828, + 49.41184616088867, + 49.43357675565803, + 49.44950555188255, + 49.46491241455078, + 49.44029998779297, + 49.502130354649005, + 49.547393061895804, + 49.56104278564453, + 49.56673410634496, + 49.56774139404297, + 49.60948944091797, + 49.63447910619303, + 49.652772258265934, + 49.65827178955078, + 49.648982267634075, + 49.6473388671875, + 49.67273498431588, + 49.68767944428825, + 49.70262390426062, + 49.71756836423299, + 49.72704315185547, + 49.71781476653944, + 49.711058993980124, + 49.70430322142081, + 49.70001983642578, + 49.745941162109375, + 49.75809344210157, + 49.769861685097325, + 49.78162992809309, + 49.79301452636719, + 49.808630525051086, + 49.81317901611328, + 49.83413907283911, + 49.84647408081868, + 49.85880908879825, + 49.87074279785156, + 49.885271069335936, + 49.89934158020019, + 49.90826416015625, + 49.88678741455078, + 49.91400348516351, + 49.93002047587251, + 49.94017791748047, + 49.943929290771486, + 49.94567108154297, + 49.96929489002284, + 49.98027801513672, + 49.9922582574515, + 50.00103499174805, + 50.009811726044596, + 50.01858846034114, + 50.02708053588867, + 50.05751037597656, + 50.043951386451724, + 50.034023636817935, + 50.031036376953125, + 50.05364536853735, + 50.06652069091797, + 50.10275988273621, + 50.11332321166992, + 50.121934487276356, + 50.12683868408203, + 50.145294189453125, + 50.132325863933566, + 50.12283012876511, + 50.119972229003906, + 50.137004795774764, + 50.14002227783203, + 50.15262167358399, + 50.15979766845703, + 50.19883644354051, + 50.21022033691406, + 50.216957381629946, + 50.22092275943756, + 50.22488813724518, + 50.2288535150528, + 50.23136901855469, + 50.25269383798683, + 50.268309171115895, + 50.28392450424496, + 50.29383087158203, + 50.31239318847656, + 50.32179212990103, + 50.33089727852973, + 50.340002427158446, + 50.34910757578715, + 50.358212724415864, + 50.37303924560547, + 50.35304260253906, + 50.390848921012875, + 50.418535040092465, + 50.42687225341797, + 50.427852677998885, + 50.42842978307732, + 50.429006888155754, + 50.4295654296875, + 50.45530620416005, + 50.47944259643555, + 50.476891190950184, + 50.47441929802072, + 50.47285079956055, + 50.50048065185547, + 50.512048176552, + 50.52289581298828, + 50.528133008651736, + 50.53320731895447, + 50.5382816292572, + 50.53981018066406, + 50.526655430376614, + 50.524322509765625, + 50.54762676143646, + 50.56090545654297, + 50.56719805994804, + 50.57329514999882, + 50.5793922400496, + 50.58548933010038, + 50.59158642015116, + 50.59748840332031, + 50.61288116455078, + 50.6273193359375, + 50.621309860229495, + 50.61567306518555, + 50.65073530124952, + 50.683624267578125, + 50.68858735597029, + 50.69339670548949, + 50.6982060550087, + 50.703015404527896, + 50.7078247540471, + 50.70927429199219, + 50.7228862356048, + 50.73064422607422, + 50.7369174785509, + 50.74299680065254, + 50.74907612275418, + 50.755155444855816, + 50.76123476695746, + 50.767120361328125, + 50.77496639402143, + 50.78257012127299, + 50.790173848524546, + 50.7977775757761, + 50.80260467529297, + 50.788244449297586, + 50.78156661987305, + 50.78156661987305 + ], + "range": { + "high": 65, + "low": 30 + } }, "type": "ia.display.sparkline" }, diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/resource.json index acb8761..0bb758c 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "8da1fc6b117ca5b8c546620c819dd4ee493182ceeb819120ffe4c940a1f50f0f", + "lastModificationSignature": "76531523a16a98be88374bfd65a18333df0a651e31cfe3bbdfda39037981ccc4", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-23T14:56:35Z" + "timestamp": "2026-05-05T21:00:26Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/thumbnail.png index 3aa50c1..98dc5de 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/view.json index 869932a..8bc55e7 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dashboards/Home/view.json @@ -178,7 +178,7 @@ "name": "Lower Section 02" }, "position": { - "basis": "250px", + "basis": "192px", "shrink": 0 }, "props": { @@ -261,9 +261,9 @@ "direction": "column", "style": { "backgroundColor": "var(--containerRoot)", - "gap": "10px", + "gap": "var(--space-md)", "overflow": "scroll", - "padding": "10px" + "padding": "var(--space-md)" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/resource.json index a111427..6ce3307 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a7733422b42900b5fb546513d07702d4cc82ad80e97c6e3068d686831ff46ca2", + "lastModificationSignature": "938ac01334062ab42355df06359849292058722ad34661ad924d1a6fcc7f5336", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-28T22:17:39Z" + "timestamp": "2026-05-05T21:00:35Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/thumbnail.png index c94e088..7f71751 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Datahall/DH101/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/resource.json new file mode 100644 index 0000000..9d1671d --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "97fb6152ee8c7633565f02b7e76627b29d60cf28a0bc2f2d179e2d3b05136cf2", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/thumbnail.png new file mode 100644 index 0000000..1e740a7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/view.json new file mode 100644 index 0000000..060a3e5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table/view.json @@ -0,0 +1,849 @@ +{ + "custom": { + "refreshTimerInterval": "60000" + }, + "params": { + "deviceType": "Battery", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/Battery" + }, + "propConfig": { + "custom.automaticUpdateEnabled": { + "binding": { + "config": { + "bidirectional": true, + "coalesce": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Enable Automatic Refresh" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.deviceData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Device Data" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.isLoaded": { + "binding": { + "config": { + "struct": { + "deviceData": "{view.custom.deviceData}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "True", + "type": "expression" + } + ], + "type": "expr-struct" + }, + "persistent": false + }, + "custom.lastUpdate": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Last Update" + }, + "transforms": [ + { + "expression": "//dateFormat({value}, \"MM/dd, hh:mm:ss aa\")\r\ndateFormat(dateArithmetic({value}, -7, \"hour\"), \"MM/dd, hh:mm:ss aa\")", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": false + }, + "custom.refreshTimerInterval": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.Refresh Timer Interval" + }, + "type": "tag" + }, + "persistent": true + }, + "custom.tableColumns": { + "binding": { + "config": { + "path": "view.custom.tagsToRead" + }, + "transforms": [ + { + "code": "\timport copy, time\n\t\n\t# Convert a string to camelCase. We do this because Ignition doesn\u0027t like\n\t# keys being spaced strings. (i.e \u0027Discharge Air Temperature\u0027)\n\tdef to_camel_case(text):\n\t words \u003d text.split()\n\t return words[0].lower() + \u0027\u0027.join(word.capitalize() for word in words[1:])\n\t \n\t# Define the default configuration for a column.\n\tbase_config \u003d {\n\t \"field\": \"\",\n\t \"visible\": True,\n\t \"editable\": False,\n\t \"render\": \"auto\",\n\t \"justify\": \"auto\",\n\t \"align\": \"center\",\n\t \"resizable\": True,\n\t \"sortable\": True,\n\t \"sort\": \"none\",\n\t \"filter\": {\n\t \"enabled\": False,\n\t \"visible\": \"on-hover\",\n\t \"string\": {\"condition\": \"\", \"value\": \"\"},\n\t \"number\": {\"condition\": \"\", \"value\": \"\"},\n\t \"boolean\": {\"condition\": \"\"},\n\t \"date\": {\"condition\": \"\", \"value\": \"\"}\n\t },\n\t \"viewPath\": \"\",\n\t \"viewParams\": {},\n\t \"boolean\": \"checkbox\",\n\t \"number\": \"value\",\n\t \"progressBar\": {\n\t \"max\": 100,\n\t \"min\": 0,\n\t \"bar\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"track\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"value\": {\n\t \"enabled\": True,\n\t \"format\": \"0,0.##\",\n\t \"justify\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t }\n\t },\n\t \"toggleSwitch\": {\n\t \"color\": {\"selected\": \"\", \"unselected\": \"\"}\n\t },\n\t \"nullFormat\": {\n\t \"includeNullStrings\": False,\n\t \"strict\": False,\n\t \"nullFormatValue\": \"\"\n\t },\n\t \"numberFormat\": \"0,0.##\",\n\t \"dateFormat\": \"MM/DD/YYYY\",\n\t \"width\": \"\",\n\t \"strictWidth\": False,\n\t \"header\": {\n\t \"title\": \"nothingBurger\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"footer\": {\n\t \"title\": \"\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"style\": {\"classes\": \"\"}\n\t}\n\t\n\tres \u003d []\n\tfor idx, column in enumerate(value): # Expects \u0027CHW Valve Command\u0027\n\t\tconfig \u003d copy.deepcopy(base_config)\n\t\t\n\t\t# Convert \"Meta/Building\" -\u003e \"Building\"\n\t\tif \u0027/\u0027 in column:\n\t\t\tcolumn \u003d column.split(\u0027/\u0027)[-1] \n\t\t\t\n\t\tif \u0027Parameters\u0027 in column:\n\t\t\tcolumn \u003d column[10:]\n\t\t\t\n\t\tif idx \u003d\u003d 0: # Set extra width to the device name column.\n\t\t\tconfig[\u0027width\u0027] \u003d 120\n\t\t\t\n\t\t# Update the column data and header to the tagToRead.\n\t\tconfig[\u0027field\u0027] \u003d to_camel_case(column) # \"CHW Valve Command\" -\u003e \"chwValveCommand\"\n\t\tconfig[\u0027header\u0027][\u0027title\u0027] \u003d column\n\t\tres.append(config)\n\n\treturn res\n\t", + "type": "script" + } + ], + "type": "property" + }, + "persistent": false + }, + "custom.tagsToRead": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Tags To Read" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.updateTableTimer": { + "binding": { + "config": { + "expression": "now(15000) // This updates the binding every fifteen seconds, which triggers the on-change script." + }, + "enabled": false, + "transforms": [ + { + "expression": "dateFormat({value}, \"h:mm:ss a\")", + "type": "expression" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.automaticUpdateEnabled:\n\t\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "persistent": false + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Location/Table.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "output", + "persistent": false + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1584, + "width": 1303 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Batteries", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "updateLabel" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.custom.lastUpdate" + }, + "transforms": [ + { + "expression": "concat(\"Last Update: \", {value})", + "type": "expression" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027flashTimerText\u0027, {})" + }, + "persistent": true + } + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "Last Update: 01/07, 10:24:52 AM", + "style": { + "alignContent": "center", + "classes": "labels/text-sm, Animation/fadeToBlack_B", + "cursor": "pointer", + "fontWeight": "400", + "opacity": 0.5, + "paddingRight": "0.25rem", + "textAlign": "right" + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "size": "large" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Device List", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "justify": "space-between", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "SmallHeader" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "BreakpointContainer" + }, + "position": { + "basis": "2.5rem", + "shrink": 0 + }, + "props": { + "breakpoint": 480 + }, + "type": "ia.container.breakpt" + }, + { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "props": { + "source": "Loading...", + "style": { + "classes": "Animation/loading labels/text-xl", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Progress" + }, + "props": { + "bar": { + "color": "#D5D5D5" + }, + "mode": "indeterminate", + "style": { + "height": "0.5rem", + "width": "12rem" + }, + "track": { + "color": "#AAAAAA" + } + }, + "type": "ia.display.progress" + } + ], + "meta": { + "name": "Loading" + }, + "position": { + "basis": "100%", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.isLoaded}" + }, + "type": "expr" + } + } + }, + "props": { + "alignItems": "center", + "direction": "column", + "justify": "center", + "style": { + "backgroundColor": "#d9d8d4", + "gap": "1rem" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onRowClick": { + "config": { + "script": "\ttagPath \u003d str(self.view.params.selectedDeviceTagpath)\n\t\n\t# Retrieve device name from tagpath, accounting for /1 and nested UDTs.\n\tnoTagProvider \u003d tagPath.partition(\u0027]\u0027)[2]\n\tstart, _, after \u003d noTagProvider.partition(\u0027PHXA2\u0027)\n\tmiddle, _, _ \u003d after.rpartition(\u0027/\u0027)\n\t\n\tif middle:\n\t\tsystem.perspective.sendMessage(\u0027updateFloorplanDeviceRoom\u0027, \u0027PHXA2%s\u0027 % middle)\n\telse:\n\t\tsystem.perspective.sendMessage(\u0027updateFloorplanDeviceRoom\u0027, \u0027PHXA2%s\u0027 % after)" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onRowDoubleClick": { + "config": { + "script": "\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + }, + "persistent": false + }, + "props.columns": { + "binding": { + "config": { + "path": "view.custom.tableColumns" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "path": "view.custom.deviceData" + }, + "type": "property" + } + } + }, + "props": { + "cells": { + "style": { + "cursor": "pointer" + } + }, + "emptyMessage": { + "noData": { + "text": "N/A" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "rows": { + "striped": { + "color": { + "even": "#D5D5D5" + } + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Location" + }, + "position": { + "basis": "33%", + "grow": 1 + }, + "props": { + "alignContent": "space-between", + "direction": "column", + "justify": "space-around", + "style": { + "gap": "0.25rem", + "height": "100%", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "updateTableData", + "pageScope": true, + "script": "\t# If the data hasn\u0027t loaded, don\u0027t refresh.\n\tif not self.view.custom.isLoaded:\n\t\treturn\n\t\n\t# Write to the manual refresh command and refresh the time.\n\tsystem.tag.writeBlocking(self.view.params.tagPath + \u0027/Config/Manual Refresh Command\u0027, True)\n#\tcurrentTime \u003d \u0027Last Update: *{}*\u0027.format(system.date.format(system.date.now(), \"hh:mm:ss aa\"))\n#\tself.getChild(\"Location\").getChild(\"FlexContainer\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.source \u003d currentTime\n\t\n#\t\t\n#\ttry:\n#\t\tself.view.refreshBinding(\u0027custom.deviceData\u0027)\n#\texcept:\n#\t\tsystem.perspective.print(\u0027Device data binding disabled.\u0027)", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "flashTimerText", + "pageScope": true, + "script": "\t\"\"\"\n\t\tHelper function called by the \u0027Last Update:\u0027 text to flash when it updates.\n\t\"\"\"\n\tclasses \u003d self.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes\n\t\n\t# Refresh the animation by toggling between two identical classes.\n\tif \u0027fadeToBlack_A\u0027 in classes:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_B\"\n\telse:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_A\"", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/resource.json new file mode 100644 index 0000000..95c92f7 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "93a462060d71bbeb7af9cc54f28e5a595e2b2f9c5014eb391cac1bcdece8400b", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/thumbnail.png new file mode 100644 index 0000000..0a31748 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/view.json new file mode 100644 index 0000000..a400ccf --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Body/view.json @@ -0,0 +1,345 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Status", + "Config", + "Trend", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 699, + "width": 703 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Status" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Info\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Trend" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.selectedPens": { + "binding": { + "config": { + "path": "view.custom.trendConfig.selectedPens" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Trends\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Config" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Config\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Meta" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Meta\u0027)" + }, + "type": "expr" + } + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Wiki" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Templates/Framework/Tag Notes/View Notes" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/resource.json new file mode 100644 index 0000000..0360a55 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "89ee27283b8d911aa6bfed4cbbd841193da2c4a13426daf05d24bc7d390d4255", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/thumbnail.png new file mode 100644 index 0000000..2580386 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/view.json new file mode 100644 index 0000000..fa6fe82 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard Table/view.json @@ -0,0 +1,97 @@ +{ + "custom": {}, + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 636, + "width": 1378 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table_0" + }, + "position": { + "height": 575, + "width": 1331, + "y": 39.5 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "struct": { + "timer": "now(10000)" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\n from collections import OrderedDict\n\n \"\"\"\n Populates a Perspective table with ordered columns.\n Ensures \u0027Device\u0027 column appears first using OrderedDict.\n \"\"\"\n\n # Hardcoded base path and device list\n basePath \u003d value.get(\"basePath\")\n devices1 \u003d {\n \t\"VM_HS1_HS2\": \"[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1\",\n \"VM_R1_R3\": \"[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1\",\n \"VM_R2_R4\": \"[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2\",\n \"VM_P1_1_P1_2\": \"[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2\",\n \"VM_P1_3\": \"[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3\",\n #\"VM_P2_1_P2_2\": \"[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2\",\n #\"VM_P2_3\": \"[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3\",\n #\"VM_P3_1_P3_2\": \"[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2\",\n #\"VM_P3_3\": \"[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3\",\n \"VM_P4_1_P4_2\": \"[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2\",\n \"VM_P4_3_P4_4\":\"[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4\",\n #\"VM_P5_1_P5_2\": \"[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2\",\n #\"VM_P5_3\": \"[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3\",\n #\"VM_P6_1_P6_2\": \"[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2\",\n #\"VM_P6_3_P6_4\": \"[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4\"\n }\n devices \u003d OrderedDict(sorted(devices1.items()))\n # Define columns and corresponding tag suffixes\n tagSuffixes \u003d {\n \"Number of Strings in System\": \"Number of Strings in System\",\n \"Avg Battery Current\": \"Avg Battery Current\",\n \"Avg Battery Temperature\": \"Avg Battery Temperature\",\n \"Avg Battery Voltage\": \"Avg Battery Voltage\",\n \"Max Battery Current\": \"Max Battery Current\",\n \"Max Battery Temperature\": \"Max Battery Temperature\",\n \"Max Battery Voltage\": \"Max Battery Voltage\",\n \"Min Battery Current\": \"Min Battery Current\",\n \"Min Battery Temperature\": \"Min Battery Temperature\",\n \"Min Battery Voltage\": \"Min Battery Voltage\"\n }\n\n # Build tag paths\n tagPaths \u003d []\n for device in devices.values():\n for suffix in tagSuffixes.values():\n tagPaths.append(device + \"/\" + suffix)\n\n # Read all tag values\n results \u003d system.tag.readBlocking(tagPaths)\n\n # Build table data with ordered columns\n data \u003d []\n i \u003d 0\n for device in devices.keys():\n row \u003d OrderedDict()\n row[\"Device\"] \u003d device\n for columnName in tagSuffixes.keys():\n row[columnName] \u003d results[i].value\n i +\u003d 1\n data.append(row)\n\n return data", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "type": "ia.display.table" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Virtual Machines", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "height": 42, + "width": 159, + "x": 17 + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -165, + "y": -31 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/resource.json new file mode 100644 index 0000000..87b5e67 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "d6fd78e7c6fef5e84cbd2de73d29d92a33c12ec50764e498514a02d2525986a8", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/thumbnail.png new file mode 100644 index 0000000..e2cc99b Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/view.json new file mode 100644 index 0000000..aa161e1 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Dashboard/view.json @@ -0,0 +1,129 @@ +{ + "custom": { + "temp": [ + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Min", + "path": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Max", + "path": "[PHXA2_IG_DH01]DH1/DH Manager/Status DH/Cold Aisle Temp Max" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/Avg Battery Temperature" + }, + { + "aggregate": "Average", + "alias": "Avg", + "path": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/Avg Battery Temperature" + } + ] + }, + "params": { + "pageId": "Pages/Dev/G_Misc/System Legend" + }, + "propConfig": { + "custom.temp": { + "persistent": true + }, + "custom.temp.HS1_2.path": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/Avg Battery Temperature" + }, + "type": "tag" + } + }, + "params.pageId": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1770, + "width": 1898 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "DynamicDeviceListTest" + }, + "position": { + "height": 586, + "width": 1213 + }, + "props": { + "params": { + "deviceType": "VM", + "selectedDeviceTagpath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/VM" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Battery Table" + }, + "position": { + "height": 1603, + "width": 1215, + "y": 588 + }, + "props": { + "params": { + "deviceType": "Battery", + "selectedDeviceTagpath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/Battery" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Battery Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -203, + "y": -120 + }, + "props": { + "aspectRatio": "3050:2100" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "eqPopupMsg", + "pageScope": true, + "script": "\tsystem.perspective.print(\u0027{}\u0027.format(payload))\n\tutils.nav.eqPopup(self, payload)", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/resource.json new file mode 100644 index 0000000..bfac989 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "69b2fa9d58346b3839e8613260a6db35f8a72657a4cc21f4b05aed01ea52f6b8", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:56:52Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/thumbnail.png new file mode 100644 index 0000000..9944d7d Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/view.json new file mode 100644 index 0000000..b1a1223 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template/view.json @@ -0,0 +1,95 @@ +{ + "custom": {}, + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P3_1/3_1/Strings/1" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 981, + "width": 1048 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "String" + }, + "position": { + "height": 236, + "width": 1032 + }, + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "deviceDataset": "[default]Device Datasets/String/Info", + "objectName": "String" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/String" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "height": 1470, + "width": 1072, + "x": 39, + "y": 236 + }, + "propConfig": { + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "deviceType": "Jar", + "selectedDeviceTagpath": "value" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "eqPopupMsg", + "pageScope": true, + "script": "\tsystem.perspective.print(\u0027{}\u0027.format(payload))\n\tutils.nav.eqPopup(self, payload)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/resource.json new file mode 100644 index 0000000..c995c18 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "a6106f0cf17ef9a03a56f9f33ede036ea31f840d435ccc9e68d111fa606ef6f9", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/thumbnail.png new file mode 100644 index 0000000..0677e55 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/view.json new file mode 100644 index 0000000..363984d --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/String/view.json @@ -0,0 +1,96 @@ +{ + "custom": {}, + "params": { + "deviceDataset": "[default]Device Datasets/String/Info", + "objectName": "String", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/1" + }, + "propConfig": { + "params.deviceDataset": { + "paramDirection": "input", + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 479 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "98.7%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "transforms": [ + { + "code": "\tdeviceDataset \u003d system.tag.readBlocking(self.view.params.deviceDataset)[0].value\n\treturn Global.DeviceDatasets.getTagInstances(deviceDataset\u003ddeviceDataset, tagPath\u003dvalue)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\t\n\tpageId \u003d self.page.props.pageId\n#\tsystem.perspective.print(\u0027pageId: {}\u0027.format(pageId))\n\t\n\ttagPath \u003d self.view.params.tagPath\n\tobjectName \u003d self.view.params.objectName\n\tutils.nav.openEQPopup(objectName, tagPath)\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/resource.json new file mode 100644 index 0000000..779e003 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "c0f4966c0d4edec71ce5ffef8b4027b4dbbd64ca9e0adde07aade135eb49e8dc", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:13:17Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/thumbnail.png new file mode 100644 index 0000000..735b3f5 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/view.json new file mode 100644 index 0000000..513b11c --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/Table/view.json @@ -0,0 +1,174 @@ +{ + "custom": { + "batt": "1_1", + "provider": "PHXA2_IG_DH01", + "room": "P1_1_P1_2", + "string": "1" + }, + "params": { + "deviceType": "Jar", + "selectedDeviceTagpath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1/Jars/", + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1" + }, + "propConfig": { + "custom.area": { + "binding": { + "config": { + "expression": "split(\r\n replace({view.params.tagPath}, \r\n substring({view.params.tagPath}, 0, indexOf({view.params.tagPath}, \"]\") + 1), \r\n \"\"\r\n ), \r\n \"/\"\r\n)[0]\r\n" + }, + "type": "expr" + } + }, + "custom.batt": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Remove provider (e.g., [PHXA2_IG_COMN])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Split the rest of the tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Check if we have at least 3 parts\n if len(parts) \u003e\u003d 3:\n return parts[2] # This is the 3rd segment (index 2)\n else:\n return \"\" # Fallback if structure is too short", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.provider": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Make sure it starts with a provider in square brackets\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n return tagPath[1:closing_index] # Extract between [ and ]\n \n # If no provider is found, return empty string or fallback\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.room": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Step 1: Remove provider (e.g., [PHXA2_IG_DH01])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Step 2: Split the remaining tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Step 3: Get the subfolder part (usually at index 1)\n if len(parts) \u003e\u003d 2:\n subfolder \u003d parts[1]\n\n # Step 4: Find \"VM_\" and return everything after it\n vm_index \u003d subfolder.find(\"VM_\")\n if vm_index !\u003d -1:\n return subfolder[vm_index + 3:] # +3 to skip over \"VM_\"\n\n # Fallback if structure doesn\u0027t match\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "expression": "{view.params.tagPath}" + }, + "transforms": [ + { + "code": "\n tagPath \u003d value\n\n # Remove the tag provider (e.g., [PHXA2_IG_COMN])\n if tagPath.startswith(\u0027[\u0027):\n closing_index \u003d tagPath.find(\u0027]\u0027)\n if closing_index !\u003d -1:\n tagPath \u003d tagPath[closing_index + 1:]\n\n # Split the remaining tag path by \"/\"\n parts \u003d tagPath.split(\u0027/\u0027)\n\n # Return the last segment, if it exists\n if parts:\n return parts[-1]\n else:\n return \"\"", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Table_0.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "//{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]\r\n\u0027[\u0027+{view.custom.provider}+\u0027]\u0027+{view.custom.area}+\u0027/PHXA2_UPS_BATT_VM_\u0027+{view.custom.room}+\u0027/\u0027+{view.custom.batt}+\u0027/Strings/\u0027+{view.custom.string}+\u0027/Jars/\u0027+({/root/Table_0.props.selection.selectedRow}+1)", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1357, + "width": 1024 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table_0" + }, + "position": { + "height": 1287, + "width": 965, + "y": -0.5 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "struct": { + "key": "{view.params.tagPath}", + "path": "{view.custom.area}+\"/PHXA2_UPS_BATT_VM_\"+{view.custom.room}+\"/\"+{view.custom.batt}+\"/Strings/\"+{view.custom.string}+\"/Jars*\"", + "provider": "{view.custom.provider}", + "timer": "now(10000)" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\t\n\n\tprovider \u003d value[\u0027provider\u0027]\n\tlimit \u003d 1000\n\t\n\tquery \u003d {\n\t \"options\": {\n\t \"includeUdtMembers\": True,\n\t \"includeUdtDefinitions\": False\n\t },\n\t \"condition\": {\n\t \"path\": value[\u0027path\u0027],\n\t \"tagType\": \"AtomicTag\",\n\t \"attributes\": {\n\t \"values\": [],\n\t \"requireAll\": True\n\t },\n\t \"valueSource\": \"opc\"\n\t },\n\t \"returnProperties\": [\n\t \"InstanceName\",\n\t \"name\"\n\t ]\n\t}\n\t\n\t# Limited to 100 rows. Use continuationPoint functionality to continue from last result, \n\t# or remove limit for full results.\n\tresults \u003d system.tag.query(provider, query, limit)\n\tarr \u003d []\n\t\n\td \u003d {}\n\t\n\tfor result in results:\n\t\t#print result[\u0027InstanceName\u0027] + \u0027/\u0027 + result[\u0027name\u0027] + \u0027/\u0027 + str(result[\u0027value\u0027].value)\n\t\t\n\t\t\n\t\t#js \u003d {\n\t #\t\"Jar\": result[\u0027InstanceName\u0027],\n\t #\t\"Voltage\": \"United States\",\n\t #\t\"Temperature\": 77271,\n\t #\t\"Ohmic Value\": \u0027C\u0027\n\t #}\n\t index \u003d int(result[\u0027InstanceName\u0027])\n\t if index not in d:\n\t \n\t\t\td[index] \u003d {}\n\t\t\td[index][\u0027Jar ID\u0027] \u003d index\n\t\t\t\n\t \n\t if result[\u0027name\u0027] \u003d\u003d \u0027Voltage\u0027:\n\t \td[index][\u0027Voltage\u0027] \u003d result[\u0027value\u0027].value\n\t elif result[\u0027name\u0027] \u003d\u003d \u0027Temperature\u0027:\n\t \td[index][\u0027Temperature\u0027] \u003d result[\u0027value\u0027].value\n\t elif result[\u0027name\u0027] \u003d\u003d \u0027Ohmic Value\u0027:\n\t \td[index][\u0027Ohmic Value\u0027] \u003d result[\u0027value\u0027].value\n\t\t\n\t#print d\n\t\n\tfor x in d:\n\t\t#print d[x]\n\t\tarr.append(d[x])\n\t\t\n\treturn arr", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "pager": { + "activeOption": 50 + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": -165, + "y": -31 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/resource.json new file mode 100644 index 0000000..a2d93f0 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "82894db42191125e2d4e41bb13fbf132089c86c0f134c1da86cb8bd7d9a0f437", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/thumbnail.png new file mode 100644 index 0000000..46d6a80 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/view.json new file mode 100644 index 0000000..c03ba1b --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM Table/view.json @@ -0,0 +1,841 @@ +{ + "custom": { + "refreshTimerInterval": "60000" + }, + "params": { + "deviceType": "VM", + "tagPath": "[PHXA2_IG_COMN]System/Device Lists/VM" + }, + "propConfig": { + "custom.automaticUpdateEnabled": { + "binding": { + "config": { + "bidirectional": true, + "coalesce": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Enable Automatic Refresh" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.deviceData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Device Data" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.isLoaded": { + "binding": { + "config": { + "struct": { + "deviceData": "{view.custom.deviceData}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "True", + "type": "expression" + } + ], + "type": "expr-struct" + }, + "persistent": false + }, + "custom.lastUpdate": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Last Update" + }, + "transforms": [ + { + "expression": "//dateFormat({value}, \"MM/dd, hh:mm:ss aa\")\r\ndateFormat(dateArithmetic({value}, -7, \"hour\"), \"MM/dd, hh:mm:ss aa\")", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": false + }, + "custom.refreshTimerInterval": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.Refresh Timer Interval" + }, + "type": "tag" + }, + "persistent": true + }, + "custom.tableColumns": { + "binding": { + "config": { + "path": "view.custom.tagsToRead" + }, + "transforms": [ + { + "code": "\timport copy, time\n\t\n\t# Convert a string to camelCase. We do this because Ignition doesn\u0027t like\n\t# keys being spaced strings. (i.e \u0027Discharge Air Temperature\u0027)\n\tdef to_camel_case(text):\n\t words \u003d text.split()\n\t return words[0].lower() + \u0027\u0027.join(word.capitalize() for word in words[1:])\n\t \n\t# Define the default configuration for a column.\n\tbase_config \u003d {\n\t \"field\": \"\",\n\t \"visible\": True,\n\t \"editable\": False,\n\t \"render\": \"auto\",\n\t \"justify\": \"auto\",\n\t \"align\": \"center\",\n\t \"resizable\": True,\n\t \"sortable\": True,\n\t \"sort\": \"none\",\n\t \"filter\": {\n\t \"enabled\": False,\n\t \"visible\": \"on-hover\",\n\t \"string\": {\"condition\": \"\", \"value\": \"\"},\n\t \"number\": {\"condition\": \"\", \"value\": \"\"},\n\t \"boolean\": {\"condition\": \"\"},\n\t \"date\": {\"condition\": \"\", \"value\": \"\"}\n\t },\n\t \"viewPath\": \"\",\n\t \"viewParams\": {},\n\t \"boolean\": \"checkbox\",\n\t \"number\": \"value\",\n\t \"progressBar\": {\n\t \"max\": 100,\n\t \"min\": 0,\n\t \"bar\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"track\": {\"color\": \"\", \"style\": {\"classes\": \"\"}},\n\t \"value\": {\n\t \"enabled\": True,\n\t \"format\": \"0,0.##\",\n\t \"justify\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t }\n\t },\n\t \"toggleSwitch\": {\n\t \"color\": {\"selected\": \"\", \"unselected\": \"\"}\n\t },\n\t \"nullFormat\": {\n\t \"includeNullStrings\": False,\n\t \"strict\": False,\n\t \"nullFormatValue\": \"\"\n\t },\n\t \"numberFormat\": \"0,0.##\",\n\t \"dateFormat\": \"MM/DD/YYYY\",\n\t \"width\": \"\",\n\t \"strictWidth\": False,\n\t \"header\": {\n\t \"title\": \"nothingBurger\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"footer\": {\n\t \"title\": \"\",\n\t \"justify\": \"left\",\n\t \"align\": \"center\",\n\t \"style\": {\"classes\": \"\"}\n\t },\n\t \"style\": {\"classes\": \"\"}\n\t}\n\t\n\tres \u003d []\n\tfor idx, column in enumerate(value): # Expects \u0027CHW Valve Command\u0027\n\t\tconfig \u003d copy.deepcopy(base_config)\n\t\t\n\t\t# Convert \"Meta/Building\" -\u003e \"Building\"\n\t\tif \u0027/\u0027 in column:\n\t\t\tcolumn \u003d column.split(\u0027/\u0027)[-1] \n\t\t\t\n\t\tif \u0027Parameters\u0027 in column:\n\t\t\tcolumn \u003d column[10:]\n\t\t\t\n\t\tif idx \u003d\u003d 0: # Set extra width to the device name column.\n\t\t\tconfig[\u0027width\u0027] \u003d 120\n\t\t\t\n\t\t# Update the column data and header to the tagToRead.\n\t\tconfig[\u0027field\u0027] \u003d to_camel_case(column) # \"CHW Valve Command\" -\u003e \"chwValveCommand\"\n\t\tconfig[\u0027header\u0027][\u0027title\u0027] \u003d column\n\t\tres.append(config)\n\n\treturn res\n\t", + "type": "script" + } + ], + "type": "property" + }, + "persistent": false + }, + "custom.tagsToRead": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Config/Tags To Read" + }, + "type": "tag" + }, + "persistent": false + }, + "custom.updateTableTimer": { + "binding": { + "config": { + "expression": "now(15000) // This updates the binding every fifteen seconds, which triggers the on-change script." + }, + "enabled": false, + "transforms": [ + { + "expression": "dateFormat({value}, \"h:mm:ss a\")", + "type": "expression" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.automaticUpdateEnabled:\n\t\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "persistent": false + }, + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.selectedDeviceTagpath": { + "binding": { + "config": { + "path": "/root/Location/Table.props.selection.selectedRow" + }, + "transforms": [ + { + "expression": "{view.custom.deviceData}[{value}][\u0027value\u0027][\u0027tagPath\u0027]", + "type": "expression" + } + ], + "type": "property" + }, + "paramDirection": "output", + "persistent": false + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 608, + "width": 1214 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Virtual Machines", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "updateLabel" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.custom.lastUpdate" + }, + "transforms": [ + { + "expression": "concat(\"Last Update: \", {value})", + "type": "expression" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027flashTimerText\u0027, {})" + }, + "persistent": true + } + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "Last Update: 12/03, 02:19:41 PM", + "style": { + "alignContent": "center", + "classes": "labels/text-sm, Animation/fadeToBlack_B", + "cursor": "pointer", + "fontWeight": "400", + "opacity": 0.5, + "paddingRight": "0.25rem", + "textAlign": "right" + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "LargeHeader" + }, + "position": { + "size": "large" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Markdown_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "source": "Device List", + "style": { + "alignSelf": "center", + "classes": "labels/text-xl" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.view.custom.automaticUpdateEnabled \u003d not self.view.custom.automaticUpdateEnabled" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "top", + "style": { + "classes": "labels/text-md" + } + } + }, + "position": { + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "struct": { + "automaticUpdateInterval": "numberFormat(toInt({view.custom.refreshTimerInterval}) / 1000, \u00270.#\u0027)", + "automaticUpdatesEnabled": "{view.custom.automaticUpdateEnabled}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "expression": "if({value}[\u0027automaticUpdatesEnabled\u0027],\r\n\tstringFormat(\"Automatic updates are currently enabled. \\nThe table will update every %s seconds.\", {value}[\u0027automaticUpdateInterval\u0027]),\r\n\t\"Automatic updates are currently disabled. Click to enable them.\"\r\n)", + "type": "expression" + } + ], + "type": "expr-struct" + } + }, + "props.color": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00D9D9" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.automaticUpdateEnabled" + }, + "transforms": [ + { + "expression": "if({value}, \u0027rotate\u0027, \u0027\u0027)", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/autorenew", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "IconContainer" + }, + "position": { + "basis": "1.5rem", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Animation/pulse containers/HoverOver", + "marginLeft": "0.5rem", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.sendMessage(\u0027updateTableData\u0027, {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "6rem", + "shrink": 0 + }, + "props": { + "image": { + "height": 0, + "width": 0 + }, + "style": { + "backgroundColor": "--tagvalue-color", + "color": "white" + }, + "text": "Refresh Data", + "textStyle": { + "color": "white" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "center", + "justify": "space-between", + "style": { + "gap": "0.5rem", + "overflow": "hidden", + "padding": "1rem 0" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "SmallHeader" + }, + "props": { + "alignItems": "center", + "style": { + "overflow": "hidden", + "paddingRight": "0.5rem", + "width": "100%" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "BreakpointContainer" + }, + "position": { + "basis": "2.5rem", + "shrink": 0 + }, + "props": { + "breakpoint": 480 + }, + "type": "ia.container.breakpt" + }, + { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "props": { + "source": "Loading...", + "style": { + "classes": "Animation/loading labels/text-xl", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Progress" + }, + "props": { + "bar": { + "color": "#D5D5D5" + }, + "mode": "indeterminate", + "style": { + "height": "0.5rem", + "width": "12rem" + }, + "track": { + "color": "#AAAAAA" + } + }, + "type": "ia.display.progress" + } + ], + "meta": { + "name": "Loading" + }, + "position": { + "basis": "100%", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.isLoaded}" + }, + "type": "expr" + } + } + }, + "props": { + "alignItems": "center", + "direction": "column", + "justify": "center", + "style": { + "backgroundColor": "#d9d8d4", + "gap": "1rem" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "#\tsystem.perspective.print(\u0027attempting to open\u0027)\n\tutils.nav.openEQPopup(self.view.params.deviceType, self.view.params.selectedDeviceTagpath)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.isLoaded" + }, + "type": "property" + }, + "persistent": false + }, + "props.columns": { + "binding": { + "config": { + "path": "view.custom.tableColumns" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "path": "view.custom.deviceData" + }, + "type": "property" + } + } + }, + "props": { + "cells": { + "style": { + "cursor": "pointer" + } + }, + "emptyMessage": { + "noData": { + "text": "N/A" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "rows": { + "striped": { + "color": { + "even": "#D5D5D5" + } + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Location" + }, + "position": { + "basis": "33%", + "grow": 1 + }, + "props": { + "alignContent": "space-between", + "direction": "column", + "justify": "space-around", + "style": { + "gap": "0.25rem", + "height": "100%", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "updateTableData", + "pageScope": true, + "script": "\t# If the data hasn\u0027t loaded, don\u0027t refresh.\n\tif not self.view.custom.isLoaded:\n\t\treturn\n\t\n\t# Write to the manual refresh command and refresh the time.\n\tsystem.tag.writeBlocking(self.view.params.tagPath + \u0027/Config/Manual Refresh Command\u0027, True)\n#\tcurrentTime \u003d \u0027Last Update: *{}*\u0027.format(system.date.format(system.date.now(), \"hh:mm:ss aa\"))\n#\tself.getChild(\"Location\").getChild(\"FlexContainer\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.source \u003d currentTime\n\t\n#\t\t\n#\ttry:\n#\t\tself.view.refreshBinding(\u0027custom.deviceData\u0027)\n#\texcept:\n#\t\tsystem.perspective.print(\u0027Device data binding disabled.\u0027)", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "flashTimerText", + "pageScope": true, + "script": "\t\"\"\"\n\t\tHelper function called by the \u0027Last Update:\u0027 text to flash when it updates.\n\t\"\"\"\n\tclasses \u003d self.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes\n\t\n\t# Refresh the animation by toggling between two identical classes.\n\tif \u0027fadeToBlack_A\u0027 in classes:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_B\"\n\telse:\n\t\tself.getChild(\"Location\").getChild(\"BreakpointContainer\").getChild(\"LargeHeader\").getChild(\"FlexContainer\").getChild(\"updateLabel\").props.style.classes \u003d \"labels/text-sm, Animation/fadeToBlack_A\"", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/resource.json new file mode 100644 index 0000000..5b121b6 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "c4c224ba1b5ebf4fcc5dd07aaa86e48842a5b43448eccab5872988c9b39ba1e8", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/thumbnail.png new file mode 100644 index 0000000..7db1da7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/view.json new file mode 100644 index 0000000..c4105e6 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/Components/VM/view.json @@ -0,0 +1,180 @@ +{ + "custom": { + "allTags": [ + { + "dataType": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Number of Strings in System" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Current" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Voltage" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Avg Battery Temperature" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Max Battery Temperature" + }, + { + "dataType": "Float4", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "name": "Min Battery Temperature" + } + ] + }, + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.allTags": { + "binding": { + "config": { + "struct": { + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\t\n\t# Simulate fetching tag configurations and sorting by name\n\tnodes \u003d system.tag.getConfiguration(value[\u0027tagPath\u0027], True)\n\tfor item in nodes:\n\t if \u0027tags\u0027 in item:\n\t \tsortedTags \u003d sorted(item[\u0027tags\u0027], key\u003dlambda x: x[\u0027name\u0027])\n\t \tsortedTags \u003d sorted(sortedTags, key\u003dlambda x: x.get(\u0027engUnit\u0027, \u0027misc\u0027) if x.get(\u0027engUnit\u0027, \u0027misc\u0027) !\u003d \"\" else \u0027misc\u0027)\n\t \t\n for tagConfig in sortedTags:\n if str(tagConfig[\u0027tagType\u0027]) \u003d\u003d \u0027AtomicTag\u0027:\n name \u003d tagConfig.get(\"name\", \"\")\n dataType \u003d tagConfig.get(\"dataType\", \"\")\n tagPath \u003d value[\u0027tagPath\u0027] + \u0027/\u0027 + name\n instance \u003d {\n \"instanceStyle\": {\n \"classes\": \"\"\n },\n \"instancePosition\": {},\n \"name\": name,\n \"dataType\": dataType\n }\n # Group based on name containing \u0027Power\u0027, \u0027Current\u0027, or \u0027Voltage\u0027\n output.append(instance)\n\t\n\t# Return or process the sorted output\n\treturn output", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 628 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "struct": { + "allTags": "{view.custom.allTags}", + "tagPath": "{view.params.tagPath}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\toutput \u003d []\n\tallTags \u003d system.util.jsonDecode(system.util.jsonEncode(value[\u0027allTags\u0027]))\n\t\n\tfor tag in allTags:\n\t\ttagName \u003d tag[\"name\"]\n\t\ttag[\"tagPath\"] \u003d value[\"tagPath\"] + \"/\" +tagName\n\t\toutput.append(tag)\n\t\t\n\treturn output", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "alignContent": "flex-start", + "elementPosition": { + "basis": "50%", + "grow": 0 + }, + "loading": { + "order": "with-parent" + }, + "path": "Library/Templates/Framework/Tag Info", + "style": { + "border": "1px solid var(--border)", + "gap": "10px 0", + "padding": "10px" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "containers/padded-container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/resource.json new file mode 100644 index 0000000..96abfd2 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "3473f1fcce2b9daa3cab1fe4e451af45f29d2f80241bb5d51d9df39f13b24d5d", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:12:22Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..e470db4 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/view.json new file mode 100644 index 0000000..328502c --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS1 Battery/Body/view.json @@ -0,0 +1,180 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Batt HS1-1", + "Batt HS1-2", + "Batt HS1-3", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Batt HS1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/resource.json new file mode 100644 index 0000000..ac6d0a1 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "ef3428e9766f2cbf14bbd5588cba11c486c5944d47d963e932ec86b618abbc19", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..5470baf Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/view.json new file mode 100644 index 0000000..13a81d7 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/HS2 Battery/Body/view.json @@ -0,0 +1,180 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "Batt HS2-1", + "Batt HS2-2", + "Batt HS2-3", + "Meta", + "Wiki" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Batt HS2-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS2-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Batt HS2-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/resource.json new file mode 100644 index 0000000..960f898 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "7a75a33d0203f05c3b049c9c90860814dd0d1e81006198c12ef5551e7142f056", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..d8f9a28 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/view.json new file mode 100644 index 0000000..2bdf7cf --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_1 Battery/Body/view.json @@ -0,0 +1,329 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.1-1-1", + "P1.1-1-2", + "P1.1-1-3", + "P1.1-1-4", + "P1.1-1-5", + "P1.1-1-6", + "P1.1-2-1", + "P1.1-2-2", + "P1.1-2-3", + "P1.1-2-4", + "P1.1-2-5", + "P1.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Popup Template" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027tabIndexChanged\u0027, {})" + } + }, + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "--container" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/resource.json new file mode 100644 index 0000000..f1193fe --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "322ee3f2ec7012915d2cf5146fe8d4cb09ca845afd124bda870443c198da0285", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..c9b8f3d Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/view.json new file mode 100644 index 0000000..53624f5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_2 Battery/Body/view.json @@ -0,0 +1,323 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.2-1-1", + "P1.2-1-2", + "P1.2-1-3", + "P1.2-1-4", + "P1.2-1-5", + "P1.2-1-6", + "P1.2-2-1", + "P1.2-2-2", + "P1.2-2-3", + "P1.2-2-4", + "P1.2-2-5", + "P1.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1321/PHXA2_UPS_BATT_VM_P1_1_P1_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/resource.json new file mode 100644 index 0000000..117f8c0 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "0da502bef4a0ada167c5d72c9e87f066df2ff00222ef97081fc1905affe893a3", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..20c29d0 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/view.json new file mode 100644 index 0000000..72b6081 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P1_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P1.3-1-1", + "P1.3-1-2", + "P1.3-1-3", + "P1.3-1-4", + "P1.3-1-5", + "P1.3-1-6", + "P1.3-2-1", + "P1.3-2-2", + "P1.3-2-3", + "P1.3-2-4", + "P1.3-2-5", + "P1.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P1.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P1.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH01]CP1319/PHXA2_UPS_BATT_VM_P1_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/resource.json new file mode 100644 index 0000000..4e58bbb --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "88d39febc9a6d9e24c609eebfad1ee5a4b51d41dbe3bc3557dce178e665ebc6a", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..b3b67b3 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/view.json new file mode 100644 index 0000000..bcd3862 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_1 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.1-1-1", + "P2.1-1-2", + "P2.1-1-3", + "P2.1-1-4", + "P2.1-1-5", + "P2.1-1-6", + "P2.1-2-1", + "P2.1-2-2", + "P2.1-2-3", + "P2.1-2-4", + "P2.1-2-5", + "P2.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 6 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/resource.json new file mode 100644 index 0000000..629ce47 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "6b4f78155e299e38418cb1bc371e72eb3f9a0f4a5c38782f30c6fe0a62dca9d5", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:12:51Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..d9e4f64 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/view.json new file mode 100644 index 0000000..b764737 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_2 Battery/Body/view.json @@ -0,0 +1,323 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.2-1-1", + "P2.2-1-2", + "P2.2-1-3", + "P2.2-1-4", + "P2.2-1-5", + "P2.2-1-6", + "P2.2-2-1", + "P2.2-2-2", + "P2.2-2-3", + "P2.2-2-4", + "P2.2-2-5", + "P2.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/resource.json new file mode 100644 index 0000000..b9815e2 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "07653d8831da9233eb468f0fbe77b67c94561b5a683a12f0869e9e2fe192ace1", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..fcd23b8 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/view.json new file mode 100644 index 0000000..e72de74 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P2_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P2.3-1-1", + "P2.3-1-2", + "P2.3-1-3", + "P2.3-1-4", + "P2.3-1-5", + "P2.3-1-6", + "P2.3-2-1", + "P2.3-2-2", + "P2.3-2-3", + "P2.3-2-4", + "P2.3-2-5", + "P2.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH02]CP1315/PHXA2_UPS_BATT_VM_P2_1_P2_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P2.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P2.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH02]CP1313/PHXA2_UPS_BATT_VM_P2_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 7 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/resource.json new file mode 100644 index 0000000..8447bd6 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "5e58c81f03c873494dfb367f7afac1f13dda6cc80fd45f86040e9559b48ff649", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..c555be0 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/view.json new file mode 100644 index 0000000..c43505e --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_1 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.1-1-1", + "P3.1-1-2", + "P3.1-1-3", + "P3.1-1-4", + "P3.1-1-5", + "P3.1-1-6", + "P3.1-2-1", + "P3.1-2-2", + "P3.1-2-3", + "P3.1-2-4", + "P3.1-2-5", + "P3.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/resource.json new file mode 100644 index 0000000..12157b9 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "43eaa6df421143926e9a71d2c351a7f0a5efef6f4bdfee2b1730cdbc83d9b211", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..4c1aa59 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/view.json new file mode 100644 index 0000000..7e2c4d5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_2 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.2-1-1", + "P3.2-1-2", + "P3.2-1-3", + "P3.2-1-4", + "P3.2-1-5", + "P3.2-1-6", + "P3.2-2-1", + "P3.2-2-2", + "P3.2-2-3", + "P3.2-2-4", + "P3.2-2-5", + "P3.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1308/PHXA2_UPS_BATT_VM_P3_1_P3_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/resource.json new file mode 100644 index 0000000..e783299 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "2c00beadc0d83413310c4e3a430dbfdf240594567af8346b6fa4d65f6250e3bc", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..881fbc0 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/view.json new file mode 100644 index 0000000..ff83dfa --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P3_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P3.3-1-1", + "P3.3-1-2", + "P3.3-1-3", + "P3.3-1-4", + "P3.3-1-5", + "P3.3-1-6", + "P3.3-2-1", + "P3.3-2-2", + "P3.3-2-3", + "P3.3-2-4", + "P3.3-2-5", + "P3.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P3.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P3.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH03]CP1306/PHXA2_UPS_BATT_VM_P3_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/resource.json new file mode 100644 index 0000000..88a6c52 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "80cc30eaed6231b0768b1ee06d22761caf0c4a09259a777fab237c7df622e67d", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..9fd0701 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/view.json new file mode 100644 index 0000000..35ca872 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_1 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.1-1-1", + "P4.1-1-2", + "P4.1-1-3", + "P4.1-1-4", + "P4.1-1-5", + "P4.1-1-6", + "P4.1-2-1", + "P4.1-2-2", + "P4.1-2-3", + "P4.1-2-4", + "P4.1-2-5", + "P4.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/resource.json new file mode 100644 index 0000000..a18ba1b --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "f8efa9cc082ab240bf26ffe3a14e24dfcf2d2113a2400dcb98b3c6334ffd6499", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..8c75ce2 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/view.json new file mode 100644 index 0000000..a574418 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_2 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.2-1-1", + "P4.2-1-2", + "P4.2-1-3", + "P4.2-1-4", + "P4.2-1-5", + "P4.2-1-6", + "P4.2-2-1", + "P4.2-2-2", + "P4.2-2-3", + "P4.2-2-4", + "P4.2-2-5", + "P4.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2320/PHXA2_UPS_BATT_VM_P4_1_P4_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 2 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/resource.json new file mode 100644 index 0000000..0ade367 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "a3f0fe50051936f58454ad3122fe7a6de054c6b7f3a60420566c7dc73f09c842", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..3709eb7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/view.json new file mode 100644 index 0000000..4e8e4df --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.3-1-1", + "P4.3-1-2", + "P4.3-1-3", + "P4.3-1-4", + "P4.3-1-5", + "P4.3-1-6", + "P4.3-2-1", + "P4.3-2-2", + "P4.3-2-3", + "P4.3-2-4", + "P4.3-2-5", + "P4.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/resource.json new file mode 100644 index 0000000..01a4a5f --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "df931a4c9299eb15832f386e8052c86d487bcf5afb44eab48d1937cbef745bb6", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/thumbnail.png new file mode 100644 index 0000000..dbfcf5f Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/view.json new file mode 100644 index 0000000..73fdc5b --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P4_4 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P4.4-1-1", + "P4.4-1-2", + "P4.4-1-3", + "P4.4-1-4", + "P4.4-1-5", + "P4.4-1-6", + "P4.4-2-1", + "P4.4-2-2", + "P4.4-2-3", + "P4.4-2-4", + "P4.4-2-5", + "P4.4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P4.4-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P4.4-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH04]CP2318/PHXA2_UPS_BATT_VM_P4_3_P4_4/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/resource.json new file mode 100644 index 0000000..3094dbb --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "98a0b053bd28b73ca9b2293daf53cc52458fb05e726ebad392488f3ad6454fbe", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..59d9d47 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/view.json new file mode 100644 index 0000000..bfbe946 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_1 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.1-1-1", + "P5.1-1-2", + "P5.1-1-3", + "P5.1-1-4", + "P5.1-1-5", + "P5.1-1-6", + "P5.1-2-1", + "P5.1-2-2", + "P5.1-2-3", + "P5.1-2-4", + "P5.1-2-5", + "P5.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/resource.json new file mode 100644 index 0000000..26201b5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "515fdd51b966348b367cd3145541d046574c5f7b0a8e8d681795839ca5539d9c", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..84989f6 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/view.json new file mode 100644 index 0000000..a8356a7 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_2 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.2-1-1", + "P5.2-1-2", + "P5.2-1-3", + "P5.2-1-4", + "P5.2-1-5", + "P5.2-1-6", + "P5.2-2-1", + "P5.2-2-2", + "P5.2-2-3", + "P5.2-2-4", + "P5.2-2-5", + "P5.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2315/PHXA2_UPS_BATT_VM_P5_1_P5_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/resource.json new file mode 100644 index 0000000..913f902 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "8fc714b8418f64f6916f696def72bff2fb96b7241d10c8aca091a9ce7309ea18", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..2baea6b Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/view.json new file mode 100644 index 0000000..2dba59b --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P5_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P5.3-1-1", + "P5.3-1-2", + "P5.3-1-3", + "P5.3-1-4", + "P5.3-1-5", + "P5.3-1-6", + "P5.3-2-1", + "P5.3-2-2", + "P5.3-2-3", + "P5.3-2-4", + "P5.3-2-5", + "P5.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P5.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P5.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH05]CP2313/PHXA2_UPS_BATT_VM_P5_3/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/resource.json new file mode 100644 index 0000000..6a808f5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "1e1e6887d579bc0ba9d5e7aae61b4d8483ad37d36caa3d49376029d4f0f3a37f", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..32101e6 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/view.json new file mode 100644 index 0000000..4928309 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_1 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.1-1-1", + "P6.1-1-2", + "P6.1-1-3", + "P6.1-1-4", + "P6.1-1-5", + "P6.1-1-6", + "P6.1-2-1", + "P6.1-2-2", + "P6.1-2-3", + "P6.1-2-4", + "P6.1-2-5", + "P6.1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/resource.json new file mode 100644 index 0000000..1ccd4d3 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "636b393a8f6cfeb55f19dfd65fdbd9b71c523d5a1957bb5d8a93ac98d4fef4c7", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..5383411 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/view.json new file mode 100644 index 0000000..1f69d8a --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_2 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.2-1-1", + "P6.2-1-2", + "P6.2-1-3", + "P6.2-1-4", + "P6.2-1-5", + "P6.2-1-6", + "P6.2-2-1", + "P6.2-2-2", + "P6.2-2-3", + "P6.2-2-4", + "P6.2-2-5", + "P6.2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2308/PHXA2_UPS_BATT_VM_P6_1_P6_2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/resource.json new file mode 100644 index 0000000..9249ece --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "cf6dacef37288e3712c0658471aa731136d3d15a63862244fde2fb0c3b8b6e43", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..7c9745c Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/view.json new file mode 100644 index 0000000..15fabc5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.3-1-1", + "P6.3-1-2", + "P6.3-1-3", + "P6.3-1-4", + "P6.3-1-5", + "P6.3-1-6", + "P6.3-2-1", + "P6.3-2-2", + "P6.3-2-3", + "P6.3-2-4", + "P6.3-2-5", + "P6.3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/resource.json new file mode 100644 index 0000000..22448e8 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "20a0b02ff3686431b0175adbcf9b2ba71ff5dbc6223e38c73839a52f26a9e2e7", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/thumbnail.png new file mode 100644 index 0000000..665bc7c Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/view.json new file mode 100644 index 0000000..a5d14c5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/P6_4 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "P6.4-1-1", + "P6.4-1-2", + "P6.4-1-3", + "P6.4-1-4", + "P6.4-1-5", + "P6.4-1-6", + "P6.4-2-1", + "P6.4-2-2", + "P6.4-2-3", + "P6.4-2-4", + "P6.4-2-5", + "P6.4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "P6.4-1-1" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-2" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-3" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-4" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-5" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-1-6" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-1" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-2" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-3" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-4" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-5" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "P6.4-2-6" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_DH06]CP2306/PHXA2_UPS_BATT_VM_P6_3_P6_4/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 1 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/resource.json new file mode 100644 index 0000000..29cbcaa --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "971179602259f2eb7c1e8a8a0582f9d602aa856043d2f9fd086ed3093461738f", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/thumbnail.png new file mode 100644 index 0000000..24357b7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/view.json new file mode 100644 index 0000000..a295788 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body/view.json @@ -0,0 +1,332 @@ +{ + "custom": { + "pageId": "Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body", + "tabsConfig": { + "tabs": [ + "R1-1-1", + "R1-1-2", + "R1-1-3", + "R1-1-4", + "R1-1-5", + "R1-1-6", + "R1-2-1", + "R1-2-2", + "R1-2-3", + "R1-2-4", + "R1-2-5", + "R1-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "pageId": "Pages/Dev/D_Electrical/L2/Cellwatch/R1 Battery/Body", + "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1" + }, + "propConfig": { + "custom.pageId": { + "persistent": true + }, + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.pageId": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R1-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R1-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/1_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/resource.json new file mode 100644 index 0000000..b54d9ce --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "88f4150e96419612d316d412c2e96b88748ed7766c298a1bffae79d494d3d18f", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/thumbnail.png new file mode 100644 index 0000000..bcd2d8d Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/view.json new file mode 100644 index 0000000..75d97fe --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R2 Battery/Body/view.json @@ -0,0 +1,531 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "R2-1-1", + "R2-1-2", + "R2-1-3", + "R2-1-4", + "R2-1-5", + "R2-1-6", + "R2-2-1", + "R2-2-2", + "R2-2-3", + "R2-2-4", + "R2-2-5", + "R2-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Trend" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.selectedPens": { + "binding": { + "config": { + "path": "view.custom.trendConfig.selectedPens" + }, + "type": "property" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Trends\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Config" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Config\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Meta" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Meta\u0027)" + }, + "type": "expr" + } + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Wiki" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Library/Templates/Framework/Tag Notes/View Notes" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Control" + }, + "propConfig": { + "position.tabIndex": { + "binding": { + "config": { + "expression": "{parent.props.tabs}" + }, + "transforms": [ + { + "code": "\treturn value.indexOf(self.meta.name)", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.params.tagPath": { + "binding": { + "config": { + "path": "view.params.tagPath" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Control\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "loading": { + "order": "with-parent" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R2-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/2_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/resource.json new file mode 100644 index 0000000..77243a9 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "d9d1f7943a4922c0b1002b4f4f0d2b9be8877803bc6fdc97b5b29ffc1276a03e", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:16Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/thumbnail.png new file mode 100644 index 0000000..d20c3be Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/view.json new file mode 100644 index 0000000..3d19e9c --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R3 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "R3-1-1", + "R3-1-2", + "R3-1-3", + "R3-1-4", + "R3-1-5", + "R3-1-6", + "R3-2-1", + "R3-2-2", + "R3-2-3", + "R3-2-4", + "R3-2-5", + "R3-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R3-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R3-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP1322/PHXA2_UPS_BATT_VM_R1/3_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/resource.json new file mode 100644 index 0000000..f692437 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModificationSignature": "1aa280cf0faa32ef99c736d4c0decbd0568fc1f2aa14d0d1b177f6d782c8742c", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T23:11:15Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/thumbnail.png new file mode 100644 index 0000000..c1366e7 Binary files /dev/null and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/view.json new file mode 100644 index 0000000..6986444 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Dev/D_Electrical/L2/Cellwatch/R4 Battery/Body/view.json @@ -0,0 +1,324 @@ +{ + "custom": { + "tabsConfig": { + "tabs": [ + "R4-1-1", + "R4-1-2", + "R4-1-3", + "R4-1-4", + "R4-1-5", + "R4-1-6", + "R4-2-1", + "R4-2-2", + "R4-2-3", + "R4-2-4", + "R4-2-5", + "R4-2-6", + "Control", + "Config" + ] + }, + "trendConfig": { + "selectedPens": [] + } + }, + "params": { + "objectName": "Battery", + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2" + }, + "propConfig": { + "custom.tabsConfig": { + "persistent": true + }, + "custom.tabsConfig.showConfig": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Config" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.tabsConfig.showControl": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "1": "{view.params.tagPath}" + }, + "tagPath": "{1}/Control" + }, + "transforms": [ + { + "expression": "coalesce({value},false) !\u003d false", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.trendConfig": { + "persistent": true + }, + "params.objectName": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1617, + "width": 1046 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "R4-1-1" + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-2" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-3" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-4" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-5" + }, + "position": { + "tabIndex": 4 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-1-6" + }, + "position": { + "tabIndex": 5 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_1/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-1" + }, + "position": { + "tabIndex": 6 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/1" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-2" + }, + "position": { + "tabIndex": 7 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/2" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-3" + }, + "position": { + "tabIndex": 8 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/3" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-4" + }, + "position": { + "tabIndex": 9 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/4" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-5" + }, + "position": { + "tabIndex": 10 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/5" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "R4-2-6" + }, + "position": { + "tabIndex": 11 + }, + "props": { + "params": { + "tagPath": "[PHXA2_IG_COMN]CP2321/PHXA2_UPS_BATT_VM_R2/4_2/Strings/6" + }, + "path": "Pages/Dev/D_Electrical/L2/Cellwatch/Components/Popup Template" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1191px", + "shrink": 0 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "expression": "{view.custom.tabsConfig}" + }, + "transforms": [ + { + "code": "\ttabs \u003d value[\u0027tabs\u0027]\n\tshowConfig \u003d value[\u0027showConfig\u0027]\n\tshowControl \u003d value[\u0027showControl\u0027]\n\tif not showConfig:\n\t\ttabs.pop(tabs.indexOf(\u0027Config\u0027))\n\tif not showControl:\n\t\ttabs.pop(tabs.indexOf(\u0027Control\u0027))\n\t\n\treturn tabs", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "contentStyle": { + "backgroundColor": "var(--container)" + }, + "currentTabIndex": 11 + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "enableDisablePen", + "pageScope": true, + "script": "\t# When a pen is selected or de-selected on the trends page, this handler is\n\t# responsible for appending or removing the pen name from the proper trend\n\t# config list.\n\t\n\tname \u003d payload[\u0027name\u0027]\n\tenabledOrDisabled \u003d payload[\u0027enabledOrDisabled\u0027]\n\tgroup \u003d payload[\u0027group\u0027]\n\t\n\tif enabledOrDisabled \u003d\u003d True:\n\t\tif name not in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].append(name)\n\telse:\n\t\tif name in self.view.custom.trendConfig[\u0027selectedPens\u0027]:\n\t\t\tself.view.custom.trendConfig[\u0027selectedPens\u0027].remove(name)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/resource.json index 0d8aad9..e83626f 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "42eb3810c4227ff5236f0b5c5dbe66a05c0bd2b682da5ad2c91cd2db85259973", + "lastModificationSignature": "a16304a96a17a054a635109d2aad7695c8011303b95edf05b1405df75448a5c1", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-24T14:57:25Z" + "timestamp": "2026-05-04T21:06:43Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/thumbnail.png index b07ebdb..70361f0 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/view.json index c2526b4..f4d8e9d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Diagnostics/Panels_List/view.json @@ -418,7 +418,11 @@ }, "radios": [ { + "enabled": true, "selected": true, + "style": { + "classes": "" + }, "text": "Match on ANY", "value": 0 }, @@ -1277,15 +1281,21 @@ ], "data": [ { - "AC1": "Good", - "AC2": "Good", - "DC1": "Good", - "DC2": "Alarm", - "Desc": "Description", - "Room": "Location", - "THA": "Good", - "XA": "Good", - "name": "PNL01" + "style": { + "backgroundColor": "#7266B7", + "color": "#FAFAFB" + }, + "value": { + "AC1": "Good", + "AC2": "Good", + "DC1": "Good", + "DC2": "Alarm", + "Desc": "Description", + "Room": "Location", + "THA": "Good", + "XA": "Good", + "name": "PNL02" + } }, { "AC1": "Good", diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/resource.json index 6cd5901..112f06a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "514662e7d3c94256bd8af096f34d69a83c7e6d3d0cfd36f647e04f4e520a2211", + "lastModificationSignature": "06df9fe7d10418e4fe09860691719cbf3f0a3c6158ccbce8288adfaa451845d1", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:16:36Z" + "timestamp": "2026-05-04T20:20:40Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/thumbnail.png index 848115c..14407d4 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/view.json index 3215a90..fdc7f37 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/CRAH/view.json @@ -177,6 +177,9 @@ "meta": { "name": "Label" }, + "position": { + "shrink": 0 + }, "propConfig": { "props.text": { "binding": { @@ -268,12 +271,14 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "gap": "var(--space-xl)", + "overflow": "visible" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/resource.json index 4c5ceca..ad282dd 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "068b666dca945b0a3650bcac2691e8fe440bb7555718973be131b5386cd17c12", + "lastModificationSignature": "9b304f45c4227e9aa403b2e27c2f7a0b5a7710978dc87f0f8ed295b90ee115af", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:07:48Z" + "timestamp": "2026-05-04T20:17:26Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/thumbnail.png index 8a09c06..37e8f96 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/DOAS/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/resource.json index 5599b5a..ac74f0d 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "26d4c2910aa3d69275131bb6d24a09acd3b3e9e7fb6f61185f5aa85ff39c4e9b", + "lastModificationSignature": "e3f194c8d5ab7d0318fc5df81afe4fffb30732d0dd37f5e9fff9f34a80138749", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:07:59Z" + "timestamp": "2026-05-04T21:06:46Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/thumbnail.png index f3336d4..17d6d40 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/view.json index a0a60d1..851e0a9 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/FCU/view.json @@ -152,8 +152,10 @@ ], "path": "Library/Diagrams/HVAC/Dgrm_FCU", "style": { + "gap": "var(--space-xl)", "overflow": "visible" }, + "useDefaultViewHeight": false, "useDefaultViewWidth": false }, "type": "ia.display.flex-repeater" @@ -163,12 +165,12 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { - "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "backgroundColor": "var(--containerRoot)" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/resource.json index 0eeda4c..4e2cc5a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "a56f9deec4bd3f9969260023d08c09ab5aa12b700b1b9c293725c2b0d17f3b46", + "lastModificationSignature": "218a84a71ab60e8d3a70e2390d61353227ee755ec0b9bcec1841e12e27a95c83", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:08:07Z" + "timestamp": "2026-05-04T20:20:33Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/thumbnail.png index d45d0f7..cdff5db 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/view.json index 4488cd5..1e64503 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/HUM/view.json @@ -111,11 +111,23 @@ }, "objectName": "HUM", "tagPath": "[Ignition_Common_IO_Gtwy]GAL1262/SATB1_GAL1262_HUM_02" + }, + { + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } } ], "path": "Library/Diagrams/HVAC/Dgrm_HUM", "style": { - "gap": 100, + "gap": "var(--space-xl)", "overflow": "visible" }, "useDefaultViewHeight": false, @@ -128,11 +140,13 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "overflow": "visible", - "padding": 15 + "overflow": "visible" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/resource.json index 90ad237..fde2d6e 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "5b2ad6ff57f8592f96a34cd4ada06828299042ec79638eda8ad1c4bdedd764b9", + "lastModificationSignature": "c79154077c6dc56a3b23bd37d7833a720d9029395c0ffa617185dc22663ac5f7", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:08:13Z" + "timestamp": "2026-05-04T20:17:17Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/thumbnail.png index 2d771e3..8b4daf1 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/view.json index 284953a..957bd95 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/RTU/view.json @@ -85,6 +85,9 @@ "meta": { "name": "RTU Diagram" }, + "position": { + "shrink": 0 + }, "propConfig": { "props.params.objectName": { "binding": { @@ -140,7 +143,10 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", "overflow": "visible", diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/resource.json index f90ab46..62f25f6 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "93ee1fa13f8fe9673603e7068d6f51b00715e547ac1c73d7617551c45941ed31", + "lastModificationSignature": "3afa7324fe14bab17109234bff395cbd8138823895dc2a151ff0c78b457bf652", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:08:28Z" + "timestamp": "2026-05-04T20:19:20Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/thumbnail.png index 18fce82..6eef2b1 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/view.json index 8538409..5492051 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/STU/view.json @@ -196,10 +196,12 @@ "name": "root" }, "props": { - "justify": "space-evenly", + "alignContent": "center", + "alignItems": "center", + "direction": "column", + "justify": "center", "style": { - "backgroundColor": "var(--containerRoot)", - "padding": 15 + "backgroundColor": "var(--containerRoot)" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/resource.json index 2697d85..de27662 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "ff0e6937093597a4032064c76ed009d074e506cadc42acb942cec06d188bea7f", + "lastModificationSignature": "1806d092425485ca3a5eda8327c9d5d26b9b1d48c77051d912076b4467dc514e", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-05-01T14:09:28Z" + "timestamp": "2026-05-04T20:21:53Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/thumbnail.png index 614fdcd..19c5ab3 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/view.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/view.json index 4288a51..62835ae 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/view.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/HVAC/VAV/view.json @@ -211,11 +211,13 @@ "name": "root" }, "props": { + "alignContent": "center", + "alignItems": "center", "direction": "column", - "justify": "space-evenly", + "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", - "padding": 15 + "gap": "var(--space-xl)" } }, "scripts": { diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/resource.json b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/resource.json index 9b47d96..c9ea827 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/resource.json @@ -8,10 +8,10 @@ "thumbnail.png" ], "attributes": { - "lastModificationSignature": "7158c5e02ab737c1f58ba0263166e9297a66147060aaa3595cb2ad279def9ec9", + "lastModificationSignature": "a66bb1051c712829291c816ee81fc2f743d15d35aefa8f03aefed3a814c6e96e", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-17T00:03:16Z" + "timestamp": "2026-05-04T20:17:33Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/thumbnail.png b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/thumbnail.png index 7f274a9..3373f1b 100644 Binary files a/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/thumbnail.png and b/Gateways/FE/projects/SDC_PHX_A7/com.inductiveautomation.perspective/views/Pages/Mechanical/LLS_CHW_Skids/thumbnail.png differ diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/code.py new file mode 100644 index 0000000..2eb2943 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/code.py @@ -0,0 +1,124 @@ +def getActivePriorityCount(tagPath, Priority = ['Diagnostic', 'Low','Medium','High','Critical']): + ### + # This function returns the number of active alarms of a specificed priority other wise all active alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + +def getActiveCriticalCount(tagPath, Priority = ['Critical']): + + ### + # This function returns the number of Active Critical Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveHighCount(tagPath, Priority = ['High']): + ### + # This function returns the number of Active High Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveMediumCount(tagPath, Priority = ['Medium']): + ### + # This function returns the number of Active Medium Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveLowCount(tagPath, Priority = ['Low']): + ### + # This function returns the number of Active Low Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveDiagCount(tagPath, Priority = ['Diagnostic']): + ### + # This function returns the number of Active Diagnostic Alarms + return len(getActiveAlarms(tagPath, Priority, state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False)) + + +def getActiveAlarms(tagPath, priority = ['Diagnostic', 'Low','Medium','High','Critical'], state = ['ActiveUnacked', 'ActiveAcked'], sortByTime = False): + ### + # This function grabs a list of active alarms to use in a table + # tagpath - path of device alarms to collect of type string + # priority - list of priority types to collect + # state - a list of states to collect + # sort - option to sort by timestamp + ### + + alarmList = [] + + if tagPath: + i = tagPath.find(']') + path = '*{}/*'.format(tagPath[i + 1:]) + + results = system.alarm.queryStatus(source = [path], priority = priority, state = state) + + for each in results: + + alarm = { + 'Time': each.get('eventTime'), + 'Alarm': each.getDisplayPath(), + 'Notes': each.getNotes(), + 'Priority': str(each.getPriority()), + 'Alarm Priority': str(Global.AlmTables.getCustomPriority(str(each.getPriority()))), + 'Name': each.getName(), + 'id': each.getId(), + 'Source': each.getSource(), + 'State': each.get('State') + } + + alarmList.append(alarm) + + if sortByTime: + return sorted(alarmList, key=lambda d: (d['Time'], priorityWeight[d['Priority']]), reverse=True) + else: + priorityWeight = {'Diagnostic': 0, 'Low': 1, 'Medium': 2, 'High': 3, 'Critical': 4} + return sorted(alarmList, key=lambda d: (priorityWeight[d['Priority']], d['Time']), reverse=True) + + return alarmList + + +def getCustomPriority(priority, customList = ['Diagnostic', 'Info', 'Undefined', 'Warning', 'Critical']): + ### + # This function converts standard alarm priorities to custom defined priorites + # priority - priority or type string + # customList - list of custom priorites + if priority == 'Diagnostic': + return customList[0] + if priority == 'Low': + return customList[1] + if priority == 'Medium': + return customList[2] + if priority == 'High': + return customList[3] + if priority == 'Critical': + return customList[4] + + return 'UNKNOWN' + + +def printTagAlarmCnts(tagPath): + #Diag## + # This function is used for quickly testing alarm counts for a tagpath + # results printed to console + # this function is purley for testing + count1 = Global.AlmTables.getActiveCriticalCount(tagPath) + count2 = Global.AlmTables.getActiveHighCount(tagPath) + count3 = Global.AlmTables.getActiveMediumCount(tagPath) + count4 = Global.AlmTables.getActiveLowCount(tagPath) + count5 = Global.AlmTables.getActiveDiagCount(tagPath) + + print "Alarm total counts for:" + tagPath + " are: \n" + "Critical: " + str(count1) + "\nHigh: " + str(count2) + "\nMedium: " + str(count3) + "\nLow: " + str(count4) + "\nDiag: " + str(count5) + +def updateAlarmCount(tagPath): + ### + # This function writes the current alarm count back to the tag device + tagList = ['Diagnostic', 'Low','Medium','High','Critical'] + for i in tagList: + count = getActivePriorityCount(tagPath, Priority = [i]) + tag = tagPath + "/Alarm Data/"+ i + " Count" + #tag = tagPath + "/" + i + " Count" + #system.tag.writeAsync(tag, count, callback) + system.tag.writeAsync(tag, count) + +def printThis(text = "Testing"): + system.perspective.print(text) + return text diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/resource.json similarity index 54% rename from Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/resource.json index 0ecb099..23a3f0a 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/AlmTables/resource.json @@ -7,11 +7,11 @@ "code.py" ], "attributes": { - "hintScope": 2, - "lastModificationSignature": "e341a1798bc82f48656303e0c6d816f4f5adf74cac28b4132878419205df89de", + "lastModificationSignature": "7aaa342aed62e05b1ae23d5e1f4a38c7d2761efa9975387b2333b425fc7e8b5d", + "hintScope": 7, "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-15T20:54:16Z" + "timestamp": "2026-05-04T19:01:42Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/code.py new file mode 100644 index 0000000..830d366 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/code.py @@ -0,0 +1,373 @@ +from datetime import datetime + + +def applyExclusions(items, datasetTagpath): + """ + Sorts a list of tag dictionary objects. + + This function assumes that the UDT structure has a '{rootPath}/Manual Exclusions/{Info|Config|Meta}'. We fail gracefully if not. + + Args: + items (List[Dict]): A list of tag dictionaries with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + datasetTagpath (String): A tagpath to an L4 UDT Category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/Info". + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + """ + + # parse datasetTagpath + rootPath = datasetTagpath[:datasetTagpath.rindex('/')] # "[PHXA2_IG_COMN]System/Device Datasets/RTU" + category = datasetTagpath[datasetTagpath.rindex('/')+1:] # "Info" + exclusionPath = '{rootPath}/Manual Exclusions/{category}'.format(rootPath=rootPath, category=category) + logger = system.util.getLogger("Device Dataset/itemsExcluded()") + res = [] + + # Read sort order, convert from unicode to string, and return unchanged items if empty. + data = system.tag.readBlocking(exclusionPath)[0] + excludedTags = list(data.value) if (data and data.value is not None) else [] + excludedTags = [str(tag) for tag in excludedTags] + if len(excludedTags) == 0: return items + + return list(filter(lambda x: str(x.get('tagName')) not in excludedTags, items)) + + +def getTagInstances(deviceDataset, tagPath, folder=""): + """ + Iterates through a DeviceDataset and returns instances for a Tag Info FlexRepeater. + This function is called by the 'instances' binding in the L4 /Info views. + + Args: + deviceDataset (Document): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + These are stored in [PHXA2_IG_COMN]System/Device Datasets. + + tagPath (String): A tagpath to the root of a device, i.e "[PHXA2_IG_COMN]RM2505/PHXA2_RM2505_FCU_4". + + folder (String): The folder the tags live in, i.e "/Config" or "/Meta". + + Returns: + List[List]: instances to be used in a /Tag Info FlexRepeater. + """ + + # Append /Config or /Meta to the tagpath. + tagPath += folder + + res = [] + + for jsonItem in list(deviceDataset): + + tagName = jsonItem.get("tagName", "N/A") + dataType = jsonItem.get("engUnit", "N/A") + qualifiedTagpath = "{tagPath}/{tagName}".format( + tagPath=tagPath, tagName=tagName + ) + + # Create a FlexRepeater instance with the extracted parameters. + res.append({"name": tagName, "dataType": dataType, "tagPath": qualifiedTagpath}) + + return res + + +def getSortedTagDictionaries(items, datasetTagpath): + """ + Sorts a list of tag dictionary objects. + + This function assumes that the UDT structure has a '{rootPath}/Configuration/{Info|Config|Meta}SortOrder'. We fail gracefully if not. + + Args: + items (List[Dict]): A list of tag dictionaries with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + datasetTagpath (String): A tagpath to an L4 UDT Category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/Info". + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + """ + + # parse datasetTagpath + rootPath = datasetTagpath[:datasetTagpath.rindex('/')] # "[PHXA2_IG_COMN]System/Device Datasets/RTU" + category = datasetTagpath[datasetTagpath.rindex('/')+1:] # "Info" + sortOrderPath = '{rootPath}/Sorting Orders/{category}'.format(rootPath=rootPath, category=category) + + # Read sort order, convert from unicode to string, and return unchanged items if empty. + data = system.tag.readBlocking(sortOrderPath)[0] + sortingOrder = list(data.value) if (data and data.value is not None) else [] + sortingOrder = [str(item) for item in sortingOrder] + if len(sortingOrder) == 0: return items + + # Sort items based on tag names in sorting order. + sortedItems = sorted( + items, + key=lambda x: ( + sortingOrder.index(x['tagName']) if x['tagName'] in sortingOrder else len(sortingOrder) # append unsorted tags + ) + ) + + return sortedItems + + +def getDiff(previousData, currentData, folder=""): + """ + Get difference between data before generation and after. This is meant to track + manual additions being lost (functionality which will be improved soon^tm). + + Args: + previousData (List[Dict]): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + currentData (List[Dict]): A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + Returns: + String: A timestamped log message detailing tags that existed in previousData and not in currentData. + + """ + logMessage = "" + + for item in previousInfo: + tagName = item.get("tagName", "") + if tagName is "": + continue + + print( + "{} in {}? {}.".format(tagName, currentData, tagName in currentData) + ) + logger.info( + "{} in {}? {}.".format(tagName, currentData, tagName in currentData) + ) + + if tagName not in currentData: + logMessage += "\n{}: {} was removed in {} update.".format(timestamp, folder, item.tagName) + + return logMessage + + +def generateDeviceDataset(deviceTagpath, datasetTagpath, writeToSystem=True, debug=False): + """ + Create a new device dataset. + + Args: + deviceTagpath (String): A tagpath to the root of a device, i.e "[PHXA2_IG_COMN]Roof/PHXA2_ROOF_RTU_1". + + datasetTagpath (String): A tagpath to an L4 UDT category, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU/{Info|Config|Meta|Alarms}". + + writeToSystem (Boolean)[Optional]: If specified as false, returns the result instead of writing it + to datasetTagpath in the system. + + Returns: + List[Dict]: A device specific dataset with the structure: [{tagName: 'Hello World', 'engUnit': 'String'}, ...]. + + """ + import json + + allTagsOutput = [] + #deviceName = deviceTagpath[deviceTagpath.index('/')+1:] + if '/' in deviceTagpath: + deviceName = deviceTagpath[deviceTagpath.rindex('/')+1:] + else: + deviceName = deviceTagpath + logger = system.util.getLogger('{} Dataset'.format(deviceName)) + + + # Fetch tag configurations and sort by name + nodes = system.tag.getConfiguration(deviceTagpath, True) + for item in nodes: + if "tags" in item: + sortedTags = sorted(item["tags"], key=lambda x: x["name"]) + sortedTags = sorted( + sortedTags, + key=lambda x: ( + x.get("engUnit", "misc") + if x.get("engUnit", "misc") != "" + else "misc" + ), + ) + + for tagConfig in sortedTags: + if str(tagConfig["tagType"]) == "AtomicTag": + name = tagConfig.get("name", "") + dataType = tagConfig.get("dataType", "") + tagPath = deviceTagpath + "/" + name + instance = { + "instanceStyle": {"classes": ""}, + "instancePosition": {}, + "name": name, + "dataType": dataType, + } + + # Group based on name containing 'Power', 'Current', or 'Voltage' + allTagsOutput.append(instance) + + if debug: + logger.info('allTagsOutput: {}'.format(allTagsOutput)) + print('allTagsOutput: {}'.format(allTagsOutput)) + + ### FlexRepeater Binding + bindingOutput = [] + for tag in allTagsOutput: + tagName = tag["name"] + tag["tagPath"] = tagPath + "/" + tagName + bindingOutput.append(tag) + + ### Logan Script + res = [] + for item in bindingOutput: + tagPath = item["tagPath"] + tagNameIndex = tagPath.rindex("/") + 1 + res.append({"tagName": tagPath[tagNameIndex:], "engUnit": item["dataType"]}) + + ### Excluding + excludedTagDictionaries = applyExclusions(items=res, datasetTagpath=datasetTagpath) + + ### Sorting + sortedTagDictionaries = getSortedTagDictionaries(items=excludedTagDictionaries, datasetTagpath=datasetTagpath) + + if debug: + logger.info('sortedTagDictionaries: {}'.format(sortedTagDictionaries)) + logger.info('writing to: {}'.format(datasetTagpath)) + print('sortedTagDictionaries: {}'.format(sortedTagDictionaries)) + print('writing to: {}'.format(datasetTagpath)) + + if writeToSystem: + system.tag.writeBlocking(datasetTagpath, [sortedTagDictionaries]) + + return sortedTagDictionaries + + +def generateDeviceDatasetTrends(deviceTagpath, datasetTagpath, writeToSystem=True): + return {} + + +def generateL4(datasetTagpath, writeToSystem=True, debug=False): + """ + Highest level function. Can be called by users. + + Generate Info, Config, Meta, and Trends in a L4 UDT. Requires a UDT to exist with a reference tagpath specified. + + This function is called by _Manual Refresh in the L4 UDT. + + Args: + datasetTagpath (String): A tagpath to an L4 UDT, i.e "[PHXA2_IG_COMN]System/Device Datasets/RTU". + + writeToSystem (Boolean)[Optional]: If specified as false, returns the result instead of writing it + to datasetTagpath in the system. + + debug (Boolean)[Optional]: Enable verbose logging. + + Returns: + Dict{key: val}: A dictionary containing each dataset. Keys are ['info','config','meta','trends']. + + """ + timestamp = datetime.now().strftime("[%Y-%m-%d %H:%M:%S]") # Returns "[2025-08-08 08:28:32]". + logger = system.util.getLogger("Device Dataset") + logMessage = "" + + if debug: + logger.info("Generating L4 for {}.".format(datasetTagpath)) + print(datasetTagpath) + + # Get all relevant UDT data. + data = system.tag.readBlocking( + [ + datasetTagpath + "/Info", + datasetTagpath + "/Config", + datasetTagpath + "/Meta", + datasetTagpath + "/Trends", + datasetTagpath + "/Alarms", + datasetTagpath + "/_Reference Tagpath", + ] + ) + + # Catch bad tagPaths and non-existent data. + previousInfo = data[0].value if (data and data[0].value is not None) else {} + previousConfig = data[1].value if (data and data[1].value is not None) else {} + previousMeta = data[2].value if (data and data[2].value is not None) else {} + previousTrends = data[3].value if (data and data[3].value is not None) else {} + previousAlarms = data[4].value if (data and data[4].value is not None) else {} + referenceTagpath = data[5].value if (data and data[5].value is not None) else {} + + # If no reference device is given, the script explodes. We catch it here. + if referenceTagpath is None or len(referenceTagpath) == 0: + logger.info( + "\n{}: ERROR: Please verify that a reference tagpath is provided.".format(timestamp) + ) + logMessage += ( + "\n{}: ERROR: Please verify that a reference tagpath is provided.".format(timestamp) + ) + + system.tag.writeAsync([datasetTagpath + "/_Log Message"], [logMessage]) + return # exit early + + if debug: + logger.info( + "prevInfo: {}\nprevConfig: {}\n prevTrends: {}\n prevMeta: {}\n refTag: {}".format( + previousInfo, + previousConfig, + previousTrends, + previousMeta, + referenceTagpath, + ) + ) + print( + "prevInfo: {}\nprevConfig: {}\n prevTrends: {}\n prevMeta: {}\n refTag: {}".format( + previousInfo, + previousConfig, + previousTrends, + previousMeta, + referenceTagpath, + ) + ) + + # Build the dataset for the Info view. Pull each tagName from the dataset to track which manual additions are lost. + currentInfo = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}".format(referenceTagpath=referenceTagpath), # DON'T APPEND THIS WITH ANYTHING + datasetTagpath="{datasetTagpath}/Info".format(datasetTagpath=datasetTagpath), + writeToSystem=writeToSystem, + ) + + # Note manual additions that are lost in the update. + if debug: + currentInfoNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentInfo)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousInfo, currentData=currentInfo, folder="Info") + + + currentConfig = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Config".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Config".format(datasetTagpath=datasetTagpath), + writeToSystem=writeToSystem, + ) + + if debug: + currentConfigNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentConfig)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousConfig, currentData=currentConfigNames, folder="Config") + + + currentMeta = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Meta".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Meta".format(datasetTagpath=datasetTagpath), + writeToSystem=True, + ) + + if debug: + currentMetaNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentMeta)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousMeta, currentData=currentMetaNames, folder="Meta") + + + currentAlarms = Global.DeviceDatasets.generateDeviceDataset( + deviceTagpath="{referenceTagpath}/Alarms".format(referenceTagpath=referenceTagpath), + datasetTagpath="{datasetTagpath}/Alarms".format(datasetTagpath=datasetTagpath), + writeToSystem=True, + ) + + if debug: + currentAlarmsNames = list(map(lambda x: str(x.get("tagName", "N/A")), currentAlarms)) + logMessage += Global.DeviceDatasets.getDiff(previousData=previousAlarms, currentData=currentAlarmsNames, folder="Alarms") + + + if len(logMessage) == 0: + logMessage = "{} Successfully generated.".format(timestamp) + + # Reset the _Manual Refresh tag back to False. + system.tag.writeAsync([datasetTagpath + "/_Manual Refresh"], [False]) + + # Write the aggregate log message to _Log Message. + system.tag.writeAsync([datasetTagpath + "/_Log Message"], [logMessage]) + + return logMessage \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/resource.json similarity index 54% rename from Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/resource.json index 725ac58..9b0bd69 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/DeviceDatasets/resource.json @@ -7,11 +7,11 @@ "code.py" ], "attributes": { - "hintScope": 2, - "lastModificationSignature": "a4438c3c50df8495f839d01fc8b494cd7b042d5c1757d91511c0b5f54bd73a5e", + "hintScope": 7, + "lastModificationSignature": "9eb6928e909875055a3f065a11fb7ed868921a79e9ab374e1cdb08972e8e3989", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-15T20:54:16Z" + "timestamp": "2026-05-04T19:22:01Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/code.py new file mode 100644 index 0000000..1ec73ba --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/code.py @@ -0,0 +1,53 @@ +def main(originalDeviceTagpaths, deviceTagpaths, tagsToRead, tagToWrite): + """ + originalDeviceTagpaths: List; a list of qualified tagpaths without their provider remapped. + deviceTagpaths: List; a list of qualified device tagpaths, i.e ['[default]RM2505/PHXA2_RM2505_FCU_4']. + tagsToRead: List; a list of atomic tag names, i.e ['/Meta/EqName', '/Space Temperature', '/System Mode'] + tagToWrite: String; the tagPath of where to write the device data, i.e '[PHXA2_IG_COMN]System/VAV' where the tag is a DynamicDeviceSet + """ + # Format the atomic tag name from a full tagpath. i.e: + # "[PHXA2_IG_COMN]RM224/[..]/RTU_01/Space Temperature" -> "spaceTemperature" + def getTagName(tagPath): + name = tagPath.split('/')[-1] + words = name.split() + return words[0].lower() + ''.join(word.capitalize() for word in words[1:]) + + # Append atomic tag names to each device, returning a fully qualified tagpath. + tagPaths = [] + for device in deviceTagpaths: + for tag in tagsToRead: + tagPaths.append(str(device) + str(tag)) + + tagsPerDevice = len(tagsToRead) + tagData = system.tag.readBlocking(tagPaths) + logger = system.util.getLogger('Tagpaths Script') + + # batch read alarm status + activeAlarmsTagpaths = list(map(lambda x: str(x) + '/AlarmSummary/ActiveAlarms', tagPaths)) # Generate tagPaths to ActiveAlarms. + activeAlarmData = system.tag.readBlocking(activeAlarmsTagpaths) # Read tag data. + activeAlarmData = [x.value for x in activeAlarmData] # Get .value from each QualifiedObject. + activeAlarmData = list(map(lambda x: len(x.keys()) != 0, activeAlarmData)) # Check if length > 0, if true, device isAlarmed. + + res = [] + for batchIndex in range(len(tagPaths) / tagsPerDevice): # read all tags per device + startIndex = batchIndex * tagsPerDevice + endIndex = startIndex + tagsPerDevice + val = {'value': {}, 'style': {}} + + # If device is alarmed, highlight red. + val['style'] = {'backgroundColor': '#FF4747', 'color': 'white'} if activeAlarmData[batchIndex] else {} + + # Map original tagpath without tag provider reassigned. + # This is necessary for the L4 popup. + originalTagpath = originalDeviceTagpaths[batchIndex] + val['value']['tagPath'] = originalTagpath + + # Map tag name to respective tag value. + for i in range(startIndex, endIndex): + tagName = getTagName(tagPaths[i]) + tagValue = tagData[i].value + val['value'][tagName] = tagValue + + res.append(val) + + system.tag.writeBlocking(tagToWrite, system.util.jsonEncode(res)) \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/resource.json similarity index 54% rename from Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/resource.json rename to Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/resource.json index b57c6b6..01f5016 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/Global/UpdateDeviceTable/resource.json @@ -7,11 +7,11 @@ "code.py" ], "attributes": { - "hintScope": 2, - "lastModificationSignature": "0d7cc7d2974a944e1da1eab2282d019d2930240755b62dc0bbcb4586418b1bbf", + "hintScope": 7, + "lastModificationSignature": "812333a27ba424a63a7bb2138a2c572e69a2111eeab00617fbf1e46cc411e0ab", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-15T20:54:16Z" + "timestamp": "2026-05-04T19:01:34Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/code.py index 9e4e0af..6b562c1 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/code.py +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/code.py @@ -1,81 +1,43 @@ -import pprint, time Logger = system.util.getLogger("alarm.summary") -provider = "[default]" -def initAlarmSummaries(): - """ This function will reset all the alarm summary udt's in the system - - """ - allActiveAlarmsTag = [] - newValues = [] - for t in system.tag.browse(provider, {"tagType":"UdtInstance", "typeId": "AlarmSummary", "recursive":True}): - allActiveAlarmsTag.append(t["fullPath"].toString() +"/ActiveAlarms") - newValues.append({}) +def get_severity_style(level): + ''' + level: Could be an int (1-4) or a string ("low", "Medium", etc) + ''' + # 1. Maping names and values to normalize the input + name_to_level = { + 'diagnostic':0, 'low':1, 'medium':2, 'high':3, 'critical':4 + } + # 2. Convert a string to compare, if its a string or a number + normalized_level = level + if isinstance(level, basestring): + normalized_level = name_to_level.get(level.lower(), 0) - system.tag.writeAsync(allActiveAlarmsTag, newValues) - -def updateAlarmCount(srcPath, priority, state): - pass + # 3. color definition + priorityBGColors = {1:"#7266B7", 2:"#F4B834", 3:"#DE7C33", 4:"#E22028"} + priorityTextColors = {1:"#FAFAFB", 2:"#FAFAFB", 3:"#FAFAFB", 4:"#FAFAFB"} - -def calcMaxPriority(levelPath): - """ Pass in the path level to determine the max priority and return the value - levelPath: string of the object level path without the /AlarmSummary/ActiveAlarms - """ - aggAlarmStatus = system.tag.readBlocking([levelPath+"/AlarmSummary/ActiveAlarms"])[0].value.toDict() + # 4. Return an object with the syle + if normalized_level not in priorityBGColors: + return {} + return { + "backgroundColor": priorityBGColors[normalized_level], + "color": priorityTextColors[normalized_level] + } - return determinePriority(aggAlarmStatus) - -def determinePriority(tagValue): - """ Use this method to figure out the highest priority level of a tag. Useful with transforms from front-end - Args: - tagValue: dict/document of the expected structure of {srcPath:priority} - Returns: - maxState: int -1 for none, 0-Diag, 1-Low, 2- Med, 3- High, 4-Critical - """ - maxState = -1 - for k, v in tagValue.iteritems(): - maxState = v if v > maxState else maxState - - return maxState - - - -def syncAlarms(): - """ - Timer based function to update all of the aggregate alarm tags. - - """ - sublog = Logger.createSubLogger("syncAlarms") - start = time.time() - levelAlarmSummary = {} #{"alarmPath":[{srcAlarm:priority}] - for alm in system.alarm.queryStatus(priority=[0,1,2,3,4],state=['ActiveUnacked','ActiveAcked']): - srcPath = alm.getSource().toString() - mainTagPath = srcPath.split("/tag:")[1].split(":/alm")[0] - priorityVal = alm.getPriority().intValue - - pathLevelsList = mainTagPath.split("/") - - # Because alarms can exist outside of the /Alarms folder in the UDT, we will account for this - almOffset = -1 - if "Alarms" not in pathLevelsList: - almOffset= 0 - - for i in range(1, len(pathLevelsList) + almOffset): - path = provider+"/".join(pathLevelsList[:i])+"/AlarmSummary/ActiveAlarms" - if path not in levelAlarmSummary.keys(): - levelAlarmSummary[path]= {} - - levelAlarmSummary[path][srcPath] = max([levelAlarmSummary[path].get(srcPath,0), priorityVal ]) - -# pprint.pprint(levelAlarmSummary) - writeTags, writeVals = [], [] - for k, v in levelAlarmSummary.iteritems(): - writeTags.append(str(k)) - writeVals.append(v) - sublog.debug("%s - %s"%(writeTags, writeVals)) - if len(writeTags) == len(writeVals) and len(writeTags) > 0: - system.tag.writeAsync(writeTags, writeVals) - - - sublog.trace("finished in %s sec"%(time.time() - start)) \ No newline at end of file +def getTop3Alarms(): + res= [] + activeAlarms = system.alarm.queryStatus(state=["ActiveUnacked"]) + sortedAlarms = sorted(activeAlarms, key=lambda x: x.getPriority(), reverse=True) + for alm in sortedAlarms[:3]: + prio = str(alm.getPriority()) + activeData = alm.getActiveData() + label = activeData.get(EventTime) # O alm.get('label') + res.append({ + "value": { + "dispPath": alm.getDisplayPathOrSource(), + "label": alm.get("label") + }, + "style": get_severity_style(prio) + }) + return res \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/resource.json index 648b9ec..e1431de 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/summary/resource.json @@ -7,11 +7,11 @@ "code.py" ], "attributes": { - "hintScope": 7, - "lastModificationSignature": "36649fc8abff8060b71390e2f49afe477ea8e0096329614f217eda8372941ad9", + "hintScope": 1, + "lastModificationSignature": "3b3bfbd99a44d01714417200bb83d36df2f73238b137abf6b33e2e473e316612", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-15T20:54:15Z" + "timestamp": "2026-05-05T21:37:59Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/code.py deleted file mode 100644 index 1389b28..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/alarm/timers/code.py +++ /dev/null @@ -1,22 +0,0 @@ -from com.inductiveautomation.ignition.common.alarming.config.CommonAlarmProperties import EventTime -priorityBGColors = {"Diagnostic":"#FFFFFF", "Low":"#7266B7", "Medium":"#F4B834", "High":"#DE7C33", "Critical":"#E22028"} -priorityTextColors = {"Diagnostic":"#222222", "Low":"#FAFAFB", "Medium":"#FAFAFB", "High":"#FAFAFB", "Critical":"#FAFAFB"} - -def getTop3Alarms(): -# import time -# start= time.time() - res= [] - - activeAlarms = system.alarm.queryStatus([], ["ActiveUnacked"], ["*"], [], []) - sortedAlarms = system.dataset.toPyDataSet(system.dataset.sort(activeAlarms.getDataset(),3,False)) - - formatAlarms = [{'eventid':str(alm.EventId), "label":alm.get('label'), "dispPath":alm.getDisplayPathOrSource(), "eventtime":alm.getActiveData().get(EventTime), "priority":str(alm.getPriority())} for alm in activeAlarms] - top3EventIDs = [alm["EventId"] for alm in sortedAlarms[:3]] - for eid in top3EventIDs: - for alm in formatAlarms: - if alm["eventid"] == eid: - res.append({"value":{"dispPath":alm["dispPath"],"label":alm["label"]}, "style":{"backgroundColor":priorityBGColors[alm["priority"]], - "color":priorityTextColors[alm["priority"]]}}) - break -# system.perspective.print("alarm update duration %s"%(time.time()- start)) - return res \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/code.py deleted file mode 100644 index 447e08f..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/config/utils/code.py +++ /dev/null @@ -1,80 +0,0 @@ -# Find ALL the devices with a String, set 1 to Enable, 0 to Disable them -def UpdateAllDevices(target): - deviceDataset = system.device.listDevices() - for i in range(0, deviceDataset.getRowCount()): - deviceName = deviceDataset.getValueAt(i, "Name") - if target == 0: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Disabled %s"%(deviceName) - if target == 1: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Enabled %s"%(deviceName) - -#Update the devices with a specific string in the name. 1 to enable - 0 to disable -def UpdateDeviceType(taget, deviceType): - deviceDataset = system.device.listDevices() - for i in range(0, deviceDataset.getRowCount()): - deviceName = deviceDataset.getValueAt(i, "Name") - if deviceName.find(deviceType)>-1: - if target == 0: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Disabled %s"%(deviceName) - if target == 1: - system.device.setDeviceEnabled(deviceName, target) - print "Device: Enabled %s"%(deviceName) - -def UpdatePanelParams(path, namespace, opc, tagname): - subpaths = [{'name':'/AC Primary Power Fault', 'ext':'.JA_01'}, - {'name':'/AC Secondary Power Fault', 'ext':'.JA_02'}, - {'name':'/DC Power Supply 1 Fault', 'ext':'.JA_03'}, - {'name':'/DC Power Supply 2 Fault', 'ext':'.JA_04'}, - {'name':'/High Temperature', 'ext':'.TAH'}, - {'name':'/Panel Intrusion', 'ext':'.XA'}] - print "===== Updating Panel Parameters =====" - for subtag in subpaths: - tagpath = str(path) + str(subtag['name']) - tag = system.tag.getConfiguration(tagpath) - name = str(tagname) + str(subtag['ext']) - tag[0]['parameters']['Namespace'] = namespace - tag[0]['parameters']['OPC'] = opc - tag[0]['parameters']['Tag'] = name - system.tag.configure(path, tag, "o") - print "updating: " + str(subtag) - print "===== Panel Parameters Updated =====" - -def UpdateUTParams(path, namespace, opc, tagname): - subpaths = [{'name':'/Liquid Level Alarm', 'ext':'.LA'}, - {'name':'/Liquid Temperature Alarm High', 'ext':'.TAH'}, - {'name':'/Liquid Temperature Alarm High High', 'ext':'.TAHH'}, - {'name':'/Pressure Relief Device Alarm', 'ext':'.PRD_ALM'}, - {'name':'/Pressure Switch', 'ext':'.PSW'}, - {'name':'/Rapid Rise Relay Tripped', 'ext':'.RRR_TRIP'}, - {'name':'/Rapid Rise Relay Warning', 'ext':'.RRR_ALM'}, - {'name':'/Source 1 Switch', 'ext':'.ZSO01'}, - {'name':'/Source 2 Switch', 'ext':'.ZSO02'}, - {'name':'/Vacuum Fault Interrupter1 Tripped', 'ext':'.VFI01'}, - {'name':'/Vacuum Fault Interrupter2 Tripped', 'ext':'.VFI02'}, - {'name':'/Vacuum Switch', 'ext':'.VSW'}] - - for subtag in subpaths: - tagpath = str(path) + str(subtag['name']) - tag = system.tag.getConfiguration(tagpath) - name = str(tagname) + str(subtag['ext']) - tag[0]['parameters']['Namespace'] = namespace - tag[0]['parameters']['OPC'] = opc - tag[0]['parameters']['Tag'] = name - system.tag.configure(path, tag, "o") - -#def setHistory(UDTNAme): - #parentPath = "[default]_types_/Objects/TEST" - #configs = system.tag.getConfiguration(parentPath, True) - -#for folder in configs[0]['tags']: -# UDTName = [folder['name']][0] -# print UDTName -# UDTs = system.tag.getConfiguration(parentPath +'/'+ UDTName, True) -# for tag in UDTs[0]['tags']: -# if str(tag['tagType']) == 'AtomicTag': -# tag['historyEnabled'] = True -# print tag - \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/code.py new file mode 100644 index 0000000..99346c3 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/code.py @@ -0,0 +1,76 @@ +# List of enabled gateways, +gtwys = ['[default]'] + +def get_tagpaths(udt_type): + fltr = {"typeId":udt_type, "tagType":"UdtInstance", "recursive":True} + paths_list = [] + for location in equipment.common.gtwys: + results = system.tag.browse(location, fltr) + for result in results: + paths_list.append(result['fullPath']) + return paths_list + +def update_tagpaths(data_tagpath, udt_type): + raw_paths = get_tagpaths(udt_type) + paths = [str(p) for p in raw_paths] + document = {'paths':paths} + system.tag.writeBlocking(data_tagpath + '/Paths', document) + +def update_data(data_tagpath, sub_paths_map): + ''' + config_tag_path: Path to the memory tag that contains the JSON with all the paths + sub_paths_map: Dictionary that maps all the sub_paths with the tag to be used in the table. + ''' + logger = system.util.getLogger("DataTableUpdates") + try: + # 1. Read the list of tagpaths. + read_config = system.tag.readBlocking(data_tagpath + '/Paths') + raw_data = read_config[0].value + if not raw_data or 'paths' not in raw_data: + logger.warn("Empty configuration: %s" % data_tagpath) + return + # Order the keys to make sure the reading loop is consistent + paths_list = raw_data.get('paths', []) + col_names = sub_paths_map.keys() + + # 2. Build the reading list + read_paths = [] + for path in paths_list: + for col in col_names: + read_paths.append(path + sub_paths_map[col]) + # 3. Read all the values in one execution + reads = system.tag.readBlocking(read_paths) + + # 4. Process the result + data = [] + num_cols = len(col_names) + for device_idx, path in enumerate(paths_list): + item = {'device': path.split('/')[-1], 'path': path} + for col_idx, col in enumerate(col_names): + global_idx = (device_idx * num_cols) + col_idx + tag_value = reads[global_idx].value + + + item[col] = tag_value if tag_value is not None else "0" + data.append(item) + + document = {'data':data} + system.tag.writeBlocking(data_tagpath + '/Data', document) + except Exception as e: + logger.error("Fail to update data (%s): %s" % (data_tagpath, str(e))) + +def style_table(data_dic): + output = [] + for element in data_dic: + try: + severity = int(element.get('Alm', 0 )) + except (TypeError, ValueError): + severity = 0 + item = { + "value": element, + "style": {} + } + if severity > 0: + item['style'] = alarm.summary.get_severity_style(severity) + output.append(item) + return output \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/resource.json new file mode 100644 index 0000000..b422fc5 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/common/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "hintScope": 7, + "lastModificationSignature": "2082d9f4c43b85e21fc7c8f0a9a964f11dc246f364088a9deb0d76ed98dadb75", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T21:24:17Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/control/common/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/control/common/resource.json index fdd64d2..29756eb 100644 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/control/common/resource.json +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/control/common/resource.json @@ -8,10 +8,10 @@ ], "attributes": { "hintScope": 2, - "lastModificationSignature": "3884853f03c1677b8c792ca6ec847b3304067a5c1b1622618f314a38755d5f6e", + "lastModificationSignature": "1ec497a52d03da78106a8d54b326366024f8493359de30b553b79f53b020cbe1", "lastModification": { "actor": "Emmanuel", - "timestamp": "2026-04-15T20:54:16Z" + "timestamp": "2026-05-04T21:52:00Z" } } } \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/code.py new file mode 100644 index 0000000..4d1f695 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/code.py @@ -0,0 +1,50 @@ +# Definition of tag location to store tagpaths and updated data. +tagpath = '[default]System/DataTables/DOAS' +udt_type = 'Objects/Air/DOAS' +sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint' +} + +def update_data(config_tagpath, sub_paths_map): + ''' + config_tag_path: Path to the memory tag that contains the JSON with all the paths + sub_paths_map: Dictionary that maps all the sub_paths with the tag to be used in the table. + ''' + # 1. Read the list of tagpaths. + raw_data = system.tag.readBlocking(config_tagpath + '/Data')[0].value + paths_list = raw_data.get('paths', []) + if not paths_list: + return [] + # Order the keys to make sure the reading loop is consistent + col_names = sub_paths_map.keys() + + # 2. Build the reading list + read_paths = [] + for path in paths_list: + for col in col_names: + read_paths.append(path + sub_paths_map[col]) + # 3. Read all the values in one execution + reads = system.tag.readBlocking(read_paths) + + # 4. Process the result + output = [] + num_cols = len(col_names) + for device_idx, path in enumerate(paths_list): + item = {"device": path.split('/')[-1]} + for col_idx, col in enumerate(col_names): + global_idx = (device_idx * num_cols) + col_idx + tag_value = reads[global_idx].value + + + item[col] = tag_value if tag_value is not None else "0" + output.append(item) + return output + +def update_tagpaths(): + raw_paths = equipment.common.get_tagpaths(udt_type) + paths = [str(p) for p in raw_paths] + document = {'paths':paths} + system.tag.writeBlocking(tagpath + '/Data', document) \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/resource.json new file mode 100644 index 0000000..f367354 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/data/DOAS/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "hintScope": 7, + "lastModificationSignature": "4a0f454d3297d1bc7016bba11ad55ad961723511a09a6ccb501176f5fc0f93f1", + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T15:04:19Z" + } + } +} \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/code.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/code.py deleted file mode 100644 index 2e268ef..0000000 --- a/Gateways/FE/projects/SDC_PHX_A7/ignition/script-python/equipment/setpoint/code.py +++ /dev/null @@ -1,100 +0,0 @@ -def set_DOAS(): - tagpaths = ["[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS01/Control/Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS02/Control/Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Config/High Supply Air Temperature Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Schedule Force Occupied", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Supply Air Dewpoint Setpoint", - "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_DOAS03/Control/Supply Air Temperature Setpoint" - ] - data = system.tag.readBlocking(tagpaths) - #print data - idx = 0 - w_paths = [] - w_values = [] - for i in range(0,3): - if data[idx].value == 0: - w_paths.append(tagpaths[idx]) - w_values.append(68) - if data[idx+1].value == 0: - w_paths.append(tagpaths[idx+1]) - w_values.append(1) - if data[idx+2].value == 0: - w_paths.append(tagpaths[idx+2]) - w_values.append(55) - if data[idx+3].value == 0: - w_paths.append(tagpaths[idx+3]) - w_values.append(65) - idx += 4 - if w_paths: - print "Writing values" - try: - system.tag.writeBlocking(w_paths, w_values) - except: - print "Error" - else: - print "Zeros not found" - -def set_FCU(): - fcus = ["[Ignition_Common_IO_Gtwy]ER1185/SATB1_HS2_EL1185_FCU01", - "[Ignition_Common_IO_Gtwy]MDF1187/SATB1_HS2_MDF1187_FCU02", - "[Ignition_Common_IO_Gtwy]MDF1187/SATB1_HS2_MDF1187_FCU03", - "[Ignition_Common_IO_Gtwy]ER1160/SATB1_HS2_EL1160_FCU04", - "[Ignition_Common_IO_Gtwy]IDF1174/SATB1_HS2_IDF1174_FCU05", - "[Ignition_Common_IO_Gtwy]IDF1154/SATB1_HS2_IDF1154_FCU06", - "[Ignition_Common_IO_Gtwy]MDF1149/SATB1_HS2_MDF1149_FCU07", - "[Ignition_Common_IO_Gtwy]MDF1149/SATB1_HS2_MDF1149_FCU08", - "[Ignition_Common_IO_Gtwy]FS1285/SATB1_HS2_FS1285_FCU09", - "[Ignition_Common_IO_Gtwy]IDF1286/SATB1_HS2_IDF1286_FCU10", - "[Ignition_Common_IO_Gtwy]IDF1286/SATB1_HS2_IDF1286_FCU11", - "[Ignition_Common_IO_Gtwy]ER1287/SATB1_HS2_EL1287_FCU12", - "[Ignition_Common_IO_Gtwy]ER1284/SATB1_HS2_EL1284_FCU13", - "[Ignition_Common_IO_Gtwy]IDF1274/SATB1_HS2_IDF1274_FCU14", - "[Ignition_Common_IO_Gtwy]IDF1264/SATB1_HS2_IDF1264_FCU15", - "[Ignition_Common_IO_Gtwy]ER1128/SATB1_HS2_EL1128_FCU16", - "[Ignition_Common_IO_Gtwy]MR1125/SATB1_HS2_ME1125_FCU17", - "[Ignition_Common_IO_Gtwy]ER1229/SATB1_HS2_EL1229_FCU18", - "[Ignition_Common_IO_Gtwy]IDF1218/SATB1_HS2_IDF1218_FCU19", - "[Ignition_Common_IO_Gtwy]IDF1122/SATB1_HS2_IDF1122_FCU20", - "[Ignition_Common_IO_Gtwy]FS1232/SATB1_HS2_FS1232_FCU21", - "[Ignition_Common_IO_Gtwy]MR1132/SATB1_HS2_ME1132_FCU22", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU23", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU24", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU25", - "[Ignition_Common_IO_Gtwy]RM1138/SATB1_HS2_RM1138_FCU26", - "[Ignition_Common_IO_Gtwy]RM1219/SATB1_HS2_RM1219_FCU27", - "[Ignition_Common_IO_Gtwy]RM1193/SATB1_HS2_RM1193_FCU28", - "[Ignition_Common_IO_Gtwy]RM1234/SATB1_HS2_RM1234_FCU29"] - - tagpaths = [] - for fcu in fcus: - tagpaths.append(fcu + "/Config/Space Temperature Cooling Setpoint") - tagpaths.append(fcu + "/Config/Space Temperature Cooling Setpoint DB") - - data = system.tag.readBlocking(tagpaths) - #for d in data: - # print d - idx = 0 - w_paths = [] - w_values = [] - for i in range(0,29): - if data[idx].value == 0: - w_paths.append(tagpaths[idx]) - w_values.append(74) - if data[idx+1].value == 0: - w_paths.append(tagpaths[idx+1]) - w_values.append(1) - idx += 2 - if w_paths: - print "writing values" - try: - system.tag.writeBlocking(w_paths, w_values) - except: - print "Error" - else: - print "Zeros not found" \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/handleTimerEvent.py b/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/handleTimerEvent.py new file mode 100644 index 0000000..2ed2d05 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/handleTimerEvent.py @@ -0,0 +1,22 @@ +def handleTimerEvent(): + # DOAS update data + tagpath = '[default]System/DataTables/DOAS' + sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint', + 'Alm':'/AlarmSummary/Highest Active Priority' + } + equipment.common.update_data(tagpath, sub_paths) + + # RTU update data + tagpath = '[default]System/DataTables/DOAS' + sub_paths = { + 'OAD':'/Outdoor Air Dewpoint', + 'BP':'/Building Pressure', + 'SAT':'/Supply Air Temperature', + 'SAD':'/Supply Air Dewpoint', + 'Alm':'/AlarmSummary/Highest Active Priority' + } + equipment.common.update_data(tagpath, sub_paths) \ No newline at end of file diff --git a/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/resource.json b/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/resource.json new file mode 100644 index 0000000..8cc0599 --- /dev/null +++ b/Gateways/FE/projects/SDC_PHX_A7/ignition/timer/UpdateData/resource.json @@ -0,0 +1,20 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "handleTimerEvent.py" + ], + "attributes": { + "sharedThread": true, + "delay": 10000, + "lastModificationSignature": "028eec92dcd85ffca7bd6b750275903fda44afd67a09c1f7bae0c92a7fe642ef", + "fixedDelay": true, + "lastModification": { + "actor": "Emmanuel", + "timestamp": "2026-05-05T21:41:30Z" + }, + "enabled": false + } +} \ No newline at end of file diff --git a/Gateways/FE/themes/stream-light/NunitoSans-Variable.ttf b/Gateways/FE/themes/stream-light/NunitoSans-Variable.ttf deleted file mode 100755 index 9ee3c15..0000000 Binary files a/Gateways/FE/themes/stream-light/NunitoSans-Variable.ttf and /dev/null differ diff --git a/Gateways/FE/themes/stream-light/config.json b/Gateways/FE/themes/stream-light/config.json old mode 100755 new mode 100644 diff --git a/Gateways/FE/themes/stream-light/fonts.css b/Gateways/FE/themes/stream-light/fonts.css old mode 100755 new mode 100644 index 67ac3c3..f7c51f3 --- a/Gateways/FE/themes/stream-light/fonts.css +++ b/Gateways/FE/themes/stream-light/fonts.css @@ -1,7 +1,31 @@ @font-face { font-family: "Nunito Sans"; - src: url('./NunitoSans-Variable.ttf') format('truetype'); - font-weight: 200 900; + src: url('fonts/NunitoSans-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Nunito Sans"; + src: url('fonts/NunitoSans-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Nunito Sans"; + src: url('fonts/NunitoSans-ExtraBold.ttf') format('truetype'); + font-weight: 900; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Nunito Sans"; + src: url('fonts/NunitoSans-Light.ttf') format('truetype'); + font-weight: 300; font-style: normal; font-display: swap; } diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-Black.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Black.ttf new file mode 100644 index 0000000..093fbf9 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Black.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-BlackItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-BlackItalic.ttf new file mode 100644 index 0000000..00db009 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-BlackItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-Bold.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Bold.ttf new file mode 100644 index 0000000..a3ca4b6 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Bold.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-BoldItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-BoldItalic.ttf new file mode 100644 index 0000000..1bccb97 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-BoldItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBold.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBold.ttf new file mode 100644 index 0000000..a732425 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBold.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBoldItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBoldItalic.ttf new file mode 100644 index 0000000..05e26d6 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraBoldItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLight.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLight.ttf new file mode 100644 index 0000000..2ad4ac0 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLight.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLightItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLightItalic.ttf new file mode 100644 index 0000000..b73b0fa Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-ExtraLightItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-Italic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Italic.ttf new file mode 100644 index 0000000..85269a1 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Italic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-Light.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Light.ttf new file mode 100644 index 0000000..2f5d049 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Light.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-LightItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-LightItalic.ttf new file mode 100644 index 0000000..bac17d0 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-LightItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-Regular.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Regular.ttf new file mode 100644 index 0000000..9abe932 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-Regular.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBold.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBold.ttf new file mode 100644 index 0000000..c27eaf4 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBold.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBoldItalic.ttf b/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBoldItalic.ttf new file mode 100644 index 0000000..59b6402 Binary files /dev/null and b/Gateways/FE/themes/stream-light/fonts/NunitoSans-SemiBoldItalic.ttf differ diff --git a/Gateways/FE/themes/stream-light/fonts/OFL.txt b/Gateways/FE/themes/stream-light/fonts/OFL.txt new file mode 100644 index 0000000..bad763d --- /dev/null +++ b/Gateways/FE/themes/stream-light/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2016 The Nunito Project Authors (contact@sansoxygen.com), + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Gateways/FE/themes/stream-light/fonts/resource.json b/Gateways/FE/themes/stream-light/fonts/resource.json old mode 100755 new mode 100644 index d2a1de1..fd0c653 --- a/Gateways/FE/themes/stream-light/fonts/resource.json +++ b/Gateways/FE/themes/stream-light/fonts/resource.json @@ -4,7 +4,20 @@ "type": "com.inductiveautomation.perspective:theme", "restricted": false, "overridable": true, - "files":[ - "NunitoSans-Variable.ttf" + "files":[ + "NunitoSans-BlackItalic.ttf", + "NunitoSans-Black.ttf", + "NunitoSans-BoldItalic.ttf", + "NunitoSans-Bold.ttf", + "NunitoSans-ExtraBoldItalic.ttf", + "NunitoSans-ExtraBold.ttf", + "NunitoSans-ExtraLightItalic.ttf", + "NunitoSans-ExtraLight.ttf", + "NunitoSans-Italic.ttf", + "NunitoSans-LightItalic.ttf", + "NunitoSans-Light.ttf", + "NunitoSans-Regular.ttf", + "NunitoSans-SemiBoldItalic.ttf", + "NunitoSans-SemiBold.ttf" ] } diff --git a/Gateways/FE/themes/stream-light/index.css b/Gateways/FE/themes/stream-light/index.css old mode 100755 new mode 100644 index be52894..d96707b --- a/Gateways/FE/themes/stream-light/index.css +++ b/Gateways/FE/themes/stream-light/index.css @@ -1,5 +1,5 @@ /* Imports */ -/* @import "./fonts.css"; */ +@import "./fonts.css"; @import "./variables.css"; @import "../light/globals.css"; @@ -9,7 +9,7 @@ @import "../light/palette/index.css"; :root { - --font-main: 'Nunito', sans-serif; + --font-main: 'Nunito Sans', sans-serif; } .ia_container, .ia_component { font-family: var(--font-main) !important; diff --git a/Gateways/FE/themes/stream-light/resource.json b/Gateways/FE/themes/stream-light/resource.json old mode 100755 new mode 100644 index 2968b84..ad645e2 --- a/Gateways/FE/themes/stream-light/resource.json +++ b/Gateways/FE/themes/stream-light/resource.json @@ -8,7 +8,6 @@ "config.json", "index.css", "variables.css", - "fonts.css", - "NunitoSans-Variable.ttf" + "fonts.css" ] } diff --git a/Gateways/FE/themes/stream-light/variables.css b/Gateways/FE/themes/stream-light/variables.css old mode 100755 new mode 100644 index d54483c..511bf45 --- a/Gateways/FE/themes/stream-light/variables.css +++ b/Gateways/FE/themes/stream-light/variables.css @@ -66,7 +66,7 @@ --text-primary: #263367; --text-primary-inverse: #FFFFFF; --text-on-dark: #1E1E1E; - --text-on-light: ##F2F2F2: + --text-on-light: #F2F2F2; --text-secondary: #53575a; --text-eu: #909497; --text-muted: #767676; /* Unidades y detalles */ @@ -146,7 +146,7 @@ --icon: var(--neutral-70); --icon--hover: var(--neutral-60); --icon--disabled: var(--neutral-40); - --icon--selected: var(--neutral-10); + --icon--selecte:wqd: var(--neutral-10); /* Borders */ --border: var(--neutral-50); @@ -174,15 +174,16 @@ --opacity-50: rgba(0, 0, 0, 0.50); /* black, 50% opacity */ --opacity-85: rgba(0, 0, 0, 0.85); /* black, 85% opacity */ /* Typography */ - --font-NotoSans: 'Nunito', "Segoe UI", Arial, sans-serif; - --font-main: 'Nunito', "Segoe UI", Arial, sans-serif; + --font-NotoSans: 'Nunito Sans', 'Nunito', "Segoe UI", Arial, sans-serif; + --font-main: 'Nunito Sans', 'Nunito', "Segoe UI", Arial, sans-serif; /* Component Context Menu */ --contextBackground: var(--white); } + .psc-navtree { - font-family: 'Nunito'; - font-size: 16; + font-family: 'Nunito Sans'; + font-size: 16px; font-weight: 100; color: var(--navtree-color); background-color: var(--navtree-bgcolor);