Compare commits

..

No commits in common. "745a200047cc33d5e4576b13b0b18a213cf51052" and "67e5b194c95c968a37f5edda5b4be36d876f47fe" have entirely different histories.

43 changed files with 4335 additions and 8446 deletions

View File

@ -33,38 +33,6 @@
"viewPath": "Detailed-Views/MCM03 Non Con"
},
"/DetailedView/MCM04 Bulk Inbound Problem Solve, Fluid Outbound and Problem Solve": {
"docks": {
"right": [
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-SNP",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-JR",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB"
}
]
},
"title": "",
"viewPath": "Detailed-Views/MCM04 North Bulk Inbound, Fluid Outbound and Problem Solve"
},
@ -175,62 +143,6 @@
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-SNP",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-JR",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-VFD",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-DS",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status"
}
],
"top": [

File diff suppressed because one or more lines are too long

View File

@ -6,9 +6,9 @@
"$": [
"ts",
192,
1750063587377
1746620492354
],
"$ts": 1750063587376
"$ts": 1746620492354
}
}
},
@ -1488,52 +1488,6 @@
"path": "Custom-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Global_Start"
},
"position": {
"height": 0.0516,
"rotate": {
"anchor": "50% 369%"
},
"width": 0.0935,
"x": 0.777,
"y": 0.0206
},
"props": {
"params": {
"pageid": "DetailedView/MCM05 North Bulk Inbound, Fluid Outbound and Problem Solve",
"panel_id": "value",
"text": "MCM05 South Bulk Inbound, Fluid Outbound and Problem Solve"
},
"path": "Custom-Views/Global_Start_Button"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Global_Stop"
},
"position": {
"height": 0.0516,
"rotate": {
"anchor": "50% 369%"
},
"width": 0.0935,
"x": 0.8716,
"y": 0.0206
},
"props": {
"params": {
"pageid": "DetailedView/MCM05 North Bulk Inbound, Fluid Outbound and Problem Solve",
"panel_id": "value",
"text": "MCM05 South Bulk Inbound, Fluid Outbound and Problem Solve"
},
"path": "Custom-Views/Global_Stop_Button"
},
"type": "ia.display.view"
}
],
"meta": {

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-16T09:06:30Z"
},
"lastModificationSignature": "f8de1d27d35c44eaddcf5587e5fe35736d9560720b129b1c15ffbb00b1dbcbec"
}
}

View File

@ -1,81 +0,0 @@
{
"custom": {},
"params": {
"pageid": "value",
"panel_id": "value",
"text": "value"
},
"propConfig": {
"params.pageid": {
"paramDirection": "input",
"persistent": true
},
"params.panel_id": {
"paramDirection": "input",
"persistent": true
},
"params.text": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 30,
"width": 160
}
},
"root": {
"children": [
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tsystem.perspective.navigate(\"/\" + self.view.params.pageid)"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Button"
},
"position": {
"basis": "80%",
"grow": 1
},
"props": {
"image": {
"icon": {
"path": "material/not_started"
}
},
"style": {
"backgroundColor": "#00B900",
"borderStyle": "groove",
"borderWidth": 3,
"cursor": "pointer"
},
"text": "Global Start",
"textStyle": {
"color": "#000000",
"fontFamily": "inherit",
"fontSize": "1vmin",
"fontWeight": "bold"
}
},
"type": "ia.input.button"
}
],
"meta": {
"name": "root"
},
"props": {
"alignContent": "flex-start",
"justify": "center"
},
"type": "ia.container.flex"
}
}

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-16T09:09:44Z"
},
"lastModificationSignature": "a77dd0db0ce04ce888cfca54411ed0b21221ecf624d892f02899834649e9e034"
}
}

View File

@ -1,81 +0,0 @@
{
"custom": {},
"params": {
"pageid": "value",
"panel_id": "value",
"text": "value"
},
"propConfig": {
"params.pageid": {
"paramDirection": "input",
"persistent": true
},
"params.panel_id": {
"paramDirection": "input",
"persistent": true
},
"params.text": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 30,
"width": 160
}
},
"root": {
"children": [
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tsystem.perspective.navigate(\"/\" + self.view.params.pageid)"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Button"
},
"position": {
"basis": "80%",
"grow": 1
},
"props": {
"image": {
"icon": {
"path": "material/stop_circle"
}
},
"style": {
"backgroundColor": "#F11632",
"borderStyle": "groove",
"borderWidth": 3,
"cursor": "pointer"
},
"text": "Global Stop",
"textStyle": {
"color": "#000000",
"fontFamily": "inherit",
"fontSize": "1vmin",
"fontWeight": "bold"
}
},
"type": "ia.input.button"
}
],
"meta": {
"name": "root"
},
"props": {
"alignContent": "flex-start",
"justify": "center"
},
"type": "ia.container.flex"
}
}

View File

@ -966,7 +966,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/D2C/D2C_Chute_2",
"System/MCM04/StatusNonPowered_NS/S011055",
"value",
"value",
"value",
@ -1001,7 +1001,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/D2C/D2C_Chute_3",
"System/MCM04/StatusNonPowered_NS/S011053",
"value",
"value",
"value",
@ -1036,7 +1036,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/D2C/D2C_Chute_4",
"System/MCM04/StatusNonPowered_NS/S011051",
"value",
"value",
"value",
@ -13296,7 +13296,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/D2C/D2C_Chute_1",
"System/MCM04/StatusNonPowered_NS/S011057",
"value",
"value",
"value",
@ -13938,7 +13938,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"System/Station/JR/S011051_JR1",
"System/MCM04/Estop/S011051_JR1",
"value",
"value",
"value",

View File

