From f1308f2f5262232920977477ffa598aa3478dbed Mon Sep 17 00:00:00 2001 From: "gigi.mamaladze" Date: Mon, 16 Jun 2025 15:25:17 +0400 Subject: [PATCH] Added Diverter Arm --- .../Equipment-Views/Divert_Arm/resource.json | 17 + .../Equipment-Views/Divert_Arm/thumbnail.png | Bin 0 -> 8286 bytes .../Equipment-Views/Divert_Arm/view.json | 814 ++++++++++++++++++ 3 files changed, 831 insertions(+) create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json new file mode 100644 index 0000000..ea5b05c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-06-16T11:22:15Z" + }, + "lastModificationSignature": "9c039d1a0a0b794360ab1713f6855f4281694c16a196be1a0e385cea2557f846" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..6be433c99c73c904e27686b71913134ac9b6fbb2 GIT binary patch literal 8286 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 WagyIvqB$VI-`(5#nwXpRPyY+LDJoh3 literal 0 HcmV?d00001 diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json new file mode 100644 index 0000000..316ad2d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json @@ -0,0 +1,814 @@ +{ + "custom": { + "alarm_message": null, + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running": false, + "searchId": "PLC01", + "show_error": false, + "show_running": true, + "state": 5, + "state_string": "Unknown", + "visible_status": false + }, + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "mirror": true, + "openDiverter": true, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.alarm_message": { + "persistent": true + }, + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running": { + "binding": { + "config": { + "expression": "{view.custom.running_status} \u003d 3" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceRunningStatus},0)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.show_error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {view.custom.isMatch}\u003e0,\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {view.custom.isMatch}\u003e0,\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.show_running": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.visible_status": { + "binding": { + "config": { + "expression": "{view.custom.state} !\u003d 5" + }, + "type": "expr" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.openDiverter": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1045, + "width": 1130 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OpenDiverterArm" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.openDiverter} \u0026\u0026 {view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.running_status" + }, + "transforms": [ + { + "expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 1 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden" + }, + "viewBox": "0 1.3 38 46" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "ClosedDiverterArm" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.params.openDiverter} \u0026\u0026 {view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.running_status" + }, + "transforms": [ + { + "expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 96 0 L 96 16 L 0 16 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 2 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden" + }, + "viewBox": "-1 0 98 17" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "OpenDiverterArmLeft" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.running_status" + }, + "transforms": [ + { + "expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 1 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden", + "transform": "scaleX(-1)" + }, + "viewBox": "0 1.3 38 46" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "ClosedDiverterArmLeft" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.running_status" + }, + "transforms": [ + { + "expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 96 0 L 96 16 L 0 16 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 2 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden", + "transform": "scaleX(-1)" + }, + "viewBox": "-1 0 98 17" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.Fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.display_icon" + }, + "type": "property" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "solid" + }, + { + "input": false, + "output": "none" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "justify": "center", + "style": { + "borderColor": "#FF0000", + "borderWidth": "2px", + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file