447 lines
13 KiB
Plaintext
447 lines
13 KiB
Plaintext
{
|
|
"custom": {},
|
|
"params": {
|
|
"tagProps": [
|
|
"",
|
|
"",
|
|
"PLC",
|
|
"value",
|
|
"value",
|
|
"value",
|
|
"value",
|
|
"value",
|
|
"value",
|
|
"value"
|
|
]
|
|
},
|
|
"propConfig": {
|
|
"params.tagProps": {
|
|
"paramDirection": "input",
|
|
"persistent": true
|
|
}
|
|
},
|
|
"props": {
|
|
"defaultSize": {
|
|
"height": 148,
|
|
"width": 362
|
|
}
|
|
},
|
|
"root": {
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Spacer1"
|
|
},
|
|
"position": {
|
|
"basis": "20px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "NameField"
|
|
},
|
|
"position": {
|
|
"basis": "50px"
|
|
},
|
|
"props": {
|
|
"text": "NAME"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Spacer"
|
|
},
|
|
"position": {
|
|
"basis": "100px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "DeviceName"
|
|
},
|
|
"position": {
|
|
"basis": "205px"
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"path": "/root.custom.name"
|
|
},
|
|
"type": "property"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "Text-Styles/Ariel-Bold-12pt"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "Name"
|
|
},
|
|
"position": {
|
|
"basis": "35px"
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "PopUp-Styles/InfoLabel"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Spacer1"
|
|
},
|
|
"position": {
|
|
"basis": "20px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "NameField"
|
|
},
|
|
"position": {
|
|
"basis": "50px"
|
|
},
|
|
"props": {
|
|
"text": "PRIORITY"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Spacer"
|
|
},
|
|
"position": {
|
|
"basis": "100px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Priority"
|
|
},
|
|
"position": {
|
|
"basis": "205px"
|
|
},
|
|
"propConfig": {
|
|
"props.style.classes": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "{/root.custom.priority}"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "Alarms-Styles/NoAlarm",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": 4,
|
|
"output": "Alarms-Styles/Critical"
|
|
},
|
|
{
|
|
"input": 3,
|
|
"output": "Alarms-Styles/High"
|
|
},
|
|
{
|
|
"input": 2,
|
|
"output": "Alarms-Styles/Medium"
|
|
},
|
|
{
|
|
"input": 1,
|
|
"output": "Alarms-Styles/Low"
|
|
},
|
|
{
|
|
"input": 0,
|
|
"output": "Alarms-Styles/Diagnostic"
|
|
}
|
|
],
|
|
"outputType": "style-list",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "expr"
|
|
}
|
|
},
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"path": "/root.custom.priority"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": 4,
|
|
"output": "Critical"
|
|
},
|
|
{
|
|
"input": 3,
|
|
"output": "High"
|
|
},
|
|
{
|
|
"input": 2,
|
|
"output": "Medium"
|
|
},
|
|
{
|
|
"input": 1,
|
|
"output": "Low"
|
|
},
|
|
{
|
|
"input": 0,
|
|
"output": "Warning"
|
|
},
|
|
{
|
|
"input": 5,
|
|
"output": "No active alarms"
|
|
}
|
|
],
|
|
"outputType": "scalar",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "property"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "Priority"
|
|
},
|
|
"position": {
|
|
"basis": "35px"
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "PopUp-Styles/InfoLabel"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Spacer1"
|
|
},
|
|
"position": {
|
|
"basis": "20px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "NameField"
|
|
},
|
|
"position": {
|
|
"basis": "50px"
|
|
},
|
|
"props": {
|
|
"text": "TIMESTAMP"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Spacer"
|
|
},
|
|
"position": {
|
|
"basis": "100px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "DeviceName"
|
|
},
|
|
"position": {
|
|
"basis": "205px"
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"path": "/root.custom.timestamp"
|
|
},
|
|
"type": "property"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "Text-Styles/Ariel-Bold-12pt"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "EventTime"
|
|
},
|
|
"position": {
|
|
"basis": "35px"
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "PopUp-Styles/InfoLabel"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Spacer1"
|
|
},
|
|
"position": {
|
|
"basis": "20px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "NameField"
|
|
},
|
|
"position": {
|
|
"basis": "50px"
|
|
},
|
|
"props": {
|
|
"text": "DURATION"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Spacer"
|
|
},
|
|
"position": {
|
|
"basis": "91px"
|
|
},
|
|
"type": "ia.display.label"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "Spacer_0"
|
|
},
|
|
"position": {
|
|
"basis": "199px"
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"path": "/root.custom.duration"
|
|
},
|
|
"type": "property"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "Text-Styles/Ariel-Bold-12pt"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "EventTime_0"
|
|
},
|
|
"position": {
|
|
"basis": "40px"
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"classes": "PopUp-Styles/InfoLabel"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"custom": {
|
|
"delay": 2000,
|
|
"duration": "",
|
|
"enable": true,
|
|
"name": "",
|
|
"priority": "",
|
|
"timestamp": ""
|
|
},
|
|
"meta": {
|
|
"name": "root"
|
|
},
|
|
"propConfig": {
|
|
"custom.active_bit": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "indirect",
|
|
"references": {
|
|
"0": "{view.params.tagProps[0]}",
|
|
"1": "{view.params.tagProps[1]}"
|
|
},
|
|
"tagPath": "{0}/Alarms/{1}.IsActive"
|
|
},
|
|
"type": "tag"
|
|
}
|
|
},
|
|
"custom.shelved_bit": {
|
|
"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.update": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "now({this.custom.delay})"
|
|
},
|
|
"type": "expr"
|
|
},
|
|
"onChange": {
|
|
"enabled": null,
|
|
"script": "\tif self.custom.enable:\n\t\t\n\t\timport time\n\t\t\n\t\tdef convert(millis):\n\t\t\tmillis \u003d int(millis)\n\t\t\tseconds\u003d(millis/1000)%60\n\t\t\tseconds \u003d int(seconds)\n\t\t\tminutes\u003d(millis/(1000*60))%60\n\t\t\tminutes \u003d int(minutes)\n\t\t\thours\u003d(millis/(1000*60*60))\n\t\t\treturn(\"%d:%d:%d\" % (hours, minutes, seconds))\n\t\t\n\t\tdef update_custom_properties(name, timestamp, duration, priority):\n\t\t\tself.custom.name \u003d name\n\t\t\tself.custom.timestamp \u003d timestamp\n\t\t\tself.custom.duration \u003d duration\n\t\t\tself.custom.priority \u003d priority\n\t\t\n\t\tdef get_alarms():\n\t\t\talarm_dict \u003d system.tag.readBlocking(\"System/ActiveAlarms\")\n\t\t\talarms_decoded \u003d system.util.jsonDecode(alarm_dict[0].value)\n\t\t\treturn alarms_decoded\n\t\t\t\n\t\tdef get_tag_config():\n\t\t\tname \u003d\"\"\n\t\t\tpath \u003d self.view.params.tagProps[0]\n\t\t\tif system.tag.exists(path) and path !\u003d \"\":\n\t\t\t\ttag_config \u003d system.tag.getConfiguration(path)[0]\n\t\t\t\talarms \u003d tag_config.get(\"alarms\")\n\t\t\t\tfor alarm in alarms:\n\t\t\t\t\tif alarm.get(\"name\") \u003d\u003d self.view.params.tagProps[1]:\n\t\t\t\t\t\tname \u003d alarm.get(\"AdditionalInfo\")\n\t\t\t\t\t\tbreak\n\t\t\t\ttimestamp \u003d \"N/A\"\n\t\t\t\tduration \u003d \"N/A\"\n\t\t\t\tpriority \u003d 5\n\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\t\n\t\tdef get_active_alarm():\n\t\t\ttagPath \u003d self.view.params.tagProps[0]\n\t\t\tprops_alarm_name \u003d str(self.view.params.tagProps[1])\n\t\t\ttag_display_path \u003d tagPath + \"/\" + props_alarm_name\n\t\t\talarms \u003d get_alarms()\n\t\t\tfor i in alarms:\n\t\t\t\tdisplaypath \u003d alarms[i].get(\"DisplayPath\")\n\t\t\t\talarm_name \u003d alarms[i].get(\"Name\")\n\t\t\t\tsystem.perspective.print(displaypath)\n\t\t\t\tif tag_display_path \u003d\u003d displaypath:\n\t\t\t\t\tname \u003d alarms[i].get(\"AddInfo\")\n\t\t\t\t\ttimestamp \u003d alarms[i].get(\"TimeStamp\")\n\t\t\t\t\tduration \u003d alarms[i].get(\"Duration\")\n\t\t\t\t\tduration \u003d convert(duration)\n\t\t\t\t\tpriority \u003d alarms[i].get(\"Priority\")\n\t\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\tbreak\n\t\t\t\t\t\n\t\tif self.custom.active_bit and not self.custom.shelved_bit:\n\t\t\tget_active_alarm()\n\t\t\t\n\t\telse:\n\t\t\talarms \u003d get_tag_config()"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderRadius": "10x",
|
|
"borderStyle": "solid",
|
|
"classes": "PopUp-Styles/Information-Device"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
} |