fixed the search function not working all the times

This commit is contained in:
Salijoghli 2025-09-16 18:39:29 +04:00
parent f5a2577442
commit b771bae2bb
51 changed files with 10909 additions and 440 deletions

View File

@ -0,0 +1,515 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"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": "coalesce({value},0)",
"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.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 30,
"width": 188
}
},
"root": {
"children": [
{
"meta": {
"name": "drawing"
},
"position": {
"height": 1,
"width": 1
},
"props": {
"elements": [
{
"id": "defs1",
"name": "defs1",
"type": "defs"
},
{
"elements": [
{
"fill": {
"paint": "#C2C2C2"
},
"height": "7.9060049",
"id": "rect1",
"name": "rect1",
"stroke": {
"paint": "#000000",
"width": 0
},
"type": "rect",
"width": "52.39917",
"x": "0.26337066",
"y": "0.2977989"
}
],
"id": "layer1",
"name": "layer1",
"type": "group"
}
],
"preserveAspectRatio": "none",
"viewBox": "0 0 52.916668 8.4666672"
},
"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)\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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 B

File diff suppressed because it is too large Load Diff

View File

@ -1,238 +0,0 @@
{
"custom": {
"color": "808080",
"state": 0,
"string": "Non Powered Equipment"
},
"params": {
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "808080",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "808080"
},
{
"input": 2,
"output": "f8060d"
},
{
"input": 3,
"output": "f78e12"
},
{
"input": 4,
"output": "dd00de"
},
{
"input": 5,
"output": "3a00fd"
},
{
"input": 6,
"output": "fbff1f"
},
{
"input": 7,
"output": "39cc38"
},
{
"input": 8,
"output": "8fcef9"
},
{
"input": 9,
"output": "cdffcc"
},
{
"input": 10,
"output": "d3d3d3"
},
{
"input": 11,
"output": "a66008"
},
{
"input": 12,
"output": "ffffff"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.string": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "Non Powered Equipment",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Communication Fault"
},
{
"input": 2,
"output": "EStop or Faulted"
},
{
"input": 3,
"output": "Jammed"
},
{
"input": 4,
"output": "Anti-Gridlock Prevention Mode"
},
{
"input": 5,
"output": "Full"
},
{
"input": 6,
"output": "50% Full"
},
{
"input": 7,
"output": "Running"
},
{
"input": 8,
"output": "Energy Managment"
},
{
"input": 9,
"output": "Enabled, Not Running"
},
{
"input": 10,
"output": "Off (Inactive)"
},
{
"input": 11,
"output": "Manual / Maintenance Mode"
},
{
"input": 12,
"output": "Non Powered Equipment"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 8,
"width": 240
}
},
"root": {
"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)\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": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"expression": "\"#\"+{view.custom.color}"
},
"type": "expr"
}
}
},
"props": {
"mode": "percent",
"style": {
"borderStyle": "solid",
"borderWidth": "1px",
"cursor": "pointer"
}
},
"type": "ia.container.coord"
}
}

View File