@ -3,7 +3,7 @@
"currentTab": null
},
"params": {
"Tab_ID": 0,
"Tab_ID": 2,
"Table": "Status_tab"
},
"propConfig": {
@ -40,7 +40,7 @@
"props": {
"defaultSize": {
"height": 930,
"width": 1920
"width": 1905
}
},
"root": {
@ -1017,9 +1017,9 @@
"name": "Lane Status"
},
"position": {
"height": 1,
"width": 0.9969,
"x": -0.0004
"height": 894,
"width": 1902,
"x": -1
},
"propConfig": {
"props.data": {
@ -1409,9 +1409,6 @@
"position": {
"tabIndex": 1
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
},
{
@ -1432,9 +1429,10 @@
"name": "Content"
},
"position": {
"height": 0.9964,
"width": 0.9956,
"x": 0.0015
"height": 891,
"width": 1898,
"x": 2.89,
"y": 0.02
},
"propConfig": {
"meta.visible": {
@ -1467,9 +1465,9 @@
"name": "DPMs"
},
"position": {
"height": 0.9987,
"width": 0.9967,
"y": 0.0005
"height": 893,
"width": 1907,
"y": 0.44
},
"propConfig": {
"meta.visible": {
@ -1533,10 +1531,10 @@
"name": "BACK"
},
"position": {
"height": 0.0459,
"width": 0.0739,
"x": 0.0083,
"y": 0.9349
"height": 41,
"width": 142,
"x": 15.889999999999986,
"y": 836.02
},
"propConfig": {
"meta.visible": {
@ -1566,9 +1564,6 @@
"meta": {
"name": "Enternet"
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
}
],
@ -1577,12 +1572,11 @@
},
"position": {
"height": 1.0011,
"width": 1.0016
"width": 1.0005,
"y": -0.0011
},
"props": {
"tabSize": {
"width": 130
},
"currentTabIndex": 2,
"tabs": [
"Enternet",
"Lane Status",
@ -3057,10 +3051,10 @@
"name": "ExportToCSV"
},
"position": {
"height": 0.0264,
"width": 0.0632,
"x": 0.9072,
"y": 0.0041
"height": 0.0258,
"width": 0.0625,
"x": 0.8974,
"y": 0.004
},
"props": {
"mode": "percent",
@ -3300,7 +3294,7 @@
},
"props": {
"dismissOnSelect": false,
"formattedValue": "Jun 23, 2025 10:26 AM",
"formattedValue": "Jun 17, 2025 4:31 PM",
"formattedValues": {
"date": "Mar 26, 2021",
"datetime": "Mar 26, 2021 12:00 AM",
@ -3310,9 +3304,9 @@
"$": [
"ts",
192,
1750661795650
1750165297976
],
"$ts": 1750659995000
"$ts": 1750163497000
}
},
"type": "ia.input.date-time-input"
@ -3460,7 +3454,7 @@
},
"props": {
"dismissOnSelect": false,
"formattedValue": "Jun 23, 2025 10:56 AM",
"formattedValue": "Jun 17, 2025 5:01 PM",
"formattedValues": {
"date": "Mar 29, 2021",
"datetime": "Mar 29, 2021 1:37 PM",
@ -3470,9 +3464,9 @@
"$": [
"ts",
192,
1750661795681
1750165297976
],
"$ts": 1750661795000
"$ts": 1750165297000
}
},
"type": "ia.input.date-time-input"
@ -3482,10 +3476,10 @@
"name": "Period_not_Global_0"
},
"position": {
"height": 0.0231,
"width": 0.4539,
"x": 0.4511,
"y": 0.0059
"height": 0.0226,
"width": 0.449,
"x": 0.4462,
"y": 0.0058
},
"propConfig": {
"custom.EndDate": {

View File

@ -2,11 +2,7 @@
"pages": {
"/": {
"title": "",
"viewPath": "Simulations/Nav"
},
"/APF_VFD": {
"title": "",
"viewPath": "Simulations/VFD_APF"
"viewPath": "Simulations/Station_JR_PB"
},
"/Command": {
"title": "",
@ -40,14 +36,6 @@
"/Real-Time": {
"viewPath": "Alarm-Views/RealTime"
},
"/Station_EPC": {
"title": "",
"viewPath": "Simulations/Station_EPC"
},
"/Station_JR": {
"title": "",
"viewPath": "Simulations/Station_JR_PB"
},
"/Temperature": {
"title": "",
"viewPath": "Main-Views/TempMonitoring"

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-20T12:32:16Z"
},
"lastModificationSignature": "55cff930b3d7a2d725092e28b9f1290a4215796e0898720cac21feece484ce9f"
}
}

View File

@ -1,166 +0,0 @@
{
"custom": {},
"params": {},
"props": {
"defaultSize": {
"height": 1080,
"width": 1920
}
},
"root": {
"children": [
{
"meta": {
"name": "SIO"
},
"position": {
"height": 0.2083,
"width": 0.1255,
"x": 0.2996,
"y": 0.3797
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/Field_Devices/SIO/SIO1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Device-Views/DeviceStatus"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "FIO"
},
"position": {
"height": 0.2083,
"width": 0.1255,
"x": 0.4314,
"y": 0.3797
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/Field_Devices/FIO/FIO1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Device-Views/DeviceStatus"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "HUB"
},
"position": {
"height": 0.2083,
"width": 0.1255,
"x": 0.5621,
"y": 0.3806
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/Field_Devices/HUB/HUB1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Device-Views/DeviceStatus"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Label"
},
"position": {
"height": 0.0296,
"width": 0.026,
"x": 0.3557,
"y": 0.3241
},
"props": {
"text": "SIO"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_0"
},
"position": {
"height": 0.0296,
"width": 0.026,
"x": 0.4855,
"y": 0.3241
},
"props": {
"text": "FIO"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_1"
},
"position": {
"height": 0.0296,
"width": 0.026,
"x": 0.6152,
"y": 0.3241
},
"props": {
"text": "HUB"
},
"type": "ia.display.label"
}
],
"meta": {
"name": "root"
},
"position": {
"x": 0.676,
"y": 0.5167
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
}
}

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-15T15:33:58Z"
},
"lastModificationSignature": "9616454f3323bca3b71b52e2d029c87565a7a0e9ca637cf4c980403399f177ce"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -1,134 +0,0 @@
{
"custom": {},
"params": {},
"props": {
"defaultSize": {
"width": 949
}
},
"root": {
"children": [
{
"events": {
"dom": {
"onClick": {
"config": {
"page": "/APF_VFD"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button"
},
"position": {
"height": 101,
"rotate": {
"anchor": "100% 129%"
},
"width": 169,
"x": 65,
"y": 149
},
"props": {
"text": "APF/VFD"
},
"type": "ia.input.button"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"page": "/Station_JR"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button_0"
},
"position": {
"height": 104,
"rotate": {
"anchor": "75% 25%"
},
"width": 188,
"x": 264,
"y": 146
},
"props": {
"text": "Station_JR"
},
"type": "ia.input.button"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"page": "/Station_EPC"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button_1"
},
"position": {
"height": 105,
"rotate": {
"anchor": "100% -106%"
},
"width": 184,
"x": 483,
"y": 145
},
"props": {
"text": "Station_EPC"
},
"type": "ia.input.button"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"params": {},
"view": "Simulations/Field_Devices"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button_2"
},
"position": {
"height": 105,
"rotate": {
"anchor": "100% -106%"
},
"width": 184,
"x": 696,
"y": 145
},
"props": {
"text": "SIO FIO HUB"
},
"type": "ia.input.button"
}
],
"meta": {
"name": "root"
},
"type": "ia.container.coord"
}
}

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-15T17:54:34Z"
},
"lastModificationSignature": "d42d4bb2237b811ac7af2d0388892855cc023ec4f868670e318db6872d3db22e"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,107 +0,0 @@
{
"custom": {},
"params": {},
"props": {},
"root": {
"children": [
{
"meta": {
"name": "UL1_3_VFD1"
},
"position": {
"height": 186.64,
"width": 97.92,
"x": 460.6,
"y": 287.6
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"/System/Conveyor/UL1_3_VFD1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Equipment-Views/Status"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "UL1_3_VFD2"
},
"position": {
"height": 186.64,
"width": 97.92,
"x": 260.6,
"y": 294.6
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"System/Conveyor/APF/FL1038_2_VFD1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Equipment-Views/Status"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Label"
},
"position": {
"height": 32,
"width": 50,
"x": 459.5555610656738,
"y": 262.59722900390625
},
"props": {
"text": "VFD"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_0"
},
"position": {
"height": 32,
"width": 50,
"x": 267,
"y": 260
},
"props": {
"text": "APF"
},
"type": "ia.display.label"
}
],
"meta": {
"name": "root"
},
"type": "ia.container.coord"
}
}

View File

@ -133,20 +133,6 @@
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-SNP",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered"
}
],
"top": [

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-20T13:29:20Z"
},
"lastModificationSignature": "e1e56da849a50e557bc8967551c97ec0a2954a23b058f537fcccace3bd823202"
}
}

View File

@ -1,637 +0,0 @@
{
"custom": {
"PLC_list": null,
"running_state": -1,
"state": 0,
"views_data": []
},
"params": {
"tagProps": [
"/System/Station/Buttons/UL1_3_JR_PB2",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.PLC_list": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC"
},
"transforms": [
{
"code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n",
"type": "script"
}
],
"type": "tag"
},
"persistent": true
},
"custom.running_state": {
"binding": {
"config": {
"expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n"
},
"transforms": [
{
"expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})",
"type": "expression"
}
],
"type": "expr"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), 0, {value})",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 3,
"output": 3
},
{
"input": 2,
"output": 2
},
{
"input": 1,
"output": 1
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.views_data": {
"binding": {
"config": {
"struct": {
"equipment_id": "{view.params.tagProps[0]}"
},
"waitOnAll": true
},
"transforms": [
{
"code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"width": 400
}
},
"root": {
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}"
},
"type": "expr"
}
}
},
"props": {
"style": {
"color": "#FFFF",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
}
},
"type": "ia.display.label"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-DS\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Icon",
"tooltip": {
"enabled": true,
"style": {
"cursor": "pointer"
},
"text": "Close faceplate"
}
},
"props": {
"path": "material/close",
"style": {
"cursor": "pointer",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
}
},
"type": "ia.display.icon"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "30px",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px",
"display": false
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)"
},
"enabled": false,
"type": "expr"
}
}
},
"props": {
"style": {
"classes": "Labels/Label_1",
"marginTop": 20
},
"text": "No Active Alarms"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "AlarmStatusTable"
},
"position": {
"basis": "400px",
"grow": 1
},
"propConfig": {
"props.filters.active.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\treturn value[1:]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"columns": {
"active": {
"displayPath": {
"enabled": false
},
"priority": {
"enabled": false
},
"source": {
"enabled": false
},
"state": {
"enabled": false
}
}
},
"filters": {
"active": {
"priorities": {
"critical": false,
"high": false,
"low": false,
"medium": false
},
"states": {
"clearUnacked": false
}
}
},
"refreshRate": 500,
"toolbar": {
"enabled": false
}
},
"type": "ia.display.alarmstatustable"
}
],
"meta": {
"name": "Active_tab"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "NameField"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "NAME"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "DeviceName"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": " return value.rsplit(\u0027/\u0027, 1)[-1]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Name"
},
"position": {
"basis": "35px"
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel",
"overflow": "hidden"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer_0"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "NameField"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "COMMUNICATION FAULTED"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "PB_Light"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "TRUE",
"output": "#FFFFFF"
},
{
"input": "FALSE",
"output": "#D5D5D5"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "FALSE",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "TRUE"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "FALSE",
"output": "#FF0000"
},
{
"input": "FALSE",
"output": "#47FF47"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Property"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer_1"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Info_tab"
},
"position": {
"tabIndex": 1
},
"props": {
"direction": "column",
"style": {
"margin-left": ""
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "tabs"
},
"position": {
"grow": 1
},
"props": {
"menuType": "modern",
"tabSize": {
"width": 1000
},
"tabStyle": {
"active": {
"classes": "",
"color": "#FFFFFF",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
},
"inactive": {
"classes": "",
"color": "#B8B8B8",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
}
},
"tabs": [
"Alarms",
"Info"
]
},
"type": "ia.container.tab"
}
],
"meta": {
"name": "FlexContainer_1"
},
"position": {
"basis": "670px",
"grow": 1
},
"props": {
"style": {
"border-top": "1px solid white",
"gap": ""
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "800px",
"grow": 1
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "root"
},
"props": {
"direction": "column",
"style": {
"classes": "Buttons/Button-Menu"
}
},
"type": "ia.container.flex"
}
}

