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