Merge pull request 'MTN6-25' (#161) from beka-5 into main

Reviewed-on: #161
This commit is contained in:
gigi.mamaladze 2025-07-10 12:16:10 +00:00
commit 6edf75483a
7 changed files with 884 additions and 1719 deletions

View File

@ -15,7 +15,7 @@
}, },
"params": { "params": {
"tagProps": [ "tagProps": [
"MCMVALUE", "System/MCM04/MCM04",
"System/MCM04/Field_Devices/DPM/PRS3_5_DPM1", "System/MCM04/Field_Devices/DPM/PRS3_5_DPM1",
"System/MCM04/Field_Devices/DPM/PS11_7_DPM1", "System/MCM04/Field_Devices/DPM/PS11_7_DPM1",
"System/MCM04/Field_Devices/DPM/VSC_DPM3", "System/MCM04/Field_Devices/DPM/VSC_DPM3",
@ -43,7 +43,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -51,7 +51,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -76,7 +76,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -84,7 +84,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -109,7 +109,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -117,7 +117,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -142,7 +142,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -150,7 +150,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -175,7 +175,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -184,6 +184,10 @@
"mappings": [ "mappings": [
{ {
"input": 1, "input": 1,
"output": false
},
{
"input": 0,
"output": true "output": true
} }
], ],
@ -208,7 +212,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -216,7 +220,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -241,7 +245,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -249,7 +253,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -274,7 +278,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -282,7 +286,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -307,7 +311,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -315,7 +319,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -340,7 +344,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -348,7 +352,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -373,7 +377,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -381,7 +385,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],
@ -406,7 +410,7 @@
}, },
"transforms": [ "transforms": [
{ {
"expression": "coalesce({value},{view.params.forceFaultStatus},0)", "expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression" "type": "expression"
}, },
{ {
@ -414,7 +418,7 @@
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": 0,
"output": true "output": true
} }
], ],

View File

@ -15,7 +15,7 @@
}, },
"params": { "params": {
"tagProps": [ "tagProps": [
"MCM", "System/MCM01/MCM01",
"value", "value",
"value", "value",
"value", "value",
@ -2443,14 +2443,6 @@
} }
}, },
"props.style.backgroundColor": { "props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {this.props.text} \u003d \"MOTOR FAULT RESET PRESSED\",\r\n \"#FCFF86\",\r\n if(\r\n {this.props.text} \u003d \"MOTOR FAULT RESET\",\r\n \"#DCDC03\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": { "binding": {
"config": { "config": {
"fallbackDelay": 2.5, "fallbackDelay": 2.5,
@ -2459,7 +2451,7 @@
"0": "{view.params.tagProps[0]}", "0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}" "fc": "{session.custom.fc}"
}, },
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Motor_Fault_Reset_PB" "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Motor_Fault_Reset_PB_STATE"
}, },
"transforms": [ "transforms": [
{ {
@ -2467,20 +2459,8 @@
"type": "expression" "type": "expression"
}, },
{ {
"fallback": "MOTOR FAULT RESET", "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FCFF86\",\r\n if(\r\n {value},\r\n \"#DCDC03\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n",
"inputType": "scalar", "type": "expression"
"mappings": [
{
"input": 2,
"output": "MOTOR FAULT RESET PRESSED"
},
{
"input": 4,
"output": "MOTOR FAULT RESET PRESSED"
}
],
"outputType": "scalar",
"type": "map"
} }
], ],
"type": "tag" "type": "tag"
@ -2491,12 +2471,13 @@
"image": { "image": {
"icon": { "icon": {
"color": "#000000", "color": "#000000",
"path": "material/sync_problem" "path": "material/refresh"
} }
}, },
"style": { "style": {
"classes": "Background-Styles/Controller" "classes": "Background-Styles/Controller"
}, },
"text": "MOTOR FAULT RESET",
"textStyle": { "textStyle": {
"color": "#000000" "color": "#000000"
} }
@ -2549,14 +2530,6 @@
} }
}, },
"props.style.backgroundColor": { "props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {this.props.text} \u003d \"POWER BRANCH FAULT RESET PRESSED\",\r\n \"#FCFF86\",\r\n if(\r\n {this.props.text} \u003d \"POWER BRANCH FAULT RESET\",\r\n \"#DCDC03\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": { "binding": {
"config": { "config": {
"fallbackDelay": 2.5, "fallbackDelay": 2.5,
@ -2573,20 +2546,8 @@
"type": "expression" "type": "expression"
}, },
{ {
"fallback": "POWER BRANCH FAULT RESET", "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FCFF86\",\r\n if(\r\n {value},\r\n \"#DCDC03\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n",
"inputType": "scalar", "type": "expression"
"mappings": [
{
"input": 2,
"output": "POWER BRANCH FAULT RESET PRESSED"
},
{
"input": 4,
"output": "POWER BRANCH FAULT RESET PRESSED"
}
],
"outputType": "scalar",
"type": "map"
} }
], ],
"type": "tag" "type": "tag"
@ -2597,12 +2558,13 @@
"image": { "image": {
"icon": { "icon": {
"color": "#000000", "color": "#000000",
"path": "material/sync_problem" "path": "material/power"
} }
}, },
"style": { "style": {
"classes": "Background-Styles/Controller" "classes": "Background-Styles/Controller"
}, },
"text": "POWER BRANCH FAULT",
"textStyle": { "textStyle": {
"color": "#000000" "color": "#000000"
} }
@ -2655,14 +2617,6 @@
} }
}, },
"props.style.backgroundColor": { "props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#9090C2\",\r\n if(\r\n {this.props.text} \u003d \"LOW AIR PRESSURE RESET PRESSED\",\r\n \"#5D5DFF\",\r\n if(\r\n {this.props.text} \u003d \"LOW AIR PRESSURE RESET\",\r\n \"#0A0AA4\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": { "binding": {
"config": { "config": {
"fallbackDelay": 2.5, "fallbackDelay": 2.5,
@ -2671,7 +2625,7 @@
"0": "{view.params.tagProps[0]}", "0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}" "fc": "{session.custom.fc}"
}, },
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Low_Air_Pressure_Reset_PB" "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Low_Air_Pressure_Reset_PB_STATE"
}, },
"transforms": [ "transforms": [
{ {
@ -2679,20 +2633,8 @@
"type": "expression" "type": "expression"
}, },
{ {
"fallback": "LOW AIR PRESSURE RESET", "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#9090C2\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#5D5DFF\",\r\n if(\r\n {value},\r\n \"#0A0AA4\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n",
"inputType": "scalar", "type": "expression"
"mappings": [
{
"input": 2,
"output": "LOW AIR PRESSURE RESET PRESSED"
},
{
"input": 4,
"output": "LOW AIR PRESSURE RESET PRESSED"
}
],
"outputType": "scalar",
"type": "map"
} }
], ],
"type": "tag" "type": "tag"
@ -2702,12 +2644,13 @@
"props": { "props": {
"image": { "image": {
"icon": { "icon": {
"path": "material/sync_problem" "path": "material/waves"
} }
}, },
"style": { "style": {
"classes": "Background-Styles/Controller" "classes": "Background-Styles/Controller"
} },
"text": "LOW AIR PRESSURE RESET"
}, },
"type": "ia.input.button" "type": "ia.input.button"
} }
@ -2733,7 +2676,7 @@
"component": { "component": {
"onActionPerformed": { "onActionPerformed": {
"config": { "config": {
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\tsystem.perspective.print(tag_path)" "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
}, },
"scope": "G", "scope": "G",
"type": "script" "type": "script"
@ -2757,14 +2700,6 @@
} }
}, },
"props.style.backgroundColor": { "props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESTART PRESSED\",\r\n \"#FFFFFF\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESTART\",\r\n \"#D4D4D4\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": { "binding": {
"config": { "config": {
"fallbackDelay": 2.5, "fallbackDelay": 2.5,
@ -2781,16 +2716,8 @@
"type": "expression" "type": "expression"
}, },
{ {
"fallback": "JAM RESTART", "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FFFFFF\",\r\n if(\r\n {value},\r\n \"#D4D4D4\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)",
"inputType": "scalar", "type": "expression"
"mappings": [
{
"input": 1,
"output": "JAM RESTART PRESSED"
}
],
"outputType": "scalar",
"type": "map"
} }
], ],
"type": "tag" "type": "tag"
@ -2807,6 +2734,7 @@
"style": { "style": {
"classes": "Background-Styles/Controller" "classes": "Background-Styles/Controller"
}, },
"text": "JAM RESTART",
"textStyle": { "textStyle": {
"color": "#000000" "color": "#000000"
} }
@ -2859,14 +2787,6 @@
} }
}, },
"props.style.backgroundColor": { "props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {this.props.text} \u003d \"SETUP MOTOR SPEEDS PRESSED\",\r\n \"#FFFFFF\",\r\n if(\r\n {this.props.text} \u003d \"SETUP MOTOR SPEEDS\",\r\n \"#D4D4D4\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": { "binding": {
"config": { "config": {
"fallbackDelay": 2.5, "fallbackDelay": 2.5,
@ -2883,16 +2803,8 @@
"type": "expression" "type": "expression"
}, },
{ {
"fallback": "SETUP MOTOR SPEEDS", "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {value} \u003d 1,\r\n \"#FFFFFF\",\r\n \"#D4D4D4\"\r\n )\r\n)\r\n",
"inputType": "scalar", "type": "expression"
"mappings": [
{
"input": 1,
"output": "SETUP MOTOR SPEEDS PRESSED"
}
],
"outputType": "scalar",
"type": "map"
} }
], ],
"type": "tag" "type": "tag"
@ -2900,9 +2812,16 @@
} }
}, },
"props": { "props": {
"image": {
"icon": {
"color": "#000000",
"path": "material/speed"
}
},
"style": { "style": {
"classes": "Background-Styles/Controller" "classes": "Background-Styles/Controller"
}, },
"text": "SETUP MOTOR SPEEDS",
"textStyle": { "textStyle": {
"color": "#000000" "color": "#000000"
} }
@ -2967,6 +2886,7 @@
"grow": 1 "grow": 1
}, },
"props": { "props": {
"currentTabIndex": 2,
"menuType": "modern", "menuType": "modern",
"tabSize": { "tabSize": {
"width": 1000 "width": 1000

View File

@ -3,7 +3,7 @@
"params": { "params": {
"value": { "value": {
"tagProps": [ "tagProps": [
"", "MCM01",
"value", "value",
"value", "value",
"value", "value",
@ -25,7 +25,7 @@
"props": { "props": {
"defaultSize": { "defaultSize": {
"height": 50, "height": 50,
"width": 300 "width": 396
} }
}, },
"root": { "root": {
@ -35,7 +35,7 @@
"component": { "component": {
"onActionPerformed": { "onActionPerformed": {
"config": { "config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 1\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":1,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)" "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\t"
}, },
"scope": "G", "scope": "G",
"type": "script" "type": "script"
@ -56,7 +56,7 @@
"meta.tooltip.text": { "meta.tooltip.text": {
"binding": { "binding": {
"config": { "config": {
"expression": "if({this.props.enabled},\u0027Start \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\")" "expression": "if({this.props.enabled},\u0027Start \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
}, },
"type": "expr" "type": "expr"
} }
@ -64,7 +64,7 @@
"props.enabled": { "props.enabled": {
"binding": { "binding": {
"config": { "config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}" "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
}, },
"type": "expr" "type": "expr"
} }
@ -72,11 +72,47 @@
"props.image.icon.color": { "props.image.icon.color": {
"binding": { "binding": {
"config": { "config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)" "expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
}, },
"type": "expr" "type": "expr"
} }
}, },
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Start_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#00A700",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#41E841"
},
{
"input": 4,
"output": "#41E841"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": { "props.style.borderStyle": {
"binding": { "binding": {
"config": { "config": {
@ -96,7 +132,6 @@
"width": 32 "width": 32
}, },
"style": { "style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A", "borderColor": "#4A4A4A",
"borderWidth": 2, "borderWidth": 2,
"classes": "\n", "classes": "\n",
@ -107,6 +142,7 @@
}, },
"text": "", "text": "",
"textStyle": { "textStyle": {
"color": "#000000",
"fontSize": 12, "fontSize": 12,
"fontWeight": "bold", "fontWeight": "bold",
"textAlign": "center" "textAlign": "center"
@ -119,164 +155,7 @@
"component": { "component": {
"onActionPerformed": { "onActionPerformed": {
"config": { "config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 3\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":3,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)" "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Reset \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\") "
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/refresh"
},
"position": "top",
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"meta": {
"name": "JAM_Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Jam Reset \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/sync_problem"
},
"position": "top",
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 2\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":2,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)"
}, },
"scope": "G", "scope": "G",
"type": "script" "type": "script"
@ -297,7 +176,7 @@
"meta.tooltip.text": { "meta.tooltip.text": {
"binding": { "binding": {
"config": { "config": {
"expression": "if({this.props.enabled},\u0027Stop \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\") " "expression": "if({this.props.enabled},\u0027Stop \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
}, },
"type": "expr" "type": "expr"
} }
@ -305,7 +184,7 @@
"props.enabled": { "props.enabled": {
"binding": { "binding": {
"config": { "config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}" "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
}, },
"type": "expr" "type": "expr"
} }
@ -313,11 +192,43 @@
"props.image.icon.color": { "props.image.icon.color": {
"binding": { "binding": {
"config": { "config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)" "expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
}, },
"type": "expr" "type": "expr"
} }
}, },
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Stop_PB"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#CA0D0D",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FF0000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": { "props.style.borderStyle": {
"binding": { "binding": {
"config": { "config": {
@ -337,7 +248,597 @@
"width": 32 "width": 32
}, },
"style": { "style": {
"backgroundColor": "#D4D4D4", "borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "MotorFaultReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Motor Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Motor_Fault_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#DCDC03",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#FCFF86"
},
{
"input": 4,
"output": "#FCFF86"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/refresh"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "PowerBranchFaultReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Power Branch Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Power_Branch_Fault_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#DCDC03",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#FCFF86"
},
{
"input": 4,
"output": "#FCFF86"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/power"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "LowAirPressureReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Low Air Pressure Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Low_Air_Pressure_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#0A0AA4",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#5D5DFF"
},
{
"input": 4,
"output": "#5D5DFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/waves"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "JAM_Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Jam Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Jam_Restart_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#D4D4D4",
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": "#FFFFFF"
},
{
"input": 2,
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/sync_problem"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "SetupMotorSpeeds",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Setup Motor Speeds \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Setup_Motor_Speeds"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#D4D4D4",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/speed"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A", "borderColor": "#4A4A4A",
"borderWidth": 2, "borderWidth": 2,
"classes": "\n", "classes": "\n",

View File

@ -3,34 +3,32 @@
"counts": { "counts": {
"Critical": 0, "Critical": 0,
"Diagnostic": 0, "Diagnostic": 0,
"High": 0, "High": 1,
"Low": 0, "Low": 1,
"Medium": 0, "Medium": 0,
"Total": 0 "Total": 2
}, },
"totalAlarms": { "totalAlarms": {
"$": [ "$": [
"ds", "ds",
192, 192,
1751448128142 1752066852881
], ],
"$columns": [ "$columns": [
{ {
"data": [ "data": [
null,
"MCM01", "MCM01",
"MCM01", "MCM01"
"MCM01",
"MCM02"
], ],
"name": "Location", "name": "Location",
"type": "String" "type": "String"
}, },
{ {
"data": [ "data": [
"Diagnostic", "Low",
"High", "High",
"Medium", "Low"
"Diagnostic"
], ],
"name": "Priority", "name": "Priority",
"type": "String" "type": "String"
@ -38,7 +36,6 @@
{ {
"data": [ "data": [
1, 1,
2,
1, 1,
1 1
], ],
@ -51,7 +48,7 @@
"params": { "params": {
"value": { "value": {
"tagProps": [ "tagProps": [
"", "MCM01",
"value", "value",
"value", "value",
"value", "value",
@ -66,35 +63,34 @@
}, },
"propConfig": { "propConfig": {
"custom.counts": { "custom.counts": {
"binding": {
"config": {
"struct": {
"PLC": "{view.params.value.tagProps[0]}"
},
"waitOnAll": true
},
"transforms": [
{
"code": " MCM \u003d value.PLC\n queryData \u003d self.custom.totalAlarms\n\n # Initialize counts\n counts \u003d {\n \"Critical\": 0,\n \"High\": 0,\n \"Medium\": 0,\n \"Low\": 0,\n \"Diagnostic\": 0,\n \"Total\": 0\n }\n\n # Loop through dataset and aggregate\n for row in range(queryData.rowCount):\n mcm_val \u003d queryData.getValueAt(row, 0)\n severity \u003d queryData.getValueAt(row, 1)\n count \u003d queryData.getValueAt(row, 2)\n\n if mcm_val \u003d\u003d MCM:\n \n key \u003d severity.capitalize()\n if key in counts:\n counts[key] +\u003d count\n counts[\"Total\"] +\u003d count\n\n return counts",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true "persistent": true
}, },
"custom.totalAlarms": { "custom.totalAlarms": {
"binding": { "binding": {
"config": { "config": {
"polling": {
"enabled": true,
"rate": "3"
},
"queryPath": "GetActiveAlarmsByLocationAndPriority" "queryPath": "GetActiveAlarmsByLocationAndPriority"
}, },
"type": "query" "type": "query"
}, },
"onChange": {
"enabled": null,
"script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\t# Initialize counts\n\tcounts \u003d {\n\t \"Critical\": 0,\n\t \"High\": 0,\n\t \"Medium\": 0,\n\t \"Low\": 0,\n\t \"Diagnostic\": 0,\n\t \"Total\": 0\n\t}\n\t\n\t# Loop through dataset and aggregate\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1)\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM:\n\t key \u003d severity.capitalize()\n\t if key in counts:\n\t counts[key] +\u003d count\n\t counts[\"Total\"] +\u003d count\n\t \n\tself.custom.counts \u003d counts"
},
"persistent": true "persistent": true
}, },
"params.value": { "params.value": {
"paramDirection": "input", "paramDirection": "input",
"persistent": true "persistent": true
},
"params.value.tagProps": {
"onChange": {
"enabled": null,
"script": "\tsystem.perspective.print(currentValue.value[0])"
}
} }
}, },
"props": { "props": {

View File

@ -1,9 +1,41 @@
{ {
"custom": {}, "custom": {
"state": {
"$": [
"ds",
192,
1751989861336
],
"$columns": [
{
"data": [
null
],
"name": "Location",
"type": "String"
},
{
"data": [
"Low"
],
"name": "Priority",
"type": "String"
},
{
"data": [
1
],
"name": "Count",
"type": "Long"
}
]
},
"status": ""
},
"params": { "params": {
"value": { "value": {
"tagProps": [ "tagProps": [
"", "value",
"value", "value",
"value", "value",
"value", "value",
@ -17,6 +49,27 @@
} }
}, },
"propConfig": { "propConfig": {
"custom.state": {
"binding": {
"config": {
"polling": {
"enabled": true,
"rate": "1"
},
"queryPath": "GetActiveAlarmsByLocationAndPriority"
},
"type": "query"
},
"onChange": {
"enabled": null,
"script": "\tMCM \u003d self.params.value.tagProps[0]\n\t\n\tqueryData \u003d currentValue.value\n\t\n\tif not queryData:\n\t\tself.custom.status \u003d \"Healty\"\n\t\n\t# Define priority order from highest to lowest\n\tpriority_order \u003d [\"Critical\", \"High\", \"Medium\", \"Low\", \"Diagnostic\"]\n\t\n\t# Set to store which priorities exist for the given MCM\n\texisting_priorities \u003d set()\n\t\n\tmyPriority \u003d \"\"\n\t\n\t# Populate the set\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1).capitalize()\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM and count \u003e 0:\n\t existing_priorities.add(severity)\n\t\n\t# Find the highest one that exists\n\tfor priority in priority_order:\n\t if priority in existing_priorities:\n\t myPriority \u003d priority\n\t\n\tself.custom.status \u003d myPriority"
"script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\tif not queryData:\n\t self.custom.status \u003d \"\"\n\t\n\t# Define priority order from highest to lowest\n\tpriority_order \u003d [\"Critical\", \"High\", \"Medium\", \"Low\", \"Diagnostic\"]\n\texisting_priorities \u003d set()\n\tmyPriority \u003d \"\"\n\t\n\t# Populate the set\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1).capitalize()\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM and count \u003e 0:\n\t existing_priorities.add(severity)\n\t\n\t# Find the highest one that exists\n\tfor priority in priority_order:\n\t if priority in existing_priorities:\n\t myPriority \u003d priority\n\t break\n\t\n\tself.custom.status \u003d myPriority"
},
"persistent": true
},
"custom.status": {
"persistent": true
},
"params.value": { "params.value": {
"paramDirection": "input", "paramDirection": "input",
"persistent": true "persistent": true
@ -49,59 +102,35 @@
"grow": 1 "grow": 1
}, },
"propConfig": { "propConfig": {
"custom.status": {
"binding": {
"config": {
"path": "/root.custom.status"
},
"type": "property"
}
},
"props.style.classes": { "props.style.classes": {
"binding": { "binding": {
"config": { "config": {
"path": "this.custom.status" "path": "view.custom.status"
}, },
"transforms": [ "transforms": [
{ {
"fallback": "State-Styles/State0", "fallback": "State-Styles/Background-Fill/State5",
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 1, "input": "High",
"output": "State-Styles/Background-Fill/State1" "output": "State-Styles/Background-Fill/State1"
}, },
{ {
"input": 2, "input": "Medium",
"output": "State-Styles/Background-Fill/State2" "output": "State-Styles/Background-Fill/State2"
}, },
{ {
"input": 3, "input": "Low",
"output": "State-Styles/Background-Fill/State3" "output": "State-Styles/Background-Fill/State3"
}, },
{ {
"input": 4, "input": "Diagnostic",
"output": "State-Styles/Background-Fill/State4" "output": "State-Styles/Background-Fill/State4"
},
{
"input": 5,
"output": "State-Styles/Background-Fill/State5"
},
{
"input": 6,
"output": "State-Styles/Background-Fill/State6"
},
{
"input": 0,
"output": "State-Styles/State0"
} }
], ],
"outputType": "style-list", "outputType": "style-list",
"type": "map" "type": "map"
},
{
"expression": "if({session.custom.colours.colour_impaired},{value}+\u0027_Alt\u0027,{value})",
"type": "expression"
} }
], ],
"type": "property" "type": "property"
@ -110,36 +139,28 @@
"props.text": { "props.text": {
"binding": { "binding": {
"config": { "config": {
"path": "this.custom.status" "path": "view.custom.status"
}, },
"transforms": [ "transforms": [
{ {
"fallback": null, "fallback": "HEALTHY",
"inputType": "scalar", "inputType": "scalar",
"mappings": [ "mappings": [
{ {
"input": 5, "input": "Diagnostic",
"output": "HEALTHY"
},
{
"input": 4,
"output": "DIAGNOSTIC" "output": "DIAGNOSTIC"
}, },
{ {
"input": 3, "input": "Low",
"output": "PROCESS DEGRADED" "output": "HALF WORKFLOW"
}, },
{ {
"input": 2, "input": "Medium",
"output": "STOPPED" "output": "CONTROLLED STOP"
}, },
{ {
"input": 1, "input": "High",
"output": "FAULTED" "output": "UNCONTROLLED STOP"
},
{
"input": 6,
"output": null
} }
], ],
"outputType": "scalar", "outputType": "scalar",
@ -169,78 +190,6 @@
"meta": { "meta": {
"name": "root" "name": "root"
}, },
"propConfig": {
"custom.has_role": {
"binding": {
"config": {
"expression": "{session.custom.fc}"
},
"transforms": [
{
"code": "\trme_role \u003d value +\"-rme-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False",
"type": "script"
}
],
"type": "expr"
}
},
"custom.status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
},
"transforms": [
{
"expression": "if(isNull({value}), 0, {value})",
"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"
}
},
"custom.tag_path_to_lookup": {
"binding": {
"config": {
"expression": " \"[\\\"\" + {view.params.value.tagProps[0]} + \"\\\"]\""
},
"type": "expr"
}
}
},
"props": { "props": {
"direction": "column" "direction": "column"
}, },

View File

@ -208,146 +208,43 @@
"type": "ia.display.label" "type": "ia.display.label"
}, },
{ {
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tself.session.custom.covert\u003d False\n\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])"
},
"enabled": false,
"scope": "G",
"type": "script"
}
}
},
"meta": { "meta": {
"name": "Label" "name": "EmbeddedView"
}, },
"position": { "position": {
"basis": "236px" "basis": "200px"
}, },
"propConfig": { "propConfig": {
"custom.status": { "props.params.value.tagProps[0]": {
"binding": { "binding": {
"config": { "config": {
"path": "/root.custom.status" "expression": "{view.params.tagProps[0]}"
}, },
"type": "property" "type": "expr"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "this.custom.status"
},
"transforms": [
{
"fallback": "State-Styles/State0",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "State-Styles/Background-Fill/State1"
},
{
"input": 2,
"output": "State-Styles/Background-Fill/State2"
},
{
"input": 3,
"output": "State-Styles/Background-Fill/State3"
},
{
"input": 4,
"output": "State-Styles/Background-Fill/State4"
},
{
"input": 5,
"output": "State-Styles/Background-Fill/State5"
},
{
"input": 6,
"output": "State-Styles/Background-Fill/State6"
},
{
"input": 0,
"output": "State-Styles/State0"
}
],
"outputType": "style-list",
"type": "map"
},
{
"expression": "if({session.custom.colours.colour_impaired},{value}+\u0027_Alt\u0027,{value})",
"type": "expression"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"path": "this.custom.status"
},
"transforms": [
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 5,
"output": "HEALTHY"
},
{
"input": 4,
"output": "DIAGNOSTIC"
},
{
"input": 3,
"output": "PROCESS DEGRADED"
},
{
"input": 2,
"output": "STOPPED"
},
{
"input": 1,
"output": "FAULTED"
},
{
"input": 6,
"output": null
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
} }
} }
}, },
"props": { "props": {
"style": { "params": {
"borderBottomLeftRadius": 5, "key": "value",
"borderBottomRightRadius": 5, "value": {
"borderColor": "#555555", "tagProps": [
"borderStyle": "solid", null,
"borderTopLeftRadius": 5, "value",
"borderTopRightRadius": 5, "value",
"borderWidth": 2, "value",
"marginBottom": 10, "value",
"marginLeft": 50, "value",
"marginRight": 10, "value",
"marginTop": 10 "value",
}, "value",
"textStyle": { "value"
"fontSize": 12, ]
"textAlign": "center"
} }
}, },
"type": "ia.display.label" "path": "Symbol-Views/Controller-Views/CommandControlStatus"
},
"type": "ia.display.view"
} }
], ],
"meta": { "meta": {
@ -357,6 +254,7 @@
"basis": "80px" "basis": "80px"
}, },
"props": { "props": {
"justify": "space-around",
"style": { "style": {
"borderBottomColor": "#555555", "borderBottomColor": "#555555",
"borderBottomStyle": "solid", "borderBottomStyle": "solid",
@ -530,7 +428,7 @@
"basis": "32px" "basis": "32px"
}, },
"props": { "props": {
"text": 2, "text": 0,
"textStyle": { "textStyle": {
"fontSize": 10, "fontSize": 10,
"textAlign": "center" "textAlign": "center"
@ -588,7 +486,7 @@
"basis": "32px" "basis": "32px"
}, },
"props": { "props": {
"text": 3, "text": 0,
"textStyle": { "textStyle": {
"fontSize": 10, "fontSize": 10,
"textAlign": "center" "textAlign": "center"
@ -617,7 +515,7 @@
"basis": "32px" "basis": "32px"
}, },
"props": { "props": {
"text": 1, "text": 0,
"textStyle": { "textStyle": {
"fontSize": 10, "fontSize": 10,
"textAlign": "center" "textAlign": "center"
@ -646,7 +544,7 @@
"basis": "32px" "basis": "32px"
}, },
"props": { "props": {
"text": 6, "text": 0,
"textStyle": { "textStyle": {
"fontSize": 10, "fontSize": 10,
"textAlign": "center" "textAlign": "center"
@ -711,9 +609,9 @@
"custom": { "custom": {
"counts": { "counts": {
"Critical": 0, "Critical": 0,
"Diagnostic": 1, "Diagnostic": 0,
"High": 2, "High": 0,
"Low": 3, "Low": 0,
"Medium": 0 "Medium": 0
} }
}, },