@ -0,0 +1,156 @@
{
"custom": {},
"params": {
"tagPath": ""
},
"propConfig": {
"params.tagPath": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 29,
"width": 27
}
},
"root": {
"children": [
{
"meta": {
"name": "Estop"
},
"position": {
"height": 20,
"width": 20,
"x": 1,
"y": 8
},
"propConfig": {
"props.status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"tagPath": "{view.params.tagPath}"
},
"tagPath": "{tagPath}/EPC/Graphics"
},
"overlayOptOut": true,
"type": "tag"
}
}
},
"type": "dex.display.estop"
},
{
"meta": {
"name": "Icon"
},
"position": {
"height": 16,
"width": 16,
"x": 10,
"y": 1
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"tagPath": "{view.params.tagPath}"
},
"tagPath": "{tagPath}/LKD/Graphics"
},
"overlayOptOut": true,
"transforms": [
{
"expression": "jsonGet({value}, \"showAlways\") || {session.custom.dexmanager.show.Estops}",
"type": "expression"
}
],
"type": "tag"
}
},
"props.color": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"tagPath": "{view.params.tagPath}"
},
"tagPath": "{tagPath}/LKD/Graphics"
},
"overlayOptOut": true,
"transforms": [
{
"expression": "jsonGet({value}, \"color\")",
"type": "expression"
}
],
"type": "tag"
}
}
},
"props": {
"path": "material/lock"
},
"type": "ia.display.icon"
},
{
"meta": {
"name": "TooltipOverlay"
},
"position": {
"height": 16,
"width": 16,
"x": 10,
"y": 1
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"path": "../Icon.meta.visible"
},
"type": "property"
}
},
"props.status.tooltip": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"tagPath": "{view.params.tagPath}"
},
"tagPath": "{tagPath}/LKD/Graphics"
},
"overlayOptOut": true,
"transforms": [
{
"expression": "jsonGet({value}, \"tooltip\")",
"type": "expression"
}
],
"type": "tag"
}
}
},
"props": {
"status": {}
},
"type": "dex.display.tooltipoverlay"
}
],
"meta": {
"name": "root"
},
"type": "ia.container.coord"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -2,7 +2,7 @@
"custom": {
"PLC": "MCM01",
"device": "UL15_1",
"maintance_mode": false,
"maintance_mode": true,
"showTags": true,
"state": "Actuated"
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

View File

@ -12,24 +12,9 @@ def handleTagHighlight(view, currentValue):
parts = str(tag_priority).split("||")
tag = parts[0]
splitedTag = tag.split("/")
deviceName = splitedTag[-1]
Docked_East_Map = {
"VFD" : "Docked-East-VFD",
"MCM" : "Docked-East-MCM"
}
Docked_East_View = Docked_East_Map["VFD"]
if "PE" in deviceName:
tag = "/".join(splitedTag[:2]) + "/Conveyor/" + deviceName[:-3] + "VFD1"
if "MCM" in deviceName:
Docked_East_View = Docked_East_Map["MCM"]
components = view.rootContainer.getChildren()[0].getChildren()
priority = parts[1]
@ -48,10 +33,10 @@ def handleTagHighlight(view, currentValue):
child.props.style.classes = ""
tagPath = tagsList[0]
# system.perspective.print(tagPath)
if tag == tagPath:
child.props.style["classes"] = "Highlight/Pulse-" + priority
system.perspective.openDock(Docked_East_View, params={'tagProps': tagProps})
foundMatch = True
return foundMatch

View File

@ -411,6 +411,10 @@
],
"type": "tag"
}
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 B

View File

@ -0,0 +1,578 @@
{
"custom": {},
"params": {
"alwaysShowAll": false,
"chuteNum": "",
"isClickable": true,
"mirror": false,
"tagPath": ""
},
"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": 115,
"width": 95
},
"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": 79,
"x": 21,
"y": 115
},
"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": 67
},
"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": 82
},
"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": 97
},
"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": "GS1_ENABLE"
},
"position": {
"height": 20,
"width": 20,
"x": 21,
"y": 15
},
"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": "GS1_RESTART"
},
"position": {
"height": 20,
"width": 20,
"x": 40,
"y": 15
},
"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": "Full_PE"
},
"position": {
"height": 10,
"rotate": {
"angle": 180
},
"width": 62,
"x": 17,
"y": 69
},
"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": "Jam_PE"
},
"position": {
"height": 10,
"rotate": {
"angle": 180
},
"width": 62,
"x": 17,
"y": 99
},
"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": "Label"
},
"position": {
"height": 15,
"width": "100%"
},
"propConfig": {
"props.style.transform": {
"binding": {
"config": {
"path": "parent.props.style.transform"
},
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"path": "view.params.chuteNum"
},
"type": "property"
}
}
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": "15px",
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Half_PE"
},
"position": {
"height": 10,
"rotate": {
"angle": 180
},
"width": 62,
"x": 17,
"y": 39
},
"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": "FIO1"
},
"position": {
"height": 15,
"rotate": {
"angle": "-90deg"
},
"width": 30,
"x": -7,
"y": 43
},
"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"
}
},
"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.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 \"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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 B

View File

