diff --git a/.resources/432db199466e7ea0db63d3270434177caf2d95874d9a4b850e37cc8c129e7781 b/.resources/432db199466e7ea0db63d3270434177caf2d95874d9a4b850e37cc8c129e7781 new file mode 100644 index 00000000..8a79cd6f Binary files /dev/null and b/.resources/432db199466e7ea0db63d3270434177caf2d95874d9a4b850e37cc8c129e7781 differ diff --git a/.resources/55e631162acfa70618005045be278b7f5fee9a75db1f8773ddec23aec7fde08e b/.resources/55e631162acfa70618005045be278b7f5fee9a75db1f8773ddec23aec7fde08e deleted file mode 100644 index d4dbe206..00000000 --- a/.resources/55e631162acfa70618005045be278b7f5fee9a75db1f8773ddec23aec7fde08e +++ /dev/null @@ -1,252 +0,0 @@ -{ - "custom": { - "disconnected": 0, - "priority": 0, - "priority_string": "No active alarms", - "state": 0, - "state_string": "Normal" - }, - "params": { - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.disconnected": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "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\n0, \"No active alarms\",\r\n\"Unknown\")" - }, - "type": "expr" - }, - "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}/STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},0)", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.state_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" - }, - "type": "expr" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 47, - "width": 68 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "ControlCabinet" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "path": "session.custom.alarm_filter.show_dpm_mcm" - }, - "type": "property" - } - }, - "props.elements[0].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - } - }, - "props": { - "elements": [ - { - "d": "M 0 40 L 0 0 L 61 40 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#4c4c4c", - "width": 4 - }, - "transform": "rotate(-180,30.5,20)", - "type": "path" - }, - { - "d": "M 0 40 L 0 0 L 61 40 Z", - "fill": { - "paint": "#4C4C4C" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 4 - }, - "type": "path" - } - ], - "preserveAspectRatio": "none", - "viewBox": "-0.5 -0.5 62 41" - }, - "type": "ia.shapes.svg" - } - ], - "events": { - "dom": { - "onClick": { - "config": { - "script": "\t#create tags lists for the device\n\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\n\tsystem.perspective.openDock(\u0027Docked-East-Device\u0027,params\u003d{\u0027tagProps\u0027:props, \"tags\":tags_table_dataset})" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root", - "tooltip": { - "enabled": true, - "location": "top-left", - "style": {} - } - }, - "propConfig": { - "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.text": { - "binding": { - "config": { - "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" - }, - "type": "expr" - } - } - }, - "props": { - "aspectRatio": "68:47", - "mode": "percent", - "style": { - "classes": "Disconnects/Device-Connected", - "cursor": "pointer", - "overflow": "hidden" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/671559622871565643d7832c991a2dbbfb0367566045d0f740a7cbb8339503c6 b/.resources/671559622871565643d7832c991a2dbbfb0367566045d0f740a7cbb8339503c6 deleted file mode 100644 index 802c7843..00000000 Binary files a/.resources/671559622871565643d7832c991a2dbbfb0367566045d0f740a7cbb8339503c6 and /dev/null differ diff --git a/.resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 b/.resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 deleted file mode 100644 index 25364625..00000000 Binary files a/.resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 and /dev/null differ diff --git a/.resources/9cd3f7dbebb7cc86a3302301f0fdf9401b72e4f340972a0295c40bd193f582af b/.resources/9cd3f7dbebb7cc86a3302301f0fdf9401b72e4f340972a0295c40bd193f582af deleted file mode 100644 index 14ebc305..00000000 Binary files a/.resources/9cd3f7dbebb7cc86a3302301f0fdf9401b72e4f340972a0295c40bd193f582af and /dev/null differ diff --git a/.resources/9e79e766821987efe661c01603cc111d5a536f00b9a020f83bf94af5aa09b083 b/.resources/9e79e766821987efe661c01603cc111d5a536f00b9a020f83bf94af5aa09b083 new file mode 100644 index 00000000..58a1259c Binary files /dev/null and b/.resources/9e79e766821987efe661c01603cc111d5a536f00b9a020f83bf94af5aa09b083 differ diff --git a/.resources/45f755ad3f636fe2d18007d80d6170e64144bf8329019c8ca8f688d5a3fb07d1 b/.resources/a2105067e0593d165de164f6a951de2407bd5b24f87fefdbadb3bd29f563c431 similarity index 99% rename from .resources/45f755ad3f636fe2d18007d80d6170e64144bf8329019c8ca8f688d5a3fb07d1 rename to .resources/a2105067e0593d165de164f6a951de2407bd5b24f87fefdbadb3bd29f563c431 index d6c933bb..43418a42 100644 --- a/.resources/45f755ad3f636fe2d18007d80d6170e64144bf8329019c8ca8f688d5a3fb07d1 +++ b/.resources/a2105067e0593d165de164f6a951de2407bd5b24f87fefdbadb3bd29f563c431 @@ -2,7 +2,7 @@ "custom": { "disconnected": false, "priority": 0, - "state": 5, + "state": 0, "state_string": "Unknown" }, "params": { diff --git a/.resources/a5cd747873802f73564c0aba32016333f1580eb9e337ec9e3929b253f5c3c753 b/.resources/a5cd747873802f73564c0aba32016333f1580eb9e337ec9e3929b253f5c3c753 deleted file mode 100644 index 97607ba3..00000000 Binary files a/.resources/a5cd747873802f73564c0aba32016333f1580eb9e337ec9e3929b253f5c3c753 and /dev/null differ diff --git a/.resources/ceed131d89939ca4b8900bfc2a2f4be7601072a7605e5bac9717851bb34035b4 b/.resources/ceed131d89939ca4b8900bfc2a2f4be7601072a7605e5bac9717851bb34035b4 deleted file mode 100644 index 90a07599..00000000 Binary files a/.resources/ceed131d89939ca4b8900bfc2a2f4be7601072a7605e5bac9717851bb34035b4 and /dev/null differ diff --git a/.resources/ded7ae1d4374a5e15be878d7463a3dc516627b33de0d4d982d69db71978a2f29 b/.resources/ded7ae1d4374a5e15be878d7463a3dc516627b33de0d4d982d69db71978a2f29 new file mode 100644 index 00000000..c6da5b76 --- /dev/null +++ b/.resources/ded7ae1d4374a5e15be878d7463a3dc516627b33de0d4d982d69db71978a2f29 @@ -0,0 +1,565 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "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}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 47, + "width": 68 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "DPM" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 4 + }, + "transform": "rotate(-180,30.5,20)", + "type": "path" + }, + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": { + "paint": "#4C4C4C" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 4 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 62 41" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\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.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "aspectRatio": "68:47", + "mode": "percent", + "style": { + "classes": "Disconnects/Device-Connected", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f4f2f65cc753cbad3d9d0a373b3e37cd09e917213ea01c8f96eed14c83874723 b/.resources/f4f2f65cc753cbad3d9d0a373b3e37cd09e917213ea01c8f96eed14c83874723 new file mode 100644 index 00000000..f6316b26 Binary files /dev/null and b/.resources/f4f2f65cc753cbad3d9d0a373b3e37cd09e917213ea01c8f96eed14c83874723 differ diff --git a/.resources/f61eb18bad133e6945c2608f78822675066c9ecfe4deff42e64db715ac766abd b/.resources/f61eb18bad133e6945c2608f78822675066c9ecfe4deff42e64db715ac766abd new file mode 100644 index 00000000..c408b2ae Binary files /dev/null and b/.resources/f61eb18bad133e6945c2608f78822675066c9ecfe4deff42e64db715ac766abd differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/resource.json index e5e927cf..5b5399c0 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/resource.json @@ -10,8 +10,8 @@ "attributes": { "lastModification": { "actor": "admin", - "timestamp": "2025-09-15T07:54:51Z" + "timestamp": "2025-09-15T07:55:51Z" }, - "lastModificationSignature": "9b0432fa6c85305f685e98656ffcba9d2c12d2d3caa9d51a96aa6c084c565acc" + "lastModificationSignature": "376a8b03e5a57f48a5e2724a32443ae9501bc9374e1a943a0dde71dd2dc038d0" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/thumbnail.png index 14ebc305..f6316b26 100644 Binary files a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/thumbnail.png and b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM01-FLUID INBOUND/thumbnail.png differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json index 201c88c5..4692fd1e 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json @@ -10,8 +10,8 @@ "attributes": { "lastModification": { "actor": "admin", - "timestamp": "2025-09-12T08:13:46Z" + "timestamp": "2025-09-15T07:56:42Z" }, - "lastModificationSignature": "94726aa843206ff43d29a060ac25426284cf360af20660e828a558c8578f93fd" + "lastModificationSignature": "d50b501f54e6370e9517ba722e373b646d9def8fd4a3ff45e354341e614e391d" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/thumbnail.png index 802c7843..8a79cd6f 100644 Binary files a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/thumbnail.png and b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/thumbnail.png differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/view.json index d6c933bb..43418a42 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/view.json @@ -2,7 +2,7 @@ "custom": { "disconnected": false, "priority": 0, - "state": 5, + "state": 0, "state_string": "Unknown" }, "params": { diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/resource.json index bf4608bc..b50ffab5 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/resource.json @@ -10,8 +10,8 @@ "attributes": { "lastModification": { "actor": "admin", - "timestamp": "2025-09-12T08:04:04Z" + "timestamp": "2025-09-15T07:59:28Z" }, - "lastModificationSignature": "4e9558cd223b2ec5cfa86f256b62598b59bfafef0c8d8dafbf7d46a169d45fc6" + "lastModificationSignature": "861ed0c68a6f7beb8dccacc0c2bae2985c76bc417ed791f2a27af18fd7ad10cb" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/thumbnail.png index 97607ba3..58a1259c 100644 Binary files a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/thumbnail.png and b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/thumbnail.png differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/view.json index d4dbe206..c6da5b76 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/DPM/view.json @@ -1,10 +1,8 @@ { "custom": { - "disconnected": 0, - "priority": 0, - "priority_string": "No active alarms", - "state": 0, - "state_string": "Normal" + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" }, "params": { "tagProps": [ @@ -21,56 +19,169 @@ ] }, "propConfig": { - "custom.disconnected": { + "custom.color": { "binding": { "config": { - "path": "view.custom.state" + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" }, - "type": "property" + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" }, "persistent": true }, "custom.priority": { "binding": { "config": { - "path": "view.custom.state" + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" }, "transforms": [ { - "fallback": 0, + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, "inputType": "scalar", "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, { "input": 1, - "output": 4 + "output": "High" }, { "input": 2, - "output": 3 + "output": "Medium" }, { "input": 3, - "output": 2 + "output": "Low" }, { "input": 4, - "output": 1 + "output": "Diagnostic" } ], "outputType": "scalar", "type": "map" } ], - "type": "property" - }, - "persistent": true - }, - "custom.priority_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" - }, - "type": "expr" + "type": "tag" }, "persistent": true }, @@ -83,27 +194,222 @@ "0": "{view.params.tagProps[0]}", "fc": "{session.custom.fc}" }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" }, "transforms": [ { - "expression": "coalesce({value},0)", + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" } ], "type": "tag" }, "persistent": true }, - "custom.state_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" - }, - "type": "expr" - }, - "persistent": true - }, "params.tagProps": { "paramDirection": "inout", "persistent": true @@ -119,25 +425,17 @@ "children": [ { "meta": { - "name": "ControlCabinet" + "name": "DPM" }, "position": { "height": 1, "width": 1 }, "propConfig": { - "meta.visible": { - "binding": { - "config": { - "path": "session.custom.alarm_filter.show_dpm_mcm" - }, - "type": "property" - } - }, "props.elements[0].fill.paint": { "binding": { "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" }, "type": "expr" } @@ -179,7 +477,22 @@ "dom": { "onClick": { "config": { - "script": "\t#create tags lists for the device\n\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\n\tsystem.perspective.openDock(\u0027Docked-East-Device\u0027,params\u003d{\u0027tagProps\u0027:props, \"tags\":tags_table_dataset})" + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\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" @@ -206,20 +519,20 @@ "inputType": "scalar", "mappings": [ { - "input": 1, - "output": "Alarms-Styles/Diagnostic" + "input": "High", + "output": "Alarms-Styles/High" }, { - "input": 2, - "output": "Alarms-Styles/Low" - }, - { - "input": 3, + "input": "Medium", "output": "Alarms-Styles/Medium" }, { - "input": 4, - "output": "Alarms-Styles/High" + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" } ], "outputType": "style-list", @@ -232,7 +545,7 @@ "meta.tooltip.text": { "binding": { "config": { - "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" }, "type": "expr" } diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/resource.json index ba5ae93c..4368a032 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/resource.json @@ -10,8 +10,8 @@ "attributes": { "lastModification": { "actor": "admin", - "timestamp": "2025-09-15T07:52:35Z" + "timestamp": "2025-09-15T07:56:07Z" }, - "lastModificationSignature": "c3498490c03c23283e063e7776e05a0bfa951862d508d8663d43a259b810ca9d" + "lastModificationSignature": "d7a42185d269d0f67f040ebe8439d1bbceab062bf8a0d1d61c497c101340abe0" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/thumbnail.png index 90a07599..c408b2ae 100644 Binary files a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/thumbnail.png and b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/MCM/thumbnail.png differ