View File

@ -1,6 +1,14 @@
{
"custom": {
"PLC_list": null,
"PLC_list": [
"MCM01",
"MCM02",
"MCM03",
"MCM04",
"MCM05",
"MCM06",
"MCM07"
],
"running_state": -1,
"state": 0,
"views_data": []
@ -571,7 +579,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"

View File

@ -15,7 +15,7 @@
},
"params": {
"tagProps": [
"/System/D2C/TESTCHUTE",
"/System/Chute/Chute_1",
"value",
"value",
"value",
@ -179,7 +179,7 @@
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-SNP\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-JR\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
},
"scope": "G",
"type": "script"
@ -330,7 +330,7 @@
"children": [
{
"meta": {
"name": "Name"
"name": "NameField"
},
"position": {
"basis": "50%",
@ -379,7 +379,7 @@
}
],
"meta": {
"name": "Property"
"name": "Name"
},
"position": {
"basis": "35px"
@ -410,156 +410,7 @@
"children": [
{
"meta": {
"name": "Name"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "FULL"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Full"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#FFFFFF"
},
{
"input": "NOT FULL",
"output": "#D5D5D5"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Full"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "NOT FULL",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "FULL"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#0008FF"
},
{
"input": "NOT FULL",
"output": "#47FF47"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Property"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Full"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Name"
"name": "Disabled"
},
"position": {
"basis": "50%",
@ -575,7 +426,7 @@
},
{
"meta": {
"name": "Disabled"
"name": "PB_Light"
},
"position": {
"basis": "50%",
@ -677,7 +528,7 @@
}
],
"meta": {
"name": "Property"
"name": "Name"
},
"position": {
"basis": "35px",
@ -697,43 +548,154 @@
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Full"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "FULL"
},
"type": "ia.display.label"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
{
"meta": {
"name": "PB_Light"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
},
{
"input": 2,
"output": true
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#FFFFFF"
},
{
"input": "NOT FULL",
"output": "#D5D5D5"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Full"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "NOT FULL",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "FULL"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#0008FF"
},
{
"input": "NOT FULL",
"output": "#47FF47"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Name"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Full"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
@ -746,7 +708,7 @@
"children": [
{
"meta": {
"name": "Name"
"name": "Half Full"
},
"position": {
"basis": "50%",
@ -762,7 +724,7 @@
},
{
"meta": {
"name": "Half Full"
"name": "PB_Light"
},
"position": {
"basis": "50%",
@ -864,7 +826,7 @@
}
],
"meta": {
"name": "Property"
"name": "Name"
},
"position": {
"basis": "35px",
@ -884,44 +846,6 @@
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
},
{
"input": 2,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"direction": "column"
},
@ -933,7 +857,7 @@
"children": [
{
"meta": {
"name": "Name"
"name": "Jam"
},
"position": {
"basis": "50%",
@ -949,7 +873,7 @@
},
{
"meta": {
"name": "Jam"
"name": "PB_Light"
},
"position": {
"basis": "50%",
@ -1051,7 +975,7 @@
}
],
"meta": {
"name": "Property"
"name": "Name"
},
"position": {
"basis": "35px",
@ -1071,410 +995,6 @@
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
},
{
"input": 2,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Name"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "NO CONTAINER"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "No Container"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "NO CONTAINER",
"output": "#FFFFFF"
},
{
"input": "CONTAINER PRESENT",
"output": "#D5D5D5"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/No Container"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "CONTAINER PRESENT",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "NO CONTAINER"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "NO CONTAINER",
"output": "#FF4487"
},
{
"input": "CONTAINER PRESENT",
"output": "#47FF47"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Property"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "No Container"
},
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Name"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "READY TO BE ENABLED"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Ready To Be Enabled"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "READY",
"output": "#FFFFFF"
},
{
"input": "ENABLED",
"output": "#D5D5D5"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "ENABLED",
"inputType": "scalar",
"mappings": [
{
"input": 6,
"output": "READY"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "READY",
"output": "#92FF00"
},
{
"input": "ENABLED",
"output": "#47FF47"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Property"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Ready To Be Enabled"
},
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"direction": "column"
},
@ -1506,7 +1026,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\t"
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
@ -1645,44 +1165,6 @@
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
},
{
"input": 2,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel",

View File

@ -7,7 +7,7 @@
},
"params": {
"tagProps": [
"System/MCM01/Conveyor/UL1_3_VFD1",
"/System/Conveyor/UL1_11_VFD1",
"value",
"value",
"value",
@ -125,7 +125,7 @@
},
"props": {
"defaultSize": {
"width": 403
"width": 400
}
},
"root": {
@ -167,7 +167,7 @@
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-VFD\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-JR\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
},
"scope": "G",
"type": "script"
@ -238,14 +238,14 @@
"grow": 1
},
"propConfig": {
"props.filters.active.conditions.displayPath": {
"props.filters.active.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\tparts \u003d value.split(\"/\")\n\tname \u003d parts[-1]\n\t\n\t# Split on \"_\" and remove the last part\n\tname_parts \u003d name.split(\"_\")\n\tnew_name \u003d \"_\".join(name_parts[:-1])\n\t\n\treturn new_name + \"_PE*,\" + new_name + \"_VFD*\"",
"code": "\treturn value[1:]",
"type": "script"
}
],
@ -272,7 +272,6 @@
},
"filters": {
"active": {
"conditions": {},
"priorities": {
"critical": false,
"high": false,
@ -415,7 +414,7 @@
"props.text": {
"binding": {
"config": {
"expression": "case({..../State.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"Communication Fault\",\r\n8, \"VFD Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running in Maintenance Mode\",\r\n\"Unknown\")"
"expression": "case({..../State.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"VFD Faulted\",\r\n8, \"Communication Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running in Maintenance Mode\",\r\n\"Unknown\")"
},
"type": "expr"
}
@ -585,54 +584,17 @@
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown (Freq/Velocity\u0027)",
"type": "expression"
},
{
"fallback": "Unknown (Freq/Velocity",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Velocity"
},
{
"input": 0,
"output": "Frequency"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"paddingLeft": 100
}
},
"text": "Frequency"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Frequency_Velocity"
"name": "Frequency"
},
"position": {
"basis": "50%",
@ -648,12 +610,12 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Frequenncy"
},
"transforms": [
{
"code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n unit \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Velocity\"\n unit \u003d \" Rev/s\"\n else:\n child \u003d \"Frequency\"\n unit \u003d \" Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n if result is None or str(result) \u003d\u003d \"None\":\n return \"Unknown\"\n else:\n return str(result) + unit",
"type": "script"
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" Hz\")",
"type": "expression"
}
],
"type": "tag"
@ -686,7 +648,7 @@
}
],
"meta": {
"name": "Frequency_Velocity"
"name": "Frequency"
},
"position": {
"basis": "35px"
@ -1166,54 +1128,17 @@
"children": [
{
"meta": {
"name": "Speed_At_60Hz_30rev"
"name": "Speed_At_60Hz"
},
"position": {
"basis": "50px",
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown (60hz/30rev\u0027)",
"type": "expression"
},
{
"fallback": "Unknown (60hz/30rev",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Speed At 30 rev/s"
},
{
"input": 0,
"output": "Speed At 60Hz"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"padding": 20
},
"text": "Speed At 60Hz",
"textStyle": {
"color": "#7D7D7D"
}
@ -1225,7 +1150,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\n\tvfdType \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + self.view.params.tagProps[0] + \"/VFD_Type\"\n\tprop \u003d \"\"\n\t\n\tvfdTypeVal \u003d system.tag.readBlocking([vfdType])[0].value\n\t\n\tif vfdTypeVal \u003d\u003d 1:\n\t\tprop \u003d \"Speed_At_30rev\"\n\telse:\n\t\tprop \u003d \"Speed_At_60Hz\"\n\t\t\n\tpropHzRev \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + self.view.params.tagProps[0] + \"/\" + prop\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propHzRev], [value])\n\t\t\n\t"
"script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Speed_At_60Hz\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])"
},
"scope": "G",
"type": "script"
@ -1250,20 +1175,15 @@
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Speed_At_60Hz"
},
"transforms": [
{
"code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Speed_At_30rev\"\n else:\n child \u003d \"Speed_At_60Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n \n return result",
"type": "script"
}
],
"type": "tag"
}
}
@ -1287,7 +1207,7 @@
}
],
"meta": {
"name": "Speed_At_60Hz_30rev"
"name": "Speed_At_60Hz"
},
"position": {
"basis": "46px"
@ -1325,7 +1245,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+ self.view.params.tagProps[0] + \"/Cycle_Time_Factor\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])"
"script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Cycle_Time_Factor\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])"
},
"scope": "G",
"type": "script"
@ -1795,49 +1715,14 @@
],
"type": "tag"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Direction\u0027)",
"type": "expression"
},
{
"fallback": "Direction",
"inputType": "scalar",
"mappings": [
{
"input": false,
"output": "Direction Backward"
},
{
"input": true,
"output": "Direction Forward"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"backgroundColor": "#0068F7",
"marginBottom": 10
}
},
"text": "Direction"
},
"type": "ia.input.button"
}
@ -1899,6 +1784,7 @@
"grow": 1
},
"props": {
"currentTabIndex": 2,
"menuType": "modern",
"tabSize": {
"width": 1000

View File

@ -21,9 +21,6 @@
{
"path": "Symbol-Views/Equipment-Views/AUS"
},
{
"path": "Symbol-Views/Equipment-Views/Button"
},
{
"path": "Symbol-Views/Equipment-Views/Camera"
},
@ -33,9 +30,6 @@
{
"path": "Symbol-Views/Equipment-Views/ControlCabinet"
},
{
"path": "Symbol-Views/Equipment-Views/Divert_Arm"
},
{
"path": "Symbol-Views/Equipment-Views/Estop"
},
@ -45,15 +39,6 @@
{
"path": "Symbol-Views/Equipment-Views/JAM"
},
{
"path": "Symbol-Views/Equipment-Views/JR_Button"
},
{
"path": "Symbol-Views/Equipment-Views/Kobukuro"
},
{
"path": "Symbol-Views/Equipment-Views/Lift"
},
{
"path": "Symbol-Views/Equipment-Views/Light_Curtain"
},
@ -63,18 +48,6 @@
{
"path": "Symbol-Views/Equipment-Views/Network"
},
{
"path": "Symbol-Views/Equipment-Views/PPI"
},
{
"path": "Symbol-Views/Equipment-Views/Photocell2_Lift"
},
{
"path": "Symbol-Views/Equipment-Views/Photocell_Lift"
},
{
"path": "Symbol-Views/Equipment-Views/PinDetection"
},
{
"path": "Symbol-Views/Equipment-Views/Pointer"
},
@ -102,18 +75,9 @@
{
"path": "Symbol-Views/Equipment-Views/SLAMs"
},
{
"path": "Symbol-Views/Equipment-Views/SS_Button"
},
{
"path": "Symbol-Views/Equipment-Views/SafetyGate"
},
{
"path": "Symbol-Views/Equipment-Views/SmartPac"
},
{
"path": "Symbol-Views/Equipment-Views/Spiral"
},
{
"path": "Symbol-Views/Equipment-Views/Stacker_Destacker"
},
@ -157,16 +121,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Button",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Camera",
"forceFault": null,
@ -197,16 +151,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Divert_Arm",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Estop",
"forceFault": null,
@ -237,36 +181,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/JR_Button",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Kobukuro",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Lift",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Light_Curtain",
"forceFault": null,
@ -297,46 +211,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/PPI",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Photocell2_Lift",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Photocell_Lift",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/PinDetection",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Pointer",
"forceFault": null,
@ -427,16 +301,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/SS_Button",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/SafetyGate",
"forceFault": null,
@ -447,26 +311,6 @@
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/SmartPac",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Spiral",
"forceFault": null,
"forceRunning": 3,
"has_state": true,
"instancePosition": {},
"instanceStyle": {
"classes": ""
}
},
{
"Path": "Symbol-Views/Equipment-Views/Stacker_Destacker",
"forceFault": null,
@ -556,54 +400,6 @@
"name": "Table"
},
"propConfig": {
"props.data[11].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state5"
},
"type": "property"
}
},
"props.data[11].Color.style.color": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) "
},
"type": "expr"
}
},
"props.data[12].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state4"
},
"type": "property"
}
},
"props.data[13].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state3"
},
"type": "property"
}
},
"props.data[14].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state2"
},
"type": "property"
}
},
"props.data[15].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state1"
},
"type": "property"
}
},
"props.data[1].Color.style.backgroundColor": {
"binding": {
"config": {
@ -612,7 +408,7 @@
"type": "property"
}
},
"props.data[3].Color.style.backgroundColor": {
"props.data[2].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state5"
@ -620,13 +416,61 @@
"type": "property"
}
},
"props.data[3].Color.style.color": {
"props.data[2].Color.style.color": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) "
},
"type": "expr"
}
},
"props.data[4].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state5"
},
"type": "property"
}
},
"props.data[4].Color.style.color": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) "
},
"type": "expr"
}
},
"props.data[5].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state4"
},
"type": "property"
}
},
"props.data[6].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state3"
},
"type": "property"
}
},
"props.data[7].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state2"
},
"type": "property"
}
},
"props.data[8].Color.style.backgroundColor": {
"binding": {
"config": {
"path": "session.custom.colours.state1"
},
"type": "property"
}
}
},
"props": {
@ -866,20 +710,7 @@
},
"value": "Stopped"
},
"Description": "MHE is Stopped/Disabled\n"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#c9fcc0",
"classes": "",
"color": "#000000"
},
"value": "Enabled"
},
"Description": "MHE is Enabled (Not Running)"
"Description": "MHE is stopped (State2)"
},
{
"Color": {
@ -890,85 +721,7 @@
},
"value": "Running"
},
"Description": "MHE is Running"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#00ffd0",
"classes": "",
"color": "#000000"
},
"value": "Power Saving"
},
"Description": "MHE is in Power Saving Mode"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#ff8c00",
"classes": "",
"color": "#000000"
},
"value": "Jammed"
},
"Description": "MHE is Jammed"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#0008ff",
"classes": "",
"color": "#FFFFFF"
},
"value": "Full"
},
"Description": "MHE is Full"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#946446",
"classes": "",
"color": "#FFFFFF"
},
"value": "Maint Mode"
},
"Description": "MHE is in Maintenance Mode"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#B45C5C",
"classes": "",
"color": "#FFFFFF"
},
"value": "Maint Running Mode"
},
"Description": "MHE Running in Maintenance Mode"
},
{
"Color": {
"align": "center",
"justify": "left",
"style": {
"backgroundColor": "#ff0000",
"classes": "",
"color": "#FFFFFF"
},
"value": "Estop / Faulted\n"
},
"Description": "MHE is Estopped / Faulted\n"
"Description": "MHE is running (State 3)"
},
{
"Color": {

View File

@ -1,19 +1,10 @@
{
"custom": {
"disconnected": false,
"plc": "",
"priority": 0,
"priority_string": "No Active Alarms",
"searchId": "PLC01",
"state": 0,
"state_string": "Normal"
},
"custom": {},
"params": {
"forceFaultStatus": null,
"tagProps": [
"/System/Field_Devices/SIO/SIO1",
"value",
"value",
"PLC15/OPC/inAlarms0",
"1_Profinet node fault",
"",
"value",
"value",
"value",
@ -24,135 +15,6 @@
]
},
"propConfig": {
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"expression": "split({value}, \"/\")[0]",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority_string": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "Unknown",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "No Active Alarms"
},
{
"input": 1,
"output": "High"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.searchId": {
"binding": {
"config": {
"path": "session.custom.searchId"
},
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n0, \"Normal\",\r\n1, \"Communication Faulted\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"params.forceFaultStatus": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "inout",
"persistent": true
@ -215,54 +77,97 @@
"basis": "264px"
},
"propConfig": {
"props.color": {
"meta.visible": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "true"
},
"type": "expr"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "{parent.custom.ref_state}"
},
"overlayOptOut": true,
"transforms": [
{
"fallback": "#00CC00",
"fallback": "State-Styles/State106",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FF0000"
"input": 0,
"output": "State-Styles/State0"
},
{
"input": 0,
"output": "#00CC00"
"input": 1,
"output": "State-Styles/State1"
},
{
"input": 2,
"output": "State-Styles/State2"
},
{
"input": 3,
"output": "State-Styles/State3"
},
{
"input": 4,
"output": "State-Styles/State4"
},
{
"input": 5,
"output": "State-Styles/State5"
},
{
"input": 6,
"output": "State-Styles/State6"
},
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
}
],
"outputType": "color",
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
"type": "expr"
}
}
},
"props": {
"path": "material/place",
"style": {
"classes": "State-Styles/State1"
}
"path": "material/place"
},
"type": "ia.display.icon"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\t\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
},
"onDoubleClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
"script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"DevicePopUP\", \"PopUp-Views/Device/Information-Device\", params \u003d{\"tagProps\":tagProps},resizable \u003d 1)\n\t"
},
"scope": "G",
"type": "script"
@ -270,39 +175,98 @@
}
},
"meta": {
"name": "root",
"text": "",
"tooltip": {
"style": {}
}
"name": "root"
},
"propConfig": {
"meta.tooltip.style.classes": {
"custom.alarm_active": {
"binding": {
"config": {
"expression": "{view.custom.priority}"
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"1": "{view.params.tagProps[1]}"
},
"tagPath": "{0}/Alarms/{1}.IsActive"
},
"type": "tag"
}
},
"custom.alarm_priority_int": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"1": "{view.params.tagProps[1]}"
},
"tagPath": "{0}/Alarms/{1}.Priority"
},
"transforms": [
{
"fallback": "Alarms-Styles/NoAlarm",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/High"
}
],
"outputType": "style-list",
"type": "map"
"expression": "case({value},\n\"Critical\",1,\n\"High\",1,\n\"Medium\",2,\n\"Low\",3,\n\"Diagnostic\",4,0)",
"type": "expression"
}
],
"type": "tag"
}
},
"custom.alarm_shelved": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"1": "{view.params.tagProps[1]}"
},
"tagPath": "{0}/Alarms/{1}.IsShelved"
},
"type": "tag"
}
},
"custom.covert_mode": {
"binding": {
"config": {
"path": "session.custom.covert"
},
"type": "property"
}
},
"custom.isMatch": {
"binding": {
"config": {
"expression": "if({session.custom.deviceSearchId} \u003d {this.custom.search_path},1,0)"
},
"type": "expr"
},
"onChange": {
"enabled": null,
"script": "\tif currentValue.value \u003d\u003d 1:\n\t\tself.print(self.custom.search_path)\n\t\tself.session.custom.searchId \u003d \"\""
},
"persistent": false
},
"custom.ref_state": {
"binding": {
"config": {
"expression": "if({this.custom.state}\u003d1 \u0026\u0026 {this.custom.isMatch}\u003d1,{this.custom.alarm_priority_int} + 100,\nif({this.custom.state}\u003d1 \u0026\u0026 {this.custom.isMatch}\u003d0,{this.custom.alarm_priority_int},\nif({this.custom.state}\u003d0 \u0026\u0026 {this.custom.isMatch}\u003d1,105,5)))"
},
"type": "expr"
}
},
"meta.tooltip.text": {
"custom.search_path": {
"binding": {
"config": {
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
"expression": "{view.params.tagProps[0]}+\"/\"+{view.params.tagProps[1]}"
},
"type": "expr"
}
},
"custom.state": {
"binding": {
"config": {
"expression": "if({this.custom.alarm_shelved},0,\nif({this.custom.alarm_active},1,0))"
},
"type": "expr"
}
@ -314,37 +278,10 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"direction": "column",
"style": {}
"direction": "column"
},
"type": "ia.container.flex"
}

