{ "custom": { "RTU_tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02", "auth": { "almAck": false, "almShelve": false, "config": false, "control": false }, "data": [ "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01", "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU02" ], "room": "SATB1_RF_RTU02", "tagPath": "[Ignition_Common_IO_Gtwy]Roof" }, "params": {}, "propConfig": { "custom.RTU_tagPath": { "binding": { "config": { "path": "view.custom.room" }, "transforms": [ { "code": "\treturn self.custom.tagPath + \"/\"+ value", "type": "script" } ], "type": "property" }, "persistent": true }, "custom.auth": { "binding": { "config": { "path": "session.props.auth.user.roles" }, "transforms": [ { "code": "\treturn utils.roles.validate(value)", "type": "script" } ], "type": "property" }, "persistent": true }, "custom.data": { "binding": { "config": { "struct": { "tagPath": "{view.custom.tagPath}", "time": "now(3000)" }, "waitOnAll": true }, "enabled": false, "transforms": [ { "code": "\toutput \u003d []\n\ttags \u003d system.tag.browse(value[\"tagPath\"],{\"typeId\":\"Objects/Air/RTU-1\", \"recursive\":True ,\"tagType\":\"UdtInstance\"})\n\tfor item in tags:\n\t\ttagPath \u003d str(item[\"fullPath\"])\n\t\toutput.append(tagPath)\n\t\ttags \u003d system.tag.browse(value[\"tagPath\"],{\"typeId\":\"Objects/Air/RTU-2\", \"recursive\":True ,\"tagType\":\"UdtInstance\"})\n\tfor item in tags:\n\t\ttagPath \u003d str(item[\"fullPath\"])\n\t\toutput.append(tagPath)\n\treturn output", "type": "script" } ], "type": "expr-struct" }, "persistent": true }, "custom.room": { "persistent": true }, "custom.tagPath": { "persistent": true } }, "props": { "defaultSize": { "width": 1200 } }, "root": { "children": [ { "children": [ { "meta": { "name": "RTU Diagram" }, "propConfig": { "props.params.objectName": { "binding": { "config": { "path": "view.custom.room" }, "transforms": [ { "code": "\toutput \u003d value.split(\"_\")\n\treturn output[2]", "type": "script" } ], "type": "property" } }, "props.params.tagPath": { "binding": { "config": { "path": "view.custom.RTU_tagPath" }, "type": "property" } }, "props.path": { "binding": { "config": { "path": "view.custom.room" }, "enabled": false, "transforms": [ { "code": "\tsplit \u003d value.split(\"_\")\n\treturn \"Pages/Dev/C_AirSystem/Diagrams/\" + split[2]", "type": "script" } ], "type": "property" } } }, "props": { "params": { "embedded": false }, "path": "Library/Diagrams/HVAC/Dgrm_RTU", "style": { "overflow": "visible" } }, "type": "ia.display.view" } ], "meta": { "name": "Diagram" }, "position": { "basis": "70%", "grow": 1 }, "props": { "alignContent": "center", "alignItems": "center", "direction": "column", "justify": "center", "style": { "backgroundColor": "var(--containerRoot)", "overflow": "visible" }, "wrap": "wrap" }, "type": "ia.container.flex" }, { "children": [ { "meta": { "name": "Label" }, "props": { "text": "Roof" }, "type": "ia.display.label" }, { "meta": { "name": "FirstFloor Percent" }, "position": { "grow": 1 }, "props": { "path": "Library/Widgets/Layouts/RTU_Roof", "style": { "overflow": "visible" }, "useDefaultViewHeight": true }, "type": "ia.display.view" }, { "meta": { "name": "Label_0" }, "props": { "text": "Second Floor" }, "type": "ia.display.label" }, { "meta": { "name": "FirstFloor Percent_0" }, "position": { "grow": 1 }, "props": { "path": "Library/Widgets/Layouts/RTU_SecondFloor", "style": { "overflow": "visible" }, "useDefaultViewHeight": true }, "type": "ia.display.view" }, { "meta": { "name": "Label_2" }, "props": { "text": "First Floor" }, "type": "ia.display.label" }, { "meta": { "name": "FirstFloor Percent_1" }, "position": { "grow": 1 }, "props": { "path": "Library/Widgets/Layouts/RTU_FirstFloor", "style": { "overflow": "visible" }, "useDefaultViewHeight": true, "useDefaultViewWidth": true }, "type": "ia.display.view" }, { "meta": { "name": "Label_1" }, "props": { "text": "List of devices" }, "type": "ia.display.label" }, { "events": { "component": { "onRowClick": { "config": { "script": "\tpayload \u003d {\"Room\":self.props.selection.data[0].Tag}\n\tmessageType \u003d \"roomUpdate\"\n\tsystem.perspective.sendMessage(messageType, payload)\n\tmessageType \u003d \"layout_01_Update\"\n\tsystem.perspective.sendMessage(messageType, payload)\n\tmessageType \u003d \"layout_02_Update\"\n\tsystem.perspective.sendMessage(messageType, payload)\n\tmessageType \u003d \"layout_03_Update\"\n\tsystem.perspective.sendMessage(messageType, payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Table" }, "position": { "grow": 1 }, "propConfig": { "props.data": { "binding": { "config": { "struct": { "paths": "{view.custom.data}", "time": "now(5000)" }, "waitOnAll": true }, "enabled": false, "transforms": [ { "code": "\toutput \u003d []\n\tdata \u003d value[\"paths\"]\n\tfor item in data:\n\t\tAlmS \u003d alarm.summary.calcMaxPriority(item)\n\t\tif(AlmS \u003d\u003d 1):\n\t\t\tAlarmSeverity \u003d \"Controller\"\n\t\telif(AlmS \u003d\u003d 2):\n\t\t\tAlarmSeverity \u003d \"Info\"\n\t\telif(AlmS \u003d\u003d 3):\n\t\t\tAlarmSeverity \u003d \"Warning\"\n\t\telif(AlmS \u003d\u003d 4):\n\t\t\tAlarmSeverity \u003d \"Critical\"\n\t\telse:\n\t\t\tAlarmSeverity \u003d \" \"\n\t\tRAD \u003d system.tag.readBlocking(item + \"/Return Air Damper\")[0].value\n\t\tSAT \u003d system.tag.readBlocking(item + \"/Supply Air Temperature\")[0].value\n\t\tName \u003d system.tag.readBlocking(item + \"/Meta/EqName\")[0].value\n\t\ttag \u003d system.tag.readBlocking(item + \"/Meta/Ignition Tag Name\")[0].value\n\t\toutput.append({ \"RAD\": str(RAD) + \u0027 %\u0027,\n\t\t\t\t\t\t\"SAT\": str(round(SAT,3)) + \u0027 F\u0027,\n\t\t\t\t\t\t\"Tag\": tag,\n\t\t\t\t\t\t\"AlarmSeverity\": AlarmSeverity,\n\t\t\t\t\t\t\"Name\": Name})\n\treturn output", "type": "script" } ], "type": "expr-struct" } } }, "props": { "columns": [ { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Name", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": false, "number": { "condition": "", "value": "" }, "string": { "condition": "", "value": "" }, "visible": "on-hover" }, "footer": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "header": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "Device" }, "justify": "auto", "nullFormat": { "includeNullStrings": false, "nullFormatValue": "", "strict": false }, "number": "value", "numberFormat": "0,0.##", "progressBar": { "bar": { "color": "", "style": { "classes": "" } }, "max": 100, "min": 0, "track": { "color": "", "style": { "classes": "" } }, "value": { "enabled": true, "format": "0,0.##", "justify": "center", "style": { "classes": "" } } }, "render": "string", "resizable": true, "sort": "none", "sortable": true, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 75 }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "SAT", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": false, "number": { "condition": "", "value": "" }, "string": { "condition": "", "value": "" }, "visible": "on-hover" }, "footer": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "header": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "Supply Air Temp" }, "justify": "auto", "nullFormat": { "includeNullStrings": false, "nullFormatValue": "", "strict": false }, "number": "value", "numberFormat": "0,0.##", "progressBar": { "bar": { "color": "", "style": { "classes": "" } }, "max": 100, "min": 0, "track": { "color": "", "style": { "classes": "" } }, "value": { "enabled": true, "format": "0,0.##", "justify": "center", "style": { "classes": "" } } }, "render": "auto", "resizable": true, "sort": "none", "sortable": true, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "RAD", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": false, "number": { "condition": "", "value": "" }, "string": { "condition": "", "value": "" }, "visible": "on-hover" }, "footer": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "header": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "Return Air Damper Position" }, "justify": "auto", "nullFormat": { "includeNullStrings": false, "nullFormatValue": "", "strict": false }, "number": "value", "numberFormat": "0,0.##", "progressBar": { "bar": { "color": "", "style": { "classes": "" } }, "max": 100, "min": 0, "track": { "color": "", "style": { "classes": "" } }, "value": { "enabled": true, "format": "0,0.##", "justify": "center", "style": { "classes": "" } } }, "render": "auto", "resizable": true, "sort": "none", "sortable": true, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "AlarmSeverity", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": false, "number": { "condition": "", "value": "" }, "string": { "condition": "", "value": "" }, "visible": "on-hover" }, "footer": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "header": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "Alarm Severity" }, "justify": "auto", "nullFormat": { "includeNullStrings": false, "nullFormatValue": "", "strict": false }, "number": "value", "numberFormat": "0,0.##", "progressBar": { "bar": { "color": "", "style": { "classes": "" } }, "max": 100, "min": 0, "track": { "color": "", "style": { "classes": "" } }, "value": { "enabled": true, "format": "0,0.##", "justify": "center", "style": { "classes": "" } } }, "render": "auto", "resizable": true, "sort": "none", "sortable": true, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Tag", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": false, "number": { "condition": "", "value": "" }, "string": { "condition": "", "value": "" }, "visible": "on-hover" }, "footer": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "header": { "align": "center", "justify": "left", "style": { "classes": "" }, "title": "" }, "justify": "auto", "nullFormat": { "includeNullStrings": false, "nullFormatValue": "", "strict": false }, "number": "value", "numberFormat": "0,0.##", "progressBar": { "bar": { "color": "", "style": { "classes": "" } }, "max": 100, "min": 0, "track": { "color": "", "style": { "classes": "" } }, "value": { "enabled": true, "format": "0,0.##", "justify": "center", "style": { "classes": "" } } }, "render": "auto", "resizable": true, "sort": "none", "sortable": true, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": false, "width": "" } ], "data": [ { "AlarmSeverity": "Info", "Name": "RTU_01", "RAD": "48.0 %", "SAT": "57.1 F", "Tag": "SATB1_RF_RTU01" }, { "AlarmSeverity": " ", "Name": "RTU_02", "RAD": "68.0 %", "SAT": "69.8 F", "Tag": "SATB1_RF_RTU02" }, { "AlarmSeverity": " ", "Name": "RTU_03", "RAD": "68.0 %", "SAT": "69.8 F", "Tag": "SATB1_RF_RTU02" }, { "AlarmSeverity": " ", "Name": "RTU_04", "RAD": "66.0 %", "SAT": "70.1 F", "Tag": "SATB1_RF_RTU02" }, { "AlarmSeverity": " ", "Name": "RTU_05", "RAD": "69.0 %", "SAT": "68.8 F", "Tag": "SATB1_RF_RTU02" } ], "style": { "overflow": "auto" } }, "type": "ia.display.table" }, { "children": [ { "events": { "dom": { "onClick": { "config": { "script": "\tClosed \u003d True\n\tself.custom.RTU1_Emergency_Override \u003d Closed\n\tself.custom.RTU2_Emergency_Override \u003d Closed" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button" }, "position": { "grow": 1 }, "propConfig": { "custom.RTU1_Emergency_Override": { "binding": { "config": { "bidirectional": true, "fallbackDelay": 2.5, "mode": "indirect", "references": { "0": "{view.custom.data[0]}" }, "tagPath": "{0}/Control/Emergency Override" }, "type": "tag" } }, "custom.RTU2_Emergency_Override": { "binding": { "config": { "bidirectional": true, "fallbackDelay": 2.5, "mode": "indirect", "references": { "0": "{view.custom.data[1]}" }, "tagPath": "{0}/Control/Emergency Override" }, "type": "tag" } }, "props.enabled": { "binding": { "config": { "path": "view.custom.auth.control" }, "type": "property" } }, "props.primary": { "binding": { "config": { "fallbackDelay": 2.5, "mode": "direct", "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01/Control/Emergency Override" }, "enabled": false, "type": "tag" } } }, "props": { "image": { "style": { "backgroundColor": "#D5D5D5", "color": "#2B2B2B" } }, "style": { "borderColor": "#AAAAAA", "borderStyle": "solid", "borderWidth": 1, "margin": 2 }, "text": "Close Outside Dampers", "textStyle": { "color": "#2B2B2B" } }, "type": "ia.input.button" }, { "events": { "dom": { "onClick": { "config": { "script": "\tAuto \u003d False\n\tself.custom.RTU1_Emergency_Override \u003d Auto\n\tself.custom.RTU2_Emergency_Override \u003d Auto\n\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_0" }, "position": { "grow": 1 }, "propConfig": { "custom.RTU1_Emergency_Override": { "binding": { "config": { "bidirectional": true, "fallbackDelay": 2.5, "mode": "indirect", "references": { "0": "{view.custom.data[0]}" }, "tagPath": "{0}/Control/Emergency Override" }, "type": "tag" } }, "custom.RTU2_Emergency_Override": { "binding": { "config": { "bidirectional": true, "fallbackDelay": 2.5, "mode": "indirect", "references": { "0": "{view.custom.data[1]}" }, "tagPath": "{0}/Control/Emergency Override" }, "type": "tag" } }, "props.enabled": { "binding": { "config": { "path": "view.custom.auth.control" }, "type": "property" } }, "props.primary": { "binding": { "config": { "fallbackDelay": 2.5, "mode": "direct", "tagPath": "[Ignition_Common_IO_Gtwy]Roof/SATB1_RF_RTU01/Control/Emergency Override" }, "enabled": false, "transforms": [ { "fallback": false, "inputType": "scalar", "mappings": [ { "input": false, "output": true }, { "input": true, "output": false } ], "outputType": "scalar", "type": "map" } ], "type": "tag" } } }, "props": { "image": { "style": { "backgroundColor": "#D5D5D5", "color": "#2B2B2B" } }, "style": { "borderColor": "#AAAAAA", "borderStyle": "solid", "borderWidth": 1, "margin": 2 }, "text": "Set Dampers In Auto", "textStyle": { "color": "#2B2B2B" } }, "type": "ia.input.button" } ], "meta": { "name": "FlexContainer" }, "position": { "basis": "50px", "grow": 1 }, "props": { "style": { "gap": "var(--space-sm)", "margin": 5, "overflow": "visible" } }, "type": "ia.container.flex" } ], "meta": { "name": "Location" }, "position": { "basis": "450px", "grow": 1 }, "props": { "direction": "column", "style": { "backgroundColor": "var(--container)", "borderBottomLeftRadius": "var(--borderRadius)", "borderBottomRightRadius": "var(--borderRadius)", "borderTopLeftRadius": "var(--borderRadius)", "borderTopRightRadius": "var(--borderRadius)", "boxShadow": "var(--boxShadow2)", "overflow": "visible", "padding": 10 } }, "type": "ia.container.flex" } ], "meta": { "name": "root" }, "props": { "justify": "space-evenly", "style": { "backgroundColor": "var(--containerRoot)", "overflow": "visible", "padding": 15 } }, "scripts": { "customMethods": [], "extensionFunctions": null, "messageHandlers": [ { "messageType": "roomUpdate", "pageScope": true, "script": "\t# implement your handler here\n\tself.view.custom.room \u003d payload[\"Room\"]", "sessionScope": false, "viewScope": false } ] }, "type": "ia.container.flex" } }