From dcc770fd517c151cc3ec23b37c68179246986371 Mon Sep 17 00:00:00 2001 From: guga kakhadze Date: Tue, 24 Jun 2025 14:30:36 +0400 Subject: [PATCH] Docked South alarm footer is funcitonal now. Minor adjustments in the Realtime View. Added missing recource file for the GetAlarmsWithCount sql query. --- .../HistoricalAlarms/resource.json | 17 - .../HistoricalAlarms/thumbnail.png | Bin 46524 -> 0 bytes .../Alarm-Views/HistoricalAlarms/view.json | 2897 ----------------- .../views/Alarm-Views/RealTime/view.json | 9 +- .../Navigation-Views/Docked-South/view.json | 2635 ++++++++++++++- .../GetAlarmsWithCount/resource.json | 33 + 6 files changed, 2567 insertions(+), 3024 deletions(-) delete mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json delete mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png delete mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json deleted file mode 100644 index 4414a6f..0000000 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "scope": "G", - "version": 1, - "restricted": false, - "overridable": true, - "files": [ - "view.json", - "thumbnail.png" - ], - "attributes": { - "lastModification": { - "actor": "external", - "timestamp": "2025-04-08T09:28:16Z" - }, - "lastModificationSignature": "520ca9154983ebd5e278483cb1f1ad256993cf1f3e781a27554bff0679845a8c" - } -} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png deleted file mode 100644 index f250b7e1569438f6d2a08cb0743e53dea105cdb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46524 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%0DTjSnZK>5l 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 diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json deleted file mode 100644 index 4a97e9a..0000000 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json +++ /dev/null @@ -1,2897 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "15.8px" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "32px" - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "fontWeight": "bold", - "text": "value", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "Filter by Date/Time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "Start" - }, - "type": "ia.display.label" - }, - { - "events": { - "system": { - "onStartup": { - "config": { - "script": "\timport datetime\n\t\t\n\ttime_now \u003d datetime.datetime.now()\n\tself.props.value \u003d time_now - datetime.timedelta(hours \u003d 1)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "StartTime" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "propConfig": { - "props.maxDate": { - "binding": { - "config": { - "path": "../EndTime.props.value" - }, - "type": "property" - } - }, - "props.minDate": { - "binding": { - "config": { - "expression": "addWeeks({../EndTime.props.value},-2)" - }, - "type": "expr" - } - } - }, - "props": { - "formattedValue": "Apr 19, 2022 10:28 AM", - "value": { - "$": [ - "ts", - 192, - 1650367709276 - ], - "$ts": 1650364109276 - } - }, - "type": "ia.input.date-time-input" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "End" - }, - "type": "ia.display.label" - }, - { - "events": { - "system": { - "onStartup": { - "config": { - "script": "\timport datetime\n\t\n\ttime_now \u003d datetime.datetime.now()\n\tself.props.value \u003d time_now" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "EndTime" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "formattedValue": "Apr 19, 2022 11:28 AM", - "value": { - "$": [ - "ts", - 192, - 1650367709276 - ], - "$ts": 1650367709276 - } - }, - "type": "ia.input.date-time-input" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "200px" - }, - "props": { - "direction": "column", - "style": { - "borderStyle": "solid", - "borderWidth": "0.5px" - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "32px" - }, - "props": { - "style": { - "textAlign": "left", - "textIndent": "10px" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "fontWeight": "bold", - "text": "value", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "Filter by Device" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tdevice \u003d self.props.value\n\tpayload[\"device\"] \u003d device\n\tsystem.perspective.sendMessage(\"device-filter\", payload \u003d payload, scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - }, - "system": { - "onStartup": { - "config": { - "script": "\tdevices \u003d system.tag.readBlocking([\"Configuration/DetailedViews\"])\n\tdevices \u003d devices[0].value\n\tdevices_decoded \u003d system.util.jsonDecode(devices)\n\tdevice_list \u003d []\n\tno_device \u003d {}\n\tno_device[\"value\"]\u003d\"\"\n\tno_device[\"label\"]\u003d\"None\"\n\tdevice_list.append(no_device)\n\tfor i in devices_decoded:\n\t\tdevice_dict \u003d{}\n\t\tif len(devices_decoded[i]) \u003d\u003d 1:\n\t\t\tdevice_dict[\"value\"] \u003d i\n\t\t\tdevice_dict[\"label\"]\u003d i\n\t\t\tdevice_list.append(device_dict)\n\t\telse:\n\t\t\titems \u003d devices_decoded[i]\n\t\t\tfor item in items:\n\t\t\t\tdevice_dict \u003d{}\n\t\t\t\tdevice_dict[\"value\"] \u003d item\n\t\t\t\tdevice_dict[\"label\"]\u003d item\n\t\t\t\tdevice_list.append(device_dict)\n\t\t\t\t\n\tself.props.options \u003d device_list\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "options": [ - { - "label": "None", - "value": "" - }, - { - "label": "PLC03", - "value": "PLC03" - }, - { - "label": "PLC25", - "value": "PLC25" - }, - { - "label": "PLC47", - "value": "PLC47" - }, - { - "label": "PLC97", - "value": "PLC97" - }, - { - "label": "PLC69", - "value": "PLC69" - }, - { - "label": "PLC26", - "value": "PLC26" - }, - { - "label": "PLC48", - "value": "PLC48" - }, - { - "label": "PLC01", - "value": "PLC01" - }, - { - "label": "PLC23", - "value": "PLC23" - }, - { - "label": "PLC02", - "value": "PLC02" - }, - { - "label": "PLC07", - "value": "PLC07" - }, - { - "label": "PLC29", - "value": "PLC29" - }, - { - "label": "PLC08", - "value": "PLC08" - }, - { - "label": "PLC27", - "value": "PLC27" - }, - { - "label": "PLC49", - "value": "PLC49" - }, - { - "label": "PLC06", - "value": "PLC06" - }, - { - "label": "PLC28", - "value": "PLC28" - }, - { - "label": "PLC96", - "value": "PLC96" - }, - { - "label": "PLC40", - "value": "PLC40" - }, - { - "label": "PLC60", - "value": "PLC60" - }, - { - "label": "SLAM302", - "value": "SLAM302" - }, - { - "label": "PLC21", - "value": "PLC21" - }, - { - "label": "PLC43", - "value": "PLC43" - }, - { - "label": "PLC65", - "value": "PLC65" - }, - { - "label": "SLAM306", - "value": "SLAM306" - }, - { - "label": "PLC22", - "value": "PLC22" - }, - { - "label": "PLC66", - "value": "PLC66" - }, - { - "label": "SLAM307", - "value": "SLAM307" - }, - { - "label": "PLC41", - "value": "PLC41" - }, - { - "label": "PLC1000", - "value": "PLC1000" - }, - { - "label": "PLC20", - "value": "PLC20" - }, - { - "label": "PLC42", - "value": "PLC42" - }, - { - "label": "PLC64", - "value": "PLC64" - }, - { - "label": "SLAM304", - "value": "SLAM304" - }, - { - "label": "MAN2_PLC99", - "value": "MAN2_PLC99" - }, - { - "label": "PLC23-1", - "value": "PLC23-1" - }, - { - "label": "PLC09-2", - "value": "PLC09-2" - }, - { - "label": "PLC1000-1", - "value": "PLC1000-1" - }, - { - "label": "PLC09", - "value": "PLC09" - }, - { - "label": "PLC99", - "value": "PLC99" - }, - { - "label": "PLC14", - "value": "PLC14" - }, - { - "label": "ARSAW1401", - "value": "ARSAW1401" - }, - { - "label": "ARSAW1402", - "value": "ARSAW1402" - }, - { - "label": "ARSAW1403", - "value": "ARSAW1403" - }, - { - "label": "ARSAW1404", - "value": "ARSAW1404" - }, - { - "label": "ARSAW1405", - "value": "ARSAW1405" - }, - { - "label": "ARSAW1406", - "value": "ARSAW1406" - }, - { - "label": "ARSAW1407", - "value": "ARSAW1407" - }, - { - "label": "ARSAW1408", - "value": "ARSAW1408" - }, - { - "label": "PLC15", - "value": "PLC15" - }, - { - "label": "ARSAW1501", - "value": "ARSAW1501" - }, - { - "label": "ARSAW1502", - "value": "ARSAW1502" - }, - { - "label": "ARSAW1503", - "value": "ARSAW1503" - }, - { - "label": "ARSAW1504", - "value": "ARSAW1504" - }, - { - "label": "ARSAW1505", - "value": "ARSAW1505" - }, - { - "label": "ARSAW1506", - "value": "ARSAW1506" - }, - { - "label": "ARSAW1507", - "value": "ARSAW1507" - }, - { - "label": "ARSAW1508", - "value": "ARSAW1508" - }, - { - "label": "PLC13", - "value": "PLC13" - }, - { - "label": "ARSAW1301", - "value": "ARSAW1301" - }, - { - "label": "ARSAW1302", - "value": "ARSAW1302" - }, - { - "label": "ARSAW1303", - "value": "ARSAW1303" - }, - { - "label": "ARSAW1304", - "value": "ARSAW1304" - }, - { - "label": "ARSAW1305", - "value": "ARSAW1305" - }, - { - "label": "ARSAW1306", - "value": "ARSAW1306" - }, - { - "label": "ARSAW1307", - "value": "ARSAW1307" - }, - { - "label": "ARSAW1308", - "value": "ARSAW1308" - }, - { - "label": "PLC16", - "value": "PLC16" - }, - { - "label": "ARSAW1601", - "value": "ARSAW1601" - }, - { - "label": "ARSAW1602", - "value": "ARSAW1602" - }, - { - "label": "ARSAW1603", - "value": "ARSAW1603" - }, - { - "label": "ARSAW1604", - "value": "ARSAW1604" - }, - { - "label": "ARSAW1605", - "value": "ARSAW1605" - }, - { - "label": "ARSAW1606", - "value": "ARSAW1606" - }, - { - "label": "ARSAW1607", - "value": "ARSAW1607" - }, - { - "label": "ARSAW1608", - "value": "ARSAW1608" - }, - { - "label": "PLC51", - "value": "PLC51" - }, - { - "label": "SLAM305", - "value": "SLAM305" - }, - { - "label": "PLC70", - "value": "PLC70" - }, - { - "label": "PLC71", - "value": "PLC71" - }, - { - "label": "RWC4", - "value": "RWC4" - }, - { - "label": "PLC71", - "value": "PLC71" - }, - { - "label": "PLC70", - "value": "PLC70" - }, - { - "label": "RWC4", - "value": "RWC4" - }, - { - "label": "MAN2_PLC96", - "value": "MAN2_PLC96" - }, - { - "label": "PLC32", - "value": "PLC32" - }, - { - "label": "PLC30", - "value": "PLC30" - }, - { - "label": "SLAM301", - "value": "SLAM301" - }, - { - "label": "PLC52", - "value": "PLC52" - }, - { - "label": "MAN2_PLC97", - "value": "MAN2_PLC97" - }, - { - "label": "PLC31", - "value": "PLC31" - }, - { - "label": "SLAM303", - "value": "SLAM303" - }, - { - "label": "PLC80", - "value": "PLC80" - }, - { - "label": "SLAM401", - "value": "SLAM401" - }, - { - "label": "SLAM402", - "value": "SLAM402" - } - ], - "value": "None" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "device-filter-reset", - "pageScope": true, - "script": "\t# implement your handler here\n\tdevice_selection \u003d payload[\"device\"]\n\tself.props.value \u003d device_selection", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "200px" - }, - "props": { - "direction": "column", - "style": { - "borderStyle": "solid", - "borderWidth": "0.5px" - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "32px", - "grow": 1 - }, - "props": { - "style": { - "textAlign": "left", - "textIndent": "10px" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "32px", - "grow": 1 - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "fontWeight": "bold", - "text": "value", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "Filter by Severity" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "Critical", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Alarms-Styles/Critical" - }, - { - "input": 0, - "output": "Alarms-Styles/NoAlarm-Black" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#FFFFFF", - "path": "material/error" - }, - "position": "top" - }, - "style": {}, - "text": "Critical" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background\n\t", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "High", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Alarms-Styles/High" - }, - { - "input": 0, - "output": "Alarms-Styles/NoAlarm-Black" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/priority_high" - }, - "position": "top" - }, - "style": {}, - "text": "High" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "Medium", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_1" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Alarms-Styles/Medium" - }, - { - "input": 0, - "output": "Alarms-Styles/NoAlarm-Black" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/priority_high" - }, - "position": "top" - }, - "style": {}, - "text": "Medium" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "7px" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "Low", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Alarms-Styles/Low" - }, - { - "input": 0, - "output": "Alarms-Styles/NoAlarm-Black" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/low_priority" - }, - "position": "top" - }, - "style": {}, - "text": "Low" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "Diagnostic", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Alarms-Styles/Diagnostic" - }, - { - "input": 0, - "output": "Alarms-Styles/NoAlarm-Black" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/warning" - }, - "position": "top" - }, - "style": {}, - "text": "Diagnostic" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\t# implement your handler here\n\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "type": "ia.container.flex" - } - ], - "custom": { - "SeverityFilter": "value" - }, - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "200px" - }, - "props": { - "direction": "column", - "style": { - "borderStyle": "solid", - "borderWidth": "0.5px" - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "200px", - "grow": 1, - "shrink": 10 - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label_3" - }, - "position": { - "basis": "32px" - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "fontWeight": "bold", - "text": "value", - "textAlign": "left", - "textIndent": "10px" - }, - "text": "Reset Filters" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "5px", - "grow": 1 - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "Critical", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload1 \u003d {}\n\tpayload2 \u003d{}\n\tpayload3 \u003d{}\n\tpayload1[\"severity\"] \u003d \"\"\n\tpayload2[\"device\"] \u003d \"None\"\n\tpayload3[\"device\"] \u003d \"\"\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload1 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"button-severity-indicator\", payload \u003d payload1 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"device-filter-reset\", payload \u003d payload2 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"device-filter\", payload \u003d payload3 , scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "icon": { - "color": "#FFFFFF", - "path": "material/clear" - }, - "position": "top" - }, - "style": { - "classes": "Alarms-Styles/NoAlarm-Black" - }, - "text": "Reset Filters" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background\n\t", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "High", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.toggleDock(\"Docked-West\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "icon": { - "path": "material/toggle_on" - }, - "position": "top" - }, - "style": { - "classes": "Alarms-Styles/NoAlarm-Black" - }, - "text": "Toggle Dock" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "10px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Severity": "High", - "background_on": "false" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tdata \u003d self.parent.parent.parent.parent.getChild(\"Table\").props.data\n\tdataset \u003d system.dataset.dataSetToHTML(1,data,\"Test\")\n\tsystem.perspective.print(type(dataset))\n\tsystem.perspective.download(\"myExport.html\",dataset)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_1" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "icon": { - "path": "material/import_export" - }, - "position": "top" - }, - "style": { - "classes": "Alarms-Styles/NoAlarm-Black" - }, - "text": "Export" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "button-severity-indicator", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "5px", - "grow": 1 - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "36px" - }, - "type": "ia.display.label" - } - ], - "custom": { - "SeverityFilter": "value" - }, - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "basis": "200px" - }, - "props": { - "direction": "column", - "style": { - "borderStyle": "solid", - "borderWidth": "0.5px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "300px", - "shrink": 0 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "15.8px" - }, - "type": "ia.display.label" - }, - { - "custom": { - "Historyfilters": { - "Acked": 2, - "AckedBy": "", - "Area": "", - "DeviceDescription": "", - "DeviceType": "", - "DisplayPath": "", - "Empty": 0, - "Interval": 0, - "LinkToOEEMP": "", - "LinkToPage": "", - "Name": "", - "PLC": "", - "Priority": 0, - "SubArea": "", - "TZ": "Europe/London", - "UDT": "" - }, - "export": "value", - "severityFilter": "" - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "1639px", - "grow": 1 - }, - "propConfig": { - "custom.Historyfilters.FC": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "Configuration/FC" - }, - "type": "tag" - } - }, - "custom.Historyfilters.StartDT": { - "binding": { - "config": { - "path": "../FlexContainer/FlexContainer/StartTime.props.value" - }, - "type": "property" - } - }, - "custom.Historyfilters.StopDT": { - "binding": { - "config": { - "path": "../FlexContainer/FlexContainer/EndTime.props.value" - }, - "type": "property" - } - }, - "custom.alarmHistory": { - "binding": { - "config": { - "parameters": { - "Ackd": "{this.custom.Historyfilters.Acked}", - "AckdBy": "{this.custom.Historyfilters.AckedBy}", - "Area": "{this.custom.Historyfilters.Area}", - "DeviceDescription": "{this.custom.Historyfilters.DeviceDescription}", - "DeviceType": "{this.custom.Historyfilters.DeviceType}", - "DisplayPath": "{this.custom.Historyfilters.DisplayPath}", - "Empty": "{this.custom.Historyfilters.Empty}", - "Finish": "{this.custom.Historyfilters.StopDT}", - "Interval": "{this.custom.Historyfilters.Interval}", - "LinkToOEEMP": "{this.custom.Historyfilters.LinkToOEEMP}", - "LinkToPage": "{this.custom.Historyfilters.LinkToPage}", - "Name": "{this.custom.Historyfilters.Name}", - "PLC": "{this.custom.Historyfilters.PLC}", - "Priority": "{this.custom.Historyfilters.Priority}", - "Start": "{this.custom.Historyfilters.StartDT}", - "SubArea": "{this.custom.Historyfilters.SubArea}", - "TZ": "{this.custom.Historyfilters.TZ}", - "UDT": "{this.custom.Historyfilters.UDT}", - "WHID": "{Configuration/FC}" - }, - "polling": { - "enabled": true, - "rate": "2" - }, - "queryPath": "StoredProcedures/GetHistoricalAlarms", - "returnFormat": "dataset" - }, - "type": "query" - } - }, - "custom.export": { - "onChange": { - "enabled": null, - "script": "\tdata \u003d self.props.data\n\tsystem.perspective.download(\"AlarmExport\", data)" - } - }, - "custom.severityFilter": { - "onChange": { - "enabled": null, - "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.severityFilter\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"button-severity-indicator\", payload\u003d payload, scope \u003d \"page\")" - } - }, - "props.data": { - "binding": { - "config": { - "path": "this.custom.alarmHistory" - }, - "type": "property" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY HH:mm:ss", - "editable": false, - "field": "TimeStamp", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "Duration", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "Name", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "Priority", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "Acked", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "UDT", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "UID", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "DeviceDescription", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "DeviceType", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "DisplayPath", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "Area", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "SubArea", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "PLC", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "MaintenanceTemplate", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "LinkToPage", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "LinkToBOM", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "LinkToHelp", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "LinkToOEEMP", - "footer": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "header": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "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": "" - } - ], - "filter": { - "enabled": true - }, - "headerGroups": [ - [] - ] - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "severity-filter", - "pageScope": true, - "script": "\tfilter \u003d payload[\"severity\"]\n\tself.custom.severityFilter \u003d filter\n\tself.props.filter.text \u003d filter\n\t", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "device-filter", - "pageScope": true, - "script": "\t# implement your handler here\n\tdevice\u003d payload[\"device\"]\n\tself.custom.Historyfilters.PLC \u003d device", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "Background-Styles/Main-Background" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json index fb215e9..8281b2c 100644 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json @@ -488,7 +488,6 @@ ], "custom": { "priorities": { - "critical": false, "diagnostic": false, "high": false, "low": false, @@ -2901,7 +2900,7 @@ "$": [ "ts", 192, - 1750674251724 + 1750755617512 ], "$ts": 1750435156149 }, @@ -2909,7 +2908,7 @@ "$": [ "ts", 192, - 1750674251724 + 1750755617511 ], "$ts": 1750436956149 } @@ -3857,7 +3856,7 @@ "$": [ "ts", 192, - 1750674251724 + 1750755617512 ], "$ts": 1750435156149 }, @@ -3865,7 +3864,7 @@ "$": [ "ts", 192, - 1750674251724 + 1750755617511 ], "$ts": 1750436956149 }, diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json index ebd5309..e9e1ae1 100644 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json @@ -1,9 +1,32 @@ { - "custom": {}, + "custom": { + "MCM": "", + "currentTable": "HISTORY" + }, "params": {}, + "propConfig": { + "custom.MCM": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\tpath \u003d value\n\ttry:\n\t\tif \"MCM\" in path:\n\t\t\tindex \u003d path.find(\"MCM\")\n\t\t\treturn path[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"\n\t", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.currentTable": { + "persistent": true + } + }, "props": { "defaultSize": { - "height": 247, + "height": 250, "width": 1920 } }, @@ -12,75 +35,14 @@ { "children": [ { - "custom": { - "show_view": "Alarms" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tif self.custom.show_view \u003d\u003d \"Alarms\":\n\t\tself.custom.show_view \u003d \"State\"\n\t\tpayload[\"data\"] \u003d \"State\"\n\t\thandle_icon \u003d \"material/play_arrow\"\n\telif self.custom.show_view \u003d\u003d \"State\":\t\n\t\tself.custom.show_view \u003d \"Alarms\"\n\t\tpayload[\"data\"] \u003d \"Alarms\"\n\t\thandle_icon \u003d \"material/notifications_active\"\n\tsystem.perspective.alterDock(\"Docked-South\", { \"handleIcon\": handle_icon } )\n\tsystem.perspective.sendMessage(\"change-docked-view\", \n\t\t\t\t\t\t\t\t\tpayload \u003d payload, scope \u003d \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, "meta": { - "name": "Show", - "tooltip": { - "enabled": true - } + "name": "Label" }, "position": { - "basis": "70px", - "display": false + "basis": "32px", + "grow": 1 }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "case({this.custom.show_view},\r\n\"Alarms\", \"Displaying active alarms\",\r\n\"State\", \"displaying current state of equipment\",\r\n\"Unknown\")" - }, - "type": "expr" - } - }, - "props.image.icon.path": { - "binding": { - "config": { - "expression": "case({this.custom.show_view},\r\n\"Alarms\", \"material/play_arrow\",\r\n\"State\", \"material/notifications_active\",\r\n\"material/device_unknown\")" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "case({this.custom.show_view},\r\n\"Alarms\", \"State\",\r\n\"State\", \"Alarms\",\r\n\"Unknown\")" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Buttons/Button-Menu", - "color": "#FFFFFF", - "margin": 1 - }, - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" + "type": "ia.display.label" } ], "meta": { @@ -101,52 +63,2466 @@ { "children": [ { - "custom": { - "view": "Alarms" - }, + "children": [ + { + "meta": { + "name": "active-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"ACTIVE\"" + }, + "type": "expr" + } + }, + "props.columns[4].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priorityList": "{this.custom.priorities}" + }, + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d [col for col in ds.columnNames if col !\u003d \"EndTimestamp\"]\n\t\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "NumberID", + "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": "Number (ID)" + }, + "justify": "left", + "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": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "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": "Event Timestamp" + }, + "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": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": 150 + }, + { + "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": true, + "width": 80 + } + ], + "emptyMessage": { + "noData": { + "text": "No Active Alarms" + }, + "noFilterResults": { + "text": "No Active Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "hitList-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HITLIST\"" + }, + "type": "expr" + } + }, + "props.columns[5].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarmsWithCount" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data\n", + "type": "script" + } + ], + "type": "query" + } + }, + "props.editingCell": { + "onChange": { + "enabled": null, + "script": "\tall_alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\tshelved_alarms \u003d [alarm for alarm in all_alarms if alarm.isShelved()]\n\t\n\t# Build dataset for table\n\theaders \u003d [\u0027ID\u0027, \u0027StartTimestamp\u0027, \u0027EndTimestamp\u0027, \u0027Duration\u0027, \u0027Description\u0027, \u0027Priority\u0027, \u0027Tag\u0027, \u0027MCM\u0027]\n\tdata \u003d []\n\t\n\tfor alarm in shelved_alarms:\n\t # Calculate duration (time since shelved)\n\t if alarm.activeTime:\n\t duration_ms \u003d system.date.now().getTime() - alarm.activeTime.getTime()\n\t duration_seconds \u003d duration_ms / 1000\n\t hours \u003d int(duration_seconds / 3600)\n\t minutes \u003d int((duration_seconds % 3600) / 60)\n\t seconds \u003d int(duration_seconds % 60)\n\t duration \u003d \"%02d:%02d:%02d\" % (hours, minutes, seconds)\n\t else:\n\t duration \u003d \"00:00:00\"\n\t \n\t # Extract tag name from source\n\t tag_name \u003d alarm.source.split(\u0027/\u0027)[-1] if \u0027/\u0027 in alarm.source else alarm.source\n\t \n\t row \u003d [\n\t str(alarm.id) if hasattr(alarm, \u0027id\u0027) else \u0027\u0027,\n\t alarm.activeTime if alarm.activeTime else system.date.now(),\n\t None, # End timestamp (shelved alarms don\u0027t have end time yet)\n\t duration,\n\t alarm.displayPath if alarm.displayPath else alarm.source,\n\t alarm.priority.name if alarm.priority else \u0027Unknown\u0027,\n\t tag_name,\n\t \u0027System\u0027 # Adjust based on your source format\n\t ]\n\t data.append(row)\n\t\n\t# Create dataset and update the custom property\n\tdataset \u003d system.dataset.toDataSet(headers, data)\n\tself.custom.shelvedAlarmsData \u003d dataset" + } + }, + "props.selection": { + "persistent": true + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "FirstTimestamp", + "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": { + "backgroundColor": "#FFFEFE", + "classes": "" + }, + "title": "First Timestamp" + }, + "justify": "left", + "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": "value", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "LastTimestamp", + "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": "center", + "style": { + "classes": "" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "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 HH:mm:ss", + "editable": false, + "field": "Count", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "none", + "editable": false, + "field": "Duration", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "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": "Priority", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "Description", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": 150 + }, + { + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "activeOption": 5, + "bottom": false + }, + "selection": { + "enableRowSelection": false, + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "historical-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HISTORY\"" + }, + "type": "expr" + } + }, + "props.columns[6].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "ID", + "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": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "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 HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617512 + ], + "$ts": 1750435156149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "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 HH:mm:ss", + "editable": false, + "field": "EndTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617511 + ], + "$ts": 1750436956149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "End Timestamp" + }, + "justify": "center", + "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": "none", + "editable": false, + "field": "Duration", + "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": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "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": "none", + "editable": false, + "field": "Description", + "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": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Severity" + }, + "justify": "center", + "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": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "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": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "enabled": true, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "selection": { + "enableRowSelection": false + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-first-request", + "pageScope": true, + "script": "\tdata \u003d payload[\"data\"]\n\tinitial_data \u003d payload[\"initial_data\"]\n\tself.props.data \u003d data\n\tself.custom.initial_data \u003d initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "\thistorical_data \u003d payload[\"data\"]\n\tself.props.data \u003d historical_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "load_initial_data", + "pageScope": true, + "script": "\trequest \u003d payload[\"data\"]\n\tsystem.perspective.print(\"initial message received\")\n\tif request \u003d\u003d True:\n\t\tself.props.data \u003d self.custom.initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tif reset \u003d\u003d \"reset\":\n\t\tself.props.data \u003d []\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], "meta": { - "name": "EmbeddedView" + "name": "FlexContainer_0" }, "position": { - "basis": "1850px", + "basis": "1920px", "grow": 1 }, - "propConfig": { - "props.path": { - "binding": { - "config": { - "expression": "case({this.custom.view},\r\n\"Alarms\", \"Alarm-Views/AlarmTable\",\r\n\"State\", \"State-Views/State-Table\",\r\n\"Alarm-Views/Docked-Alarm\")" - }, - "type": "expr" - } - } - }, - "props": { - "loading": { - "order": "with-parent" - }, - "params": { - "length_of_table_data": 0 - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "change-docked-view", - "pageScope": true, - "script": "\tview \u003d payload[\"data\"]\n\tself.custom.view \u003d view", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.view" + "type": "ia.container.flex" }, { "children": [ { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, "meta": { "name": "ACTIVE" }, @@ -164,6 +2540,17 @@ "type": "ia.input.button" }, { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HITLIST\"" + }, + "scope": "G", + "type": "script" + } + } + }, "meta": { "name": "HIT LIST" }, @@ -181,6 +2568,17 @@ "type": "ia.input.button" }, { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HISTORY\"" + }, + "scope": "G", + "type": "script" + } + } + }, "meta": { "name": "HISTORY" }, @@ -196,13 +2594,29 @@ "text": "HISTORY" }, "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "type": "ia.display.label" } ], "meta": { "name": "FlexContainer" }, "position": { - "basis": "300px" + "basis": "300px", + "grow": 1 + }, + "props": { + "style": { + "gap": 2 + } }, "type": "ia.container.flex" } @@ -220,6 +2634,17 @@ "type": "ia.container.flex" } ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif self.view.custom.currentTable \u003d\u003d \"\":\n\t\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, "meta": { "name": "root" }, diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json new file mode 100644 index 0000000..46b2cdb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json @@ -0,0 +1,33 @@ +{ + "scope": "DG", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "query.sql" + ], + "attributes": { + "useMaxReturnSize": false, + "autoBatchEnabled": false, + "fallbackValue": "", + "maxReturnSize": 100, + "cacheUnit": "SEC", + "type": "Query", + "enabled": true, + "cacheAmount": 1, + "cacheEnabled": false, + "database": "MariaDB", + "fallbackEnabled": false, + "lastModificationSignature": "7c75636782a866dd1e5158a5d0cc022609a60c6330b03adac3e67b017c7eda76", + "permissions": [ + { + "zone": "default", + "role": "" + } + ], + "lastModification": { + "actor": "external", + "timestamp": "2025-06-23T14:58:24Z" + } + } +} \ No newline at end of file