View File

@ -1,17 +0,0 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-06-16T11:22:15Z"
},
"lastModificationSignature": "9c039d1a0a0b794360ab1713f6855f4281694c16a196be1a0e385cea2557f846"
}
}

View File

@ -1,814 +0,0 @@
{
"custom": {
"alarm_message": null,
"covert_mode": true,
"disconnected": false,
"display_icon": true,
"error": false,
"isMatch": 0,
"plc": "value",
"priority": 0,
"priority_string": "No active alarms",
"running": false,
"searchId": "PLC01",
"show_error": false,
"show_running": true,
"state": 5,
"state_string": "Unknown",
"visible_status": false
},
"params": {
"forceFaultStatus": null,
"forceRunningStatus": null,
"mirror": true,
"openDiverter": true,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.alarm_message": {
"persistent": true
},
"custom.covert_mode": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.display_icon": {
"binding": {
"config": {
"expression": "{this.custom.covert_mode}||{this.custom.isMatch}\u003e0"
},
"type": "expr"
},
"persistent": true
},
"custom.error": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.isMatch": {
"binding": {
"config": {
"expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))"
},
"type": "expr"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"expression": "split({value}, \"/\")[0]",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 4
},
{
"input": 2,
"output": 3
},
{
"input": 3,
"output": 2
},
{
"input": 4,
"output": 1
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.running": {
"binding": {
"config": {
"expression": "{view.custom.running_status} \u003d 3"
},
"type": "expr"
},
"persistent": true
},
"custom.running_status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceRunningStatus},0)",
"type": "expression"
}
],
"type": "tag"
}
},
"custom.searchId": {
"binding": {
"config": {
"path": "session.custom.searchId"
},
"type": "property"
},
"persistent": true
},
"custom.show_error": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {view.custom.isMatch}\u003e0,\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {view.custom.isMatch}\u003e0,\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.show_running": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": 1
},
{
"input": 3,
"output": 2
},
{
"input": 2,
"output": 3
},
{
"input": 1,
"output": 4
},
{
"input": 0,
"output": 5
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.visible_status": {
"binding": {
"config": {
"expression": "{view.custom.state} !\u003d 5"
},
"type": "expr"
},
"persistent": true
},
"params.forceFaultStatus": {
"paramDirection": "input",
"persistent": true
},
"params.forceRunningStatus": {
"paramDirection": "input",
"persistent": true
},
"params.mirror": {
"paramDirection": "input",
"persistent": true
},
"params.openDiverter": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 1045,
"width": 1130
}
},
"root": {
"children": [
{
"meta": {
"name": "OpenDiverterArm"
},
"position": {
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "{view.params.openDiverter} \u0026\u0026 {view.params.mirror}"
},
"type": "expr"
}
},
"position.rotate.angle": {
"binding": {
"config": {
"path": "view.params.directionLeft"
},
"transforms": [
{
"expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": 1
},
"type": "path"
}
],
"preserveAspectRatio": "xMidYMax",
"style": {
"overflow": "hidden"
},
"viewBox": "0 1.3 38 46"
},
"type": "ia.shapes.svg"
},
{
"meta": {
"name": "ClosedDiverterArm"
},
"position": {
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "!{view.params.openDiverter} \u0026\u0026 {view.params.mirror}"
},
"type": "expr"
}
},
"position.rotate.angle": {
"binding": {
"config": {
"path": "view.params.directionLeft"
},
"transforms": [
{
"expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"d": "M 0 0 L 96 0 L 96 16 L 0 16 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": 2
},
"type": "path"
}
],
"preserveAspectRatio": "xMidYMax",
"style": {
"overflow": "hidden"
},
"viewBox": "-1 0 98 17"
},
"type": "ia.shapes.svg"
},
{
"meta": {
"name": "OpenDiverterArmLeft"
},
"position": {
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}"
},
"type": "expr"
}
},
"position.rotate.angle": {
"binding": {
"config": {
"path": "view.params.directionLeft"
},
"transforms": [
{
"expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": 1
},
"type": "path"
}
],
"preserveAspectRatio": "xMidYMax",
"style": {
"overflow": "hidden",
"transform": "scaleX(-1)"
},
"viewBox": "0 1.3 38 46"
},
"type": "ia.shapes.svg"
},
{
"meta": {
"name": "ClosedDiverterArmLeft"
},
"position": {
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "!{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}"
},
"type": "expr"
}
},
"position.rotate.angle": {
"binding": {
"config": {
"path": "view.params.directionLeft"
},
"transforms": [
{
"expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"d": "M 0 0 L 96 0 L 96 16 L 0 16 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": 2
},
"type": "path"
}
],
"preserveAspectRatio": "xMidYMax",
"style": {
"overflow": "hidden",
"transform": "scaleX(-1)"
},
"viewBox": "-1 0 98 17"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
},
"onDoubleClick": {
"config": {
"script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t"
},
"enabled": false,
"scope": "G",
"type": "script"
},
"onMouseEnter": {
"config": {
"script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root",
"tooltip": {
"enabled": true,
"location": "top-left",
"style": {}
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.Fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
"expression": "{view.custom.priority}"
},
"transforms": [
{
"fallback": "Alarms-Styles/NoAlarm",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/Diagnostic"
},
{
"input": 2,
"output": "Alarms-Styles/Low"
},
{
"input": 3,
"output": "Alarms-Styles/Medium"
},
{
"input": 4,
"output": "Alarms-Styles/High"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
},
"type": "expr"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "view.custom.display_icon"
},
"type": "property"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "solid"
},
{
"input": false,
"output": "none"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
},
{
"input": 201,
"output": "State-Styles/State201"
},
{
"input": 202,
"output": "State-Styles/State202"
},
{
"input": 203,
"output": "State-Styles/State203"
},
{
"input": 204,
"output": "State-Styles/State204"
},
{
"input": 205,
"output": "State-Styles/State205"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
}
},
"props": {
"direction": "column",
"justify": "center",
"style": {
"borderColor": "#FF0000",
"borderWidth": "2px",
"cursor": "pointer"
}
},
"type": "ia.container.flex"
}
}

