alot of changes. moved our zones into their own projcet. updated all the views and sciprts. modified all the tags and right now we are reading the info a bit diffirently
@ -0,0 +1,827 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/DPM/NCS1_1_DPM2",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM_6",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM_7",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM_8",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM_9",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH115_FIOM_1",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH116_FIOM_1",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH121_FIOM_1",
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH122_FIOM_1",
|
||||
"System/MCM02/IO_BLOCK/SIO/NCS1_1_SIO1"
|
||||
]
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 1080,
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.DPMNotFaulted": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[0]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[1]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[1]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[2]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[2]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[3]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[3]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[4]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[4]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[5]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[5]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[6]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[6]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[7]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[7]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[8]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[8]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[9]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"con_lines": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/DPM/NCS1_1_DPM2",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/DPM_TO_HUB"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM_label"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0694,
|
||||
"width": 0.101,
|
||||
"x": 0.7498,
|
||||
"y": 0.6527
|
||||
},
|
||||
"props": {
|
||||
"text": "NCS1_1_DPM2",
|
||||
"textStyle": {
|
||||
"fontSize": "2vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_1_FIOM6"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.0263,
|
||||
"y": 0.0073
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.54",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM6",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_1_FIOM7"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.0689,
|
||||
"y": 0.0073
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.55",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM7",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_1_FIOM8"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.1116,
|
||||
"y": 0.0084
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.56",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM8",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_1_FIOM9"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.1544,
|
||||
"y": 0.0074
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.57",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_1_FIOM9",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_CH115_FIOM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.1959,
|
||||
"y": 0.0065
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.58",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH115_FIOM1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_CH116_FIOM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"rotate": {
|
||||
"anchor": "-607% 50%"
|
||||
},
|
||||
"width": 0.0349,
|
||||
"x": 0.235,
|
||||
"y": 0.0082
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.59",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH116_FIOM1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_CH121_FIOM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.2764,
|
||||
"y": 0.0092
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.60",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH121_FIOM1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "S03_CH122_FIOM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.3164,
|
||||
"y": 0.0082
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.61",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/FIO/S03_CH122_FIOM1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "NCS1_1_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.3565,
|
||||
"y": 0.0082
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.62",
|
||||
"tagProps": [
|
||||
"System/MCM02/IO_BLOCK/SIO/NCS1_1_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "Communication_Faulted_Text"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.4836,
|
||||
"width": 0.8826,
|
||||
"x": 0.0701,
|
||||
"y": -0.0785
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#1A1A1A",
|
||||
"overflow": "hidden",
|
||||
"whiteSpace": "normal",
|
||||
"wordBreak": "break-all"
|
||||
},
|
||||
"text": "Communication Faulted",
|
||||
"textStyle": {
|
||||
"fontFamily": "inherit",
|
||||
"fontSize": "1.5vmin",
|
||||
"textAlign": "start"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Communication_Not_Faulted_Text"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.6066,
|
||||
"width": 0.9032,
|
||||
"x": 0.0698,
|
||||
"y": 0.247
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#1A1A1A",
|
||||
"overflow": "hidden",
|
||||
"whiteSpace": "normal",
|
||||
"wordBreak": "break-all"
|
||||
},
|
||||
"text": "Communication Not Faulted",
|
||||
"textStyle": {
|
||||
"fontFamily": "inherit",
|
||||
"fontSize": "1.5vmin",
|
||||
"textAlign": "start"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0242,
|
||||
"width": 0.0508,
|
||||
"x": 0.0122,
|
||||
"y": 0.176
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#FF0000"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer_1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0242,
|
||||
"width": 0.0508,
|
||||
"x": 0.0122,
|
||||
"y": 0.5164
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#00FF00"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "CoordinateContainer"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1365,
|
||||
"width": 0.9083,
|
||||
"x": 0.0083,
|
||||
"y": 0.7752
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM_label_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0694,
|
||||
"width": 0.101,
|
||||
"x": 0.7498,
|
||||
"y": 0.7085
|
||||
},
|
||||
"props": {
|
||||
"text": "11.200.1.3",
|
||||
"textStyle": {
|
||||
"fontSize": "2vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"position": {
|
||||
"x": 0.6348,
|
||||
"y": -0.1546
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"marginBottom": "2px"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "#AAAAAA",
|
||||
"borderColor": "#808080",
|
||||
"borderStyle": "none",
|
||||
"color": "#555555",
|
||||
"margin": "5px",
|
||||
"fill": "#2B2B2B"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
SELECT DISTINCT destination_act AS lane
|
||||
FROM package_history
|
||||
WHERE destination_act IS NOT NULL
|
||||
UNION
|
||||
SELECT DISTINCT lane_id AS lane
|
||||
FROM pe_history
|
||||
WHERE lane_id LIKE "CH%" OR lane_id LIKE "RS%1CH"
|
||||
ORDER BY lane ASC;
|
||||
@ -0,0 +1,290 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"meta": {
|
||||
"name": "VFD"
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": true,
|
||||
"isClickable": false
|
||||
},
|
||||
"status": {
|
||||
"color": {
|
||||
"left": "#B3B3B3",
|
||||
"right": "#D3D3D3"
|
||||
},
|
||||
"showAlways": true,
|
||||
"tagPath": "[default]MCP03/RO02/RO02_03/VFD",
|
||||
"tooltip": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"params.meta": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.meta.name": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 105,
|
||||
"width": 500
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "VFD"
|
||||
},
|
||||
"position": {
|
||||
"height": 64,
|
||||
"width": 64,
|
||||
"x": 67.5,
|
||||
"y": 2.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": false,
|
||||
"isClickable": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.vfd"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_15"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 40
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Status:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 40
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\treturn utils.extractStatus(value)",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_1"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 5
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Name: "
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbName"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \u0027\u0027)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_12"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 75
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Panel:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 75
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.OPC_Server"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \"Unknown\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background-color": "#CFCFCF"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--neutral-60)",
|
||||
"borderTopLeftRadius": "4px",
|
||||
"borderTopRightRadius": "4px",
|
||||
"borderBottomLeftRadius": "4px",
|
||||
"borderBottomRightRadius": "4px",
|
||||
"color": "var(--neutral-10)",
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"lineHeight": "16px",
|
||||
"padding": "2px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,10 @@
|
||||
SELECT concat(date(alltable.t_stamp), ' ', hour(alltable.t_stamp), ':00') as StartTimestamp,
|
||||
concat('H',TIMESTAMPDIFF(HOUR,DATE_FORMAT(alltable.t_stamp,"%Y-%m-%d %H:00:00"),DATE_FORMAT(now(),"%Y-%m-%d %H:00:00"))) as Hour,
|
||||
concat(round(COUNT(*)/COUNT(*) * 100,2),'%') AS Inducted,
|
||||
concat(round(SUM(alltable.ACTUAL_DEST <> 'S03999')/COUNT(*) * 100,2),'%') AS Sorted,
|
||||
concat(round(SUM((alltable.ACTUAL_DEST = 'S03999') AND (alltable.DivertStatus = 7 OR alltable.DivertStatus = 8 OR alltable.DivertStatus = 9 OR alltable.DivertStatus = 10 OR alltable.DivertStatus = 12 OR alltable.DivertStatus = 16))/COUNT(*) * 100,2),'%') AS AwcsRecirc,
|
||||
concat(round(SUM((alltable.ACTUAL_DEST = 'S03999') AND (alltable.DivertStatus = 2 OR alltable.DivertStatus = 5 OR alltable.DivertStatus = 18 OR alltable.DivertStatus = 19 or alltable.DivertStatus = 20))/COUNT(*) * 100,2),'%') AS OperationalRecirc,
|
||||
concat(round(SUM((alltable.ACTUAL_DEST = 'S03999') AND (alltable.DivertStatus = 1 OR alltable.DivertStatus = 3 OR alltable.DivertStatus = 4 OR alltable.DivertStatus = 6 OR alltable.DivertStatus = 13 OR alltable.DivertStatus = 14 OR alltable.DivertStatus = 17 OR alltable.DivertStatus = 21))/COUNT(*) * 100,2),'%') AS MachineRecirc
|
||||
FROM alltable
|
||||
Where (alltable.t_stamp BETWEEN :starttime AND :endtime)
|
||||
GROUP BY hour(alltable.t_stamp)
|
||||
@ -0,0 +1,682 @@
|
||||
{
|
||||
"custom": {
|
||||
"color": "#C2C2C2",
|
||||
"divertingLeft": false,
|
||||
"divertingRight": false,
|
||||
"priority": "No Active Alarms",
|
||||
"state": "Offline"
|
||||
},
|
||||
"params": {
|
||||
"demoColor": 0,
|
||||
"demoState": -1,
|
||||
"tagProps": [
|
||||
"System/MCM02/SOL/NCS1_1_SOL48",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(\r\n {view.params.demoColor} \u003e\u003d 0,\r\n {view.params.demoColor},\r\n coalesce({value}, -1)\r\n)\r\n",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#000000",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "#C2C2C2"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "#FF0000"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "#FFA500"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "#0008FF"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "#00FF00"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "#FFF700"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "#87CEEB"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "#90EE90"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "#964B00"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "#FFFFFF"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "#000000"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "#8B0000"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "#808080"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "#8B8000"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "#006400"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "#FFFFC5"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "#00008B"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "#FF7276"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "#556B2F"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "#B43434"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "#4682B4"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "#FFD700"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.divertingLeft": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Diverting_Left"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, false)\r\n",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.divertingRight": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Diverting_Right"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, false)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.priority": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "No Active Alarms"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "High"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Medium"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Low"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Diagnostic"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.state": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(\r\n {view.params.demoState} \u003e\u003d 0,\r\n {view.params.demoState},\r\n coalesce({value}, -1)\r\n)\r\n",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "Offline",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "Closed"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "Actuated"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Communication Faulted"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Conveyor Running In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Disabled"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "Disconnected"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "Enabled Not Running"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "Encoder Fault"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "Energy Management"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "ESTOP Was Actuated"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "EStopped"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "EStopped Locally"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "Extended Faulted"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "Full"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "Gaylord Start Pressed"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "Jam Fault"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "Jammed"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "Loading Allowed"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "Loading Not Allowed"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "Low Air Pressure Fault Was Present"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 22,
|
||||
"output": "Conveyor Stopped In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 23,
|
||||
"output": "Motor Faulted"
|
||||
},
|
||||
{
|
||||
"input": 24,
|
||||
"output": "Motor Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 25,
|
||||
"output": "Normal"
|
||||
},
|
||||
{
|
||||
"input": 26,
|
||||
"output": "Off Inactive"
|
||||
},
|
||||
{
|
||||
"input": 27,
|
||||
"output": "Open"
|
||||
},
|
||||
{
|
||||
"input": 28,
|
||||
"output": "PLC Ready To Run"
|
||||
},
|
||||
{
|
||||
"input": 29,
|
||||
"output": "Package Release Pressed"
|
||||
},
|
||||
{
|
||||
"input": 30,
|
||||
"output": "Power Branch Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 31,
|
||||
"output": "Pressed"
|
||||
},
|
||||
{
|
||||
"input": 32,
|
||||
"output": "Ready To Receive"
|
||||
},
|
||||
{
|
||||
"input": 33,
|
||||
"output": "Running"
|
||||
},
|
||||
{
|
||||
"input": 34,
|
||||
"output": "Started"
|
||||
},
|
||||
{
|
||||
"input": 35,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 36,
|
||||
"output": "System Started"
|
||||
},
|
||||
{
|
||||
"input": 37,
|
||||
"output": "Unknown"
|
||||
},
|
||||
{
|
||||
"input": 38,
|
||||
"output": "VFD Fault"
|
||||
},
|
||||
{
|
||||
"input": 39,
|
||||
"output": "Conveyor Running In Power Saving Mode"
|
||||
},
|
||||
{
|
||||
"input": 40,
|
||||
"output": "Conveyor Jogging In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 41,
|
||||
"output": "VFD Reset Required"
|
||||
},
|
||||
{
|
||||
"input": 42,
|
||||
"output": "Jam Reset Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 43,
|
||||
"output": "Start Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 44,
|
||||
"output": "Stop Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 45,
|
||||
"output": "No Container"
|
||||
},
|
||||
{
|
||||
"input": 46,
|
||||
"output": "Ready To Be Enabled"
|
||||
},
|
||||
{
|
||||
"input": 47,
|
||||
"output": "Half Full"
|
||||
},
|
||||
{
|
||||
"input": 48,
|
||||
"output": "Enabled"
|
||||
},
|
||||
{
|
||||
"input": 49,
|
||||
"output": "Tipper Faulted"
|
||||
},
|
||||
{
|
||||
"input": 54,
|
||||
"output": "Diverting"
|
||||
},
|
||||
{
|
||||
"input": 50,
|
||||
"output": "OK"
|
||||
},
|
||||
{
|
||||
"input": 51,
|
||||
"output": "DISCONNECTED"
|
||||
},
|
||||
{
|
||||
"input": 52,
|
||||
"output": "FAULTED"
|
||||
},
|
||||
{
|
||||
"input": 53,
|
||||
"output": "FAULTED/DISCONNECTED"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.demoColor": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.demoState": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagProps": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 50,
|
||||
"width": 50
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.54,
|
||||
"width": 0.76,
|
||||
"x": 0.12,
|
||||
"y": 0.06
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if({view.custom.divertingLeft}, \u0027translateY(-5px)\u0027, \u0027translateY(0px)\u0027)"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background": "#00ff00",
|
||||
"transition": "transform 0.5s ease-in-out"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.54,
|
||||
"width": 0.76,
|
||||
"x": 0.12,
|
||||
"y": 0.4
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if({view.custom.divertingRight}, \u0027translateY(5px)\u0027, \u0027translateY(0px)\u0027)"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background": "#00ff00",
|
||||
"transition": "transform 0.5s ease-in-out"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "SOL"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.elements[0].fill.paint": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.color"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.elements[1].elements[0].fill.paint": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if ({view.custom.state} \u003d \"Closed\", \"#fff\", \"#000\")"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"elements": [
|
||||
{
|
||||
"fill": {},
|
||||
"height": "47.417244",
|
||||
"id": "beaconSquare",
|
||||
"name": "beaconSquare",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "2.36887"
|
||||
},
|
||||
"type": "rect",
|
||||
"width": "47.337795",
|
||||
"x": "1.450278",
|
||||
"y": "1.3708278"
|
||||
},
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"fill": {},
|
||||
"id": "tspan1",
|
||||
"name": "tspan1",
|
||||
"stroke": {
|
||||
"width": "1.15193"
|
||||
},
|
||||
"text": "SOL",
|
||||
"type": "tspan",
|
||||
"x": "24.958401",
|
||||
"y": 31.781378
|
||||
}
|
||||
],
|
||||
"fill": {
|
||||
"paint": "#000"
|
||||
},
|
||||
"fontSize": "20.7347px",
|
||||
"id": "beaconLabel",
|
||||
"name": "beaconLabel",
|
||||
"stroke": {
|
||||
"width": "1.15193"
|
||||
},
|
||||
"textAnchor": "middle",
|
||||
"type": "text",
|
||||
"x": "24.958401",
|
||||
"y": "31.781378"
|
||||
}
|
||||
],
|
||||
"viewBox": "0 0 50 50"
|
||||
},
|
||||
"type": "ia.shapes.svg"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\t#create tags lists for the device\n\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\n\tsystem.perspective.openDock(\u0027Docked-East-Device\u0027,params\u003d{\u0027tagProps\u0027:props, \"tags\":tags_table_dataset, \"name\":\"\"} )"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root",
|
||||
"tooltip": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.tooltip.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if(\n {view.custom.state} !\u003d \"Offline\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "session.custom.alarm_filter.show_solenoids"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"cursor": "pointer",
|
||||
"overflow": "visible",
|
||||
"userSelect": "None"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,584 @@
|
||||
{
|
||||
"custom": {
|
||||
"color": "#C2C2C2",
|
||||
"priority": "No Active Alarms",
|
||||
"state": "Closed"
|
||||
},
|
||||
"params": {
|
||||
"demoColor": -1,
|
||||
"tagProps": [
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(\r\n {view.params.demoColor} \u003e\u003d 0,\r\n {view.params.demoColor},\r\n coalesce({value}, 0)\r\n)\r\n",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#000000",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "#C2C2C2"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "#FF0000"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "#FFA500"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "#0008FF"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "#00FF00"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "#FFF700"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "#87CEEB"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "#90EE90"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "#964B00"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "#FFFFFF"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "#000000"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "#8B0000"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "#808080"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "#8B8000"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "#006400"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "#FFFFC5"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "#00008B"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "#FF7276"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "#556B2F"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "#B43434"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "#4682B4"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "#FFD700"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.priority": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "No Active Alarms"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "High"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Medium"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Low"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Diagnostic"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.state": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "Unknown",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "Closed"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "Actuated"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Communication Faulted"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Conveyor Running In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Disabled"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "Disconnected"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "Enabled Not Running"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "Encoder Fault"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "Energy Management"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "ESTOP Was Actuated"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "EStopped"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "EStopped Locally"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "Extended Faulted"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "Full"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "Gaylord Start Pressed"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "Jam Fault"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "Jammed"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "Loading Allowed"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "Loading Not Allowed"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "Low Air Pressure Fault Was Present"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 22,
|
||||
"output": "Conveyor Stopped In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 23,
|
||||
"output": "Motor Faulted"
|
||||
},
|
||||
{
|
||||
"input": 24,
|
||||
"output": "Motor Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 25,
|
||||
"output": "Normal"
|
||||
},
|
||||
{
|
||||
"input": 26,
|
||||
"output": "Off Inactive"
|
||||
},
|
||||
{
|
||||
"input": 27,
|
||||
"output": "Open"
|
||||
},
|
||||
{
|
||||
"input": 28,
|
||||
"output": "PLC Ready To Run"
|
||||
},
|
||||
{
|
||||
"input": 29,
|
||||
"output": "Package Release Pressed"
|
||||
},
|
||||
{
|
||||
"input": 30,
|
||||
"output": "Power Branch Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 31,
|
||||
"output": "Pressed"
|
||||
},
|
||||
{
|
||||
"input": 32,
|
||||
"output": "Ready To Receive"
|
||||
},
|
||||
{
|
||||
"input": 33,
|
||||
"output": "Running"
|
||||
},
|
||||
{
|
||||
"input": 34,
|
||||
"output": "Started"
|
||||
},
|
||||
{
|
||||
"input": 35,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 36,
|
||||
"output": "System Started"
|
||||
},
|
||||
{
|
||||
"input": 37,
|
||||
"output": "Unknown"
|
||||
},
|
||||
{
|
||||
"input": 38,
|
||||
"output": "VFD Fault"
|
||||
},
|
||||
{
|
||||
"input": 39,
|
||||
"output": "Conveyor Running In Power Saving Mode"
|
||||
},
|
||||
{
|
||||
"input": 40,
|
||||
"output": "Conveyor Jogging In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 41,
|
||||
"output": "VFD Reset Required"
|
||||
},
|
||||
{
|
||||
"input": 42,
|
||||
"output": "Jam Reset Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 43,
|
||||
"output": "Start Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 44,
|
||||
"output": "Stop Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 45,
|
||||
"output": "No Container"
|
||||
},
|
||||
{
|
||||
"input": 46,
|
||||
"output": "Ready To Be Enabled"
|
||||
},
|
||||
{
|
||||
"input": 47,
|
||||
"output": "Half Full"
|
||||
},
|
||||
{
|
||||
"input": 48,
|
||||
"output": "Enabled"
|
||||
},
|
||||
{
|
||||
"input": 49,
|
||||
"output": "Tipper Faulted"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.demoColor": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagProps": {
|
||||
"paramDirection": "inout",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 50,
|
||||
"width": 80
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "MCM"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.elements[0].fill.paint": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.color"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"elements": [
|
||||
{
|
||||
"fill": {},
|
||||
"height": 50,
|
||||
"id": "beaconSquare",
|
||||
"name": "beaconSquare",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "2.36887"
|
||||
},
|
||||
"type": "rect",
|
||||
"width": 80,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"id": "tspan1",
|
||||
"name": "tspan1",
|
||||
"stroke": {
|
||||
"width": "0.895573"
|
||||
},
|
||||
"text": "MCM",
|
||||
"type": "tspan",
|
||||
"x": 40,
|
||||
"y": 33
|
||||
}
|
||||
],
|
||||
"fill": {
|
||||
"paint": "#000"
|
||||
},
|
||||
"fontSize": "20px",
|
||||
"id": "beaconLabel",
|
||||
"name": "beaconLabel",
|
||||
"stroke": {
|
||||
"width": "0.895573"
|
||||
},
|
||||
"textAnchor": "middle",
|
||||
"type": "text",
|
||||
"x": 25,
|
||||
"y": 15
|
||||
}
|
||||
],
|
||||
"preserveAspectRatio": "none",
|
||||
"viewBox": "0 0 80 50"
|
||||
},
|
||||
"type": "ia.shapes.svg"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\t#create tags lists for the device\n\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\n\tsystem.perspective.openDock(\u0027Docked-East-Device\u0027,params\u003d{\u0027tagProps\u0027:props, \"tags\":tags_table_dataset})"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"location": "top-left",
|
||||
"style": {}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.tooltip.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{view.custom.priority}"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Alarms-Styles/NoAlarm",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 1,
|
||||
"output": "Alarms-Styles/Diagnostic"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Alarms-Styles/Low"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Alarms-Styles/Medium"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Alarms-Styles/High"
|
||||
}
|
||||
],
|
||||
"outputType": "style-list",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"meta.tooltip.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "session.custom.alarm_filter.show_dpm_mcm"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"cursor": "pointer",
|
||||
"userSelect": "None"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
WITH SORTERS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time,
|
||||
COUNT(*) AS total,
|
||||
SUM(sort_code="Success") AS success,
|
||||
SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs,
|
||||
SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational,
|
||||
SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine,
|
||||
SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner
|
||||
FROM package_history
|
||||
WHERE s04_timestamp BETWEEN :startDate AND :endDate
|
||||
AND sorter = :sorter
|
||||
GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
)
|
||||
SELECT
|
||||
time,
|
||||
/* Counts: */
|
||||
total AS total_count,
|
||||
success AS success_count,
|
||||
awcs AS awcs_issues_count,
|
||||
operational AS operational_issues_count,
|
||||
machine AS machine_issues_count,
|
||||
scanner AS scanner_issues_count,
|
||||
/* PPH: */
|
||||
ROUND(total*60) AS total_pph,
|
||||
ROUND(success*60) AS success_pph,
|
||||
ROUND(awcs*60) AS awcs_issues_pph,
|
||||
ROUND(operational*60) AS operational_issues_pph,
|
||||
ROUND(machine*60) AS machine_issues_pph,
|
||||
ROUND(scanner*60) AS scanner_issues_pph,
|
||||
/* Percents: */
|
||||
ROUND(success/total, 4) AS success_percent,
|
||||
ROUND(awcs/total, 4) AS awcs_issues_percent,
|
||||
ROUND(operational/total, 4) AS operational_issues_percent,
|
||||
ROUND(machine/total, 4) AS machine_issues_percent,
|
||||
ROUND(scanner/total, 4) AS scanner_issues_percent
|
||||
FROM SORTERS;
|
||||
|
After Width: | Height: | Size: 57 KiB |
@ -0,0 +1,33 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--neutral-10)",
|
||||
"borderColor": "var(--info)",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "1px",
|
||||
"boxShadow": "none",
|
||||
"color": "var(--info)",
|
||||
"fontWeight": "normal",
|
||||
"margin": "5px",
|
||||
"textTransform": "uppercase",
|
||||
"fill": "var(--info)"
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"pseudo": "hover",
|
||||
"animation": {
|
||||
"duration": "0.2s",
|
||||
"direction": "normal",
|
||||
"iterationCount": "1",
|
||||
"timingFunction": "ease",
|
||||
"keyframes": {
|
||||
"0%": {},
|
||||
"100%": {
|
||||
"backgroundColor": "var(--neutral-20)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
SELECT DISTINCT destination_act AS lane
|
||||
FROM package_history
|
||||
WHERE destination_act IS NOT NULL
|
||||
ORDER BY lane ASC;
|
||||
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 161 B |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 58 KiB |
@ -0,0 +1,3 @@
|
||||
SELECT DISTINCT sorter
|
||||
FROM package_history
|
||||
ORDER BY sorter ASC;
|
||||
@ -0,0 +1,63 @@
|
||||
################################################################
|
||||
################################################################
|
||||
## Version: 1.0 / Author: Dillon Uzar
|
||||
##
|
||||
## DESC: For use in WCS Sorting Lane Lookup & Recording
|
||||
## WARN: Modifying code may cause system to function incorrectly
|
||||
################################################################
|
||||
################################################################
|
||||
|
||||
import time
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Constants
|
||||
#######################################################
|
||||
|
||||
# Logger:
|
||||
LOG = system.util.logger("GL BreakCount Handler")
|
||||
|
||||
# For inserting data into database:
|
||||
CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO gl_history (gaylord_id,count) VALUES (?,?)"
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Parsing Utils
|
||||
#######################################################
|
||||
|
||||
def logTime(title, trackID, seconds):
|
||||
millisec = round(seconds * 1000, 1)
|
||||
if millisec > 4:
|
||||
LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec))
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### PLC Event Handling
|
||||
#######################################################
|
||||
|
||||
def processBreak(gaylordID, count):
|
||||
# This function handles confirm events, and logs the event in SQL
|
||||
# Ensure ID is valid
|
||||
if count > 0:
|
||||
start_time = time.time()
|
||||
# Log confirm event in SQL:
|
||||
# Insert into Package History:
|
||||
system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count])
|
||||
logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time)
|
||||
|
||||
def processBreakAsync(gaylordID, count):
|
||||
# This function handles confirm events, and logs the event in SQL
|
||||
# Ensure ID is valid
|
||||
if count > 0:
|
||||
def processConfirmInner():
|
||||
start_time = time.time()
|
||||
# Log confirm event in SQL:
|
||||
# Insert into Package History:
|
||||
system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count])
|
||||
logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time)
|
||||
|
||||
system.util.invokeAsynchronous(processConfirmInner)
|
||||
|
||||
|
After Width: | Height: | Size: 7.8 KiB |
@ -0,0 +1,26 @@
|
||||
WITH SORTERS AS (
|
||||
SELECT
|
||||
MIN(timestamp) AS start_timestamp,
|
||||
MAX(timestamp) AS end_timestamp,
|
||||
3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier,
|
||||
"SYSTEM" AS sorter,
|
||||
SUM(IF(lane_id LIKE "UL%", count, 0)) AS inducted,
|
||||
SUM(IF(lane_id LIKE "CH%", count, 0)) AS sorted
|
||||
FROM pe_history
|
||||
WHERE timestamp BETWEEN :startDate AND :endDate
|
||||
GROUP BY "SYSTEM" /* Makes it so no row is returned if no rows are processed */
|
||||
)
|
||||
SELECT
|
||||
start_timestamp,
|
||||
end_timestamp,
|
||||
sorter,
|
||||
/* Counts: */
|
||||
inducted AS inducted_count,
|
||||
sorted AS sorted_count,
|
||||
/* PPH: */
|
||||
ROUND(inducted*pph_multiplier) AS inducted_pph,
|
||||
ROUND(sorted*pph_multiplier) AS sorted_pph,
|
||||
/* Percents: */
|
||||
ROUND(inducted/inducted, 4) AS inducted_percent,
|
||||
ROUND(sorted/sorted, 4) AS sorted_percent
|
||||
FROM SORTERS;
|
||||
@ -0,0 +1,12 @@
|
||||
SELECT concat(date(alltable.t_stamp), ' ', hour(alltable.t_stamp), ':00') as StartTimestamp,
|
||||
concat('H',TIMESTAMPDIFF(HOUR,DATE_FORMAT(alltable.t_stamp,"%Y-%m-%d %H:00:00"),DATE_FORMAT(now(),"%Y-%m-%d %H:00:00"))) as Hour,
|
||||
concat(round(COUNT(*)/COUNT(*) * 100,2),'%') AS Total,
|
||||
concat(round(SUM(SUBSTRING(alltable.ScanLabel,1,1) <> '?' AND
|
||||
SUBSTRING(alltable.ScanLabel,1,1) <> '9' AND
|
||||
SUBSTRING(alltable.ScanLabel,1,1) <> '0')/COUNT(*) * 100,2),'%') AS GoodRead,
|
||||
concat(round(SUM(SUBSTRING(alltable.ScanLabel,1,1) = '?')/COUNT(*) * 100,2),'%') AS NoRead,
|
||||
concat(round(SUM(SUBSTRING(alltable.ScanLabel,1,1) = '9')/COUNT(*) * 100,2),'%') AS MultiRead,
|
||||
concat(round(SUM(SUBSTRING(alltable.ScanLabel,1,1) = '0')/COUNT(*) * 100,2),'%') AS NoCode
|
||||
FROM alltable
|
||||
Where (alltable.t_stamp BETWEEN :starttime AND :endtime)
|
||||
GROUP BY hour(alltable.t_stamp)
|
||||
|
After Width: | Height: | Size: 44 KiB |
@ -0,0 +1,33 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--neutral-10)",
|
||||
"borderColor": "var(--success)",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "1px",
|
||||
"boxShadow": "none",
|
||||
"color": "var(--success)",
|
||||
"fontWeight": "normal",
|
||||
"margin": "5px",
|
||||
"textTransform": "uppercase",
|
||||
"fill": "var(--success)"
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"pseudo": "hover",
|
||||
"animation": {
|
||||
"duration": "0.2s",
|
||||
"direction": "normal",
|
||||
"iterationCount": "1",
|
||||
"timingFunction": "ease",
|
||||
"keyframes": {
|
||||
"0%": {},
|
||||
"100%": {
|
||||
"backgroundColor": "var(--neutral-20)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,150 @@
|
||||
def calculateFocus(self, child, scale=1.7):
|
||||
# Read rotation
|
||||
try:
|
||||
rot = int(str(self.session.custom.rotation).replace("deg", "")) % 360
|
||||
except:
|
||||
rot = 0
|
||||
|
||||
# Device normalized coords (0..1)
|
||||
x = float(child.position.x)
|
||||
y = float(child.position.y)
|
||||
|
||||
# Per-rotation affine coefficients (dx, dy)
|
||||
COEFFS = {
|
||||
0: dict(ax= 956.86984, bx=-1853.94329, cx= -17.57191,
|
||||
ay= 124.82245, by= -191.28916, cy= 227.58568),
|
||||
90: dict(ax=-601.58230, bx= -218.90739, cx=1466.46475,
|
||||
ay= 284.67701, by=-1528.43884, cy= 54.37458),
|
||||
180: dict(ax=-728.83646, bx= 1521.61995, cx= 16.04437,
|
||||
ay=-434.03405, by= -32.67146, cy=1071.85472),
|
||||
270: dict(ax= 385.53372, bx= -44.67850, cx=-768.65879,
|
||||
ay=-1341.88064, by= 1615.55073, cy= 142.77638),
|
||||
}
|
||||
|
||||
c = COEFFS.get(rot, COEFFS[0])
|
||||
|
||||
dx = c['ax'] + c['bx']*x + c['cx']*y
|
||||
dy = c['ay'] + c['by']*x + c['cy']*y
|
||||
|
||||
# Keep your wide-device tweak if you still want it (optional)
|
||||
try:
|
||||
deviceWidthPixels = float(child.position.width) * 1850.0
|
||||
except:
|
||||
deviceWidthPixels = 0.0
|
||||
if deviceWidthPixels > 1200:
|
||||
scale = 1.8
|
||||
dy -= 100
|
||||
|
||||
return {"x": dx, "y": dy, "scale": scale}
|
||||
|
||||
|
||||
def deviceType(self, path, props):
|
||||
try:
|
||||
docked_view = "Docked-East-"
|
||||
|
||||
devices = []
|
||||
tags = []
|
||||
prop = props[0]
|
||||
|
||||
if "Conveyor" in path:
|
||||
docked_view += "Conv"
|
||||
autStand.devices.build_device_mapping(prop)
|
||||
devices = autStand.devices.build_device_table(self)
|
||||
|
||||
elif "VFD" in path:
|
||||
docked_view += "VFD"
|
||||
else:
|
||||
docked_view += "Device"
|
||||
|
||||
tags = autStand.devices.getAllTags(self, prop)
|
||||
|
||||
return [docked_view, tags, devices]
|
||||
|
||||
except Exception as e:
|
||||
import traceback
|
||||
msg = "Error in deviceType: {}\n{}".format(str(e), traceback.format_exc())
|
||||
system.perspective.print(msg)
|
||||
return None
|
||||
|
||||
|
||||
def handleTagHighlight(view, currentValue):
|
||||
tagAndPriority = str(currentValue.value
or "")
|
||||
container = view.rootContainer.getChildren()[0]
|
||||
|
||||
# --- CASE 1: Remove all highlights by applying CLEAR class ---
|
||||
if tagAndPriority.upper() == "CLEAR":
|
||||
for child in container.getChildren():
|
||||
try:
|
||||
currentClasses = child.props.style['classes'].split(" ")
|
||||
filtered = [c for c in currentClasses if not c.startswith("Highlight/")]
|
||||
child.props.style.classes = " ".join(filtered)
|
||||
child.props.params.highlight = ""
|
||||
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
|
||||
if "||" not in tagAndPriority:
|
||||
return
|
||||
|
||||
parts = tagAndPriority.split("||")
|
||||
|
||||
tag = parts[0]
|
||||
|
||||
splitedTag = tag.split("/")
|
||||
deviceName = splitedTag[-1]
|
||||
|
||||
# --- CASE 2: Open camera popup
|
||||
if "Camera" in deviceName:
|
||||
cameraView = container.getChild(deviceName)
|
||||
ipAddress = cameraView.props.get("params", {}).get("ipaddress", "")
|
||||
system.perspective.openPopup("kxYYzZ2O", "autStand/PopUp-Views/Camera", params = {"ipaddress": ipAddress}, title = deviceName)
|
||||
return
|
||||
|
||||
components = container.getChildren()
|
||||
|
||||
priority = parts[1]
|
||||
|
||||
foundMatch = False
|
||||
|
||||
# clear all highlights and apply new one when found
|
||||
for child in components:
|
||||
|
||||
params = child.props.get("params", {})
|
||||
tagProps = params.get("tagProps", {})
|
||||
tagsList = list(tagProps)
|
||||
|
||||
if len(tagsList) == 0:
|
||||
continue
|
||||
|
||||
|
||||
# child.props.style.classes = ""
|
||||
currentClasses = child.props.style.get('classes', '').split(" ")
|
||||
|
||||
# strip only highlight-related classes
|
||||
filtered = [c for c in currentClasses if not c.startswith("Highlight/")]
|
||||
|
||||
child.props.style.classes = " ".join(filtered)
|
||||
child.props.params.highlight = ""
|
||||
|
||||
tagPath = tagsList[0]
|
||||
|
||||
if tag == tagPath:
|
||||
path = child.props.get("path")
|
||||
device = str(path).split("/")[-1].lower()
|
||||
child.props.params.highlight = priority
|
||||
if "photoeye" not in device and not device.startswith("conveyor_"):
|
||||
child.props.style.classes += " Highlight/Pulse-" + priority
|
||||
docked_view = deviceType(view, path, tagProps)
|
||||
system.perspective.openDock(docked_view[0], params = {'tagProps':tagProps, 'tags': docked_view[1], 'devices':docked_view[2]})
|
||||
system.perspective.sendMessage(
|
||||
"focusDevice",
|
||||
payload = calculateFocus(view, child),
|
||||
scope="session"
|
||||
)
|
||||
foundMatch = True
|
||||
|
||||
return foundMatch
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
WITH SORTERS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp,
|
||||
CONCAT("H",
|
||||
CAST(
|
||||
TIMESTAMPDIFF(
|
||||
HOUR,
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"),
|
||||
DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00")
|
||||
) AS CHAR
|
||||
)
|
||||
) AS hour,
|
||||
COUNT(*) AS total,
|
||||
SUM(sort_code="Success") AS success,
|
||||
SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs,
|
||||
SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational,
|
||||
SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine,
|
||||
SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner
|
||||
FROM package_history
|
||||
WHERE s04_timestamp BETWEEN :startDate AND :endDate
|
||||
AND sorter=:sorter
|
||||
GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00")
|
||||
)
|
||||
SELECT
|
||||
start_timestamp AS time,
|
||||
hour,
|
||||
/* Counts: */
|
||||
success AS success_count,
|
||||
awcs AS awcs_issues_count,
|
||||
operational AS operational_issues_count,
|
||||
machine AS machine_issues_count,
|
||||
scanner AS scanner_issues_count,
|
||||
/* PPH: */
|
||||
success AS success_pph,
|
||||
awcs AS awcs_issues_pph,
|
||||
operational AS operational_issues_pph,
|
||||
machine AS machine_issues_pph,
|
||||
scanner AS scanner_issues_pph,
|
||||
/* Percents: */
|
||||
ROUND(success/total, 4) AS success_percent,
|
||||
ROUND(awcs/total, 4) AS awcs_issues_percent,
|
||||
ROUND(operational/total, 4) AS operational_issues_percent,
|
||||
ROUND(machine/total, 4) AS machine_issues_percent,
|
||||
ROUND(scanner/total, 4) AS scanner_issues_percent
|
||||
FROM SORTERS
|
||||
ORDER BY start_timestamp;
|
||||
@ -0,0 +1,393 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"enableTooltip": true,
|
||||
"label": null,
|
||||
"tagPath": "",
|
||||
"tagPathControl": "",
|
||||
"view": ""
|
||||
},
|
||||
"propConfig": {
|
||||
"params.enableTooltip": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.label": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPathControl": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.view": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 40,
|
||||
"width": 135
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Status"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.backgroundColor": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}.jsonValues"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Text"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 10px)",
|
||||
"width": "calc(100% - 10px)",
|
||||
"x": 5,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({view.params.label}, {value}, \"Unknown\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#FFF",
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1,
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"paddingLeft": "5px",
|
||||
"textOverflow": "ellipsis",
|
||||
"textTransform": "uppercase",
|
||||
"user-select": "none",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "TooltipOverlay"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.enableTooltip"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.status.tooltip": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"status": {}
|
||||
},
|
||||
"type": "dex.display.tooltipoverlay"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStart\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Start"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 60px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/SetStart"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/Alarms/bStarted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, false)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "#32CD32"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "►",
|
||||
"textStyle": {
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStop\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Stop"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 32.5px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/SetStop"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/Alarms/bStarted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "#FF0000"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "■",
|
||||
"textStyle": {
|
||||
"fontFamily": "monospace",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [
|
||||
{
|
||||
"name": "openWindow",
|
||||
"params": [],
|
||||
"script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)"
|
||||
}
|
||||
],
|
||||
"messageHandlers": []
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
@ -0,0 +1,17 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--error)",
|
||||
"borderTopLeftRadius": "4px",
|
||||
"borderTopRightRadius": "4px",
|
||||
"borderBottomLeftRadius": "4px",
|
||||
"borderBottomRightRadius": "4px",
|
||||
"color": "var(--neutral-10)",
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"lineHeight": "16px",
|
||||
"padding": "2px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,327 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"meta": {
|
||||
"name": "S1-CH1"
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"alwaysShowAll": true,
|
||||
"isClickable": false,
|
||||
"isRightOfSorter": false,
|
||||
"mirror": false
|
||||
},
|
||||
"status": {
|
||||
"tagPath": "[default]MCP03/S01/S01_CH01"
|
||||
}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"params.meta": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.meta.name": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.alwaysShowAll": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.isRightOfSorter": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.mirror": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 349,
|
||||
"width": 500
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "ChuteLabel"
|
||||
},
|
||||
"position": {
|
||||
"height": 30,
|
||||
"width": 100,
|
||||
"x": 198,
|
||||
"y": 298.8
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.props.status.tagPath"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\treturn utils.prettyName(value.split(\"/\")[-1])",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Chute"
|
||||
},
|
||||
"position": {
|
||||
"height": 20,
|
||||
"width": 60,
|
||||
"x": 220,
|
||||
"y": 195
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"struct": {
|
||||
"alwaysShowAll": true,
|
||||
"isClickable": false,
|
||||
"isRightOfSorter": "{view.params.props.config.isRightOfSorter}",
|
||||
"mirror": "{view.params.props.config.mirror}",
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"waitOnAll": true
|
||||
},
|
||||
"type": "expr-struct"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "Templates/Areas/FlexChute",
|
||||
"style": {
|
||||
"transform": "scale(3) rotate(90deg)"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Enable"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 120,
|
||||
"x": 120,
|
||||
"y": 20.3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/SetEnable"
|
||||
},
|
||||
"enabled": false,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Buttons/Grey",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "Buttons/Green"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
},
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {},
|
||||
"text": "Enable"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Disable"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 120,
|
||||
"x": 260,
|
||||
"y": 20.3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/SetEnable"
|
||||
},
|
||||
"enabled": false,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Buttons/Grey",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "Buttons/Red"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
},
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {},
|
||||
"text": "Disable"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "ChuteLabel_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 35,
|
||||
"width": 260,
|
||||
"x": 120,
|
||||
"y": 63
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/StatusText"
|
||||
},
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "center"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background-color": "#CFCFCF"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,308 @@
|
||||
import os, json, sys
|
||||
|
||||
global_device_mapping = {}
|
||||
|
||||
def build_device_mapping(full_tag_path):
|
||||
"""
|
||||
Builds global_device_mapping for devices that:
|
||||
- Belong to the same PLC (index 1)
|
||||
- Are children of the clicked device (start with clicked_name + "_")
|
||||
"""
|
||||
global global_device_mapping
|
||||
global_device_mapping.clear()
|
||||
|
||||
|
||||
|
||||
try:
|
||||
# Parse PLC and clicked device
|
||||
path_parts = full_tag_path.split("/")
|
||||
plc_name = path_parts[1] if len(path_parts) > 1 else path_parts[0]
|
||||
clicked_name = path_parts[-1] if len(path_parts) > 0 else ""
|
||||
if "_VFD" in clicked_name:
|
||||
idx = clicked_name.find("_VFD")
|
||||
if idx != -1:
|
||||
clicked_name = clicked_name[:idx]
|
||||
|
||||
project_name = system.util.getProjectName()
|
||||
base_path = (
|
||||
os.getcwd().replace("\\", "/")
|
||||
+ "/data/projects/"
|
||||
+ project_name
|
||||
+ "/com.inductiveautomation.perspective/Views/autStand/Detailed_Views/MCM-Views"
|
||||
)
|
||||
|
||||
if not os.path.exists(base_path):
|
||||
system.perspective.print("Path not found: " + base_path)
|
||||
return {}
|
||||
|
||||
# loop through all view folders
|
||||
for view_folder in os.listdir(base_path):
|
||||
json_file = os.path.join(base_path, view_folder, "view.json")
|
||||
if not os.path.isfile(json_file):
|
||||
continue
|
||||
|
||||
try:
|
||||
with open(json_file, "r") as fh:
|
||||
view_json = json.load(fh)
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
# go one level deeper: root -> children[0] (coordinateContainer) -> its children
|
||||
root_children = (view_json.get("root") or {}).get("children") or []
|
||||
if not root_children:
|
||||
continue
|
||||
|
||||
container = root_children[0]
|
||||
children = container.get("children") or []
|
||||
|
||||
for child in children:
|
||||
props = child.get("props") or {}
|
||||
params = props.get("params") or {}
|
||||
tag_props = params.get("tagProps")
|
||||
|
||||
if isinstance(tag_props, list) and len(tag_props) > 0:
|
||||
tag_prop = str(tag_props[0])
|
||||
parts = tag_prop.split("/")
|
||||
|
||||
if len(parts) > 1 and parts[1] == plc_name:
|
||||
|
||||
dev_name = parts[-1]
|
||||
if len(parts) > 3 and parts[-2] == clicked_name:
|
||||
dev_name = clicked_name + "_" + parts[-1]
|
||||
system.perspective.print(dev_name)
|
||||
|
||||
# ONLY include devices that are children of clicked_name
|
||||
else:
|
||||
dev_name = parts[-1]
|
||||
prefix = clicked_name + "_"
|
||||
|
||||
if dev_name.startswith(prefix) or (len(parts) > 3 and parts[-2] == clicked_name):
|
||||
global_device_mapping[dev_name] = {
|
||||
"tagPath": tag_prop,
|
||||
"zone": view_folder
|
||||
}
|
||||
|
||||
return global_device_mapping
|
||||
|
||||
except Exception as e:
|
||||
whid = "unknown"
|
||||
try:
|
||||
whid = system.tag.readBlocking("Configuration/FC")[0].value
|
||||
except:
|
||||
pass
|
||||
logger = system.util.getLogger("%s-build_device_mapping" % whid)
|
||||
exc_type, exc_obj, tb = sys.exc_info()
|
||||
logger.error("Error at line %s: %s" % (tb.tb_lineno, exc_obj))
|
||||
return {}
|
||||
|
||||
def build_device_table(self):
|
||||
"""
|
||||
Converts global_device_mapping into a list of dictionaries:
|
||||
Keys: Device, Status
|
||||
Reads each tag value, falls back to 'Unknown' if error/null.
|
||||
"""
|
||||
rows = []
|
||||
state_mappings = {
|
||||
0: "Closed",
|
||||
1: "Actuated",
|
||||
2: "Communication Faulted",
|
||||
3: "Conveyor Running In Maintenance Mode",
|
||||
4: "Disabled",
|
||||
5: "Disconnected",
|
||||
6: "Stopped",
|
||||
7: "Enabled Not Running",
|
||||
8: "Encoder Fault",
|
||||
9: "Energy Management",
|
||||
10: "ESTOP Was Actuated",
|
||||
11: "EStopped",
|
||||
12: "EStopped Locally",
|
||||
13: "Extended Faulted",
|
||||
14: "Full",
|
||||
15: "Gaylord Start Pressed",
|
||||
16: "Jam Fault",
|
||||
17: "Jammed",
|
||||
18: "Loading Allowed",
|
||||
19: "Loading Not Allowed",
|
||||
20: "Low Air Pressure Fault Was Present",
|
||||
21: "Maintenance Mode",
|
||||
22: "Conveyor Stopped In Maintenance Mode",
|
||||
23: "Motor Faulted",
|
||||
24: "Motor Was Faulted",
|
||||
25: "Normal",
|
||||
26: "Off Inactive",
|
||||
27: "Open",
|
||||
28: "PLC Ready To Run",
|
||||
29: "Package Release Pressed",
|
||||
30: "Power Branch Was Faulted",
|
||||
31: "Pressed",
|
||||
32: "Ready To Receive",
|
||||
33: "Running",
|
||||
34: "Started",
|
||||
35: "Stopped",
|
||||
36: "System Started",
|
||||
37: "Unknown",
|
||||
38: "VFD Fault",
|
||||
39: "Conveyor Running In Power Saving Mode",
|
||||
40: "Conveyor Jogging In Maintenance Mode",
|
||||
41: "VFD Reset Required",
|
||||
42: "Jam Reset Push Button Pressed",
|
||||
43: "Start Push Button Pressed",
|
||||
44: "Stop Push Button Pressed",
|
||||
45: "No Container",
|
||||
46: "Ready To Be Enabled",
|
||||
47: "Half Full",
|
||||
48: "Enabled",
|
||||
49: "Tipper Faulted"
|
||||
}
|
||||
|
||||
try:
|
||||
for dev_name, info in global_device_mapping.items():
|
||||
tagPath = info.get("tagPath", "")
|
||||
status_value = ""
|
||||
provider = "[" + self.session.custom.fc + "_SCADA_TAG_PROVIDER]"
|
||||
path = provider + tagPath + "/STATE"
|
||||
|
||||
if tagPath:
|
||||
try:
|
||||
result = system.tag.readBlocking([path])[0]
|
||||
status_value = state_mappings.get(result.value, "Unknown")
|
||||
except:
|
||||
status_value = "Unknown"
|
||||
|
||||
# Append as dictionary
|
||||
rows.append({
|
||||
'Device': dev_name,
|
||||
'Status': status_value
|
||||
})
|
||||
|
||||
return rows
|
||||
|
||||
except Exception as e:
|
||||
system.perspective.print("Error building device table: %s" % e)
|
||||
return [] # Return empty list on error
|
||||
|
||||
|
||||
def getAllTags(self, tagPath, section="all"):
|
||||
"""
|
||||
Reads all tags under a UDT instance (recursively) and returns a list of dictionaries.
|
||||
|
||||
Supports:
|
||||
- VFD (Drive folder)
|
||||
- Conveyor (skips Drive)
|
||||
- Chute (root + PE/PRX/EN tags)
|
||||
- Single Photoeyes (PE1/PE2)
|
||||
- Single Prox Sensors (PRX1/PRX2)
|
||||
- Enable buttons (EN_Color, EN_State, EN_Priority)
|
||||
- Tracking Photoeyes (TPE, handles both folder- and struct-style UDTs)
|
||||
"""
|
||||
|
||||
rows = []
|
||||
|
||||
try:
|
||||
providerPath = "[" + self.session.custom.fc + "_SCADA_TAG_PROVIDER]"
|
||||
driveFolderName = "Drive"
|
||||
|
||||
|
||||
# === Utility: read a single atomic tag ===
|
||||
def readSingleTag(path, prefix=""):
|
||||
try:
|
||||
result = system.tag.readBlocking([providerPath + path])[0]
|
||||
value = str(result.value) if result.quality.isGood() else "Unknown"
|
||||
except:
|
||||
value = "Unknown"
|
||||
|
||||
displayName = prefix + path.split("/")[-1] if prefix else path.split("/")[-1]
|
||||
rows.append({
|
||||
"Name": displayName,
|
||||
"OPC Path": path,
|
||||
"Value": value
|
||||
})
|
||||
|
||||
# === Utility: recursive browse ===
|
||||
def browseRecursive(basePath, prefix=""):
|
||||
children = system.tag.browse(providerPath + basePath).getResults()
|
||||
|
||||
for child in children:
|
||||
tagType = str(child.get("tagType", ""))
|
||||
name = str(child.get("name", ""))
|
||||
fullPath = str(child.get("fullPath", ""))
|
||||
|
||||
if fullPath.startswith("[") and "]" in fullPath:
|
||||
fullPath = fullPath.split("]", 1)[1]
|
||||
|
||||
# --- Conveyor filter (skip Drive folder) ---
|
||||
if section == "conveyor" and name == driveFolderName:
|
||||
continue
|
||||
|
||||
if tagType == "Folder":
|
||||
newPrefix = prefix + name + "/" if prefix else name + "/"
|
||||
browseRecursive(basePath + "/" + name, newPrefix)
|
||||
elif tagType == "AtomicTag":
|
||||
readSingleTag(fullPath, prefix)
|
||||
|
||||
# === MAIN ENTRY POINT ===
|
||||
if section == "vfd":
|
||||
# Browse only inside Drive folder
|
||||
drivePath = tagPath + "/" + driveFolderName
|
||||
browseRecursive(drivePath)
|
||||
|
||||
elif tagPath.upper().endswith("/EN"):
|
||||
# --- Handle flat EN_ tags ---
|
||||
parentPath = "/".join(tagPath.split("/")[:-1])
|
||||
children = system.tag.browse(providerPath + parentPath).getResults()
|
||||
|
||||
for child in children:
|
||||
tagType = str(child.get("tagType", ""))
|
||||
name = str(child.get("name", ""))
|
||||
if tagType == "AtomicTag" and name.upper().startswith("EN_"):
|
||||
fullPath = str(child.get("fullPath", ""))
|
||||
if fullPath.startswith("[") and "]" in fullPath:
|
||||
fullPath = fullPath.split("]", 1)[1]
|
||||
readSingleTag(fullPath)
|
||||
|
||||
elif tagPath.upper().endswith(("PE1", "PE2", "PRX1", "PRX2")) and "/TPE/" not in tagPath.upper():
|
||||
# --- Single sensors ---
|
||||
readSingleTag(tagPath)
|
||||
|
||||
else:
|
||||
# --- Default path ---
|
||||
browseResult = system.tag.browse(providerPath + tagPath).getResults()
|
||||
|
||||
if not browseResult:
|
||||
# Possibly a struct-style UDT (like some TPEs)
|
||||
system.perspective.print("Empty browse for {}, checking struct value...".format(tagPath))
|
||||
try:
|
||||
result = system.tag.readBlocking([providerPath + tagPath])[0]
|
||||
value = result.value
|
||||
|
||||
# If we got a STRUCT, expand it into sub-rows
|
||||
if isinstance(value, dict):
|
||||
system.perspective.print("Detected STRUCT value, expanding {}".format(tagPath))
|
||||
|
||||
def flattenStruct(struct, base=""):
|
||||
for k, v in struct.items():
|
||||
newName = base + "/" + k if base else k
|
||||
if isinstance(v, dict):
|
||||
flattenStruct(v, newName)
|
||||
else:
|
||||
rows.append({
|
||||
"Name": newName,
|
||||
"OPC Path": tagPath + "/" + newName,
|
||||
"Value": str(v)
|
||||
})
|
||||
|
||||
flattenStruct(value)
|
||||
else:
|
||||
# Not a struct, just read it normally
|
||||
readSingleTag(tagPath)
|
||||
except Exception as ex:
|
||||
system.perspective.print("Fallback read failed for {}: {}".format(tagPath, ex))
|
||||
else:
|
||||
# Normal case — browse folder/UDT structure
|
||||
browseRecursive(tagPath)
|
||||
|
||||
return rows
|
||||
|
||||
except Exception as e:
|
||||
system.perspective.print("Error in getAllTags: {}".format(e))
|
||||
return []
|
||||
@ -0,0 +1,12 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"color": "#8E8E8E",
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "300",
|
||||
"lineHeight": "16px",
|
||||
"marginRight": "10px",
|
||||
"textTransform": "uppercase"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,393 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"enableTooltip": true,
|
||||
"label": null,
|
||||
"tagPath": "",
|
||||
"tagPathControl": "",
|
||||
"view": ""
|
||||
},
|
||||
"propConfig": {
|
||||
"params.enableTooltip": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.label": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPathControl": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.view": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 40,
|
||||
"width": 135
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Status"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.backgroundColor": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}.jsonValues"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Text"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 10px)",
|
||||
"width": "calc(100% - 10px)",
|
||||
"x": 5,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({view.params.label}, {value}, \"Unknown\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#FFF",
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1,
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"paddingLeft": "5px",
|
||||
"textOverflow": "ellipsis",
|
||||
"textTransform": "uppercase",
|
||||
"user-select": "none",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "TooltipOverlay"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.enableTooltip"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.status.tooltip": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"status": {}
|
||||
},
|
||||
"type": "dex.display.tooltipoverlay"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStart\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Start"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 60px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/SetStart"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/Alarms/bStarted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, false)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "#32CD32"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "►",
|
||||
"textStyle": {
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStop\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Stop"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 32.5px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/SetStop"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPathControl": "{view.params.tagPathControl}"
|
||||
},
|
||||
"tagPath": "{tagPathControl}/Alarms/bStarted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "#FF0000"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "■",
|
||||
"textStyle": {
|
||||
"fontFamily": "monospace",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [
|
||||
{
|
||||
"name": "openWindow",
|
||||
"params": [],
|
||||
"script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)"
|
||||
}
|
||||
],
|
||||
"messageHandlers": []
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,156 @@
|
||||
################################################################
|
||||
################################################################
|
||||
## Version: 1.0 / Author: Dillon Uzar
|
||||
##
|
||||
## DESC: For use in FMS in recording Flow Management data
|
||||
## WARN: Modifying code may cause system to function incorrectly
|
||||
################################################################
|
||||
################################################################
|
||||
|
||||
import json
|
||||
import system
|
||||
import time
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Constants
|
||||
#######################################################
|
||||
|
||||
# Logger:
|
||||
LOG = system.util.logger("FMS Handler")
|
||||
|
||||
# For inserting data into database:
|
||||
INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)"
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Parsing Utils
|
||||
#######################################################
|
||||
|
||||
def extractNibble(val, nibble):
|
||||
if val is not None:
|
||||
return (val >> (nibble*4)) & 0x0F
|
||||
|
||||
def logTime(title, conv, seg, data, start_time):
|
||||
millisec = round((time.time() - start_time) * 1000, 1)
|
||||
LOG.info("%s[CONV=%s][SEG=%s][DATA=%s] took %sms to process" % (title, conv, seg, data, millisec))
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Tag Event Handling
|
||||
#######################################################
|
||||
|
||||
def logSegment(conveyor, segment, data):
|
||||
# Log event in SQL:
|
||||
# Insert into FMS History:
|
||||
start_time = time.time()
|
||||
INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)"
|
||||
system.db.runPrepUpdate(INSERT_QUERY, [conveyor, segment, data])
|
||||
#logTime("FMS[DB_INSERT]", conveyor, segment, data, start_time)
|
||||
|
||||
def dintOnChange(tag, tagPath, previousValue, currentValue, initialChange, missedEvents):
|
||||
# Don't execute on startup, or if new value is bad quality:
|
||||
if currentValue.quality.isGood():
|
||||
# Only consider it a change if the value is different:
|
||||
if currentValue.value <> previousValue.value:
|
||||
id = int(tagPath.split("/")[-1].replace("DINT", ""))
|
||||
conveyor = tag['parameters']['LabelFull']
|
||||
# ID=0 is unique where the first nibble is the average of all segments, the 7 other segments are normal segments:
|
||||
if id == 0:
|
||||
# Ignore first nibble, which is the average of all segments:
|
||||
for i in range(1, 8):
|
||||
# Check if segment changed:
|
||||
curVal = extractNibble(currentValue.value, i)
|
||||
prevVal = extractNibble(previousValue.value, i)
|
||||
if curVal <> prevVal:
|
||||
segment = i - 1
|
||||
logSegment(conveyor, segment, curVal)
|
||||
else:
|
||||
for i in range(0, 8):
|
||||
# Check if segment changed:
|
||||
curVal = extractNibble(currentValue.value, i)
|
||||
prevVal = extractNibble(previousValue.value, i)
|
||||
if curVal <> prevVal:
|
||||
segment = i + (id-1)*8 + 7
|
||||
logSegment(conveyor, segment, curVal)
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Graphics Tag Scripts
|
||||
#######################################################
|
||||
|
||||
"""
|
||||
radial-gradient(circle at 30%,
|
||||
#f5bff5 calc((var(--conv-width) - 4px)/2*0.25),
|
||||
#000 calc((var(--conv-width) - 4px)/2*0.25),
|
||||
#000 calc((var(--conv-width) - 4px)/2*0.25 + 1px),
|
||||
transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)),
|
||||
radial-gradient(circle at 50%, #d900d9 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1 + 1px), transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)), radial-gradient(circle at 70%, #ec7fec 7px, #000 7px, #000 8px, transparent 8px), radial-gradient(circle at 90%, #e23fe2 10px, #000 10px, #000 11px, transparent 11px), #00D900
|
||||
"""
|
||||
|
||||
|
||||
def genSegmentsTable(obj):
|
||||
segments = []
|
||||
if obj is not None and obj["Count"] is not None:
|
||||
for i in range(1, obj["Count"]+1):
|
||||
dint = "DINT"+str(int(i/8))
|
||||
if obj[dint] is not None:
|
||||
percent = extractNibble(obj[dint], i % 8) / 15.0
|
||||
segments.append([i, percent])
|
||||
return system.dataset.toDataSet(["segment", "fill"], segments)
|
||||
|
||||
def genSegmentColor(data):
|
||||
perc = (data/15.0)
|
||||
c1 = 255 - (255 - 217)*perc
|
||||
c2 = 255 - (255 - 0)*perc
|
||||
return "rgb(%s, %s, %s)" % (c1, c2, c1)
|
||||
|
||||
def genSegmentsPattern(obj):
|
||||
if obj["Count"] is not None and obj["Count"] > 0:
|
||||
percUnit = 100 / float(obj["Count"])
|
||||
gradients = []
|
||||
for i in range(1, obj["Count"]+1):
|
||||
dint = "DINT"+str(int(i/8))
|
||||
if obj[dint] is not None:
|
||||
data = extractNibble(obj[dint], i % 8)
|
||||
color = genSegmentColor(data)
|
||||
circlePos = ((obj["Count"]-i))*percUnit + percUnit/2.0
|
||||
perc = (data/15.0*0.5+0.5) if data > 0 else 0.0 # Make circle size between 50%-100%
|
||||
if perc > 0.0:
|
||||
output = "radial-gradient(circle at %s%%" % (circlePos)
|
||||
output += ", %s calc((var(--conv-width) - 8px)/2*%s)" % (color, perc)
|
||||
output += ", #000 calc((var(--conv-width) - 8px)/2*%s)" % (perc)
|
||||
output += ", #000 calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc)
|
||||
output += ", transparent calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc)
|
||||
output += ")"
|
||||
gradients.append(output)
|
||||
if len(gradients) > 0:
|
||||
return ", ".join(gradients)+","
|
||||
return ""
|
||||
|
||||
def genSegmentsTooltip(obj):
|
||||
if obj["Count"] is not None and obj["Count"] > 0:
|
||||
data = extractNibble(obj["DINT0"], 0)
|
||||
output = "<br><br>SegmentAVG: %s%%" % (int(round(100 * data / 15.0)))
|
||||
for i in range(1, obj["Count"]+1):
|
||||
dint = "DINT"+str(int(i/8))
|
||||
if obj[dint] is not None:
|
||||
data = extractNibble(obj[dint], i % 8)
|
||||
output += "<br>Segment%s: %s%%" % (i, int(round(100 * data / 15.0)))
|
||||
return output
|
||||
return ""
|
||||
|
||||
def genSegmentHeatmap(obj):
|
||||
segments = []
|
||||
if obj["Count"] is not None and obj["Count"] > 0:
|
||||
for i in range(1, obj["Count"]+1):
|
||||
dint = "DINT"+str(int(i/8))
|
||||
if obj[dint] is not None:
|
||||
data = extractNibble(obj[dint], i % 8)
|
||||
color = 255 * data / 15
|
||||
segments.append("rgb(255, %s, %s)" % (color, color))
|
||||
return json.dumps(segments)
|
||||
@ -0,0 +1,36 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(180deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#555",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#000",
|
||||
"textTransform": "uppercase"
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"pseudo": "hover",
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(0deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#000",
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pseudo": "disabled",
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(180deg, rgba(208,208,208,1) 0%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#555",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#555555",
|
||||
"cursor": "not-allowed"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 102 KiB |
@ -0,0 +1,7 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"color": "#FF0000"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
################################################################
|
||||
################################################################
|
||||
## Version: 1.0 / Author: Dillon Uzar
|
||||
##
|
||||
## DESC: For use in WCS Sorting Lane Lookup & Recording
|
||||
## WARN: Modifying code may cause system to function incorrectly
|
||||
################################################################
|
||||
################################################################
|
||||
|
||||
import time
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Constants
|
||||
#######################################################
|
||||
|
||||
# Logger:
|
||||
LOG = system.util.logger("PE BreakCount Handler")
|
||||
|
||||
# For inserting data into database:
|
||||
CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO pe_history (lane_id,count) VALUES (?,?)"
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Parsing Utils
|
||||
#######################################################
|
||||
|
||||
def logTime(title, trackID, seconds):
|
||||
millisec = round(seconds * 1000, 1)
|
||||
if millisec > 4:
|
||||
LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec))
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### PLC Event Handling
|
||||
#######################################################
|
||||
|
||||
def processBreak(laneID, count):
|
||||
# This function handles confirm events, and logs the event in SQL
|
||||
# Ensure ID is valid
|
||||
if count > 0:
|
||||
start_time = time.time()
|
||||
# Log confirm event in SQL:
|
||||
# Insert into Package History:
|
||||
system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count])
|
||||
logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time)
|
||||
|
||||
def processBreakAsync(laneID, count):
|
||||
# This function handles confirm events, and logs the event in SQL
|
||||
# Ensure ID is valid
|
||||
if count > 0:
|
||||
def processConfirmInner():
|
||||
start_time = time.time()
|
||||
# Log confirm event in SQL:
|
||||
# Insert into Package History:
|
||||
system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count])
|
||||
logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time)
|
||||
|
||||
system.util.invokeAsynchronous(processConfirmInner)
|
||||
|
||||
@ -0,0 +1,76 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 24,
|
||||
"width": 24
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "troubleshoot_white_24dp"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"props": {
|
||||
"elements": [
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"fill": {
|
||||
"paint": "transparent"
|
||||
},
|
||||
"height": "24",
|
||||
"name": "rect",
|
||||
"type": "rect",
|
||||
"width": "24"
|
||||
}
|
||||
],
|
||||
"name": "group",
|
||||
"type": "group"
|
||||
},
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"d": "M22,20.59l-4.69-4.69C18.37,14.55,19,12.85,19,11c0-4.42-3.58-8-8-8c-4.08,0-7.44,3.05-7.93,7h2.02C5.57,7.17,8.03,5,11,5 c3.31,0,6,2.69,6,6s-2.69,6-6,6c-2.42,0-4.5-1.44-5.45-3.5H3.4C4.45,16.69,7.46,19,11,19c1.85,0,3.55-0.63,4.9-1.69L20.59,22 L22,20.59z",
|
||||
"name": "path",
|
||||
"type": "path"
|
||||
},
|
||||
{
|
||||
"name": "polygon",
|
||||
"points": "8.43,9.69 9.65,15 11.29,15 12.55,11.22 13.5,13.5 15.5,13.5 15.5,12 14.5,12 13.25,9 11.71,9 10.59,12.37 9.35,7 7.7,7 6.45,11 1,11 1,12.5 7.55,12.5",
|
||||
"type": "polygon"
|
||||
}
|
||||
],
|
||||
"name": "group",
|
||||
"type": "group"
|
||||
}
|
||||
],
|
||||
"name": "group",
|
||||
"type": "group"
|
||||
}
|
||||
],
|
||||
"fill": {
|
||||
"paint": "#FFFFFF"
|
||||
},
|
||||
"viewBox": "0 0 24 24"
|
||||
},
|
||||
"type": "ia.shapes.svg"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,883 @@
|
||||
{
|
||||
"custom": {
|
||||
"FilteredViews": [
|
||||
{
|
||||
"Path": "autStand/Equipment/Button",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/Camera",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Chute",
|
||||
"Path": "autStand/Equipment/Conveyor",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/Conveyor",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Conveyor",
|
||||
"Path": "autStand/Equipment/Conveyor45",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Conveyor",
|
||||
"Path": "autStand/Equipment/Conveyor_Left90",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Conveyor",
|
||||
"Path": "autStand/Equipment/Conveyor_Right90",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/DPM",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/EPC",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/Encoder",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/MCM",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Tracking Photoeye",
|
||||
"Path": "autStand/Equipment/Photoeye_Tracking",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Long Range Photoeye",
|
||||
"Path": "autStand/Equipment/Photoeye_Long",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Chute Photoeye",
|
||||
"Path": "autStand/Equipment/Photoeye_Chute",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Proximity Switch",
|
||||
"Path": "autStand/Equipment/ProxSensor",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Start/Stop Button",
|
||||
"Path": "autStand/Equipment/SS_Button",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/IO_Block",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/Solenoid",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/VFD",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Beacon_G",
|
||||
"Path": "autStand/Equipment/Beacon",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Beacon_A",
|
||||
"Path": "autStand/Equipment/Beacon",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Beacon_R",
|
||||
"Path": "autStand/Equipment/Beacon",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Beacon_B",
|
||||
"Path": "autStand/Equipment/Beacon",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Beacon_H",
|
||||
"Path": "autStand/Equipment/Beacon",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"Path": "autStand/Equipment/Scanner",
|
||||
"instancePosition": {},
|
||||
"instanceStyle": {
|
||||
"classes": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"events": {
|
||||
"system": {
|
||||
"onStartup": {
|
||||
"config": {
|
||||
"script": "\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Device-Views\"\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\t\t\n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\tjson_structure \u003d []\n\tfor view in filtered_views:\n\t\t\n\t\tif \u0027Test\u0027 not in view[\u0027path\u0027]:\n\t\t\tinstance \u003d {\n\t\t\t\t\"instanceStyle\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t},\n\t\t\t\t\"instancePosition\": {},\n\t\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\t\"forceRunning\":3,\n\t\t\t\t\"forceFault\": None,\n\t\t\t\t\"has_state\":True\n\t\t\t}\n\t\t\tjson_structure.append(instance)\n\t\t\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.params.Dataset \u003d filtered_views\n\tself.params.FilteredViews \u003d json_structure\n\tself.session.custom.alarm_filter.show_running \u003d True\n\tself.session.custom.alarm_filter.show_safety \u003d True\n\tself.session.custom.alarm_filter.show_diagnostic \u003d True\n\tself.session.custom.alarm_filter.show_gateways \u003d True\n\tself.session.custom.alarm_filter.show_low_alarm \u003d True\n\t"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"params": {
|
||||
"Dataset": [],
|
||||
"FilteredViews": []
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.FilteredViews": {
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 309,
|
||||
"width": 378
|
||||
},
|
||||
"theme": "dark"
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"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": {
|
||||
"path": "session.custom.colours.state0"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.data[3].Color.style.backgroundColor": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "session.custom.colours.state5"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.data[3].Color.style.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) "
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"cells": {
|
||||
"style": {
|
||||
"paddingLeft": 5
|
||||
}
|
||||
},
|
||||
"columns": [
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "Color",
|
||||
"filter": {
|
||||
"boolean": {
|
||||
"condition": ""
|
||||
},
|
||||
"date": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"enabled": false,
|
||||
"number": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"string": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"visible": "on-hover"
|
||||
},
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"justify": "auto",
|
||||
"nullFormat": {
|
||||
"includeNullStrings": false,
|
||||
"nullFormatValue": "",
|
||||
"strict": false
|
||||
},
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"track": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"enabled": true,
|
||||
"format": "0,0.##",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": false,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "",
|
||||
"unselected": ""
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 85
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "Description",
|
||||
"filter": {
|
||||
"boolean": {
|
||||
"condition": ""
|
||||
},
|
||||
"date": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"enabled": false,
|
||||
"number": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"string": {
|
||||
"condition": "",
|
||||
"value": ""
|
||||
},
|
||||
"visible": "on-hover"
|
||||
},
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"justify": "auto",
|
||||
"nullFormat": {
|
||||
"includeNullStrings": false,
|
||||
"nullFormatValue": "",
|
||||
"strict": false
|
||||
},
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"track": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"enabled": true,
|
||||
"format": "0,0.##",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": false,
|
||||
"strictWidth": false,
|
||||
"style": {
|
||||
"borderLeftStyle": "solid",
|
||||
"borderLeftWidth": 1,
|
||||
"borderRightStyle": "solid",
|
||||
"borderRightWidth": 1,
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "",
|
||||
"unselected": ""
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 100
|
||||
}
|
||||
],
|
||||
"data": [
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"backgroundColor": "",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": 1,
|
||||
"borderLeftStyle": "hidden",
|
||||
"borderRightStyle": "hidden",
|
||||
"classes": "",
|
||||
"font-weight": "bold"
|
||||
},
|
||||
"value": "State"
|
||||
},
|
||||
"Description": {
|
||||
"align": "center",
|
||||
"editable": false,
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"backgroundColor": "",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": 1,
|
||||
"borderLeftStyle": "hidden",
|
||||
"classes": "some-class",
|
||||
"font-weight": "bold"
|
||||
},
|
||||
"value": "Description"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "",
|
||||
"color": "#000000"
|
||||
},
|
||||
"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)"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"backgroundColor": "",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": 1,
|
||||
"borderLeftStyle": "hidden",
|
||||
"borderRightStyle": "hidden",
|
||||
"borderTopStyle": "solid",
|
||||
"borderTopWidth": 1,
|
||||
"classes": "",
|
||||
"font-weight": "bold"
|
||||
},
|
||||
"value": "Priority"
|
||||
},
|
||||
"Description": {
|
||||
"align": "center",
|
||||
"editable": false,
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"backgroundColor": "",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": 1,
|
||||
"borderLeftStyle": "hidden",
|
||||
"borderTopStyle": "solid",
|
||||
"borderTopWidth": 1,
|
||||
"classes": "",
|
||||
"font-weight": "bold"
|
||||
},
|
||||
"value": "Description"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"value": "Healthy"
|
||||
},
|
||||
"Description": "Healthy, no active alarms"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "",
|
||||
"color": "#000000"
|
||||
},
|
||||
"value": "Diagnostic"
|
||||
},
|
||||
"Description": "Diagnostic Information"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"borderLeftColor": "white",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "",
|
||||
"color": "#000000"
|
||||
},
|
||||
"value": "Low"
|
||||
},
|
||||
"Description": "Running at reduced capacity",
|
||||
"Status": "Low"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"value": "Medium"
|
||||
},
|
||||
"Description": "Controlled Stop"
|
||||
},
|
||||
{
|
||||
"Color": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "some-class"
|
||||
},
|
||||
"value": "High"
|
||||
},
|
||||
"Description": "Uncontrolled Stop"
|
||||
}
|
||||
],
|
||||
"dragOrderable": false,
|
||||
"enableHeader": false,
|
||||
"headerStyle": {
|
||||
"backgroundColor": "#2B2B2B",
|
||||
"color": "#FFFFFF",
|
||||
"textIndent": "0px"
|
||||
},
|
||||
"pager": {
|
||||
"bottom": false
|
||||
},
|
||||
"rows": {
|
||||
"highlight": {
|
||||
"color": "#FFFFFF",
|
||||
"enabled": false
|
||||
},
|
||||
"style": {
|
||||
"classes": "Background-Styles/Controller"
|
||||
}
|
||||
},
|
||||
"selection": {
|
||||
"enableRowSelection": false,
|
||||
"style": {
|
||||
"fontWeight": "bold"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "ia.display.table"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "EmbeddedView"
|
||||
},
|
||||
"position": {
|
||||
"basis": "320px"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.FilteredViews": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.FilteredViews"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "autStand/PopUp-Views/Legend_Popup/Legend-table"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "FlexContainer_6"
|
||||
},
|
||||
"position": {
|
||||
"basis": "800px",
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"direction": "column"
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "FlexContainer"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 1
|
||||
},
|
||||
"props": {
|
||||
"direction": "column",
|
||||
"style": {
|
||||
"overflow": "visible"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "TabContainer"
|
||||
},
|
||||
"position": {
|
||||
"basis": "1377px"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.currentTabIndex": {
|
||||
"onChange": {
|
||||
"enabled": null,
|
||||
"script": "\tif currentValue.value \u003d\u003d 2:\n\t\tsystem.perspective.closePopup(\"TZyBcXB7\")\n\t\tsystem.perspective.openPopup(\n\t\t id\u003d\"DOO\", \n\t\t view\u003d\"autStand/PopUp-Views/Legend_Popup/Legend-DOO\", \n\t\t title\u003d\"Description of Operations - Amazon BNA8\",\n\t\t modal\u003dTrue,\n\t\t draggable\u003dFalse,\n\t\t resizable\u003dFalse,\n\t\t showCloseIcon\u003dTrue,\n\t\t)"
|
||||
}
|
||||
},
|
||||
"props.tabs[0]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if({session.custom.colours.colour_impaired}\u003dTrue, \u0027Alt Color\u0027, \u0027Color\u0027)"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"menuStyle": {
|
||||
"fontWeight": "bold"
|
||||
},
|
||||
"style": {
|
||||
"classes": "Background-Styles/Controller"
|
||||
},
|
||||
"tabs": [
|
||||
null,
|
||||
"Icons",
|
||||
"DOO"
|
||||
]
|
||||
},
|
||||
"type": "ia.container.tab"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"system": {
|
||||
"onStartup": {
|
||||
"config": {
|
||||
"script": "\tself.getChild(\"TabContainer\").props.currentTabIndex \u003d 0"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"direction": "column",
|
||||
"style": {
|
||||
"backgroundColor": "#3B3B3B",
|
||||
"opacity": 1
|
||||
}
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"borderBottomColor": "var(--neutral-30)",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": "1px"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"paddingBottom": "5px",
|
||||
"paddingLeft": "5px",
|
||||
"paddingRight": "5px",
|
||||
"paddingTop": "5px"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,371 @@
|
||||
{
|
||||
"custom": {
|
||||
"DPM1": true,
|
||||
"DPM2": true,
|
||||
"RACK": false
|
||||
},
|
||||
"params": {
|
||||
"tagProps": [
|
||||
"System/MCM01/Rack",
|
||||
"System/MCM01/IO_Block/DPM/PS3_1_DPM1",
|
||||
"System/MCM01/IO_Block/DPM/PS3_5_DPM1"
|
||||
]
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.DPM1": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"1": "{view.params.tagProps[1]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{1}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": false
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.DPM2": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"1": "{view.params.tagProps[2]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{1}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": false
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.RACK": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"1": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{1}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": false
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagProps": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 894,
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.session.custom.dpm_view_path \u003d self.props.params.view\n\tself.session.custom.show_dpm_device_view \u003d True"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "MCM01"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.5,
|
||||
"width": 0.5,
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.communicationNotFaulted": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.RACK"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"InDown": false,
|
||||
"InLeft": true,
|
||||
"InUp": false,
|
||||
"OutDown": false,
|
||||
"OutRight": false,
|
||||
"OutUp": true
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/EN4TR"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.session.custom.dpm_view_path \u003d self.props.params.view\n\tself.session.custom.show_dpm_device_view \u003d True"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "PS3_5_DPM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.5,
|
||||
"width": 0.5,
|
||||
"x": 0.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.communicationNotFaulted": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.DPM2"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"Down1": false,
|
||||
"Down2": false,
|
||||
"Down3": true,
|
||||
"DownLeft": false,
|
||||
"DownOn": true,
|
||||
"DownRight": false,
|
||||
"InDown": false,
|
||||
"InLeft": true,
|
||||
"InUp": false,
|
||||
"OutDown": true,
|
||||
"OutRight": false,
|
||||
"OutUp": false,
|
||||
"view": "autStand/Custom_Views/Enternet-Windows/DPMS/DPM Devices/MCM01/PS3_5_DPM1"
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/DPM_BLOCK"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.session.custom.dpm_view_path \u003d self.props.params.view\n\tself.session.custom.show_dpm_device_view \u003d True"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "PS3_1_DPM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.5,
|
||||
"width": 0.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.communicationNotFaulted": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.DPM1"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"Down1": false,
|
||||
"Down2": true,
|
||||
"Down3": false,
|
||||
"DownLeft": false,
|
||||
"DownOn": false,
|
||||
"DownRight": false,
|
||||
"InDown": true,
|
||||
"InLeft": false,
|
||||
"InUp": false,
|
||||
"OutDown": false,
|
||||
"OutRight": true,
|
||||
"OutUp": false,
|
||||
"view": "autStand/Custom_Views/Enternet-Windows/DPMS/DPM Devices/MCM01/PS3_1_DPM1"
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/DPM_BLOCK"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM1_label"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0358,
|
||||
"width": 0.0547,
|
||||
"x": 0.552,
|
||||
"y": 0.1
|
||||
},
|
||||
"props": {
|
||||
"text": "PS3_5_DPM1 11.200.1.3",
|
||||
"textStyle": {
|
||||
"fontSize": "1vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM2_label"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0358,
|
||||
"width": 0.0547,
|
||||
"x": 0.036,
|
||||
"y": 0.1
|
||||
},
|
||||
"props": {
|
||||
"text": "PS3_1_DPM1 11.200.1.2",
|
||||
"textStyle": {
|
||||
"fontSize": "1vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.session.custom.dpm_view_path \u003d self.props.params.view\n\tself.session.custom.show_dpm_device_view \u003d True"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "comms"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.5,
|
||||
"width": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"LD": false,
|
||||
"LR": false,
|
||||
"LRD": false,
|
||||
"LRU": false,
|
||||
"LU": false,
|
||||
"On": false,
|
||||
"RD": false,
|
||||
"RLD": false,
|
||||
"RLU": true,
|
||||
"RU": false
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/CommLines"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"position": {
|
||||
"x": 120,
|
||||
"y": -723
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"backgroundColor": "#ffffff"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,290 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"meta": {
|
||||
"name": "VFD"
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": true,
|
||||
"isClickable": false
|
||||
},
|
||||
"status": {
|
||||
"color": {
|
||||
"left": "#B3B3B3",
|
||||
"right": "#D3D3D3"
|
||||
},
|
||||
"showAlways": true,
|
||||
"tagPath": "[default]MCP03/RO02/RO02_03/VFD",
|
||||
"tooltip": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"params.meta": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.meta.name": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 105,
|
||||
"width": 500
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "VFD"
|
||||
},
|
||||
"position": {
|
||||
"height": 64,
|
||||
"width": 64,
|
||||
"x": 67.5,
|
||||
"y": 17.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": false,
|
||||
"isClickable": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.vfd"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_15"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 40
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Status:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 40
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\treturn utils.extractStatus(value)",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_1"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 5
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Name: "
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbName"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \u0027\u0027)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_12"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 75
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Panel:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 75
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.OPC_Server"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \"Unknown\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background-color": "#CFCFCF"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
WITH SCANNERS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp,
|
||||
CONCAT("H",
|
||||
CAST(
|
||||
TIMESTAMPDIFF(
|
||||
HOUR,
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"),
|
||||
DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00")
|
||||
) AS CHAR
|
||||
)
|
||||
) AS hour,
|
||||
COUNT(*) AS total,
|
||||
SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read,
|
||||
SUM(scanner_status = "No Read") AS no_read,
|
||||
SUM(scanner_status = "No Code") AS no_code,
|
||||
SUM(scanner_status = "Multi Label") AS multi_label
|
||||
FROM package_history
|
||||
WHERE s04_timestamp BETWEEN :startDate AND :endDate
|
||||
AND scanner=:scanner
|
||||
GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00")
|
||||
)
|
||||
SELECT
|
||||
start_timestamp,
|
||||
hour,
|
||||
/* Counts: */
|
||||
total AS total_count,
|
||||
good_read AS good_read_count,
|
||||
no_read AS no_read_count,
|
||||
no_code AS no_code_count,
|
||||
multi_label AS multi_label_count,
|
||||
/* PPH: */
|
||||
total AS total_pph,
|
||||
good_read AS good_read_pph,
|
||||
no_read AS no_read_pph,
|
||||
no_code AS no_code_pph,
|
||||
multi_label AS multi_label_pph,
|
||||
/* Percents: */
|
||||
ROUND(total/total, 4) AS total_percent,
|
||||
ROUND(good_read/total, 4) AS good_read_percent,
|
||||
ROUND(no_read/total, 4) AS no_read_percent,
|
||||
ROUND(no_code/total, 4) AS no_code_percent,
|
||||
ROUND(multi_label/total, 4) AS multi_label_percent
|
||||
FROM SCANNERS;
|
||||
@ -0,0 +1,36 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(180deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#555",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#000",
|
||||
"textTransform": "uppercase"
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"pseudo": "hover",
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(0deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#000",
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pseudo": "disabled",
|
||||
"style": {
|
||||
"backgroundImage": "linear-gradient(180deg, rgba(208,208,208,1) 0%, rgba(208,208,208,1) 100%);",
|
||||
"borderColor": "#555",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "2px",
|
||||
"color": "#555555",
|
||||
"cursor": "not-allowed"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,907 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"alwaysShowAll": false,
|
||||
"isClickable": true,
|
||||
"isRightOfSorter": false,
|
||||
"mirror": false,
|
||||
"tagPath": "[default]MCP20/SO01/So01_CH01"
|
||||
},
|
||||
"propConfig": {
|
||||
"params.alwaysShowAll": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.isClickable": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.isRightOfSorter": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.mirror": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 20,
|
||||
"width": 60
|
||||
},
|
||||
"loading": {
|
||||
"mode": "blocking"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openPopup()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Conveyor"
|
||||
},
|
||||
"position": {
|
||||
"height": 20,
|
||||
"width": 38,
|
||||
"x": 22
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/IsChuteMode"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, true)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": false,
|
||||
"isClickable": false,
|
||||
"showLabel": false,
|
||||
"type": "bar"
|
||||
},
|
||||
"status": {
|
||||
"color": "#FFF"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.conveyor"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openPopup()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Gaylord"
|
||||
},
|
||||
"position": {
|
||||
"height": 16,
|
||||
"width": 16,
|
||||
"x": 22,
|
||||
"y": 2
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "try( tag({view.params.tagPath}+\"/CH/IsCartMode\")\r\n\t||tag({view.params.tagPath}+\"/CH/IsGLLMode\"),\r\n\ttrue\r\n)"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": false,
|
||||
"isClickable": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.gaylord"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openPopup()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Chute"
|
||||
},
|
||||
"position": {
|
||||
"height": 20,
|
||||
"rotate": {
|
||||
"anchor": "0 0"
|
||||
},
|
||||
"width": 23
|
||||
},
|
||||
"propConfig": {
|
||||
"props.config.isClickable": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "!{view.params.isClickable}"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/CH/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"showLabel": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.conveyor"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "LS1"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"width": 6,
|
||||
"x": 19,
|
||||
"y": 14
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/LS1/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR Presence)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"showLabel": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.limitswitch"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_GRN"
|
||||
},
|
||||
"position": {
|
||||
"height": 5,
|
||||
"rotate": {
|
||||
"angle": "-90deg"
|
||||
},
|
||||
"width": 5,
|
||||
"x": 10,
|
||||
"y": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"position.x": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if({../BCN1_AMB.meta.visible}, 10, 5)"
|
||||
},
|
||||
"type": "expr"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/GRN/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(-1, 1)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_AMB"
|
||||
},
|
||||
"position": {
|
||||
"height": 5,
|
||||
"rotate": {
|
||||
"angle": "-90deg"
|
||||
},
|
||||
"width": 5,
|
||||
"x": 5,
|
||||
"y": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/AMB/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/AMB/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(-1, 1)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_BLU"
|
||||
},
|
||||
"position": {
|
||||
"height": 5,
|
||||
"rotate": {
|
||||
"angle": "-90deg"
|
||||
},
|
||||
"width": 5,
|
||||
"y": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/BLU/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(-1, 1)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "GS1_ENABLE"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"width": 6,
|
||||
"x": 38,
|
||||
"y": 14
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/GS1/Enable/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.pushbutton"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PE3"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"rotate": {
|
||||
"anchor": "0 50%"
|
||||
},
|
||||
"width": 8,
|
||||
"x": 3,
|
||||
"y": 2
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/PE3/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL 100% Full)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "diffuse"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PE4"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"rotate": {
|
||||
"anchor": "0 50%",
|
||||
"angle": "-45deg"
|
||||
},
|
||||
"width": 8,
|
||||
"x": 5,
|
||||
"y": 10
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/PE4/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL Presence)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "diffuse"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PE2"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"width": 28,
|
||||
"x": 13,
|
||||
"y": 7
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/PE2/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 50% Full)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "diffuse"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PE1B"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"rotate": {
|
||||
"anchor": "0 50%"
|
||||
},
|
||||
"width": 20,
|
||||
"x": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"position.rotate.angle": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.isRightOfSorter"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "-45deg",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "45deg"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"position.y": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.isRightOfSorter"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": 14,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": 0
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/PE1B/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "diffuse"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PE1A"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"rotate": {
|
||||
"anchor": "0 50%"
|
||||
},
|
||||
"width": 20,
|
||||
"x": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"position.rotate.angle": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.isRightOfSorter"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "45deg",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "-45deg"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"position.y": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.isRightOfSorter"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": 0,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": 14
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/PE1A/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "diffuse"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "RS1_RESTART"
|
||||
},
|
||||
"position": {
|
||||
"height": 6,
|
||||
"width": 6,
|
||||
"x": 44,
|
||||
"y": 14
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/RS1/Restart/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.pushbutton"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "FIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 5,
|
||||
"width": 10,
|
||||
"x": 50,
|
||||
"y": 15
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/FIO1/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.eip"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(1, -1)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [
|
||||
{
|
||||
"name": "openPopup",
|
||||
"params": [],
|
||||
"script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"FlexChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"chutedestination\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"isRightOfSorter\": self.view.params.isRightOfSorter,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)"
|
||||
}
|
||||
],
|
||||
"extensionFunctions": null,
|
||||
"messageHandlers": []
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,883 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"Tab_ID": 6,
|
||||
"Table": "Statistics"
|
||||
},
|
||||
"propConfig": {
|
||||
"params.Tab_ID": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "/root/Statistics.props.currentTabIndex"
|
||||
},
|
||||
"type": "property"
|
||||
},
|
||||
"paramDirection": "output",
|
||||
"persistent": true
|
||||
},
|
||||
"params.Table": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "/root/Statistics.meta.name"
|
||||
},
|
||||
"type": "property"
|
||||
},
|
||||
"paramDirection": "output",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 930,
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "Sorter_Statistics"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Shipping Sorter Statistics",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Sorter_Summary"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Shipping Sorter Statistics Com",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Scan_Performance"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 2
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Scanner Performance",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Full_Recirc_Jackpot"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Lane Full Recirc Jackpot",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Total_Scans"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 4
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Total Scans",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Top_Jams"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Top Jams",
|
||||
"zoomLevel": 50
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Divert_VS_Full"
|
||||
},
|
||||
"position": {
|
||||
"tabIndex": 6
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.endDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.params.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.custom.startDate"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"page": 1,
|
||||
"pageCount": 1,
|
||||
"source": "Statistics/Lane Divert vs Full"
|
||||
},
|
||||
"type": "ia.reporting.report-viewer"
|
||||
}
|
||||
],
|
||||
"custom": {
|
||||
"endDate": {
|
||||
"$": [
|
||||
"ts",
|
||||
192,
|
||||
1759323667144
|
||||
],
|
||||
"$ts": 1759241850000
|
||||
},
|
||||
"startDate": {
|
||||
"$": [
|
||||
"ts",
|
||||
192,
|
||||
1759323667144
|
||||
],
|
||||
"$ts": 1759213050000
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Statistics"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.96,
|
||||
"width": 1,
|
||||
"y": 0.04
|
||||
},
|
||||
"propConfig": {
|
||||
"props.tabs": {
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"currentTabIndex": 6,
|
||||
"menuStyle": {
|
||||
"backgroundColor": "#FFFFFFBD",
|
||||
"fontSize": "1.0vmin",
|
||||
"overflowWrap": "break-word",
|
||||
"textAlign": "left"
|
||||
},
|
||||
"style": {
|
||||
"fontFamily": "Arial",
|
||||
"width": "100%"
|
||||
},
|
||||
"tabSize": {
|
||||
"width": 160
|
||||
},
|
||||
"tabStyle": {
|
||||
"active": {
|
||||
"flexBasis": 0,
|
||||
"flexGrow": 1,
|
||||
"fontSize": "1.0vmin"
|
||||
},
|
||||
"disabled": {
|
||||
"fontSize": "1.0vmin"
|
||||
},
|
||||
"inactive": {
|
||||
"flexBasis": 0,
|
||||
"flexGrow": 1,
|
||||
"fontSize": "1.0vmin"
|
||||
}
|
||||
},
|
||||
"tabs": [
|
||||
"Sorter Statistics",
|
||||
"Sorter Summary",
|
||||
"Scan Performance",
|
||||
"Full/Recirc/Jackpot",
|
||||
"Total Scans",
|
||||
"Top Jams",
|
||||
"Divert vs Full"
|
||||
]
|
||||
},
|
||||
"type": "ia.container.tab"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "LPeriod"
|
||||
},
|
||||
"position": {
|
||||
"basis": "60px",
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"color": "#FFFFFF"
|
||||
},
|
||||
"text": "Period:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Period"
|
||||
},
|
||||
"position": {
|
||||
"basis": "140px",
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"dropdownOptionStyle": {
|
||||
"fontSize": "1.5vmin",
|
||||
"overflow": "hidden",
|
||||
"width": "auto"
|
||||
},
|
||||
"options": [
|
||||
{
|
||||
"label": "Past 30 Min",
|
||||
"value": "Past 30 Min"
|
||||
},
|
||||
{
|
||||
"label": "Past Hour",
|
||||
"value": "Past Hour"
|
||||
},
|
||||
{
|
||||
"label": "Past 2 Hour",
|
||||
"value": "Past 2 Hour"
|
||||
},
|
||||
{
|
||||
"label": "Past 4 Hour",
|
||||
"value": "Past 4 Hour"
|
||||
},
|
||||
{
|
||||
"label": "Past 8 Hour",
|
||||
"value": "Past 8 Hour"
|
||||
},
|
||||
{
|
||||
"label": "Current Day",
|
||||
"value": "Current Day"
|
||||
},
|
||||
{
|
||||
"label": "Morning",
|
||||
"value": "Morning"
|
||||
},
|
||||
{
|
||||
"label": "Daylight",
|
||||
"value": "Daylight"
|
||||
},
|
||||
{
|
||||
"label": "Twilight",
|
||||
"value": "Twilight"
|
||||
},
|
||||
{
|
||||
"label": "Night",
|
||||
"value": "Night"
|
||||
},
|
||||
{
|
||||
"label": "Wrap Down",
|
||||
"value": "Wrap Down"
|
||||
},
|
||||
{
|
||||
"label": "Current Sort",
|
||||
"value": "Current Sort"
|
||||
},
|
||||
{
|
||||
"label": "Custom",
|
||||
"value": "Custom"
|
||||
}
|
||||
],
|
||||
"style": {
|
||||
"fontSize": "1.5vmin"
|
||||
},
|
||||
"value": "Past 8 Hour"
|
||||
},
|
||||
"type": "ia.input.dropdown"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Spare_0"
|
||||
},
|
||||
"position": {
|
||||
"basis": "18.1px",
|
||||
"grow": 1
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Start Date"
|
||||
},
|
||||
"position": {
|
||||
"basis": "85px",
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"color": "#FFFFFF"
|
||||
},
|
||||
"text": "Start Date:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"custom": {
|
||||
"Selected": {
|
||||
"$": [
|
||||
"ts",
|
||||
192,
|
||||
1689168205405
|
||||
],
|
||||
"$ts": 1688473380000
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\t\n\tself.custom.Selected \u003d self.props.value"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "StartTime"
|
||||
},
|
||||
"position": {
|
||||
"basis": "190px",
|
||||
"grow": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{../Period.props.value} \u003d \"Custom\""
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.maxDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "now()"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.startDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "../Period.props.value"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "todate(now())",
|
||||
"inputType": "expression",
|
||||
"mappings": [
|
||||
{
|
||||
"input": "\"Past 30 Min\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),-30, \"Minute\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Past Hour\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),-1, \"Hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Past 2 Hour\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),-2, \"Hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Past 4 Hour\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),-4, \"Hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Past 8 Hour\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),-8, \"Hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Current Day\"",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 00:00:00\"))"
|
||||
},
|
||||
{
|
||||
"input": "\"Morning\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"2:30:00\",\r dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 2:30:00\"),todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 2:30:00\")))"
|
||||
},
|
||||
{
|
||||
"input": "\"Daylight\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"7:30:00\", todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 7:30:00\")),todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 7:30:00\")))"
|
||||
},
|
||||
{
|
||||
"input": "\"Twilight\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Hours\"), \"HH:mm:ss\")\u003c\"13:00:00\", todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 13:00:00\")),todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 13:00:00\")))"
|
||||
},
|
||||
{
|
||||
"input": "\"Night\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"18:30:00\", todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 18:30:00\")),todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 18:30:00\")))"
|
||||
},
|
||||
{
|
||||
"input": "\"Wrap Down\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"23:30:00\", todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 23:30:00\")),todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 23:30:00\")))"
|
||||
},
|
||||
{
|
||||
"input": "\"Current Sort\"",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"7:30:00\", todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 2:30:00\")), \r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"13:00:00\",todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 7:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"18:30:00\",todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 13:00:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"23:30:00\",todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 18:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"2:30:00\", todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 23:30:00\")),\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")))))))"
|
||||
},
|
||||
{
|
||||
"input": "\"Custom\"",
|
||||
"output": "{this.props.value}"
|
||||
}
|
||||
],
|
||||
"outputType": "expression",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
},
|
||||
"onChange": {
|
||||
"enabled": null,
|
||||
"script": "\t\n\tif self.getSibling(\"Period\").props.value !\u003d \"Custom\":\n\t\tself.props.value \u003d self.props.startDate"
|
||||
}
|
||||
},
|
||||
"props.value": {
|
||||
"onChange": {
|
||||
"enabled": null,
|
||||
"script": "\t\n\tif system.date.secondsBetween(self.props.value,self.getSibling(\"EndTime\").props.value) \u003e 604800 or system.date.secondsBetween(self.props.value,self.getSibling(\"EndTime\").props.value) \u003c 0:\n\t if system.date.secondsBetween(system.date.addSeconds(self.props.value,604800),system.date.now()) \u003c 0: \n\t self.getSibling(\"EndTime\").props.value \u003d system.date.now()\n\t else:\n\t self.getSibling(\"EndTime\").props.value \u003d system.date.addSeconds(self.props.value,604800)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"dismissOnSelect": false,
|
||||
"formattedValue": "Oct 1, 2025 11:01 AM",
|
||||
"formattedValues": {
|
||||
"date": "Mar 26, 2021",
|
||||
"datetime": "Mar 26, 2021 12:00 AM",
|
||||
"time": "12:00 AM"
|
||||
},
|
||||
"inputProps": {
|
||||
"style": {
|
||||
"fontSize": "1.5vmin"
|
||||
}
|
||||
},
|
||||
"style": {
|
||||
"fontSize": "1.5vmin"
|
||||
},
|
||||
"value": {
|
||||
"$": [
|
||||
"ts",
|
||||
192,
|
||||
1759330916924
|
||||
],
|
||||
"$ts": 1759302116000
|
||||
}
|
||||
},
|
||||
"type": "ia.input.date-time-input"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Spare"
|
||||
},
|
||||
"position": {
|
||||
"basis": "18.1px",
|
||||
"grow": 1
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "End Date"
|
||||
},
|
||||
"position": {
|
||||
"basis": "81px",
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"color": "#FFFFFF"
|
||||
},
|
||||
"text": "End Date:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"custom": {
|
||||
"Selected": "value"
|
||||
},
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\t\n\tself.custom.Selected \u003d self.props.value"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "EndTime"
|
||||
},
|
||||
"position": {
|
||||
"basis": "190px",
|
||||
"grow": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{../Period.props.value} \u003d \"Custom\""
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.endDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "../Period.props.value"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "{this.props.value}",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": "Past 30 Min",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"Hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Past Hour",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Past 2 Hour",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Past 4 Hour",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Past 8 Hour",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Current Day",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
},
|
||||
{
|
||||
"input": "Morning",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"2:30:00\",\r todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 7:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"7:30:00\",\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")), todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 7:30:00\"))))"
|
||||
},
|
||||
{
|
||||
"input": "Daylight",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"7:30:00\",\r todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 13:00:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"13:00:00\",\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")), todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 13:00:00\"))))"
|
||||
},
|
||||
{
|
||||
"input": "Twilight",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"13:00:00\",\r todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 18:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"18:30:00\",\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")), todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 18:30:00\"))))"
|
||||
},
|
||||
{
|
||||
"input": "Night",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"18:30:00\",\r todate(dateFormat(dateArithmetic(now(0),-1, \"Day\"), \"yyyy-MM-dd 23:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"23:30:00\",\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")), todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 23:30:00\"))))"
|
||||
},
|
||||
{
|
||||
"input": "Wrap Down",
|
||||
"output": "if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"23:30:00\",\r todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 2:30:00\")),\r if (dateFormat(dateArithmetic(now(),0, \"Day\"), \"HH:mm:ss\")\u003c\"2:30:00\",\r todate(dateFormat(dateArithmetic(now(),0, \"Day\"), \"yyyy-MM-dd HH:mm:ss\")), todate(dateFormat(dateArithmetic(now(0),0, \"Day\"), \"yyyy-MM-dd 2:30:00\"))))"
|
||||
},
|
||||
{
|
||||
"input": "Current Sort",
|
||||
"output": "todate(dateFormat(dateArithmetic(now(),0, \"hour\"), \"yyyy-MM-dd HH:mm:ss\"))"
|
||||
}
|
||||
],
|
||||
"outputType": "expression",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
},
|
||||
"onChange": {
|
||||
"enabled": null,
|
||||
"script": "\t\n\tif self.getSibling(\"Period\").props.value !\u003d \"Custom\":\n\t\tself.props.value \u003d self.props.endDate"
|
||||
}
|
||||
},
|
||||
"props.maxDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if(dateDiff({../StartTime.props.value},now(),\"day\") \u003c 7, now(),dateArithmetic({../StartTime.props.value}, 7, \"days\"))"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.minDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{../StartTime.props.value}"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"dismissOnSelect": false,
|
||||
"formattedValue": "Oct 1, 2025 7:01 PM",
|
||||
"formattedValues": {
|
||||
"date": "Mar 29, 2021",
|
||||
"datetime": "Mar 29, 2021 1:37 PM",
|
||||
"time": "1:37 PM"
|
||||
},
|
||||
"inputProps": {
|
||||
"style": {
|
||||
"fontSize": "1.5vmin"
|
||||
}
|
||||
},
|
||||
"style": {
|
||||
"fontSize": "1.5vmin"
|
||||
},
|
||||
"value": {
|
||||
"$": [
|
||||
"ts",
|
||||
192,
|
||||
1759330916952
|
||||
],
|
||||
"$ts": 1759330916000
|
||||
}
|
||||
},
|
||||
"type": "ia.input.date-time-input"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "Period_not_Global_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0269,
|
||||
"width": 0.483,
|
||||
"x": 0.0025,
|
||||
"y": 0.0059
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.EndDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "./EndTime.props.value"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"custom.StartDate": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "./StartTime.props.value"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "1.5vmin"
|
||||
},
|
||||
"text": "Highest Sorted PPH at 5 min Interval: 0 pph"
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\t#Passing start and end dates to the reports, this is to avoid re-renders\n\tstartDate \u003d self.getSibling(\"Period_not_Global_0\").custom.StartDate\n\tendDate \u003d self.getSibling(\"Period_not_Global_0\").custom.EndDate\n\t\n\tself.getSibling(\"Statistics\").custom.startDate \u003d startDate\n\tself.getSibling(\"Statistics\").custom.endDate \u003d endDate\n\t"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Button",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Clicking this button generates new report with updated times"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0312,
|
||||
"width": 0.0667,
|
||||
"x": 0.4958,
|
||||
"y": 0.0043
|
||||
},
|
||||
"props": {
|
||||
"primary": false,
|
||||
"text": "Generate New Report",
|
||||
"textStyle": {
|
||||
"fontSize": "1vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"system": {
|
||||
"onStartup": {
|
||||
"config": {
|
||||
"script": "\t#Saving start and end dates on startup of view\n\tstartDate \u003d self.getChild(\"Period_not_Global_0\").custom.StartDate\n\tendDate \u003d self.getChild(\"Period_not_Global_0\").custom.EndDate\n\t\n\tself.getChild(\"Statistics\").custom.startDate \u003d startDate\n\tself.getChild(\"Statistics\").custom.endDate \u003d endDate"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"backgroundColor": "#1A4A5E",
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "#B42222B3",
|
||||
"borderColor": "#000000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": "0.5px",
|
||||
"color": "#FFFFFF",
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"lineHeight": "20px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 7.3 KiB |
@ -0,0 +1,160 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 400,
|
||||
"width": 1600
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "try(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\"No Configs\"\r\n)"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#1A4A5E",
|
||||
"borderBottomColor": "#000000",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": "2px",
|
||||
"color": "#fff",
|
||||
"fontFamily": "Helvetica",
|
||||
"fontSize": 20,
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "center"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\tsystem.perspective.sendMessage(\"export-data\")"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Button"
|
||||
},
|
||||
"position": {
|
||||
"height": 30,
|
||||
"width": 100,
|
||||
"x": "calc(100% - 105px)",
|
||||
"y": 5
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "Export"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "TabContainer"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 40px)",
|
||||
"width": "100%",
|
||||
"y": 40
|
||||
},
|
||||
"propConfig": {
|
||||
"props.tabs": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"struct": {
|
||||
"auth": "{session.props.auth.user.roles}",
|
||||
"tabs": "{[default]Gateway/ConfigTabs}"
|
||||
},
|
||||
"waitOnAll": true
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\"]\n\tauth \u003d value.auth\n\ttabs \u003d value.tabs\n\tisNotAuth \u003d (auth \u003d\u003d None or len(auth) \u003d\u003d 0 or len([i for i in auth if i in roles]) \u003d\u003d 0)\n\treturn [v[\"title\"] for v in utils.datasetToJSON(tabs) if v[\"isVisible\"] and not (v[\"isSupervisor\"] and isNotAuth)]",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "expr-struct"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"menuStyle": {
|
||||
"backgroundColor": "#225E77"
|
||||
},
|
||||
"tabSize": {
|
||||
"width": 140
|
||||
},
|
||||
"tabStyle": {
|
||||
"active": {
|
||||
"backgroundColor": "#2D7D9F",
|
||||
"color": "#FFF",
|
||||
"fontWeight": "bold"
|
||||
},
|
||||
"inactive": {
|
||||
"backgroundColor": "#389CC7",
|
||||
"color": "#FFF"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "ia.container.tab"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "EmbeddedView"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 75px)",
|
||||
"width": "100%",
|
||||
"y": 75
|
||||
},
|
||||
"propConfig": {
|
||||
"props.path": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": " \"Windows/Configs/\"\r\n+replace(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\" \",\r\n\t\"\"\r\n)"
|
||||
},
|
||||
"type": "expr"
|
||||
},
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "Windows/Configs/Shifts"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"min-width": "1000px"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
@ -0,0 +1,59 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 820
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "OXD_Inbound"
|
||||
},
|
||||
"position": {
|
||||
"height": 800,
|
||||
"width": 636,
|
||||
"x": 10,
|
||||
"y": 10
|
||||
},
|
||||
"props": {
|
||||
"path": "Windows/Graphics/Templates/OXD_Inbound",
|
||||
"style": {
|
||||
"classes": "painted-events"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "NavButton_OXD_Singulator"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 128,
|
||||
"x": 630,
|
||||
"y": 79
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"enableTooltip": true,
|
||||
"label": null,
|
||||
"tagPath": "[default]OXDSingulatorStatus",
|
||||
"view": ""
|
||||
},
|
||||
"path": "Templates/Buttons/NavButton",
|
||||
"style": {
|
||||
"transform": "scale(1.5)"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,23 @@
|
||||
WITH GAYLORDS AS (
|
||||
SELECT
|
||||
MIN(timestamp) AS start_timestamp,
|
||||
MAX(timestamp) AS end_timestamp,
|
||||
3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier,
|
||||
gaylord_id AS gaylord,
|
||||
SUM(count) AS total
|
||||
FROM gl_history
|
||||
WHERE timestamp BETWEEN :startDate AND :endDate
|
||||
GROUP BY gaylord_id
|
||||
ORDER BY gaylord_id
|
||||
)
|
||||
SELECT
|
||||
start_timestamp,
|
||||
end_timestamp,
|
||||
gaylord,
|
||||
/* Counts: */
|
||||
total AS total_count,
|
||||
/* PPH: */
|
||||
ROUND(total*pph_multiplier) AS total_pph,
|
||||
/* Percents: */
|
||||
ROUND(total/total, 4) AS total_percent
|
||||
FROM GAYLORDS;
|
||||
@ -0,0 +1,19 @@
|
||||
WITH INDUCTS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:%i:00") AS time,
|
||||
SUM(count) AS total
|
||||
FROM pe_history
|
||||
WHERE timestamp BETWEEN :startDate AND :endDate
|
||||
AND lane_id = :induct
|
||||
GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00")
|
||||
ORDER BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00")
|
||||
)
|
||||
SELECT
|
||||
time,
|
||||
/* Counts: */
|
||||
total AS total_count,
|
||||
/* PPH: */
|
||||
ROUND(total*60) AS total_pph,
|
||||
/* Percents: */
|
||||
ROUND(total/total, 4) AS total_percent
|
||||
FROM INDUCTS;
|
||||
@ -0,0 +1,415 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"alwaysShowAll": false,
|
||||
"chuteNum": "",
|
||||
"isClickable": true,
|
||||
"mirror": false,
|
||||
"tagPath": "MCP05/PS01/PS01_28CH"
|
||||
},
|
||||
"propConfig": {
|
||||
"params.alwaysShowAll": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.chuteNum": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.isClickable": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.mirror": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 92,
|
||||
"width": 94
|
||||
},
|
||||
"loading": {
|
||||
"mode": "blocking"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openPopup()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Conveyor"
|
||||
},
|
||||
"position": {
|
||||
"height": 48,
|
||||
"rotate": {
|
||||
"anchor": "0 0",
|
||||
"angle": 90
|
||||
},
|
||||
"width": 89,
|
||||
"x": 69,
|
||||
"y": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.config.isClickable": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "!{view.params.isClickable}"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.config.showLabel": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/Parameters.LabelFull"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(1, -1) translateY(-100%)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"type": "chute"
|
||||
}
|
||||
},
|
||||
"type": "dex.display.conveyor"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_BLU"
|
||||
},
|
||||
"position": {
|
||||
"height": 16,
|
||||
"width": 16,
|
||||
"y": 3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/BLU/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.props.style.transform"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_AMB"
|
||||
},
|
||||
"position": {
|
||||
"height": 16,
|
||||
"width": 16,
|
||||
"y": 18
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/AMB/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.props.style.transform"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "BCN1_GRN"
|
||||
},
|
||||
"position": {
|
||||
"height": 16,
|
||||
"width": 16,
|
||||
"y": 33
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/BCN1/GRN/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "parent.props.style.transform"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.beacon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Half_PE"
|
||||
},
|
||||
"position": {
|
||||
"height": 10,
|
||||
"rotate": {
|
||||
"angle": 180
|
||||
},
|
||||
"width": 62,
|
||||
"x": 17,
|
||||
"y": 74
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Half_PE/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Jam_PE"
|
||||
},
|
||||
"position": {
|
||||
"height": 10,
|
||||
"rotate": {
|
||||
"angle": 180
|
||||
},
|
||||
"width": 62,
|
||||
"x": 17,
|
||||
"y": 6
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Jam_PE/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Full_PE"
|
||||
},
|
||||
"position": {
|
||||
"height": 10,
|
||||
"rotate": {
|
||||
"angle": 180
|
||||
},
|
||||
"width": 62,
|
||||
"x": 17,
|
||||
"y": 36
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Full_PE/Graphics"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.mirror"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "scale(-1, 1)"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [
|
||||
{
|
||||
"name": "openPopup",
|
||||
"params": [],
|
||||
"script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)"
|
||||
}
|
||||
],
|
||||
"extensionFunctions": null,
|
||||
"messageHandlers": []
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
WITH SORTERS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time,
|
||||
COUNT(*) AS total,
|
||||
/* PPH Data */
|
||||
SUM(sort_code="Success") AS success,
|
||||
SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs,
|
||||
SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational,
|
||||
SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine,
|
||||
SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner,
|
||||
/* Problem Solve Data */
|
||||
SUM(sort_code="No Read") AS no_read,
|
||||
SUM(sort_code="No Code") AS no_code,
|
||||
SUM(sort_code="Multi Label") AS multi_label,
|
||||
/* Sorter Error Data */
|
||||
SUM(sort_code="Gap Err") AS gap_err,
|
||||
SUM(sort_code="Div Fail") AS div_fail,
|
||||
SUM(sort_code="Dest None") AS dest_none,
|
||||
SUM(sort_code="Lost") AS lost
|
||||
FROM package_history
|
||||
WHERE s04_timestamp BETWEEN :startDate AND :endDate
|
||||
AND sorter = :sorter
|
||||
GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
), DATA AS (
|
||||
SELECT
|
||||
total,
|
||||
/* PPH: */
|
||||
ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph,
|
||||
/* Problem Solve Percents: */
|
||||
no_read+no_code+multi_label AS scanner,
|
||||
/* Sorter Error Percents: */
|
||||
gap_err+div_fail+dest_none+lost AS sorter
|
||||
FROM SORTERS
|
||||
WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW)
|
||||
)
|
||||
SELECT
|
||||
MAX(total_pph) AS total_pph,
|
||||
/* Problem Solve Percents: */
|
||||
ROUND(SUM(scanner)/SUM(total), 4) AS scanner,
|
||||
/* Sorter Error Percents: */
|
||||
ROUND(SUM(sorter)/SUM(total), 4) AS sorter
|
||||
FROM DATA;
|
||||
@ -0,0 +1,7 @@
|
||||
SELECT
|
||||
concat(date(alltable.t_stamp), ' ', hour(alltable.t_stamp), ':00') AS StartTimestamp,
|
||||
concat('H', TIMESTAMPDIFF(HOUR, DATE_FORMAT(alltable.t_stamp,"%Y-%m-%d %H:00:00"), DATE_FORMAT(now(),"%Y-%m-%d %H:00:00"))) AS Hour,
|
||||
COUNT(*) AS Total_count
|
||||
FROM alltable
|
||||
WHERE alltable.t_stamp BETWEEN :starttime AND :endtime
|
||||
GROUP BY date(alltable.t_stamp), hour(alltable.t_stamp)
|
||||
|
After Width: | Height: | Size: 79 B |
|
After Width: | Height: | Size: 95 B |
|
After Width: | Height: | Size: 129 B |
|
After Width: | Height: | Size: 51 KiB |
@ -0,0 +1,17 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--warning)",
|
||||
"borderTopLeftRadius": "4px",
|
||||
"borderTopRightRadius": "4px",
|
||||
"borderBottomLeftRadius": "4px",
|
||||
"borderBottomRightRadius": "4px",
|
||||
"color": "var(--neutral-10)",
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"lineHeight": "16px",
|
||||
"padding": "2px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 41 KiB |
@ -0,0 +1,521 @@
|
||||
{
|
||||
"custom": {
|
||||
"color": "#C2C2C2",
|
||||
"priority": "No Active Alarms",
|
||||
"state": "Offline"
|
||||
},
|
||||
"params": {
|
||||
"demoColor": -1,
|
||||
"tagProps": [
|
||||
"System/MCM02/Chute/S03_CH101",
|
||||
"System/MCM01/VFD/PS3_2_VFD1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(\r\n {view.params.demoColor} \u003e\u003d 0,\r\n {view.params.demoColor},\r\n coalesce({value}, 0)\r\n)\r\n",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#000000",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "#C2C2C2"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "#FF0000"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "#FFA500"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "#0008FF"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "#00FF00"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "#FFF700"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "#87CEEB"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "#90EE90"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "#964B00"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "#FFFFFF"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "#000000"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "#8B0000"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "#808080"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "#8B8000"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "#006400"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "#FFFFC5"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "#00008B"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "#FF7276"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "#556B2F"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "#B43434"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "#4682B4"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "#FFD700"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.priority": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "No Active Alarms"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "High"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Medium"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Low"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Diagnostic"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.state": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},-1)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "Offline",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "Closed"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "Actuated"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Communication Faulted"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Conveyor Running In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Disabled"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "Disconnected"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "Enabled Not Running"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "Encoder Fault"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "Energy Management"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "ESTOP Was Actuated"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "EStopped"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "EStopped Locally"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "Extended Faulted"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "Full"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "Gaylord Start Pressed"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "Jam Fault"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "Jammed"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "Loading Allowed"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "Loading Not Allowed"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "Low Air Pressure Fault Was Present"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 22,
|
||||
"output": "Conveyor Stopped In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 23,
|
||||
"output": "Motor Faulted"
|
||||
},
|
||||
{
|
||||
"input": 24,
|
||||
"output": "Motor Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 25,
|
||||
"output": "Normal"
|
||||
},
|
||||
{
|
||||
"input": 26,
|
||||
"output": "Off Inactive"
|
||||
},
|
||||
{
|
||||
"input": 27,
|
||||
"output": "Open"
|
||||
},
|
||||
{
|
||||
"input": 28,
|
||||
"output": "PLC Ready To Run"
|
||||
},
|
||||
{
|
||||
"input": 29,
|
||||
"output": "Package Release Pressed"
|
||||
},
|
||||
{
|
||||
"input": 30,
|
||||
"output": "Power Branch Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 31,
|
||||
"output": "Pressed"
|
||||
},
|
||||
{
|
||||
"input": 32,
|
||||
"output": "Ready To Receive"
|
||||
},
|
||||
{
|
||||
"input": 33,
|
||||
"output": "Running"
|
||||
},
|
||||
{
|
||||
"input": 34,
|
||||
"output": "Started"
|
||||
},
|
||||
{
|
||||
"input": 35,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 36,
|
||||
"output": "System Started"
|
||||
},
|
||||
{
|
||||
"input": 37,
|
||||
"output": "Unknown"
|
||||
},
|
||||
{
|
||||
"input": 38,
|
||||
"output": "VFD Fault"
|
||||
},
|
||||
{
|
||||
"input": 39,
|
||||
"output": "Conveyor Running In Power Saving Mode"
|
||||
},
|
||||
{
|
||||
"input": 40,
|
||||
"output": "Conveyor Jogging In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 41,
|
||||
"output": "VFD Reset Required"
|
||||
},
|
||||
{
|
||||
"input": 42,
|
||||
"output": "Jam Reset Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 43,
|
||||
"output": "Start Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 44,
|
||||
"output": "Stop Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 45,
|
||||
"output": "No Container"
|
||||
},
|
||||
{
|
||||
"input": 46,
|
||||
"output": "Ready To Be Enabled"
|
||||
},
|
||||
{
|
||||
"input": 47,
|
||||
"output": "Half Full"
|
||||
},
|
||||
{
|
||||
"input": 48,
|
||||
"output": "Enabled"
|
||||
},
|
||||
{
|
||||
"input": 49,
|
||||
"output": "Tipper Faulted"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.demoColor": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagProps": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 50,
|
||||
"width": 50
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "drawing"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.elements[1].fill.paint": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.color"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"elements": [
|
||||
{
|
||||
"id": "defs1",
|
||||
"name": "defs1",
|
||||
"type": "defs"
|
||||
},
|
||||
{
|
||||
"fill": {},
|
||||
"height": "100%",
|
||||
"id": "rect1",
|
||||
"name": "rect1",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "0"
|
||||
},
|
||||
"type": "rect",
|
||||
"width": "100%",
|
||||
"x": 0,
|
||||
"y": "0"
|
||||
}
|
||||
],
|
||||
"preserveAspectRatio": "none",
|
||||
"viewBox": "0 0 50 50"
|
||||
},
|
||||
"type": "ia.shapes.svg"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\t#create devices and tags lists for the conveyor\n\tprops \u003d self.view.params.tagProps[0]\n\tautStand.devices.build_device_mapping(props)\n\tdevice_table_dataset \u003d autStand.devices.build_device_table(self)\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props, section \u003d \"conveyor\")\n\tsystem.perspective.openDock(\u0027Docked-East-Conv\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps, \"devices\": device_table_dataset, \"tags\":tags_table_dataset})"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root",
|
||||
"tooltip": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.tooltip.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"borderStyle": "solid",
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
SELECT
|
||||
a.id AS ID,
|
||||
a.eventtime AS StartTimestamp,
|
||||
clr.eventtime AS EndTimestamp,
|
||||
|
||||
-- Duration calculation (HH:MM:SS format)
|
||||
CONCAT(
|
||||
LPAD(FLOOR(TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) / 3600), 2, '0'), ':',
|
||||
LPAD(FLOOR((TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) % 3600) / 60), 2, '0'), ':',
|
||||
LPAD( (TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) % 60) , 2, '0')
|
||||
) AS Duration,
|
||||
|
||||
-- Description combining display path and alarm name
|
||||
CONCAT(REPLACE(a.displaypath, '_', '-'), ' ', SUBSTRING_INDEX(a.source, ':/alm:', -1)) AS Description,
|
||||
|
||||
-- Priority mapping
|
||||
CASE a.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,
|
||||
|
||||
-- Tag information
|
||||
CONCAT(a.displaypath, '.HMI.Alarm.', SUBSTRING_INDEX(aed.strValue, '/', -1)) AS Tag,
|
||||
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location,
|
||||
aed.strValue AS FullTag,
|
||||
a.displaypath AS Device
|
||||
|
||||
FROM alarm_events a
|
||||
|
||||
-- Join to get the earliest clear event for each alarm
|
||||
LEFT JOIN (
|
||||
SELECT eventid, MIN(eventtime) AS eventtime
|
||||
FROM alarm_events
|
||||
WHERE eventtype = 1
|
||||
GROUP BY eventid
|
||||
) AS clr ON clr.eventid = a.eventid
|
||||
|
||||
-- Join to get additional tag data
|
||||
LEFT JOIN (
|
||||
SELECT id, strValue
|
||||
FROM alarm_event_data
|
||||
WHERE propname = 'myTag'
|
||||
GROUP BY id
|
||||
) AS aed ON aed.id = a.id
|
||||
|
||||
WHERE
|
||||
-- Only active alarm events (not clear events)
|
||||
a.eventtype = 0
|
||||
|
||||
-- Exclude system startup alarms
|
||||
AND a.displaypath NOT LIKE '%System Startup%'
|
||||
AND a.source NOT LIKE '%System Startup%'
|
||||
|
||||
-- Simple date filtering using named parameters
|
||||
AND (
|
||||
-- Case 1: Alarm was cleared within the specified time range
|
||||
(clr.eventtime IS NOT NULL AND clr.eventtime >= :starttime AND clr.eventtime < :endtime)
|
||||
OR
|
||||
-- Case 2: Alarm is still active (no clear time) and started within or before the range
|
||||
(clr.eventtime IS NULL AND a.eventtime < :endtime)
|
||||
)
|
||||
|
||||
-- Order by end time (most recent clears first), active alarms (NULL) at top, then by ID
|
||||
ORDER BY clr.eventtime IS NULL DESC, clr.eventtime DESC, a.id DESC
|
||||
|
||||
-- Pagination support (100 records per page)
|
||||
-- Pagination support: request one extra row to detect "has next" on the client
|
||||
LIMIT :page_size_plus1 OFFSET :offset;
|
||||
|
||||
@ -0,0 +1,964 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/DPM/PS3_5_DPM1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_3_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_4_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_5_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_6_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_7_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_8_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_9AL_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_9B_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_10_SIO1",
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_11_SIO1",
|
||||
"System/MCM01/IO_BLOCK/FIO/PDP01_FIOM_1"
|
||||
]
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 1080,
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params.DPMNotFaulted": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
},
|
||||
{
|
||||
"input": true,
|
||||
"output": false
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[0]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[1]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[10]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[11]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[1]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[2]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[2]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[3]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[3]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[4]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[4]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[5]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[5]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[6]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[6]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[7]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[7]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[8]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
},
|
||||
{
|
||||
"input": true,
|
||||
"output": false
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[8]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[9]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.params.con_lines[9]": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[10]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Faulted"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},true)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": false,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": true
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"con_lines": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/DPM/PS3_5_DPM1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/DPM_TO_HUB",
|
||||
"style": {
|
||||
"userSelect": "none"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_3_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.0256,
|
||||
"y": 0.0056
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.54",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_3_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_4_SIO1 "
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.0715,
|
||||
"y": 0.0056
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.55",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_4_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_5_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.1148,
|
||||
"y": 0.0056
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.56",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_5_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_6_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.155,
|
||||
"y": 0.0074
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.57",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_6_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_7_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.1957,
|
||||
"y": 0.0047
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.58",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_7_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_8_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.2368,
|
||||
"y": 0.0074
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.59",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_8_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_9AL_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.2766,
|
||||
"y": 0.0064
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.60",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_9AL_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_9B_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"rotate": {
|
||||
"anchor": "-607% 50%"
|
||||
},
|
||||
"width": 0.0349,
|
||||
"x": 0.3167,
|
||||
"y": 0.0064
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.61",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_9B_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM_label"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0694,
|
||||
"width": 0.101,
|
||||
"x": 0.7498,
|
||||
"y": 0.6527
|
||||
},
|
||||
"props": {
|
||||
"text": "PS3_5_DPM1",
|
||||
"textStyle": {
|
||||
"fontSize": "2vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_10_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.3578,
|
||||
"y": 0.0064
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.62",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_10_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PS3_11_SIO1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.3979,
|
||||
"y": 0.0064
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.63",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/SIO/PS3_11_SIO1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "Communication_Faulted_Text"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.4836,
|
||||
"width": 0.8826,
|
||||
"x": 0.0701,
|
||||
"y": -0.0785
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#1A1A1A",
|
||||
"overflow": "hidden",
|
||||
"whiteSpace": "normal",
|
||||
"wordBreak": "break-all"
|
||||
},
|
||||
"text": "Communication Faulted",
|
||||
"textStyle": {
|
||||
"fontFamily": "inherit",
|
||||
"fontSize": "1.5vmin",
|
||||
"textAlign": "start"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Communication_Not_Faulted_Text"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.6066,
|
||||
"width": 0.9032,
|
||||
"x": 0.0698,
|
||||
"y": 0.247
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#1A1A1A",
|
||||
"overflow": "hidden",
|
||||
"whiteSpace": "normal",
|
||||
"wordBreak": "break-all"
|
||||
},
|
||||
"text": "Communication Not Faulted",
|
||||
"textStyle": {
|
||||
"fontFamily": "inherit",
|
||||
"fontSize": "1.5vmin",
|
||||
"textAlign": "start"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0242,
|
||||
"width": 0.0508,
|
||||
"x": 0.0122,
|
||||
"y": 0.176
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#FF0000"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "CoordinateContainer_1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0242,
|
||||
"width": 0.0508,
|
||||
"x": 0.0122,
|
||||
"y": 0.5164
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#00FF00"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "CoordinateContainer"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1365,
|
||||
"width": 0.9083,
|
||||
"x": 0.0083,
|
||||
"y": 0.7752
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "DPM_label_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0694,
|
||||
"width": 0.101,
|
||||
"x": 0.7498,
|
||||
"y": 0.7085
|
||||
},
|
||||
"props": {
|
||||
"text": "11.200.1.3",
|
||||
"textStyle": {
|
||||
"fontSize": "2vmin"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "PDP01_FIOM1"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.1667,
|
||||
"width": 0.0349,
|
||||
"x": 0.437,
|
||||
"y": 0.0064
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"IP": "11.200.1.64",
|
||||
"tagProps": [
|
||||
"System/MCM01/IO_BLOCK/FIO/PDP01_FIOM_1",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"path": "autStand/Custom_Views/Enternet-Windows/Components/FIO_SIO"
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"position": {
|
||||
"x": 0.6348,
|
||||
"y": -0.1546
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,130 @@
|
||||
################################################################
|
||||
################################################################
|
||||
## Version: 1.0 / Author: Dillon Uzar
|
||||
##
|
||||
## DESC: For use in WCS Sorting Lane Lookup & Recording
|
||||
## WARN: Modifying code may cause system to function incorrectly
|
||||
################################################################
|
||||
################################################################
|
||||
|
||||
from __future__ import with_statement
|
||||
import csv
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import system
|
||||
import time
|
||||
from os import path
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Constants
|
||||
#######################################################
|
||||
|
||||
# Logger:
|
||||
LOG = system.util.logger("WCS Sorting Handler")
|
||||
|
||||
# Defaults for function arguments:
|
||||
PROGRAM_PATH = ""
|
||||
CARTON_PATH = "WCS_Package"
|
||||
DEFAULT_DEVICE = "MCP20"
|
||||
DEFAULT_OPC_SERVER = "Ignition OPC UA Server"
|
||||
|
||||
# Configuration variables:
|
||||
MAX_CARTONS = 100 # Max possible carton IDs
|
||||
MAX_BARCODE_SIZE = 82 # Max possible size of full barcode
|
||||
|
||||
# For extracting PLC info:
|
||||
PACKAGE_DATA = [
|
||||
#["Induct_ID", "induct"], # The induct the package was inducted from
|
||||
#["Scanner_ID", "scanner"], # The scanner the package was scanned from
|
||||
#["Sorter_ID", "sorter"], # The sorter the package was sorted from
|
||||
["BCR_Img_ID", "bcr_imgid"], # Barcode reader, sequence ID
|
||||
["BCR_Seq_ID", "bcr_seqid"], # Barcode reader, image ID
|
||||
["Length", "pkg_length"], # Package length in units of 1/10". Only populated if available, use 0 if not
|
||||
["Width", "pkg_width"], # Package width in units of 1/10". Only populated if available, use 0 if not
|
||||
["Height", "pkg_height"], # Package height in units of 1/10". Only populated if available, use 0 if not
|
||||
["Carriers", "carriers"], # Num of carriers (trays/shoes) on sorter that the package is occupying. Only populated if available, use 0 if not
|
||||
["Gap_Leading", "gap_leading"], # Leading edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value
|
||||
["Gap_Trailing", "gap_trailing"], # Trailing edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value
|
||||
["S01_Barcode", "s01_barcode"], # The barcode sent in the S01 message
|
||||
["S02_Req_Dest_ID", "s02_req_dest"], # The requested destination ID sent in the S02 message
|
||||
["S02_Alt_Dest_ID", "s02_alt_dest"], # The alternate destination ID sent in the S02 message
|
||||
["S04_PLC_ID", "s04_plc_id"], # Internal PLC number used to track packages and cross reference to the Host ID
|
||||
["S04_Host_ID", "s04_host_id"], # The PLC record number sent in the S04 message, (1 - 9999)
|
||||
["S04_Req_Dest_ID", "s04_req_dest"], # The requested destination ID sent in the S04 message
|
||||
["S04_Act_Dest_ID", "s04_act_dest"], # The actual destination ID sent in the S04 message
|
||||
["S04_Sort_Code", "s04_sort_code"], # The reason code sent in the S04 message
|
||||
["Req_Dest_Reason", "req_dest_reason"], # See Destination Reason Bit-Map sheet
|
||||
["Alt_Dest_Reason", "alt_dest_reason"] # See Destination Reason Bit-Map sheet
|
||||
]
|
||||
TIMESTAMP_DATA = [
|
||||
["S01_Timestamp_H", "s01_timestamp"], # The timestamp sent in the S01 message, Upper 32-bits, UTS in microseconds
|
||||
["S01_Timestamp_L", "s01_timestamp"], # The timestamp sent in the S01 message, Lower 32-bits, UTS in microseconds
|
||||
["S02_Timestamp_H", "s02_timestamp"], # The timestamp sent in the S02 message, Upper 32-bits, UTS in microseconds
|
||||
["S02_Timestamp_L", "s02_timestamp"], # The timestamp sent in the S02 message, Lower 32-bits, UTS in microseconds
|
||||
["S04_Timestamp_H", "s04_timestamp"], # The timestamp sent in the S04 message, Upper 32-bits, UTS in microseconds
|
||||
["S04_Timestamp_L", "s04_timestamp"] # The timestamp sent in the S04 message, Lower 32-bits, UTS in microseconds
|
||||
]
|
||||
# Generate array of paths to read:
|
||||
PACKAGE_PATHS = [v[0] for v in PACKAGE_DATA]
|
||||
TIMESTAMP_PATHS = [v[0] for v in TIMESTAMP_DATA]
|
||||
DATA_PATHS = PACKAGE_PATHS + TIMESTAMP_PATHS
|
||||
|
||||
# For inserting data into database:
|
||||
PACKAGE_COLS = [v[1] for v in PACKAGE_DATA]
|
||||
PACKAGE_VALS = ["?"]*len(PACKAGE_COLS)
|
||||
TIMESTAMP_COLS = [TIMESTAMP_DATA[i][1] for i in range(len(TIMESTAMP_DATA)) if TIMESTAMP_DATA[i][1] in (v[1] for v in TIMESTAMP_DATA[:i])]
|
||||
TIMESTAMP_VALS = ["FROM_UNIXTIME(((?&(POWER(2, 32)-1))*POWER(2, 32)+(?&(POWER(2, 32)-1)))/1000000)"]*len(TIMESTAMP_COLS)
|
||||
UNIQUE_COLS = ["trackid", "induct", "scanner", "sorter"] + PACKAGE_COLS + TIMESTAMP_COLS
|
||||
UNIQUE_VALS = ["?"]*4 + PACKAGE_VALS + TIMESTAMP_VALS
|
||||
CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO package_history (" + ",".join(UNIQUE_COLS) + ") VALUES (" + ",".join(UNIQUE_VALS) + ")"
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### Parsing Utils
|
||||
#######################################################
|
||||
|
||||
def isNoRead(field):
|
||||
return field.replace("?","") == ""
|
||||
|
||||
def isMultiRead(field):
|
||||
return field.replace("#","") == ""
|
||||
|
||||
def isBadRead(field):
|
||||
return (field == None or isNoRead(field) or isMultiRead(field))
|
||||
|
||||
def logTime(title, trackID, seconds):
|
||||
millisec = round(seconds * 1000, 1)
|
||||
LOG.info("%s[ID=%s] took %sms to process" % (title, trackID, millisec))
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
#######################################################
|
||||
#### PLC Event Handling
|
||||
#######################################################
|
||||
|
||||
def processConfirmAsync(trackID, induct, scanner, sorter, program=PROGRAM_PATH, carton=CARTON_PATH, device=DEFAULT_DEVICE, opcServer=DEFAULT_OPC_SERVER):
|
||||
# This function handles confirm events, and logs the event in SQL
|
||||
# Ensure ID is valid
|
||||
if trackID > 0 and trackID < MAX_CARTONS:
|
||||
def processConfirmInner():
|
||||
start_time = time.time()
|
||||
# Setup carton location:
|
||||
devicePrefix = "[" + device + "]" + program
|
||||
cartonPrefix = devicePrefix + carton + "[" + str(trackID) + "]"
|
||||
# Read all carton data directly:
|
||||
tags = [cartonPrefix + "." + path for path in DATA_PATHS]
|
||||
values = [trackID, induct, scanner, sorter] + [value.value for value in system.opc.readValues(opcServer, tags)]
|
||||
logTime("Confirm[PLC_READ]", trackID, time.time() - start_time)
|
||||
start_time = time.time()
|
||||
# Log confirm event in SQL:
|
||||
# Insert into Package History:
|
||||
system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, values)
|
||||
logTime("Confirm[DB_INSERT]", trackID, time.time() - start_time)
|
||||
|
||||
system.util.invokeAsynchronous(processConfirmInner)
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "var(--warning)",
|
||||
"borderStyle": "none",
|
||||
"boxShadow": "none",
|
||||
"margin": "5px",
|
||||
"textTransform": "uppercase"
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"pseudo": "hover",
|
||||
"style": {
|
||||
"backgroundColor": "var(--warning)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pseudo": "active",
|
||||
"style": {
|
||||
"color": "var(--neutral-30)"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,678 @@
|
||||
{
|
||||
"custom": {
|
||||
"scale": 1,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"params": {
|
||||
"controls": {
|
||||
"click": true,
|
||||
"in": true,
|
||||
"out": true,
|
||||
"pan": true,
|
||||
"reset": true,
|
||||
"zoom": true
|
||||
},
|
||||
"panning": true,
|
||||
"viewParams": {
|
||||
"highlightTagPath": "value"
|
||||
},
|
||||
"viewPath": "autStand/Detailed_Views/MCM-Views/MCM01"
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.scale": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{page.props.dimensions.viewport.width} / 1920"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\t#this script is to see the view in the DESIGNER!!!\n\tif value \u003d\u003d 0.0:\n\t\treturn 1\n\treturn value ",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "expr"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.x": {
|
||||
"persistent": true
|
||||
},
|
||||
"custom.y": {
|
||||
"persistent": true
|
||||
},
|
||||
"params.controls": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.panning": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.viewParams": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.viewPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 1080,
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "EmbeddedView"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.viewParams"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.path": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.viewPath"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.style.transform": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "\"scale(\"+{view.custom.scale}+\") translate(\"+{view.custom.x}+\"px,\"+{view.custom.y}+\"px)\""
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"overflow": "visible",
|
||||
"transition": "transform 100ms linear"
|
||||
},
|
||||
"useDefaultViewHeight": true,
|
||||
"useDefaultViewWidth": true
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onPointerMove": {
|
||||
"config": {
|
||||
"script": "\tif event.buttons \u003e 0:\n\t\tself.view.custom.x +\u003d event.movementX/self.view.custom.scale\n\t\tself.view.custom.y +\u003d event.movementY/self.view.custom.scale"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
},
|
||||
"onWheel": {
|
||||
"config": {
|
||||
"script": "\tif event.deltaY \u003c 0:\n\t\tself.view.custom.scale *\u003d 1.1\n\telse:\n\t\tself.view.custom.scale /\u003d 1.1"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Overlay"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.panning"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"alignItems": "flex-end",
|
||||
"justify": "flex-end",
|
||||
"style": {
|
||||
"cursor": "grab",
|
||||
"user-select": "none"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.view.custom.scale \u003d 1\n\tself.view.custom.x \u003d 0\n\tself.view.custom.y \u003d 0"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Reset",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Reset zoom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.reset"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "material/zoom_out_map",
|
||||
"style": {
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"mix-blend-mode": "difference"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.view.custom.scale /\u003d 1.1"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Out",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Zoom out"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.0183
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.out"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "material/zoom_out",
|
||||
"style": {
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"mix-blend-mode": "difference"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.view.custom.scale *\u003d 1.1"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "In",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Zoom in"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.0366
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.in"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "material/zoom_in",
|
||||
"style": {
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"mix-blend-mode": "difference"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Zoom"
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0469,
|
||||
"x": 0.0549,
|
||||
"y": 0.0028
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.zoom"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.placeholder.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "round({view.custom.scale}*100)+\"%\""
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"props.value": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"bidirectional": true,
|
||||
"path": "view.custom.scale"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"dropdownOptionStyle": {
|
||||
"borderStyle": "none",
|
||||
"fontSize": "10px",
|
||||
"textAlign": "center"
|
||||
},
|
||||
"options": [
|
||||
{
|
||||
"label": "25%",
|
||||
"value": 0.25
|
||||
},
|
||||
{
|
||||
"label": "50%",
|
||||
"value": 0.5
|
||||
},
|
||||
{
|
||||
"label": "100%",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"label": "150%",
|
||||
"value": 1.5
|
||||
},
|
||||
{
|
||||
"label": "200%",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"label": "500%",
|
||||
"value": 5
|
||||
}
|
||||
],
|
||||
"placeholder": {},
|
||||
"search": {
|
||||
"enabled": false
|
||||
},
|
||||
"style": {
|
||||
"backgroundColor": "#FFFFFF00",
|
||||
"borderStyle": "none",
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"fontSize": "1.5vmin",
|
||||
"mix-blend-mode": "difference",
|
||||
"user-select": "none"
|
||||
},
|
||||
"textAlign": "center"
|
||||
},
|
||||
"type": "ia.input.dropdown"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.view.params.panning \u003d True"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Pan",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Enable panning"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.1025
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.pan"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.style.borderWidth": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.panning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": 0,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": 1
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.style.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.panning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "#555555",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "#F79200"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "material/pan_tool",
|
||||
"style": {
|
||||
"borderBottomLeftRadius": 8,
|
||||
"borderBottomRightRadius": 8,
|
||||
"borderStyle": "solid",
|
||||
"borderTopLeftRadius": 8,
|
||||
"borderTopRightRadius": 8,
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"margin": 2,
|
||||
"mix-blend-mode": "difference",
|
||||
"padding": 4
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.view.params.panning \u003d False"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Click",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Enabe interaction"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.1223
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.controls.click"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.style.borderWidth": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.panning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": 0,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": 1
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.style.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.panning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "#555555",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "#F79200"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "material/touch_app",
|
||||
"style": {
|
||||
"borderBottomLeftRadius": 8,
|
||||
"borderBottomRightRadius": 8,
|
||||
"borderStyle": "solid",
|
||||
"borderTopLeftRadius": 8,
|
||||
"borderTopRightRadius": 8,
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"margin": 2,
|
||||
"mix-blend-mode": "difference",
|
||||
"paddingBottom": 4,
|
||||
"paddingTop": 0
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\t\n\t# Read current rotation string\n\tcurrentRotation \u003d self.session.custom.rotation\n\t\n\tcurrentAngle \u003d currentRotation.replace(\"deg\", \"\")\n\t\n\t# Increment by 90° and wrap around 360\n\tnewAngle \u003d (int(currentAngle) + 90) % 360\n\t\n\t# Save back as string with \"deg\"\n\tself.session.custom.rotation \u003d str(newAngle) + \"deg\"\n\t\n\t#RESET \n\tself.view.custom.x \u003d 0\n\tself.view.custom.y \u003d 0"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Rotate",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Rotate a view"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.1404,
|
||||
"y": 0.0018
|
||||
},
|
||||
"props": {
|
||||
"path": "material/rotate_right",
|
||||
"style": {
|
||||
"alignSelf": "center",
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"margin": 1,
|
||||
"mix-blend-mode": "difference"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.session.custom.rotation \u003d \"0deg\""
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Reset-rotation",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"text": "Reset rotation"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"height": 0.0324,
|
||||
"width": 0.0182,
|
||||
"x": 0.1595,
|
||||
"y": 0.0018
|
||||
},
|
||||
"props": {
|
||||
"path": "material/360",
|
||||
"style": {
|
||||
"alignSelf": "center",
|
||||
"color": "#555555",
|
||||
"cursor": "pointer",
|
||||
"filter": "invert(100%)",
|
||||
"margin": 1,
|
||||
"mix-blend-mode": "difference"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.icon"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"position": {
|
||||
"x": -0.3026,
|
||||
"y": -0.0454
|
||||
},
|
||||
"props": {
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"overflow": "hidden",
|
||||
"overflowX": "hidden",
|
||||
"overflowY": "hidden"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [],
|
||||
"extensionFunctions": null,
|
||||
"messageHandlers": [
|
||||
{
|
||||
"messageType": "focusDevice",
|
||||
"pageScope": false,
|
||||
"script": "\tself.view.custom.x \u003d payload[\"x\"]\n\tself.view.custom.y \u003d payload[\"y\"]\n\tself.view.custom.scale \u003d payload[\"scale\"]",
|
||||
"sessionScope": true,
|
||||
"viewScope": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,706 @@
|
||||
{
|
||||
"custom": {
|
||||
"class": 2
|
||||
},
|
||||
"params": {
|
||||
"classDropdownValue": [
|
||||
"Error"
|
||||
],
|
||||
"titleExtra": "0 rows"
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.class": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.classDropdownValue"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\tvalue \u003d list(value)\n\tif \"Message\" in value:\n\t\treturn 0\n\telif \"Warning\" in value:\n\t\treturn 1\n\telif \"Error\" in value:\n\t\treturn 2\n\telse:\n\t\treturn 0",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.classDropdownValue": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.classDropdownValue[0]": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.titleExtra": {
|
||||
"paramDirection": "output",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 324,
|
||||
"width": 1600
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onRowDoubleClick": {
|
||||
"config": {
|
||||
"script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Table"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.data": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"parameters": {
|
||||
"class": "{view.custom.class}",
|
||||
"endDate": "{session.custom.timewidget.endDate}",
|
||||
"priority": "if({view.custom.class} \u003e 0, 1, 0)",
|
||||
"startDate": "{session.custom.timewidget.startDate}"
|
||||
},
|
||||
"queryPath": "Alarms/History"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value",
|
||||
"type": "script"
|
||||
},
|
||||
{
|
||||
"code": "\toutput_json \u003d []\n\t# Transform dataset into json:\n\tfor row in range(value.getRowCount()):\n\t\trow_object \u003d {\"value\": {}}\n\t\t# Populate row values:\n\t\tfor col in range(value.getColumnCount()):\n\t\t\trow_object[\"value\"][value.getColumnName(col)] \u003d value.getValueAt(row, col)\n\t\t\t# Check if endtime isn\u0027t reached:\n\t\t\tif value.getColumnName(col) \u003d\u003d \u0027endtime\u0027 and value.getValueAt(row, col) in [None, \"\"]:\n\t\t\t\trow_object[\u0027style\u0027] \u003d {\"background\": \"#F4B084\"}\n\t\t# Append to json output:\n\t\toutput_json.append(row_object)\n\t# Return as json:\n\treturn output_json",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "query"
|
||||
},
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"cells": {
|
||||
"style": {
|
||||
"borderBottomColor": "#D5D5D5",
|
||||
"borderBottomStyle": "solid",
|
||||
"borderBottomWidth": "1px",
|
||||
"borderRightColor": "#D5D5D5",
|
||||
"borderRightStyle": "solid",
|
||||
"borderRightWidth": "1px",
|
||||
"fontFamily": "Helvetica",
|
||||
"fontSize": "16px"
|
||||
}
|
||||
},
|
||||
"columns": [
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"editable": false,
|
||||
"field": "id",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Number (ID)"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": false,
|
||||
"sortable": true,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 125
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"editable": false,
|
||||
"field": "starttime",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Start Timestamp"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": false,
|
||||
"sortable": true,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 175
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"editable": false,
|
||||
"field": "endtime",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "End Timestamp"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": false,
|
||||
"sortable": true,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 175
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "duration",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Duration"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": false,
|
||||
"sortable": true,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 125
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "class",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Class"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": false,
|
||||
"sort": "none",
|
||||
"sortable": true,
|
||||
"strictWidth": true,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": 125
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "device",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Location"
|
||||
},
|
||||
"justify": "center",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": true,
|
||||
"strictWidth": false,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": ""
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "description",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Description"
|
||||
},
|
||||
"justify": "auto",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": true,
|
||||
"strictWidth": false,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": ""
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "plctag",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": "table/column-header"
|
||||
},
|
||||
"title": "Tag"
|
||||
},
|
||||
"justify": "auto",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "#62A3F6",
|
||||
"linecap": "round",
|
||||
"width": 5
|
||||
},
|
||||
"max": 100,
|
||||
"track": {
|
||||
"color": "#DADADA",
|
||||
"linecap": "round",
|
||||
"width": 2
|
||||
},
|
||||
"value": {
|
||||
"color": "#7D7D7D",
|
||||
"show": true
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": true,
|
||||
"strictWidth": false,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "#2196F3",
|
||||
"unselected": "#FFFFFF"
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": true,
|
||||
"width": ""
|
||||
},
|
||||
{
|
||||
"align": "center",
|
||||
"boolean": "checkbox",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"editable": false,
|
||||
"field": "source",
|
||||
"footer": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"header": {
|
||||
"align": "center",
|
||||
"justify": "left",
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"title": ""
|
||||
},
|
||||
"justify": "auto",
|
||||
"number": "value",
|
||||
"numberFormat": "0,0.##",
|
||||
"progressBar": {
|
||||
"bar": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"track": {
|
||||
"color": "",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"enabled": true,
|
||||
"format": "0,0.##",
|
||||
"justify": "center",
|
||||
"style": {
|
||||
"classes": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"render": "auto",
|
||||
"resizable": true,
|
||||
"sort": "none",
|
||||
"sortable": true,
|
||||
"strictWidth": false,
|
||||
"style": {
|
||||
"classes": ""
|
||||
},
|
||||
"toggleSwitch": {
|
||||
"color": {
|
||||
"selected": "",
|
||||
"unselected": ""
|
||||
}
|
||||
},
|
||||
"viewParams": {},
|
||||
"viewPath": "",
|
||||
"visible": false,
|
||||
"width": ""
|
||||
}
|
||||
],
|
||||
"filter": {
|
||||
"enabled": true
|
||||
},
|
||||
"pager": {
|
||||
"bottom": false
|
||||
},
|
||||
"rows": {
|
||||
"highlight": {
|
||||
"enabled": false
|
||||
},
|
||||
"striped": {
|
||||
"enabled": false
|
||||
},
|
||||
"style": {
|
||||
"classes": "table/highlight"
|
||||
}
|
||||
},
|
||||
"style": {
|
||||
"fontFamily": "Helvetica",
|
||||
"fontSize": "16px",
|
||||
"fontWeight": "bold",
|
||||
"zoom": 1
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [],
|
||||
"extensionFunctions": null,
|
||||
"messageHandlers": [
|
||||
{
|
||||
"messageType": "export-data",
|
||||
"pageScope": true,
|
||||
"script": "\tutils.downloadCSV(self, \"Alarm History\")",
|
||||
"sessionScope": false,
|
||||
"viewScope": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "ia.display.table"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{"base":{"style":{"paddingBottom":"4px","paddingLeft":"18px","paddingRight":"18px","paddingTop":"4px"}}}
|
||||
@ -0,0 +1,9 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"color": "#000000",
|
||||
"fontFamily": "Arial"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
WITH LANES AS (
|
||||
SELECT
|
||||
MIN(timestamp) AS start_timestamp,
|
||||
MAX(timestamp) AS end_timestamp,
|
||||
3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier,
|
||||
lane_id AS induct,
|
||||
SUM(count) AS total
|
||||
FROM pe_history FORCE INDEX (timestamp)
|
||||
WHERE timestamp BETWEEN :startDate AND :endDate
|
||||
AND (lane_id LIKE "UL%" OR lane_id LIKE "PRS%" OR lane_id LIKE "RE%")
|
||||
GROUP BY lane_id
|
||||
ORDER BY lane_id
|
||||
)
|
||||
SELECT
|
||||
start_timestamp,
|
||||
end_timestamp,
|
||||
induct,
|
||||
/* Counts: */
|
||||
total AS total_count,
|
||||
/* PPH: */
|
||||
ROUND(total*pph_multiplier) AS total_pph,
|
||||
/* Percents: */
|
||||
ROUND(total/total, 4) AS total_percent
|
||||
FROM LANES;
|
||||
@ -0,0 +1,43 @@
|
||||
WITH SORTERS AS (
|
||||
SELECT
|
||||
DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time,
|
||||
COUNT(*) AS total,
|
||||
/* PPH Data */
|
||||
SUM(sort_code="Success") AS success,
|
||||
SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs,
|
||||
SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational,
|
||||
SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine,
|
||||
SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner,
|
||||
/* Problem Solve Data */
|
||||
SUM(sort_code="No Read") AS no_read,
|
||||
SUM(sort_code="No Code") AS no_code,
|
||||
SUM(sort_code="Multi Label") AS multi_label,
|
||||
/* Sorter Error Data */
|
||||
SUM(sort_code="Gap Err") AS gap_err,
|
||||
SUM(sort_code="Div Fail") AS div_fail,
|
||||
SUM(sort_code="Dest None") AS dest_none,
|
||||
SUM(sort_code="Lost") AS lost
|
||||
FROM package_history
|
||||
WHERE s04_timestamp BETWEEN :startDate AND :endDate
|
||||
AND sorter = :sorter
|
||||
GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00")
|
||||
), DATA AS (
|
||||
SELECT
|
||||
total,
|
||||
/* PPH: */
|
||||
ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph,
|
||||
/* Problem Solve Percents: */
|
||||
no_read+no_code+multi_label AS scanner,
|
||||
/* Sorter Error Percents: */
|
||||
gap_err+div_fail+dest_none+lost AS sorter
|
||||
FROM SORTERS
|
||||
WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW)
|
||||
)
|
||||
SELECT
|
||||
MAX(total_pph) AS total_pph,
|
||||
/* Problem Solve Percents: */
|
||||
ROUND(SUM(scanner)/SUM(total), 4) AS scanner,
|
||||
/* Sorter Error Percents: */
|
||||
ROUND(SUM(sorter)/SUM(total), 4) AS sorter
|
||||
FROM DATA;
|
||||
@ -0,0 +1,575 @@
|
||||
{
|
||||
"custom": {
|
||||
"color": "#C2C2C2",
|
||||
"priority": "No Active Alarms",
|
||||
"state": "Closed"
|
||||
},
|
||||
"params": {
|
||||
"demoColor": -1,
|
||||
"tagProps": [
|
||||
"System/MCM02/Scanner/S03",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value",
|
||||
"value"
|
||||
]
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(\r\n {view.params.demoColor} \u003e\u003d 0,\r\n {view.params.demoColor},\r\n coalesce({value}, 0)\r\n)\r\n",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#000000",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "#C2C2C2"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "#FF0000"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "#FFA500"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "#0008FF"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "#00FF00"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "#FFF700"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "#87CEEB"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "#90EE90"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "#964B00"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "#FFFFFF"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "#000000"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "#8B0000"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "#808080"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "#8B8000"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "#006400"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "#FFFFC5"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "#00008B"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "#FF7276"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "#556B2F"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "#B43434"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "#4682B4"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "#FFD700"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.priority": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": null,
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "No Active Alarms"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "High"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Medium"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Low"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Diagnostic"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.state": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"0": "{view.params.tagProps[0]}",
|
||||
"fc": "{session.custom.fc}"
|
||||
},
|
||||
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "Unknown",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": 0,
|
||||
"output": "Closed"
|
||||
},
|
||||
{
|
||||
"input": 1,
|
||||
"output": "Actuated"
|
||||
},
|
||||
{
|
||||
"input": 2,
|
||||
"output": "Communication Faulted"
|
||||
},
|
||||
{
|
||||
"input": 3,
|
||||
"output": "Conveyor Running In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 4,
|
||||
"output": "Disabled"
|
||||
},
|
||||
{
|
||||
"input": 5,
|
||||
"output": "Disconnected"
|
||||
},
|
||||
{
|
||||
"input": 6,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 7,
|
||||
"output": "Enabled Not Running"
|
||||
},
|
||||
{
|
||||
"input": 8,
|
||||
"output": "Encoder Fault"
|
||||
},
|
||||
{
|
||||
"input": 9,
|
||||
"output": "Energy Management"
|
||||
},
|
||||
{
|
||||
"input": 10,
|
||||
"output": "ESTOP Was Actuated"
|
||||
},
|
||||
{
|
||||
"input": 11,
|
||||
"output": "EStopped"
|
||||
},
|
||||
{
|
||||
"input": 12,
|
||||
"output": "EStopped Locally"
|
||||
},
|
||||
{
|
||||
"input": 13,
|
||||
"output": "Extended Faulted"
|
||||
},
|
||||
{
|
||||
"input": 14,
|
||||
"output": "Full"
|
||||
},
|
||||
{
|
||||
"input": 15,
|
||||
"output": "Gaylord Start Pressed"
|
||||
},
|
||||
{
|
||||
"input": 16,
|
||||
"output": "Jam Fault"
|
||||
},
|
||||
{
|
||||
"input": 17,
|
||||
"output": "Jammed"
|
||||
},
|
||||
{
|
||||
"input": 18,
|
||||
"output": "Loading Allowed"
|
||||
},
|
||||
{
|
||||
"input": 19,
|
||||
"output": "Loading Not Allowed"
|
||||
},
|
||||
{
|
||||
"input": 20,
|
||||
"output": "Low Air Pressure Fault Was Present"
|
||||
},
|
||||
{
|
||||
"input": 21,
|
||||
"output": "Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 22,
|
||||
"output": "Conveyor Stopped In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 23,
|
||||
"output": "Motor Faulted"
|
||||
},
|
||||
{
|
||||
"input": 24,
|
||||
"output": "Motor Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 25,
|
||||
"output": "Normal"
|
||||
},
|
||||
{
|
||||
"input": 26,
|
||||
"output": "Off Inactive"
|
||||
},
|
||||
{
|
||||
"input": 27,
|
||||
"output": "Open"
|
||||
},
|
||||
{
|
||||
"input": 28,
|
||||
"output": "PLC Ready To Run"
|
||||
},
|
||||
{
|
||||
"input": 29,
|
||||
"output": "Package Release Pressed"
|
||||
},
|
||||
{
|
||||
"input": 30,
|
||||
"output": "Power Branch Was Faulted"
|
||||
},
|
||||
{
|
||||
"input": 31,
|
||||
"output": "Pressed"
|
||||
},
|
||||
{
|
||||
"input": 32,
|
||||
"output": "Ready To Receive"
|
||||
},
|
||||
{
|
||||
"input": 33,
|
||||
"output": "Running"
|
||||
},
|
||||
{
|
||||
"input": 34,
|
||||
"output": "Started"
|
||||
},
|
||||
{
|
||||
"input": 35,
|
||||
"output": "Stopped"
|
||||
},
|
||||
{
|
||||
"input": 36,
|
||||
"output": "System Started"
|
||||
},
|
||||
{
|
||||
"input": 37,
|
||||
"output": "Unknown"
|
||||
},
|
||||
{
|
||||
"input": 38,
|
||||
"output": "VFD Fault"
|
||||
},
|
||||
{
|
||||
"input": 39,
|
||||
"output": "Conveyor Running In Power Saving Mode"
|
||||
},
|
||||
{
|
||||
"input": 40,
|
||||
"output": "Conveyor Jogging In Maintenance Mode"
|
||||
},
|
||||
{
|
||||
"input": 41,
|
||||
"output": "VFD Reset Required"
|
||||
},
|
||||
{
|
||||
"input": 42,
|
||||
"output": "Jam Reset Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 43,
|
||||
"output": "Start Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 44,
|
||||
"output": "Stop Push Button Pressed"
|
||||
},
|
||||
{
|
||||
"input": 45,
|
||||
"output": "No Container"
|
||||
},
|
||||
{
|
||||
"input": 46,
|
||||
"output": "Ready To Be Enabled"
|
||||
},
|
||||
{
|
||||
"input": 47,
|
||||
"output": "Half Full"
|
||||
},
|
||||
{
|
||||
"input": 48,
|
||||
"output": "Enabled"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.demoColor": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagProps": {
|
||||
"paramDirection": "inout",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 47,
|
||||
"width": 68
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "scanner"
|
||||
},
|
||||
"position": {
|
||||
"height": 1,
|
||||
"width": 1
|
||||
},
|
||||
"propConfig": {
|
||||
"props.elements[3].fill.paint": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.color"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"elements": [
|
||||
{
|
||||
"id": "defs3",
|
||||
"name": "defs3",
|
||||
"type": "defs"
|
||||
},
|
||||
{
|
||||
"d": "M 12.414439,21.622269 A 10,10 0 0 1 3.6989343,16.637386 10,10 0 0 1 3.7050549,6.5970154 10,10 0 0 1 12.426631,1.6227621",
|
||||
"fill": {
|
||||
"paint": "transparent"
|
||||
},
|
||||
"id": "circle2",
|
||||
"name": "circle2",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "2"
|
||||
},
|
||||
"type": "path"
|
||||
},
|
||||
{
|
||||
"d": "m 12.613908,2.4818261 c 6.942674,2.0834521 13.885347,6.0484566 20.828021,9.0726849 -6.945981,3.064219 -13.756047,6.450542 -20.837943,9.220277 l 0.0095,1.573493 C 20.634274,19.516759 28.443167,15.021636 36.358007,11.377844 28.442954,7.8932966 21.08348,3.5675692 12.628474,0.8929519 Z",
|
||||
"fill": {
|
||||
"opacity": "1",
|
||||
"paint": "#000000"
|
||||
},
|
||||
"id": "path1",
|
||||
"name": "path1",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "0.4"
|
||||
},
|
||||
"type": "path"
|
||||
},
|
||||
{
|
||||
"d": "M 12.389032,20.647726 C 6.9023213,20.490828 3.0753636,16.369847 3.0567874,11.653611 3.038211,6.9373755 6.5424269,3.1052388 12.194672,2.492415 m 0.189184,18.176827 -0.200534,-18.1942153 3.376452,1.1997941 4.395729,1.769738 13.626819,6.0452262 -15.195971,6.684943 z",
|
||||
"fill": {
|
||||
"opacity": "1"
|
||||
},
|
||||
"id": "path3",
|
||||
"name": "path3",
|
||||
"stroke": {
|
||||
"paint": "#000000",
|
||||
"width": "0"
|
||||
},
|
||||
"type": "path"
|
||||
}
|
||||
],
|
||||
"viewBox": "0 0 38 24"
|
||||
},
|
||||
"type": "ia.shapes.svg"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\t#create tags lists for the device\n\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\n\tsystem.perspective.openDock(\u0027Docked-East-Device\u0027,params\u003d{\u0027tagProps\u0027:props, \"tags\":tags_table_dataset, \"name\":\"\"} )"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "root",
|
||||
"tooltip": {
|
||||
"enabled": true,
|
||||
"location": "top-left",
|
||||
"style": {}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.tooltip.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "{view.custom.priority}"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Alarms-Styles/NoAlarm",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": "High",
|
||||
"output": "Alarms-Styles/High"
|
||||
},
|
||||
{
|
||||
"input": "Medium",
|
||||
"output": "Alarms-Styles/Medium"
|
||||
},
|
||||
{
|
||||
"input": "Low",
|
||||
"output": "Alarms-Styles/Low"
|
||||
},
|
||||
{
|
||||
"input": "Diagnostic",
|
||||
"output": "Alarms-Styles/Diagnostic"
|
||||
}
|
||||
],
|
||||
"outputType": "style-list",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "expr"
|
||||
}
|
||||
},
|
||||
"meta.tooltip.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"aspectRatio": "68:47",
|
||||
"mode": "percent",
|
||||
"style": {
|
||||
"cursor": "pointer",
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,291 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"meta": {
|
||||
"name": "S1-CH1"
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"alwaysShowAll": true,
|
||||
"isClickable": false,
|
||||
"mirror": false,
|
||||
"rotate": false
|
||||
},
|
||||
"status": {
|
||||
"tagPath": "[default]MCP06/PS04/PS04_17CH"
|
||||
}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"params.meta": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.meta.name": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.alwaysShowAll": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.mirror": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props.config.rotate": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 349,
|
||||
"width": 500
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "ChuteLabel"
|
||||
},
|
||||
"position": {
|
||||
"height": 35,
|
||||
"width": 260,
|
||||
"x": 120,
|
||||
"y": 63
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/StatusText"
|
||||
},
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "center"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Enable"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 120,
|
||||
"x": 120,
|
||||
"y": 20.3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Buttons/Grey",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "Buttons/Green"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
},
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {},
|
||||
"text": "Enable"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Disable"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 120,
|
||||
"x": 260,
|
||||
"y": 20.3
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "isGood({value})",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
},
|
||||
"props.style.classes": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Conv/SetEnable"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"fallback": "Buttons/Grey",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "Buttons/Red"
|
||||
}
|
||||
],
|
||||
"outputType": "scalar",
|
||||
"type": "map"
|
||||
},
|
||||
{
|
||||
"expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {},
|
||||
"text": "Disable"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "SpiralChute"
|
||||
},
|
||||
"position": {
|
||||
"height": 92,
|
||||
"width": 94,
|
||||
"x": 203.775,
|
||||
"y": 154.5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.params": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"struct": {
|
||||
"alwaysShowAll": true,
|
||||
"isClickable": false,
|
||||
"mirror": "{view.params.props.config.mirror}",
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"waitOnAll": true
|
||||
},
|
||||
"type": "expr-struct"
|
||||
},
|
||||
"persistent": false
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"path": "Templates/Areas/RRChute",
|
||||
"style": {
|
||||
"transform": "scale(2)"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background-color": "#CFCFCF"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
Select
|
||||
SorterName,inducted_count,sorted_count,destinv_count,destfull_count,unexpected_count,destfault_count,destfault_count,divfail_count,gaperr_count,
|
||||
lost_count, trackerr_count, unknownn_count, unsafe_count,destdis_count, destnone_count, Startstamp,Endtstamp,
|
||||
inducted_count/inducted_count as inducted_perc,
|
||||
sorted_count/inducted_count as sorted_perc,
|
||||
destinv_count/inducted_count as destinv_perc,
|
||||
destfull_count/inducted_count as destfull_perc,
|
||||
unexpected_count/inducted_count as unexpected_perc,
|
||||
destfault_count/inducted_count as destfault_perc,
|
||||
divfail_count/inducted_count as divfail_perc,
|
||||
gaperr_count/inducted_count as gaperr_perc,
|
||||
lost_count/inducted_count as lost_perc,
|
||||
trackerr_count/inducted_count as trackerr_perc,
|
||||
unknownn_count/inducted_count as unknown_perc,
|
||||
unsafe_count/inducted_count as unsafe_perc,
|
||||
destdis_count/inducted_count as destdis_perc,
|
||||
destnone_count/inducted_count as destnone_perc,
|
||||
inducted_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as inducted_rate,
|
||||
sorted_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as sorted_rate,
|
||||
destinv_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as destinv_rate,
|
||||
destfull_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as destfull_rate,
|
||||
unexpected_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as unexpected_rate,
|
||||
destfault_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as destfault_rate,
|
||||
divfail_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as divfail_rate,
|
||||
gaperr_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as gaperr_rate,
|
||||
lost_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as lost_rate,
|
||||
trackerr_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as trackerr_rate,
|
||||
unknownn_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as unknown_rate,
|
||||
unsafe_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as unsafe_rate,
|
||||
destdis_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as destdis_rate,
|
||||
destnone_count*3600/TIMESTAMPDIFF(second, Startstamp, Endtstamp) as destnone_rate
|
||||
FROM
|
||||
(SELECT
|
||||
'S03' as SorterName,
|
||||
COUNT(*) AS inducted_count,
|
||||
SUM(alltable.ACTUAL_DEST <> 'S03999') AS sorted_count,
|
||||
SUM(alltable.DivertStatus = 7) AS destinv_count,
|
||||
SUM(alltable.DivertStatus = 5) AS destfull_count,
|
||||
SUM(alltable.DivertStatus = 2) AS unexpected_count,
|
||||
SUM(alltable.DivertStatus = 6) AS destfault_count,
|
||||
SUM(alltable.DivertStatus = 14) AS divfail_count,
|
||||
SUM(alltable.DivertStatus = 4) AS gaperr_count,
|
||||
SUM(alltable.DivertStatus = 17) AS lost_count,
|
||||
SUM(alltable.DivertStatus = 3) AS trackerr_count,
|
||||
SUM(alltable.DivertStatus = 1) AS unknownn_count,
|
||||
SUM(alltable.DivertStatus = 21) AS unsafe_count,
|
||||
SUM(alltable.DivertStatus = 12) AS destdis_count,
|
||||
SUM(alltable.DivertStatus = 16) AS destnone_count,
|
||||
MIN(alltable.t_stamp) AS Startstamp,
|
||||
Max(alltable.t_stamp) AS Endtstamp
|
||||
FROM alltable
|
||||
Where (alltable.t_stamp BETWEEN :starttime AND :endtime)) basa
|
||||
@ -0,0 +1,297 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"meta": {
|
||||
"name": "PE1"
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": true,
|
||||
"isClickable": false,
|
||||
"type": "reflector"
|
||||
},
|
||||
"status": {
|
||||
"color": "#aaa",
|
||||
"showAlways": true,
|
||||
"tagPath": "",
|
||||
"tooltip": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"propConfig": {
|
||||
"params.meta": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.meta.name": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.props": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 105,
|
||||
"width": 500
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "PhotoEye"
|
||||
},
|
||||
"position": {
|
||||
"height": 30,
|
||||
"width": 102,
|
||||
"x": 48.5,
|
||||
"y": 20
|
||||
},
|
||||
"propConfig": {
|
||||
"props.config.type": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.params.props.config.type"
|
||||
},
|
||||
"overlayOptOut": true,
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.status": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"config": {
|
||||
"enableHighlight": false,
|
||||
"isClickable": false
|
||||
}
|
||||
},
|
||||
"type": "dex.display.photoeye"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 40
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\treturn utils.extractStatus(value)",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbName"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \u0027\u0027)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_1"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 5
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Name: "
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_11"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 40
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Status:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_12"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 75,
|
||||
"x": 195,
|
||||
"y": 75
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"fontSize": "20px",
|
||||
"fontWeight": "bold",
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Panel:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "lbStatus_0"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": "calc(100% - 300px)",
|
||||
"x": 280,
|
||||
"y": 75
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.props.status.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.OPC_Server"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "coalesce({value}, \"Unknown\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "bold",
|
||||
"overflow": "hidden",
|
||||
"textAlign": "center",
|
||||
"textOverview": "ellipsis",
|
||||
"whiteSpace": "nowrap"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"background-color": "#CFCFCF"
|
||||
}
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,193 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"parentFolder": ""
|
||||
},
|
||||
"propConfig": {
|
||||
"params.parentFolder": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 300,
|
||||
"width": 400
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "Markdown"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 150px)",
|
||||
"width": "calc(100% - 50px)",
|
||||
"x": 25,
|
||||
"y": 60
|
||||
},
|
||||
"propConfig": {
|
||||
"props.source": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"struct": {
|
||||
"folderName": "{../TextField.props.text}",
|
||||
"parentFolder": "{view.params.parentFolder}"
|
||||
},
|
||||
"waitOnAll": true
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\timport os\n\t\n\ttext \u003d \"Are you sure you would like to create the following folder:\\n\"\n\ttext +\u003d \"\\n* \"+os.path.join(value.parentFolder, value.folderName)\n\treturn text",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "expr-struct"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "ia.display.markdown"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\timport os\n\t\n\tparentFolder \u003d self.view.params.parentFolder\n\tfolderName \u003d self.getSibling(\"TextField\").props.text\n\tdocuments.createFolder(os.path.join(parentFolder, folderName))\n\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Button_Yes"
|
||||
},
|
||||
"position": {
|
||||
"height": 55,
|
||||
"width": 100,
|
||||
"x": 25,
|
||||
"y": 235
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "../TextField.props.text"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\tif value \u003d\u003d \"\":\n\t\treturn False\n\t# Only support alphanumeric folder names:\n\treturn \"\".join([c for c in value if c.isalpha() or c.isdigit() or c\u003d\u003d\u0027 \u0027]).strip() \u003d\u003d value",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "Yes"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\tsystem.perspective.closePopup(\"\")"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Button_No"
|
||||
},
|
||||
"position": {
|
||||
"height": 55,
|
||||
"width": 100,
|
||||
"x": "calc(100% - 125px)",
|
||||
"y": 235
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "No"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "TextField"
|
||||
},
|
||||
"position": {
|
||||
"height": 32,
|
||||
"width": "calc(100% - 125px)",
|
||||
"x": 115,
|
||||
"y": 10
|
||||
},
|
||||
"props": {
|
||||
"deferUpdates": false
|
||||
},
|
||||
"type": "ia.input.text-field"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label"
|
||||
},
|
||||
"position": {
|
||||
"height": 32,
|
||||
"width": 110,
|
||||
"y": 10
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"textAlign": "right"
|
||||
},
|
||||
"text": "Folder Name:"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "Label_BadFolderName"
|
||||
},
|
||||
"position": {
|
||||
"height": 12,
|
||||
"width": 250,
|
||||
"x": 120,
|
||||
"y": 42
|
||||
},
|
||||
"propConfig": {
|
||||
"meta.visible": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "!{../Button_Yes.props.enabled}"
|
||||
},
|
||||
"type": "expr"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"color": "red",
|
||||
"fontSize": "12px"
|
||||
},
|
||||
"text": "* Empty or contains invalid characters"
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,395 @@
|
||||
{
|
||||
"custom": {
|
||||
"hasControls": null,
|
||||
"isRunning": false
|
||||
},
|
||||
"params": {
|
||||
"label": "System",
|
||||
"tagPath": "[default]SystemStatus",
|
||||
"tagPaths": [],
|
||||
"view": "Windows/Graphics/Overview"
|
||||
},
|
||||
"propConfig": {
|
||||
"custom.hasControls": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"expression": "// Force refresh:\r\nif(now(1000)\u003dnow(1000),\r\n\t{view.params.tagPaths},\r\n\t{view.params.tagPaths}\r\n)"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"code": "\ttags \u003d [tagPath + \"/SetStart.Quality\" for tagPath in value] + [tagPath + \"/SetStop.Quality\" for tagPath in value]\n\tqualities \u003d [v.getQuality() for v in system.tag.readBlocking(tags)]\n\tqualities \u003d [v \u003d\u003d v.Good for v in qualities]\n\treturn any(qualities) and len(qualities) \u003e 0",
|
||||
"type": "script"
|
||||
}
|
||||
],
|
||||
"type": "expr"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"custom.isRunning": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/bStarted"
|
||||
},
|
||||
"type": "tag"
|
||||
},
|
||||
"persistent": true
|
||||
},
|
||||
"params.label": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPath": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPaths": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPaths[0]": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPaths[1]": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPaths[2]": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.tagPaths[3]": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
},
|
||||
"params.view": {
|
||||
"paramDirection": "input",
|
||||
"persistent": true
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 40,
|
||||
"width": 125
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Status"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.style.backgroundColor": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}.jsonValues"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Text"
|
||||
},
|
||||
"position": {
|
||||
"height": "calc(100% - 10px)",
|
||||
"width": "calc(100% - 10px)",
|
||||
"x": 5,
|
||||
"y": 5
|
||||
},
|
||||
"propConfig": {
|
||||
"props.text": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Parameters.LabelFull"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if({view.params.label} \u003d None || {view.params.label} \u003d \"\",\r\n\t{value},\r\n\t{view.params.label}\r\n)",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"backgroundColor": "#FFF",
|
||||
"borderColor": "#000",
|
||||
"borderStyle": "solid",
|
||||
"borderWidth": 1,
|
||||
"fontFamily": "var(--font-NotoSans)",
|
||||
"fontSize": "12px",
|
||||
"fontWeight": "bold",
|
||||
"paddingLeft": "5px",
|
||||
"textTransform": "uppercase",
|
||||
"user-select": "none"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.label"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"dom": {
|
||||
"onClick": {
|
||||
"config": {
|
||||
"script": "\tself.parent.openWindow()"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "TooltipOverlay"
|
||||
},
|
||||
"position": {
|
||||
"height": "100%",
|
||||
"width": "100%"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.status.tooltip": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"fallbackDelay": 2.5,
|
||||
"mode": "indirect",
|
||||
"references": {
|
||||
"tagPath": "{view.params.tagPath}"
|
||||
},
|
||||
"tagPath": "{tagPath}/Graphics"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "//\"System\u003cbr\u003eStatus: \"+if({view.custom.hasControls}, if({view.custom.isRunning}, \"Running\", \"Stopped\"), \"Unknown\")\r\njsonGet({value}, \"tooltip\")",
|
||||
"type": "expression"
|
||||
}
|
||||
],
|
||||
"type": "tag"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"status": {}
|
||||
},
|
||||
"type": "dex.display.tooltipoverlay"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStart\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Start"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 60px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.hasControls"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.isRunning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(isGood({value}), {value}, \"\")",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": true,
|
||||
"output": "#32CD32"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "►",
|
||||
"textStyle": {
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
},
|
||||
{
|
||||
"events": {
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStop\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"name": "Stop"
|
||||
},
|
||||
"position": {
|
||||
"height": 25,
|
||||
"width": 25,
|
||||
"x": "calc(100% - 32.5px)",
|
||||
"y": "calc(50% - 12.5px)"
|
||||
},
|
||||
"propConfig": {
|
||||
"props.enabled": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.hasControls"
|
||||
},
|
||||
"type": "property"
|
||||
}
|
||||
},
|
||||
"props.textStyle.color": {
|
||||
"binding": {
|
||||
"config": {
|
||||
"path": "view.custom.isRunning"
|
||||
},
|
||||
"transforms": [
|
||||
{
|
||||
"expression": "if(isGood({value}), {value}, \"\")",
|
||||
"type": "expression"
|
||||
},
|
||||
{
|
||||
"fallback": "#888888",
|
||||
"inputType": "scalar",
|
||||
"mappings": [
|
||||
{
|
||||
"input": false,
|
||||
"output": "#FF0000"
|
||||
}
|
||||
],
|
||||
"outputType": "color",
|
||||
"type": "map"
|
||||
}
|
||||
],
|
||||
"type": "property"
|
||||
}
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"classes": "Buttons/Grey"
|
||||
},
|
||||
"text": "■",
|
||||
"textStyle": {
|
||||
"fontFamily": "monospace",
|
||||
"fontSize": "14px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"props": {
|
||||
"style": {
|
||||
"cursor": "pointer"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"customMethods": [
|
||||
{
|
||||
"name": "openWindow",
|
||||
"params": [],
|
||||
"script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)"
|
||||
}
|
||||
],
|
||||
"extensionFunctions": null,
|
||||
"messageHandlers": []
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
{
|
||||
"base": {
|
||||
"style": {
|
||||
"fontFamily": "Arial",
|
||||
"fontSize": "10px",
|
||||
"textAlign": "center"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,84 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 1993,
|
||||
"width": 4243
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "HSS_Sorter"
|
||||
},
|
||||
"position": {
|
||||
"height": 1973,
|
||||
"width": 4223,
|
||||
"x": 10,
|
||||
"y": 10
|
||||
},
|
||||
"props": {
|
||||
"path": "Windows/Graphics/Templates/HSS_Sorter",
|
||||
"style": {
|
||||
"classes": "painted-events"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "NavButton_HSS_Singulator"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 125,
|
||||
"x": 170,
|
||||
"y": 720
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"enableTooltip": true,
|
||||
"label": null,
|
||||
"tagPath": "[default]HSSSingulatorStatus",
|
||||
"view": ""
|
||||
},
|
||||
"path": "Templates/Buttons/NavButton",
|
||||
"style": {
|
||||
"transform": "scale(3)"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
"name": "NavButton_Runout"
|
||||
},
|
||||
"position": {
|
||||
"height": 40,
|
||||
"width": 74,
|
||||
"x": 3760,
|
||||
"y": 1840
|
||||
},
|
||||
"props": {
|
||||
"params": {
|
||||
"enableTooltip": true,
|
||||
"label": null,
|
||||
"tagPath": "[default]RunoutStatus",
|
||||
"view": ""
|
||||
},
|
||||
"path": "Templates/Buttons/NavButton",
|
||||
"style": {
|
||||
"transform": "scale(3)"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"name": "root"
|
||||
},
|
||||
"type": "ia.container.coord"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 10 KiB |