{ "custom": { "Status": 0, "auth": { "almAck": true, "almShelve": true, "config": true, "control": true }, "current_value": 0 }, "params": { "ID": 3, "tagPath": "[Ignition_Common_IO_Gtwy]MPR1140/PLC Tags/FreezeProtectionCmd" }, "propConfig": { "custom.Status": { "binding": { "config": { "path": "view.custom.current_value" }, "transforms": [ { "code": "\tmask \u003d pow(2, self.params.ID)\n\tmasked \u003d value \u0026 mask\n\treturn masked \u003e\u003e self.params.ID", "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.current_value": { "binding": { "config": { "fallbackDelay": 2.5, "mode": "indirect", "references": { "tagPath": "{view.params.tagPath}" }, "tagPath": "{tagPath}" }, "type": "tag" }, "persistent": true }, "params.ID": { "paramDirection": "input", "persistent": true }, "params.tagPath": { "paramDirection": "input", "persistent": true } }, "props": { "defaultSize": { "height": 86, "width": 453 } }, "root": { "children": [ { "meta": { "name": "Label" }, "propConfig": { "props.text": { "binding": { "config": { "path": "view.params.ID" }, "transforms": [ { "expression": "\"Freeze Protection Lineup \"+{value}", "type": "expression" } ], "type": "property" } } }, "props": { "style": { "fontFamily": "inherit", "fontSize": 12, "textAlign": "center" } }, "type": "ia.display.label" }, { "children": [ { "events": { "dom": { "onClick": { "config": { "script": "\tcurrent_value \u003d system.tag.readBlocking(self.view.params.tagPath)[0].value\n\tmask \u003d pow(2, self.view.params.ID)\n\tnew_value \u003d current_value | mask\n\tsystem.tag.writeBlocking(self.view.params.tagPath, new_value)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "On_btn" }, "position": { "basis": "50%" }, "propConfig": { "props.enabled": { "binding": { "config": { "path": "view.custom.auth.control" }, "type": "property" } }, "props.primary": { "binding": { "config": { "path": "view.custom.Status" }, "transforms": [ { "fallback": false, "inputType": "scalar", "mappings": [ { "input": 0, "output": false }, { "input": 1, "output": true } ], "outputType": "scalar", "type": "map" } ], "type": "property" } } }, "props": { "text": "On" }, "type": "ia.input.button" }, { "events": { "dom": { "onClick": { "config": { "script": "\tcurrent_value \u003d system.tag.readBlocking(self.view.params.tagPath)[0].value\n\tmask \u003d pow(2, self.view.params.ID)\n\tmask \u003d mask ^ 0b1111111111111111\n\tnew_value \u003d current_value \u0026 mask\n\tsystem.tag.writeBlocking(self.view.params.tagPath, new_value)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Off_btn" }, "position": { "basis": "50%" }, "propConfig": { "props.enabled": { "binding": { "config": { "path": "view.custom.auth.control" }, "type": "property" } }, "props.primary": { "binding": { "config": { "path": "view.custom.Status" }, "transforms": [ { "fallback": true, "inputType": "scalar", "mappings": [ { "input": 0, "output": true }, { "input": 1, "output": false } ], "outputType": "scalar", "type": "map" } ], "type": "property" } } }, "props": { "text": "Off" }, "type": "ia.input.button" } ], "meta": { "name": "FlexContainer" }, "position": { "basis": "200px" }, "props": { "style": { "gap": 10 } }, "type": "ia.container.flex" } ], "meta": { "name": "root" }, "props": { "direction": "column", "style": { "backgroundColor": "var(--container)", "borderBottomLeftRadius": "var(--borderRadius)", "borderBottomRightRadius": "var(--borderRadius)", "borderTopLeftRadius": "var(--borderRadius)", "borderTopRightRadius": "var(--borderRadius)", "boxShadow": "var(--boxShadow2)", "gap": 10, "paddingBottom": 10, "paddingLeft": 10, "paddingRight": 10, "paddingTop": 10 } }, "type": "ia.container.flex" } }