View File

@ -5,11 +5,11 @@
"display_icon": true,
"plc": "value",
"priority": 0,
"priority_string": "No Active Alarms",
"priority_string": "Medium",
"running": false,
"searchId": "PLC01",
"state": 0,
"state_string": "Off(Inactive)"
"state": 131,
"state_string": "Disconnected"
},
"params": {
"angle": 0,
@ -278,7 +278,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"Communication Fault\",\r\n8, \"VFD Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running In Maintenance Mode\",\r\n131, \"Disconnected\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"VFD Faulted\",\r\n8, \"Communication Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running In Maintenance Mode\",\r\n131, \"Disconnected\",\r\n\"Unknown\")"
},
"type": "expr"
},

View File

@ -1,20 +1,20 @@
{
"custom": {
"disconnected": false,
"plc": "System",
"alarm_message": null,
"disconnected": true,
"plc": "value",
"priority": 0,
"priority_string": "Medium",
"searchId": "value",
"searchId": "PLC01",
"state": 0,
"state_string": "Disabled",
"type": 0
"state_string": "Disabled"
},
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"System/D2C/D2C_Chute_1",
"value",
"value",
"value",
"value",
@ -66,22 +66,78 @@
"custom.priority": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n if(\r\n {view.custom.state} \u003d 0 || {view.custom.state} \u003d 3,\r\n {view.custom.state},\r\n 0\r\n ),\r\n 0, 0,\r\n 3, 3,\r\n 0\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n if(\r\n {view.custom.state} \u003e\u003d 1 \u0026\u0026 {view.custom.state} \u003c\u003d 6,\r\n {view.custom.state},\r\n 0\r\n ),\r\n 0, 0,\r\n 1, 2,\r\n 2, 3,\r\n 3, 3,\r\n 4, 1,\r\n 5, 3,\r\n 6, 3,\r\n 0\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n if(\r\n {view.custom.state} \u003e\u003d 1 \u0026\u0026 {view.custom.state} \u003c\u003d 4,\r\n {view.custom.state},\r\n 0\r\n ),\r\n 0, 0,\r\n 1, 2,\r\n 2, 3,\r\n 3, 3,\r\n 4, 1,\r\n 0\r\n ),\r\n 0\r\n )\r\n )\r\n)\r\n"
"path": "view.custom.state"
},
"type": "expr"
"transforms": [
{
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
},
{
"input": 2,
"output": 2
},
{
"input": 3,
"output": 3
},
{
"input": 4,
"output": 4
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority_string": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Medium\u0027,\r\n 3, \u0027Low\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Medium\u0027,\r\n 1, \u0027No Active Alarms\u0027,\r\n 2, \u0027Low\u0027,\r\n 3, \u0027Low\u0027,\r\n 4, \u0027High\u0027,\r\n 5, \u0027Low\u0027,\r\n 6, \u0027Low\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Medium\u0027,\r\n 1, \u0027No Active Alarms\u0027,\r\n 2, \u0027Low\u0027,\r\n 3, \u0027Low\u0027,\r\n 4, \u0027High\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n \u0027Unknown\u0027\r\n )\r\n )\r\n)\r\n"
"path": "view.custom.state"
},
"type": "expr"
},
"onChange": {
"enabled": null,
"script": "\tif self.custom.priority not in [1, 2, 3, 4, 5, 6, 0]:\n\t self.custom.priority_string \u003d \"Unknown\""
"transforms": [
{
"fallback": "Unknown",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "Medium"
},
{
"input": 1,
"output": "No Active Alarms"
},
{
"input": 2,
"output": "High"
},
{
"input": 3,
"output": "High"
},
{
"input": 4,
"output": "High"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
@ -118,33 +174,12 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Disabled\u0027,\r\n 3, \u0027Full\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Disabled\u0027,\r\n 1, \u0027Enabled\u0027,\r\n 2, \u0027Half Full\u0027,\r\n 3, \u0027Full\u0027,\r\n 4, \u0027Jammed\u0027,\r\n 5, \u0027No Container\u0027,\r\n 6, \u0027Ready To Be Enabled\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027Disabled\u0027,\r\n 1, \u0027Enabled\u0027,\r\n 2, \u0027Half Full\u0027,\r\n 3, \u0027Full\u0027,\r\n 4, \u0027Jammed\u0027,\r\n \u0027Unknown\u0027\r\n ),\r\n \u0027Unknown\u0027\r\n )\r\n )\r\n)"
"expression": "case({view.custom.state},\r\n0, \"Disabled\",\r\n1, \"Enabled\",\r\n2, \"Half Full\",\r\n3, \"Full\",\r\n4, \"Jammed\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.type": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"params.directionLeft": {
"paramDirection": "input",
"persistent": true
@ -195,9 +230,39 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#FFFFFF\",\r\n if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#C9FCC0\u0027,\r\n 2, \u0027#7F83FF\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n 5, \u0027#FF4487\u0027,\r\n 6, \u0027#92FF00\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#C9FCC0\u0027,\r\n 2, \u0027#7F83FF\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n \u0027#FFFFFF\u0027\r\n ),\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n )\r\n)\r\n"
"path": "view.custom.state"
},
"type": "expr"
"transforms": [
{
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#FFFFFF"
},
{
"input": 1,
"output": "#C9FCC0"
},
{
"input": 2,
"output": "#7F83FF"
},
{
"input": 3,
"output": "#0008FF"
},
{
"input": 4,
"output": "#FF8C00"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
@ -231,6 +296,14 @@
"scope": "G",
"type": "script"
},
"onDoubleClick": {
"config": {
"script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t"
},
"enabled": false,
"scope": "G",
"type": "script"
},
"onMouseEnter": {
"config": {
"script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message"
@ -261,19 +334,23 @@
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/High"
"output": "Alarms-Styles/NoAlarm"
},
{
"input": 2,
"output": "Alarms-Styles/Medium"
"output": "Alarms-Styles/High"
},
{
"input": 3,
"output": "Alarms-Styles/Low"
"output": "Alarms-Styles/High"
},
{
"input": 4,
"output": "Alarms-Styles/Diagnostic"
"output": "Alarms-Styles/High"
},
{
"input": 0,
"output": "Alarms-Styles/Medium"
}
],
"outputType": "style-list",
@ -290,39 +367,15 @@
},
"type": "expr"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"enabled": false,
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"justify": "center",
"style": {
"classes": "Disconnects/Device-Connected"
"borderColor": "#FF0000",
"borderStyle": "none",
"borderWidth": "2px",
"cursor": "pointer"
}
},
"type": "ia.container.flex"

