20260505 Backup

This commit is contained in:
2026-05-05 23:58:14 +00:00
parent a590cd030f
commit 0bc354d095
870 changed files with 30817 additions and 46676 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -145,20 +145,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -152,8 +152,10 @@
], ],
"path": "Library/Diagrams/HVAC/Dgrm_FCU", "path": "Library/Diagrams/HVAC/Dgrm_FCU",
"style": { "style": {
"gap": "var(--space-xl)",
"overflow": "visible" "overflow": "visible"
}, },
"useDefaultViewHeight": false,
"useDefaultViewWidth": false "useDefaultViewWidth": false
}, },
"type": "ia.display.flex-repeater" "type": "ia.display.flex-repeater"
@@ -163,12 +165,12 @@
"name": "root" "name": "root"
}, },
"props": { "props": {
"alignContent": "center",
"alignItems": "center",
"direction": "column", "direction": "column",
"justify": "space-evenly", "justify": "center",
"style": { "style": {
"backgroundColor": "var(--containerRoot)", "backgroundColor": "var(--containerRoot)"
"overflow": "visible",
"padding": 15
} }
}, },
"scripts": { "scripts": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -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"
}
}

View File

@@ -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"
}
}

View File

@@ -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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -385,8 +378,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -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"
}
}

View File

@@ -113,14 +113,6 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
@@ -130,7 +122,8 @@
"params": { "params": {
"embedded": false, "embedded": false,
"objectName": "DiscreteIn" "objectName": "DiscreteIn"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -389,8 +382,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -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"

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -385,8 +378,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -21,8 +21,8 @@
"config": true, "config": true,
"control": true "control": true
}, },
"objectName": "Breaker", "objectName": "ATS",
"tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE1" "tagPath": "[Ignition_SATB1_IO1_default]Datahall 1/Development/ATS"
}, },
"propConfig": { "propConfig": {
"custom.tabsConfig": { "custom.tabsConfig": {
@@ -119,7 +119,7 @@
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
}, },
"path": "Library/Templates/Breaker E/Info" "path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -362,8 +362,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -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"
}
}

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -385,8 +378,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -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"
}
}

View File

@@ -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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -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))

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -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"
}
}

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -385,8 +378,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

View File

@@ -3,7 +3,6 @@
"tabsConfig": { "tabsConfig": {
"tabs": [ "tabs": [
"Status", "Status",
"Control",
"Config", "Config",
"Trend", "Trend",
"Meta", "Meta",
@@ -15,14 +14,8 @@
} }
}, },
"params": { "params": {
"auth": { "objectName": "Battery",
"almAck": true, "tagPath": "[PHXA2_IG_COMN]HE1138/PHXA2_UPS_BATT_VM_HS1"
"almShelve": true,
"config": true,
"control": true
},
"objectName": "Breaker",
"tagPath": "[Ignition_Common_IO_Gtwy]ER1151/SATB1_MPR1151_HS1_FE1"
}, },
"propConfig": { "propConfig": {
"custom.tabsConfig": { "custom.tabsConfig": {
@@ -69,10 +62,6 @@
"custom.trendConfig": { "custom.trendConfig": {
"persistent": true "persistent": true
}, },
"params.auth": {
"paramDirection": "input",
"persistent": true
},
"params.objectName": { "params.objectName": {
"paramDirection": "input", "paramDirection": "input",
"persistent": true "persistent": true
@@ -82,7 +71,12 @@
"persistent": true "persistent": true
} }
}, },
"props": {}, "props": {
"defaultSize": {
"height": 699,
"width": 703
}
},
"root": { "root": {
"children": [ "children": [
{ {
@@ -113,13 +107,20 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
}, }
"path": "Library/Templates/Breaker X/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -157,13 +158,20 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/Popups/\u0027,{view.params.objectName},\u0027/Trends\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
}, }
"path": "Library/Templates/Trends"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -197,7 +205,7 @@
"props.path": { "props.path": {
"binding": { "binding": {
"config": { "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" "type": "expr"
} }
@@ -229,14 +237,6 @@
"type": "expr" "type": "expr"
} }
}, },
"props.params.auth": {
"binding": {
"config": {
"path": "view.params.auth"
},
"type": "property"
}
},
"props.params.tagPath": { "props.params.tagPath": {
"binding": { "binding": {
"config": { "config": {
@@ -244,11 +244,16 @@
}, },
"type": "property" "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" "type": "ia.display.view"
}, },
{ {
@@ -270,14 +275,6 @@
"type": "expr" "type": "expr"
} }
}, },
"props.params.auth": {
"binding": {
"config": {
"path": "view.params.auth"
},
"type": "property"
}
},
"props.params.tagPath": { "props.params.tagPath": {
"binding": { "binding": {
"config": { "config": {
@@ -288,50 +285,7 @@
} }
}, },
"props": { "props": {
"path": "Library/Framework/Tag Notes/View Notes" "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/\u0027,{view.params.objectName},\u0027/Control\u0027)"
},
"type": "expr"
}
}
},
"props": {
"loading": {
"order": "with-parent"
}
}, },
"type": "ia.display.view" "type": "ia.display.view"
} }
@@ -362,8 +316,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -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"
}
}

View File

@@ -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"
}
}

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -385,8 +378,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

View File

@@ -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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -116,20 +116,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -388,8 +381,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

View File

@@ -418,7 +418,11 @@
}, },
"radios": [ "radios": [
{ {
"enabled": true,
"selected": true, "selected": true,
"style": {
"classes": ""
},
"text": "Match on ANY", "text": "Match on ANY",
"value": 0 "value": 0
}, },
@@ -1277,15 +1281,21 @@
], ],
"data": [ "data": [
{ {
"AC1": "Good", "style": {
"AC2": "Good", "backgroundColor": "#7266B7",
"DC1": "Good", "color": "#FAFAFB"
"DC2": "Alarm", },
"Desc": "Description", "value": {
"Room": "Location", "AC1": "Good",
"THA": "Good", "AC2": "Good",
"XA": "Good", "DC1": "Good",
"name": "PNL01" "DC2": "Alarm",
"Desc": "Description",
"Room": "Location",
"THA": "Good",
"XA": "Good",
"name": "PNL02"
}
}, },
{ {
"AC1": "Good", "AC1": "Good",

View File

@@ -117,20 +117,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -389,8 +382,7 @@
"props": { "props": {
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, }
"currentTabIndex": 2
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -113,20 +113,13 @@
}, },
"type": "property" "type": "property"
} }
},
"props.path": {
"binding": {
"config": {
"expression": "concat(\u0027Library/Templates/\u0027,{view.params.objectName},\u0027/Info\u0027)"
},
"type": "expr"
}
} }
}, },
"props": { "props": {
"loading": { "loading": {
"order": "with-parent" "order": "with-parent"
} },
"path": "Library/Templates/Info"
}, },
"type": "ia.display.view" "type": "ia.display.view"
}, },
@@ -386,7 +379,7 @@
"contentStyle": { "contentStyle": {
"backgroundColor": "var(--container)" "backgroundColor": "var(--container)"
}, },
"currentTabIndex": 1 "currentTabIndex": 3
}, },
"type": "ia.container.tab" "type": "ia.container.tab"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -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

View File

@@ -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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Some files were not shown because too many files have changed in this diff Show More