@ -63,6 +63,7 @@ def navigate_to_url(self, source_id, page_id):
url_to_navigate = "autStand/Detailed_Views/%s" % (page_id)
system.perspective.navigate(view=url_to_navigate, params={"highlightTagPath": source_id + "||Diagnostic"})
def source_id_lookup(self, source_id):
"""
Finds page_id from global_project_page_ids by source_id or by hierarchy,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

View File

@ -9,8 +9,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-12T14:58:57Z"
"timestamp": "2025-09-15T15:18:31Z"
},
"lastModificationSignature": "d01edb15d457fd4f67be85abf632026f079f2010d1ac3ff7f9b4028334531aee"
"lastModificationSignature": "a013facd3501db85cfaad08e016829a6e53ae35fb0d71f6709e5f1bdf3f86f3f"
}
}

View File

@ -9,9 +9,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-08-18T16:55:42Z"
"actor": "admin",
"timestamp": "2025-09-15T15:14:51Z"
},
"lastModificationSignature": "63917cb3d8b2d633d85ba89cefd37a64b617d520577977c34249ee3b4c72f46f"
"lastModificationSignature": "a4825c1afe87e2b873b1cb8ab41aa9e1d2209cc506c9750926fba7681db1d0fa"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -8,9 +8,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-08-18T16:55:42Z"
"actor": "admin",
"timestamp": "2025-09-15T15:14:51Z"
},
"lastModificationSignature": "79dd40929c5805e4a14b3ca42f016ec7f94a71aea8d66c115d383a9364fead78"
"lastModificationSignature": "0b6e7ac5f7818d38a033f84e9f193c0bdd4d711f346b07b86d00c8ea5e66d1ca"
}
}

View File

@ -4,14 +4,13 @@
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
"view.json"
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-08-18T16:55:42Z"
"actor": "admin",
"timestamp": "2025-09-15T15:14:51Z"
},
"lastModificationSignature": "185c0b1994c0c2d05be66b8e11f905dadabf3808aa668a5cc0904811c9266836"
"lastModificationSignature": "606645db3a07787bfe365f45df953332091c5fd22972466e1e1513d85fa7fde4"
}
}

View File

@ -9,9 +9,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-08-18T16:55:42Z"
"actor": "admin",
"timestamp": "2025-09-15T15:14:51Z"
},
"lastModificationSignature": "2688ff0c29b7a1d96f26df1097b8c2113081985e4ef502e3907722722fca8f81"
"lastModificationSignature": "90313fbb169475ab1ac43299cb87003d9ec8103ed1387461ccccb21215e430e7"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T13:53:59Z"
"timestamp": "2025-09-16T14:38:31Z"
},
"lastModificationSignature": "81a7a867db771951fb0ea320d555412015aa8d0891e084dc3d9e82568d75a537"
"lastModificationSignature": "484b5046a2b1dcfc7de33116d529ca0ee31621ab89cca4e09f32388560731f02"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -66,6 +66,9 @@
"y": 0.2955
},
"props": {
"loading": {
"order": "with-parent"
},
"params": {
"tagProps": [
"System/MCM01/Conveyor/UL15_5",
@ -2592,7 +2595,7 @@
"props": {
"params": {
"tagProps": [
"System/MCM01/SHAFT ENCODER/UL15_1_ENSH1",
"System/MCM01/Encoder/UL15_1_ENSH1",
"value",
"value",
"value",

View File

@ -4,13 +4,14 @@
"restricted": false,
"overridable": true,
"files": [
"view.json"
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-12T08:56:40Z"
"timestamp": "2025-09-15T15:31:07Z"
},
"lastModificationSignature": "5976711e64ca6b53c0f826cc135c2397714004392b95fb0a8fd7006e2639c2ce"
"lastModificationSignature": "56b0e3adac864265293f78bc2396a29a76b0b3b1804eacc1467a3e04a1840284"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View File

@ -1,8 +1,8 @@
{
"custom": {
"color": "808080",
"state": 0,
"string": "Non Powered Equipment"
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"tagProps": [
@ -22,67 +22,166 @@
"custom.color": {
"binding": {
"config": {
"path": "view.custom.state"
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
},
"transforms": [
{
"fallback": "808080",
"expression": "coalesce({value},0)",
"type": "expression"
},
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#C2C2C2"
},
{
"input": 1,
"output": "808080"
"output": "#FF0000"
},
{
"input": 2,
"output": "f8060d"
"output": "#FFA500"
},
{
"input": 3,
"output": "f78e12"
"output": "#0008FF"
},
{
"input": 4,
"output": "dd00de"
"output": "#00FF00"
},
{
"input": 5,
"output": "3a00fd"
"output": "#FFF700"
},
{
"input": 6,
"output": "fbff1f"
"output": "#87CEEB"
},
{
"input": 7,
"output": "39cc38"
"output": "#90EE90"
},
{
"input": 8,
"output": "8fcef9"
"output": "#964B00"
},
{
"input": 9,
"output": "cdffcc"
"output": "#FFFFFF"
},
{
"input": 10,
"output": "d3d3d3"
"output": "#000000"
},
{
"input": 11,
"output": "a66008"
"output": "#8B0000"
},
{
"input": 12,
"output": "ffffff"
"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": "property"
"type": "tag"
},
"persistent": true
},
@ -95,82 +194,223 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
},
"transforms": [
{
"expression": "coalesce({value},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.string": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "Non Powered Equipment",
"fallback": "Unknown",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "Closed"
},
{
"input": 1,
"output": "Communication Fault"
"output": "Actuated"
},
{
"input": 2,
"output": "EStop or Faulted"
"output": "Communication Faulted"
},
{
"input": 3,
"output": "Jammed"
"output": "Conveyor Running In Maintenance Mode"
},
{
"input": 4,
"output": "Anti-Gridlock Prevention Mode"
"output": "Disabled"
},
{
"input": 5,
"output": "Full"
"output": "Disconnected"
},
{
"input": 6,
"output": "50% Full"
"output": "Stopped"
},
{
"input": 7,
"output": "Running"
"output": "Enabled Not Running"
},
{
"input": 8,
"output": "Energy Managment"
"output": "Encoder Fault"
},
{
"input": 9,
"output": "Enabled, Not Running"
"output": "Energy Management"
},
{
"input": 10,
"output": "Off (Inactive)"
"output": "ESTOP Was Actuated"
},
{
"input": 11,
"output": "Manual / Maintenance Mode"
"output": "EStopped"
},
{
"input": 12,
"output": "Non Powered Equipment"
"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": "property"
"type": "tag"
},
"persistent": true
},
@ -181,11 +421,57 @@
},
"props": {
"defaultSize": {
"height": 8,
"width": 240
"height": 30,
"width": 188
}
},
"root": {
"children": [
{
"meta": {
"name": "drawing"
},
"position": {
"height": 1,
"width": 1
},
"props": {
"elements": [
{
"id": "defs1",
"name": "defs1",
"type": "defs"
},
{
"elements": [
{
"fill": {
"paint": "#C2C2C2"
},
"height": "7.9060049",
"id": "rect1",
"name": "rect1",
"stroke": {
"paint": "#000000",
"width": 0
},
"type": "rect",
"width": "52.39917",
"x": "0.26337066",
"y": "0.2977989"
}
],
"id": "layer1",
"name": "layer1",
"type": "group"
}
],
"preserveAspectRatio": "none",
"viewBox": "0 0 52.916668 8.4666672"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
@ -211,15 +497,7 @@
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"expression": "\"#\"+{view.custom.color}"
"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"
}
@ -229,7 +507,6 @@
"mode": "percent",
"style": {
"borderStyle": "solid",
"borderWidth": "1px",
"cursor": "pointer"
}
},

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T08:05:24Z"
"timestamp": "2025-09-16T13:36:34Z"
},
"lastModificationSignature": "ed942aa91809b3b0f3d9b21f190c3306a01fefa440b84a331a276da45a991496"
"lastModificationSignature": "4b1237ac15b4a71b5aca7a85545cea02fd5bcbd3814669135b7d99c28c1a4c68"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 B

After

Width:  |  Height:  |  Size: 763 B

View File

@ -9,8 +9,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T08:09:32Z"
"timestamp": "2025-09-16T13:57:53Z"
},
"lastModificationSignature": "13d61830062a76520d09d6fbf17c39df3718d122af7c6e4ddb0d0feddf0a4292"
"lastModificationSignature": "6385e739158b1c986bb2e770b87f75d70f5993d9be408e4ffd9892c6f21c2d3b"
}
}

View File

@ -411,6 +411,10 @@
],
"type": "tag"
}
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T11:55:07Z"
"timestamp": "2025-09-16T13:37:08Z"
},
"lastModificationSignature": "5295e06418967a0b053557f1cd006887f98c156b3061ac6785a71982afb1dbc6"
"lastModificationSignature": "1d76f854ad445a18804701f2210b6d15eca0ee77f6bfe392e1d52559b3e8bc69"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 141 B

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T11:47:50Z"
"timestamp": "2025-09-15T13:54:36Z"
},
"lastModificationSignature": "f5e761c92e76683a080708405cee0ae44ba94e3df7b482f42c45fa1a4faa9650"
"lastModificationSignature": "8cbde7b41156b79dc463337e46ddffe6f4c959abc48116ad0b27ebcf101e9f09"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 B

After

Width:  |  Height:  |  Size: 92 B

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-15T13:33:59Z"
"timestamp": "2025-09-16T13:36:16Z"
},
"lastModificationSignature": "705eee9220b4fffa6b94445ce4dca9e3803d54df852a83dfcd7a5913f9b4c18a"
"lastModificationSignature": "ad55bfeb22a9b1a71b115fb954fd0c29c4d0eab148c5ad3a758cb54dc337d071"
}
}

View File

@ -2,7 +2,7 @@
"custom": {
"PLC": "MCM01",
"device": "UL15_1",
"maintance_mode": false,
"maintance_mode": true,
"showTags": true,
"state": "Actuated"
},

View File

@ -12,24 +12,9 @@ def handleTagHighlight(view, currentValue):
parts = str(tag_priority).split("||")
tag = parts[0]
splitedTag = tag.split("/")
deviceName = splitedTag[-1]
Docked_East_Map = {
"VFD" : "Docked-East-VFD",
"MCM" : "Docked-East-MCM"
}
Docked_East_View = Docked_East_Map["VFD"]
if "PE" in deviceName:
tag = "/".join(splitedTag[:2]) + "/Conveyor/" + deviceName[:-3] + "VFD1"
if "MCM" in deviceName:
Docked_East_View = Docked_East_Map["MCM"]
components = view.rootContainer.getChildren()[0].getChildren()
priority = parts[1]
@ -48,10 +33,10 @@ def handleTagHighlight(view, currentValue):
child.props.style.classes = ""
tagPath = tagsList[0]
# system.perspective.print(tagPath)
if tag == tagPath:
child.props.style["classes"] = "Highlight/Pulse-" + priority
system.perspective.openDock(Docked_East_View, params={'tagProps': tagProps})
foundMatch = True
return foundMatch

View File

@ -9,9 +9,9 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-02T08:59:11Z"
"timestamp": "2025-09-16T14:37:18Z"
},
"hintScope": 2,
"lastModificationSignature": "3d2e0a176272132b0d8575f28d9176d58dde3e9c2d2ebf5da0ae81c4b3b67cbc"
"lastModificationSignature": "4ac7d9253e8bcebb977bc27516374f60b6d3f33206c95e0c7320003db93bf5aa"
}
}

View File

@ -63,6 +63,7 @@ def navigate_to_url(self, source_id, page_id):
url_to_navigate = "autStand/Detailed_Views/%s" % (page_id)
system.perspective.navigate(view=url_to_navigate, params={"highlightTagPath": source_id + "||Diagnostic"})
def source_id_lookup(self, source_id):
"""
Finds page_id from global_project_page_ids by source_id or by hierarchy,

View File

@ -8,10 +8,10 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-08-29T14:05:32Z"
"actor": "admin",
"timestamp": "2025-09-16T13:36:30Z"
},
"hintScope": 2,
"lastModificationSignature": "5584e73e3e3ed49f3456f6ce3c011951353aace2901278500f42afb560d039de"
"lastModificationSignature": "dc8e883de7a56e1b645e56bb9f9cecf01cc42c01563a552e9c5be07649af30be"
}
}