View File

@ -1,60 +0,0 @@
WITH Active AS (
SELECT
ae.id,
ae.eventtime,
ae.eventid,
ae.source,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, NOW()) AS duration_seconds
FROM alarm_events ae
WHERE ae.eventtype = 0
AND NOT EXISTS (
SELECT 1 FROM alarm_events ae_clear
WHERE ae_clear.eventid = ae.eventid
AND ae_clear.eventtype = 1
)
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
-- Priority filter using FIND_IN_SET for comma-separated values
AND (
:priorityList IS NULL
OR :priorityList = ''
OR FIND_IN_SET(ae.priority, :priorityList) > 0
)
GROUP BY ae.id
),
SingleMyTag AS (
SELECT aed.id, aed.strValue
FROM alarm_event_data aed
WHERE aed.propname = 'myTag'
GROUP BY aed.id
)
SELECT
Active.id AS ID,
Active.eventtime AS StartTimestamp,
NULL AS EndTimestamp, -- no end time since it's still active
CONCAT(
LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':',
LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':',
LPAD(Active.duration_seconds % 60, 2, '0')
) AS Duration,
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location
FROM Active
LEFT JOIN SingleMyTag aed
ON aed.id = Active.id
ORDER BY Active.eventtime DESC;

View File

@ -1,40 +0,0 @@
{
"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": "d4eef6a8194fc16fb2061c0ffe057909fb37ddedbe4fd6e4f2416cc6050f6209",
"permissions": [
{
"zone": "default",
"role": ""
}
],
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-23T10:38:45Z"
},
"parameters": [
{
"type": "Parameter",
"identifier": "priorityList",
"sqlType": 7
}
]
}
}

View File

@ -1,46 +1,17 @@
WITH Active AS (
SELECT
ae.id,
ae.eventtime,
ae.eventid,
ae.source,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
FROM alarm_events ae
LEFT JOIN alarm_events ae_clear
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
WHERE ae.eventtype = 0
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
GROUP BY ae.id -- Ensure one row per alarm
),
SingleMyTag AS (
SELECT aed.id, aed.strValue
FROM alarm_event_data aed
WHERE aed.propname = 'myTag'
GROUP BY aed.id -- Collapse duplicates by id
),
SingleClear AS (
SELECT eventid, MIN(eventtime) AS eventtime
FROM alarm_events
WHERE eventtype = 1
GROUP BY eventid
)
SELECT
Active.id AS ID,
Active.eventtime AS StartTimestamp,
Clear.eventtime AS EndTimestamp,
Active.eventtime AS `StartTimestamp`,
Clear.eventtime AS `EndTimestamp`,
CONCAT(
LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':',
LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':',
LPAD(Active.duration_seconds % 60, 2, '0')
LPAD(FLOOR(duration_seconds / 3600), 2, '0'), ':',
LPAD(FLOOR((duration_seconds % 3600) / 60), 2, '0'), ':',
LPAD(duration_seconds % 60, 2, '0')
) AS Duration,
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
CONCAT(
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/HMI/ALARMST', 1), ':/tag:', -1), '/', -1),
' - ',
SUBSTRING_INDEX(Active.source, ':/alm:', -1)
) AS Description,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
@ -49,21 +20,21 @@ SELECT
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location
FROM Active
LEFT JOIN SingleClear Clear
ON Active.eventid = Clear.eventid
LEFT JOIN SingleMyTag aed
ON aed.id = Active.id
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/HMI/ALARMST', 1), ':/tag:', -1), '/', -1) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/tag:', -1), '/', 1) AS MCM
FROM (
SELECT
ae.id,
ae.eventtime,
ae.eventid,
ae.source,
ae.priority,
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
FROM alarm_events ae
LEFT JOIN alarm_events ae_clear
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
WHERE ae.eventtype = 0
) AS Active
LEFT JOIN alarm_events Clear
ON Active.eventid = Clear.eventid AND Clear.eventtype = 1
ORDER BY Active.eventtime DESC;

View File

@ -1,60 +0,0 @@
SELECT
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location,
-- Formatted OPC-style tag
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
-- First and last seen times for this alarm
MIN(Active.eventtime) AS FirstTimestamp,
MAX(Active.eventtime) AS LastTimestamp,
-- Total duration summed from each active-clear pair
CONCAT(
LPAD(FLOOR(SUM(Active.duration_seconds) / 3600), 2, '0'), ':',
LPAD(FLOOR((SUM(Active.duration_seconds) % 3600) / 60), 2, '0'), ':',
LPAD(SUM(Active.duration_seconds) % 60, 2, '0')
) AS Duration,
-- Total number of activations
COUNT(*) AS Count
FROM (
SELECT
ae.id,
ae.source,
ae.eventid,
ae.eventtime,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
FROM alarm_events ae
LEFT JOIN alarm_events ae_clear
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
WHERE ae.eventtype = 0
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
) AS Active
-- OPC tag path for building .hmi.Tag output
LEFT JOIN alarm_event_data aed
ON aed.id = Active.id AND aed.propname = 'myTag'
-- 🔹 Group by the full unique alarm key (tag + alarm name)
GROUP BY Active.source, Active.displaypath, aed.strValue
ORDER BY FirstTimestamp DESC;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff