have no idea

This commit is contained in:
Salijoghli 2025-10-24 16:47:06 +04:00
parent 1eabc4fd89
commit 98f6cec023
44 changed files with 476 additions and 53290 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,705 +0,0 @@
{
"custom": {
"params": {
"highlightTagPath": "value",
"panZoomScale": 1
},
"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.params": {
"binding": {
"config": {
"struct": {
"scale": "{view.custom.scale}",
"viewParams": "{view.params.viewParams}"
},
"waitOnAll": true
},
"transforms": [
{
"code": "\toutput \u003d {}\n\toutput \u003d system.util.jsonDecode(system.util.jsonEncode(value.viewParams))\n\toutput[\u0027panZoomScale\u0027] \u003d round(value.scale,2)\n\t\n\treturn output",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true
},
"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.custom.params"
},
"type": "property"
}
},
"props.params.highlightTagPath": {
"binding": {
"config": {
"path": "view.custom.params.highlightTagPath"
},
"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\""
},
"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"
},
"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"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

View File

@ -1,158 +0,0 @@
def calculateFocus(child, scale=1.7, OFFSET_Y=350):
DEVICE_VIEW_WIDTH = 1850
DEVICE_VIEW_HEIGHT = 1080
ZOOM_VIEW_WIDTH = 1920
ZOOM_VIEW_HEIGHT = 1080
# Device percent coordinates
percentX = child.position.x
percentY = child.position.y
# Convert to device view pixels
devicePixelX = percentX * DEVICE_VIEW_WIDTH
devicePixelY = percentY * DEVICE_VIEW_HEIGHT
# Scale to zoom view
zoomPixelX = devicePixelX * (ZOOM_VIEW_WIDTH / DEVICE_VIEW_WIDTH)
zoomPixelY = devicePixelY * (ZOOM_VIEW_HEIGHT / DEVICE_VIEW_HEIGHT)
# Device width scaling
deviceWidthPixels = child.position.width * DEVICE_VIEW_WIDTH
zoomDeviceWidth = deviceWidthPixels * (ZOOM_VIEW_WIDTH / DEVICE_VIEW_WIDTH)
# X offset (account for width)
dx = (ZOOM_VIEW_WIDTH / 2 - zoomPixelX) - (zoomDeviceWidth / 2)
# Rotation-aware vertical offset
rotation = getattr(child.position.rotate, "angle", "0deg")
if rotation == "90deg" and percentY> 0.3:
adjustedOffsetY = zoomDeviceWidth
else:
adjustedOffsetY = OFFSET_Y
# Dynamic Y offset zones
if percentY < 0.5:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2) + adjustedOffsetY
elif 0.5 <= percentY < 0.6:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2)
else:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2) - adjustedOffsetY
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(child),
scope="session"
)
foundMatch = True
return foundMatch

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

View File

@ -1,553 +0,0 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"demoColor": -1,
"tagProps": [
"System/MCM02/Beacon/S03_CH115_BCN1_B",
"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": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 20,
"width": 20
}
},
"root": {
"children": [
{
"meta": {
"name": "BCN"
},
"position": {
"height": 1,
"width": 1
},
"propConfig": {
"props.elements[1].fill.paint": {
"binding": {
"config": {
"path": "view.custom.color"
},
"type": "property"
}
},
"props.elements[2].text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\treturn value[-1]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"id": "defs1",
"name": "defs1",
"type": "defs"
},
{
"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"
},
{
"fill": {
"paint": "#000"
},
"fontSize": "29.5834px",
"id": "beaconLabel",
"name": "beaconLabel",
"stroke": {
"width": "1.64352"
},
"textAnchor": "middle",
"type": "text",
"x": "26.11241",
"y": "35.09856"
}
],
"viewBox": "0 0 50 50"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tprops \u003d self.view.params.tagProps\n\ttags_table_dataset \u003d autStand.devices.getAllTags(self, props[0])\t\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
}
},
"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"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "session.custom.alarm_filter.show_beacons"
},
"type": "property"
}
}
},
"props": {
"mode": "percent",
"style": {
"cursor": "pointer",
"userSelect": "None"
}
},
"type": "ia.container.coord"
}
}

View File

@ -1,548 +0,0 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"demoColor": -1,
"tagProps": [
"/system/mcm01/test",
"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": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 25,
"width": 30
}
},
"root": {
"children": [
{
"meta": {
"name": "PX"
},
"position": {
"height": 1,
"width": 1
},
"propConfig": {
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.color"
},
"type": "property"
}
}
},
"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": [
{
"id": "tspan3",
"name": "tspan3",
"stroke": {
"width": 1
},
"text": "PRX",
"type": "tspan",
"x": "24.958401",
"y": "31.781378"
}
],
"fill": {
"paint": "#000"
},
"fontSize": "20px",
"id": "beaconLabel",
"name": "beaconLabel",
"stroke": {
"width": 1
},
"textAnchor": "middle",
"type": "text",
"x": 20,
"y": 30
}
],
"preserveAspectRatio": "none",
"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})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root",
"tooltip": {
"enabled": true
}
},
"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"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "session.custom.alarm_filter.show_px"
},
"type": "property"
}
}
},
"props": {
"mode": "percent",
"style": {
"cursor": "pointer",
"userSelect": "None"
}
},
"type": "ia.container.coord"
}
}

View File

@ -1,552 +0,0 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"demoColor": -1,
"tagProps": [
"System/MCM02/Solenoid/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}, 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": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 20,
"width": 20
}
},
"root": {
"children": [
{
"meta": {
"name": "SOL"
},
"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": "47.417244",
"id": "beaconSquare",
"name": "beaconSquare",
"stroke": {
"paint": "#000000",
"width": "2.36887"
},
"type": "rect",
"width": "47.337795",
"x": "1.450278",
"y": "1.3708278"
},
{
"elements": [
{
"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})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root",
"tooltip": {
"enabled": true
}
},
"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"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "session.custom.alarm_filter.show_solenoids"
},
"type": "property"
}
}
},
"props": {
"mode": "percent",
"style": {
"cursor": "pointer",
"userSelect": "None"
}
},
"type": "ia.container.coord"
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,286 +0,0 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms"
},
"params": {
"demoColor": -1,
"tagProps": [
"System/MCM01/VFD/UL14_1_VFD1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.color": {
"binding": {
"config": {
"expression": "now(1000)"
},
"transforms": [
{
"code": "\tstate \u003d str(self.custom.state).strip().upper() # normalize input\n\t\n\tif state \u003d\u003d \"CLOSED\": \n\t\treturn \"#C2C2C2\"\n\t\n\timport datetime\n\tsecond \u003d datetime.datetime.now().second % 2 # 0 or 1 for blinking\n\t\n\tif state \u003d\u003d \"OK\":\n\t return \"#1fff1a\"\n\telif state \u003d\u003d \"DISCONNECTED\":\n\t return \"#C2C2C2\"\n\telif state \u003d\u003d \"FAULTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#1fff1a\"\n\telif state \u003d\u003d \"FAULTED/DISCONNECTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#C2C2C2\"\n",
"type": "script"
}
],
"type": "expr"
},
"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}/Lenze"
},
"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": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "Closed"
},
{
"input": 50,
"output": "OK"
},
{
"input": 51,
"output": "DISCONNECTED"
},
{
"input": 52,
"output": "FAULTED"
},
{
"input": 53,
"output": "FAULTED/DISCONNECTED"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"params.demoColor": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 26,
"width": 26
}
},
"root": {
"children": [
{
"meta": {
"name": "vfd_icon"
},
"position": {
"height": 1,
"width": 1
},
"propConfig": {
"props.elements[2].fill.paint": {
"binding": {
"config": {
"path": "view.custom.color"
},
"type": "property"
}
}
},
"props": {
"elements": [
{
"id": "defs3",
"name": "defs3",
"type": "defs"
},
{
"d": "M 15.641997,3.2012871 C -6.406347,0.56989644 4.4216421,15.598399 4.4216421,19.03611 L 18.864497,5.1927068 Z",
"fill": {
"paint": "#c2c2c2"
},
"id": "path1",
"name": "path1",
"stroke": {
"width": "1.03379"
},
"type": "path"
},
{
"d": "M 19.35605,5.5008821 C 24.701245,10.402753 20.718148,17.901458 13.662088,22.359231 L 5.1469077,19.280293 Z",
"fill": {},
"id": "path2",
"name": "path2",
"stroke": {
"width": "1.31417"
},
"type": "path"
},
{
"cx": "12",
"cy": "12",
"fill": {
"paint": "transparent"
},
"id": "circle2",
"name": "circle2",
"r": "10",
"stroke": {
"paint": "#000",
"width": 2
},
"style": {
"classes": ""
},
"type": "circle"
},
{
"d": "M6,18 L18,6",
"fill": {
"paint": "transparent"
},
"id": "path3",
"name": "path3",
"stroke": {
"linecap": "round",
"paint": "#000000",
"width": "2"
},
"type": "path"
}
],
"preserveAspectRatio": "none",
"style": {
"borderRadius": "50%",
"boxShadow": "value",
"transition": "fill 0.5s ease-in-out"
},
"viewBox": "0 0 24 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-VFD\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps, \"tags\":tags_table_dataset})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "VFD",
"tooltip": {
"enabled": true
}
},
"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"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "session.custom.alarm_filter.show_VFD"
},
"type": "property"
}
}
},
"props": {
"mode": "percent",
"style": {
"cursor": "pointer",
"userSelect": "none"
}
},
"type": "ia.container.coord"
}
}

View File

@ -9,8 +9,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T13:56:54Z"
"timestamp": "2025-10-22T12:26:53Z"
},
"lastModificationSignature": "3ddc5c3d4df60f8ae35ee3826649cb422fa23a434fb7b96e802fca83a4d355f6"
"lastModificationSignature": "923bd822812bf86f3cb8564f5de6795fb395ad467bc2c14deaec024830ded069"
}
}

View File

@ -9,9 +9,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-10-20T13:55:55Z"
"actor": "admin",
"timestamp": "2025-10-22T12:27:11Z"
},
"lastModificationSignature": "30918a49cbd6e22c3041de8063cd3f5fa974e4eca5a8039f4f4a26728162b184"
"lastModificationSignature": "92dc526633cdadc1c051b1e20b2f353c904c49baab3bfdc197c3dda4d1a687b2"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -1,9 +1,5 @@
{
"custom": {
"params": {
"highlightTagPath": "value",
"panZoomScale": 1
},
"scale": 1,
"x": 0,
"y": 0
@ -24,25 +20,6 @@
"viewPath": "autStand/Detailed_Views/MCM-Views/MCM01"
},
"propConfig": {
"custom.params": {
"binding": {
"config": {
"struct": {
"scale": "{view.custom.scale}",
"viewParams": "{view.params.viewParams}"
},
"waitOnAll": true
},
"transforms": [
{
"code": "\toutput \u003d {}\n\toutput \u003d system.util.jsonDecode(system.util.jsonEncode(value.viewParams))\n\toutput[\u0027panZoomScale\u0027] \u003d round(value.scale,2)\n\t\n\treturn output",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true
},
"custom.scale": {
"binding": {
"config": {
@ -101,15 +78,7 @@
"props.params": {
"binding": {
"config": {
"path": "view.custom.params"
},
"type": "property"
}
},
"props.params.highlightTagPath": {
"binding": {
"config": {
"path": "view.custom.params.highlightTagPath"
"path": "view.params.viewParams"
},
"type": "property"
}
@ -679,6 +648,10 @@
"meta": {
"name": "root"
},
"position": {
"x": -0.3026,
"y": -0.0454
},
"props": {
"mode": "percent",
"style": {

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T13:58:23Z"
"timestamp": "2025-10-22T12:30:50Z"
},
"lastModificationSignature": "48821cc3ed06809379b10bbaa945f232b379a593977a3d60448e5ea9f80eb721"
"lastModificationSignature": "cfbf81a8ca69d1d531d9ea942f7772d078892ad27e3d6829f4d88ae2a604cb59"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -2396,18 +2396,18 @@
},
{
"meta": {
"name": "PS3_1_BCN4_H"
"name": "PS3_2_BCN1_H"
},
"position": {
"height": 0.0185,
"width": 0.0104,
"x": 0.2938,
"x": 0.5068,
"y": 0.2176
},
"props": {
"params": {
"tagProps": [
"System/MCM01/Beacon/PS3_1_BCN4_H",
"System/MCM01/Beacon/PS3_2_BCN1_H",
"value",
"value",
"value",
@ -2728,40 +2728,6 @@
},
"type": "ia.display.view"
},
{
"meta": {
"name": "UL14_4_ENSH1"
},
"position": {
"height": 0.0231,
"width": 0.013,
"x": 0.1509,
"y": 0.3152
},
"props": {
"params": {
"tagProps": [
"System/MCM01/ENCODER/ENSH/UL14_4_ENSH1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Encoder",
"style": {
"borderRadius": "50%",
"classes": "hover ",
"overflow": "visible"
}
},
"type": "ia.display.view"
},
{
"meta": {
"name": "UL15_1_ENSH1"
@ -2796,40 +2762,6 @@
},
"type": "ia.display.view"
},
{
"meta": {
"name": "UL15_2_ENSH1"
},
"position": {
"height": 0.0231,
"width": 0.013,
"x": 0.0311,
"y": 0.3641
},
"props": {
"params": {
"tagProps": [
"System/MCM01/ENCODER/ENSH/UL15_2_ENSH1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Encoder",
"style": {
"borderRadius": "50%",
"classes": "hover",
"overflow": "visible"
}
},
"type": "ia.display.view"
},
{
"meta": {
"name": "UL15_3_ENSH1"
@ -5077,7 +5009,7 @@
"custom.isVerticalRotation": {
"binding": {
"config": {
"expression": "if({session.custom.rotation} \u003d \"90deg\" || {session.custom.rotation} \u003d \"270deg\", true, false)"
"expression": "if({this.custom.rotation} \u003d \"90deg\" || {this.custom.rotation} \u003d \"270deg\", true, false)"
},
"type": "expr"
}

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T13:58:17Z"
"timestamp": "2025-10-22T12:58:57Z"
},
"lastModificationSignature": "b31eae3b72d92cf4e34753b68cbf9daa04ff450bd3de1c7df0621efa51966160"
"lastModificationSignature": "571b4ad341d023dbab83e459fed66a37ae5e39dcd6f28b1142465117b8eef224"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -3304,7 +3304,7 @@
"props": {
"params": {
"tagProps": [
"System/MCM02/PRX/S03_CH101_PRX1",
"System/MCM02/Chute/S03_CH101/PRX1",
"value",
"value",
"value",
@ -3905,7 +3905,7 @@
"height": 0.0231,
"width": 0.013,
"x": 0.8222,
"y": 0.4984
"y": 0.5002
},
"props": {
"params": {

View File

@ -8,9 +8,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-10-20T13:55:55Z"
"actor": "admin",
"timestamp": "2025-10-21T12:03:50Z"
},
"lastModificationSignature": "b413d6a48817a8d48d7cf6d280127ee1b3e263259a73ae47e61471d655761669"
"lastModificationSignature": "b32bc9894650a7177bf937cd21e008b40e26646cd58cc6af377640090e574d5f"
}
}

View File

@ -1,13 +1,15 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"flashing": false,
"flashingColor": "#808080",
"solidColor": "#808080",
"state": "Closed"
},
"params": {
"demoColor": -1,
"demoColor": "asd",
"demoState": 0,
"tagProps": [
"System/MCM02/Beacon/S03_CH115_BCN1_B",
"System/MCM02/Beacon/S03_CH115_BCN1_A",
"value",
"value",
"value",
@ -20,169 +22,74 @@
]
},
"propConfig": {
"custom.color": {
"custom.flashing": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
"expression": "{view.custom.state} \u003d \"Flashing\""
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color"
"type": "expr"
},
"persistent": true
},
"custom.flashingColor": {
"binding": {
"config": {
"expression": "now(100)"
},
"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",
"code": "\tflashing \u003d self.custom.flashing\n\tcurrentColor \u003d self.custom.solidColor\n\t\n\tif not flashing:\n\t\treturn currentColor\n\t\t\n\t\n\timport datetime\n\tsecond \u003d datetime.datetime.now().second % 2 # 0 or 1 for blinking\n\n\treturn currentColor if second \u003d\u003d 0 else \"#F6F6F6\"\t\n",
"type": "script"
}
],
"type": "expr"
},
"persistent": true
},
"custom.solidColor": {
"binding": {
"config": {
"expression": "{view.params.tagProps[0]}"
},
"transforms": [
{
"expression": "if(\r\n {view.params.demoColor} !\u003d \"\",\r\n {view.params.demoColor},\r\n coalesce({value}, \"S\")\r\n)\r\n",
"type": "expression"
},
{
"fallback": "#000000",
"code": "\treturn value[-1]",
"type": "script"
},
{
"fallback": "#808080",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#C2C2C2"
},
{
"input": 1,
"input": "R",
"output": "#FF0000"
},
{
"input": 2,
"output": "#FFA500"
"input": "G",
"output": "#47FF47"
},
{
"input": 3,
"output": "#0008FF"
"input": "B",
"output": "#0000FF"
},
{
"input": 4,
"output": "#00FF00"
"input": "A",
"output": "#FF8C00"
},
{
"input": 5,
"output": "#FFF700"
},
{
"input": 6,
"output": "#87CEEB"
},
{
"input": 7,
"output": "#90EE90"
},
{
"input": 8,
"output": "#964B00"
},
{
"input": 9,
"input": "H",
"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"
"type": "expr"
},
"persistent": true
},
@ -199,7 +106,7 @@
},
"transforms": [
{
"expression": "coalesce({value},0)",
"expression": "if(\r\n {view.params.demoState} \u003e\u003d 0,\r\n {view.params.demoState},\r\n coalesce({value}, 0)\r\n)\r\n",
"type": "expression"
},
{
@ -405,6 +312,10 @@
{
"input": 49,
"output": "Tipper Faulted"
},
{
"input": 57,
"output": "Flashing"
}
],
"outputType": "scalar",
@ -419,6 +330,10 @@
"paramDirection": "input",
"persistent": true
},
"params.demoState": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
@ -444,7 +359,7 @@
"props.elements[1].fill.paint": {
"binding": {
"config": {
"path": "view.custom.color"
"path": "view.custom.flashingColor"
},
"type": "property"
}
@ -527,7 +442,7 @@
"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"
"expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T11:58:13Z"
"timestamp": "2025-10-22T12:36:08Z"
},
"lastModificationSignature": "0c0947530778d6e36f0d83abe8a1de6a17d5982ff62ac2f7a0a6f58ababc65e0"
"lastModificationSignature": "b754899792303c1c2911d55c2f566af91a08ab20ffec205e175bb563da56e561"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 592 B

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T09:27:39Z"
"timestamp": "2025-10-22T13:04:53Z"
},
"lastModificationSignature": "d0c6322231faecb79019020807c6adda426295f8d882aeec26e7e38ae992d33c"
"lastModificationSignature": "ab5510cd9db05559a0e96740d774e66e440b0e499daba54c05c6b9223610fc1f"
}
}

View File

@ -1,13 +1,12 @@
{
"custom": {
"color": "#C2C2C2",
"priority": "No Active Alarms",
"state": "Closed"
"state": 1
},
"params": {
"demoColor": -1,
"tagProps": [
"/system/mcm01/test",
"System/MCM02/Chute/S03_CH103/PRX1",
"value",
"value",
"value",
@ -137,55 +136,6 @@
},
"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": {
@ -195,222 +145,8 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}"
},
"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
@ -522,7 +258,7 @@
"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"
"expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}

View File

@ -8,9 +8,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-10-20T13:55:55Z"
"actor": "admin",
"timestamp": "2025-10-21T11:04:19Z"
},
"lastModificationSignature": "05c00c073049f73ea886955c4c3bec954368aebf2a52498c3b6b16468edc93de"
"lastModificationSignature": "1727298c57196071275f53ffd47baf139812d0fa8865d766c1bb09b025d70046"
}
}

View File

@ -1,11 +1,12 @@
{
"custom": {
"color": "#C2C2C2",
"color": "#000000",
"priority": "No Active Alarms",
"state": "Closed"
},
"params": {
"demoColor": -1,
"demoState": 0,
"tagProps": [
"System/MCM02/Solenoid/NCS1_1_SOL48",
"value",
@ -33,7 +34,7 @@
},
"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",
"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"
},
{
@ -199,7 +200,7 @@
},
"transforms": [
{
"expression": "coalesce({value},0)",
"expression": "if(\r\n {view.params.demoState} \u003e\u003d 0,\r\n {view.params.demoState},\r\n coalesce({value}, 0)\r\n)\r\n",
"type": "expression"
},
{
@ -405,6 +406,10 @@
{
"input": 49,
"output": "Tipper Faulted"
},
{
"input": 54,
"output": "Diverting"
}
],
"outputType": "scalar",
@ -419,6 +424,10 @@
"paramDirection": "input",
"persistent": true
},
"params.demoState": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
@ -441,22 +450,25 @@
"width": 1
},
"propConfig": {
"props.elements[1].fill.paint": {
"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": [
{
"id": "defs1",
"name": "defs1",
"type": "defs"
},
{
"fill": {},
"height": "47.417244",
@ -474,6 +486,7 @@
{
"elements": [
{
"fill": {},
"id": "tspan1",
"name": "tspan1",
"stroke": {
@ -482,7 +495,7 @@
"text": "SOL",
"type": "tspan",
"x": "24.958401",
"y": "31.781378"
"y": 31.781378
}
],
"fill": {

View File

@ -9,9 +9,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-10-20T13:55:55Z"
"actor": "admin",
"timestamp": "2025-10-21T12:26:03Z"
},
"lastModificationSignature": "7c1c765320413a1f6eca6a9dc97188ee02e6885d26b205ae7cc270bca7576657"
"lastModificationSignature": "c05b6cdf7f4970a2adf737588dcb6979b42c3b0de1b54cb06d68a91283283922"
}
}

View File

@ -26,7 +26,7 @@
},
"transforms": [
{
"code": "\tstate \u003d str(self.custom.state).strip().upper() # normalize input\n\t\n\tif state \u003d\u003d \"CLOSED\": \n\t\treturn \"#C2C2C2\"\n\t\n\timport datetime\n\tsecond \u003d datetime.datetime.now().second % 2 # 0 or 1 for blinking\n\t\n\tif state \u003d\u003d \"OK\":\n\t return \"#1fff1a\"\n\telif state \u003d\u003d \"DISCONNECTED\":\n\t return \"#C2C2C2\"\n\telif state \u003d\u003d \"FAULTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#1fff1a\"\n\telif state \u003d\u003d \"FAULTED/DISCONNECTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#C2C2C2\"\n",
"code": "\tstate \u003d str(self.custom.state).strip().upper() # normalize input\n\t\n\tif state \u003d\u003d \"CLOSED\": \n\t\treturn \"#C2C2C2\"\n\t\n\timport datetime\n\tsecond \u003d datetime.datetime.now().second % 2 # 0 or 1 for blinking\n\t\n\tif state \u003d\u003d \"OK\":\n\t return \"#1fff1a\"\n\telif state \u003d\u003d \"DISCONNECTED\":\n\t return \"#d3d3d3\"\n\telif state \u003d\u003d \"FAULTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#1fff1a\"\n\telif state \u003d\u003d \"FAULTED/DISCONNECTED\":\n\t return \"#f9050d\" if second \u003d\u003d 0 else \"#d3d3d3\"\n",
"type": "script"
}
],

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-20T14:07:43Z"
"timestamp": "2025-10-21T12:27:01Z"
},
"lastModificationSignature": "3d5e34e6a23e0225696a9286e2d149fb8237fb16ff01ff1be5afde753ef70e62"
"lastModificationSignature": "4172dd34ebc6a6dc1a3468da7d586039462c2d1fc432a159dfa91969712787f0"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

@ -13,86 +13,6 @@
"children": [
{
"children": [
{
"meta": {
"name": "Label_30"
},
"position": {
"height": 25,
"width": 51.49,
"x": 225.01,
"y": 181
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "ON"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_31"
},
"position": {
"height": 25,
"width": 50,
"x": 226.83929443359375,
"y": 291.63099479675293
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "ON"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_32"
},
"position": {
"height": 25,
"width": 51.49,
"x": 225.01,
"y": 238
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "ON"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_29"
},
"position": {
"height": 25,
"width": 51.49,
"x": 225.01,
"y": 120
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "ON"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_15"
@ -100,8 +20,8 @@
"position": {
"height": 25,
"width": 29.86,
"x": 147.32,
"y": 120
"x": 77.32,
"y": 150
},
"props": {
"style": {
@ -120,8 +40,8 @@
"position": {
"height": 25,
"width": 32.96,
"x": 145.77,
"y": 181
"x": 75.77,
"y": 211
},
"props": {
"style": {
@ -140,8 +60,8 @@
"position": {
"height": 25,
"width": 48.4,
"x": 138.05,
"y": 238
"x": 76.05,
"y": 268
},
"props": {
"style": {
@ -160,8 +80,8 @@
"position": {
"height": 25,
"width": "auto",
"x": 141.08334159851074,
"y": 291.8542003631592
"x": 74.083,
"y": 321.854
},
"props": {
"style": {
@ -180,8 +100,8 @@
"position": {
"height": 25,
"width": 51.48,
"x": 136.51,
"y": 61
"x": 66.51,
"y": 92
},
"props": {
"style": {
@ -199,9 +119,9 @@
},
"position": {
"height": 25,
"width": 51.49,
"x": 225.01,
"y": 61
"width": 147,
"x": 154.01,
"y": 41
},
"props": {
"style": {
@ -209,7 +129,10 @@
"fontSize": 16,
"textAlign": "center"
},
"text": "ON"
"text": "CLEARED / RESET REQUIRED",
"textStyle": {
"textAlign": "start"
}
},
"type": "ia.display.label"
},
@ -220,88 +143,7 @@
"position": {
"height": 25,
"width": 51.49,
"x": 48,
"y": 61
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "OFF"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_24"
},
"position": {
"height": 25,
"width": 51.49,
"x": 48,
"y": 120
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "OFF"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_25"
},
"position": {
"height": 25,
"width": 51.49,
"x": 48,
"y": 181
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "OFF"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_26"
},
"position": {
"height": 25,
"width": 50,
"x": 49.660768041992185,
"y": 292.0792205200196
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "OFF"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_27"
},
"position": {
"height": 25,
"width": 51.49,
"x": 48,
"y": 238
"y": 42
},
"props": {
"style": {
@ -334,36 +176,6 @@
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Beacon"
},
"position": {
"height": 50,
"width": 50,
"x": 276,
"y": 106.5
},
"props": {
"params": {
"demoColor": 1,
"tagProps": [
"R",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_0"
@ -371,12 +183,13 @@
"position": {
"height": 50,
"width": 50,
"x": 276,
"y": 49
"x": 156,
"y": 79
},
"props": {
"params": {
"demoColor": 12,
"demoColor": "",
"demoState": 0,
"tagProps": [
"H",
"value",
@ -401,11 +214,11 @@
"position": {
"height": 50,
"width": 50,
"y": 49
"y": 79
},
"props": {
"params": {
"demoColor": -1,
"demoState": 0,
"tagProps": [
"H",
"value",
@ -430,11 +243,11 @@
"position": {
"height": 50,
"width": 50,
"y": 106.5
"y": 136.5
},
"props": {
"params": {
"demoColor": -1,
"demoState": 1,
"tagProps": [
"R",
"value",
@ -459,11 +272,11 @@
"position": {
"height": 50,
"width": 50,
"y": 223
"y": 253
},
"props": {
"params": {
"demoColor": -1,
"demoState": 0,
"tagProps": [
"A",
"value",
@ -488,11 +301,11 @@
"position": {
"height": 50,
"width": 50,
"y": 166.5
"y": 196.5
},
"props": {
"params": {
"demoColor": -1,
"demoState": 0,
"tagProps": [
"System/MCM02/Beacon/S03_CH115_BCN1_B",
"value",
@ -517,101 +330,11 @@
"position": {
"height": 50,
"width": 50,
"y": 280
"y": 310
},
"props": {
"params": {
"demoColor": -1,
"tagProps": [
"G",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_5"
},
"position": {
"height": 50,
"width": 50,
"x": 276,
"y": 166.5
},
"props": {
"params": {
"demoColor": 3,
"tagProps": [
"System/MCM02/Beacon/S03_CH115_BCN1_B",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_7"
},
"position": {
"height": 50,
"width": 50,
"x": 276,
"y": 223
},
"props": {
"params": {
"demoColor": 2,
"tagProps": [
"A",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_8"
},
"position": {
"height": 50,
"width": 50,
"x": 276,
"y": 280
},
"props": {
"params": {
"demoColor": 4,
"demoState": 0,
"tagProps": [
"G",
"value",
@ -636,8 +359,8 @@
"position": {
"height": 25,
"width": 56.63,
"x": 331.14,
"y": 61
"x": 220.14,
"y": 91
},
"props": {
"style": {
@ -655,8 +378,8 @@
"position": {
"height": 25,
"width": 133.86,
"x": 331.14,
"y": 120
"x": 220.14,
"y": 150
},
"props": {
"style": {
@ -674,8 +397,8 @@
"position": {
"height": 25,
"width": 133.86,
"x": 331.14,
"y": 181
"x": 220.14,
"y": 211
},
"props": {
"style": {
@ -693,8 +416,8 @@
"position": {
"height": 25,
"width": 133.86,
"x": 331.14,
"y": 238
"x": 219.14,
"y": 268
},
"props": {
"style": {
@ -712,8 +435,8 @@
"position": {
"height": 25,
"width": 130,
"x": 331.482177734375,
"y": 291.4077892303467
"x": 218.482,
"y": 323.408
},
"props": {
"style": {
@ -723,13 +446,219 @@
"text": "Running"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Label_29"
},
"position": {
"height": 25,
"width": 51.49,
"x": 366.01,
"y": 41
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "center"
},
"text": "FLASHING ACTIVE"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Beacon_9"
},
"position": {
"height": 50,
"width": 50,
"x": 366,
"y": 136.5
},
"props": {
"params": {
"demoColor": "",
"demoState": 57,
"tagProps": [
"R",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_11"
},
"position": {
"height": 50,
"width": 50,
"x": 366,
"y": 253
},
"props": {
"params": {
"demoColor": "",
"demoState": 57,
"tagProps": [
"A",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_5"
},
"position": {
"height": 50,
"width": 50,
"x": 156,
"y": 136.5
},
"props": {
"params": {
"demoColor": "",
"demoState": 4,
"tagProps": [
"R",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_7"
},
"position": {
"height": 50,
"width": 50,
"x": 156,
"y": 196.5
},
"props": {
"params": {
"demoColor": "",
"demoState": 0,
"tagProps": [
"System/MCM02/Beacon/S03_CH115_BCN1_B",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_8"
},
"position": {
"height": 50,
"width": 50,
"x": 156,
"y": 253
},
"props": {
"params": {
"demoColor": "",
"demoState": 0,
"tagProps": [
"A",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Beacon_13"
},
"position": {
"height": 50,
"width": 50,
"x": 156,
"y": 310
},
"props": {
"params": {
"demoColor": "",
"demoState": 0,
"tagProps": [
"G",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "autStand/Equipment/Beacon"
},
"type": "ia.display.view"
}
],
"meta": {
"name": "Beacons"
},
"position": {
"height": 0.3315,
"height": 0.4306,
"width": 0.2661,
"x": 0.0163,
"y": 0.5119
@ -2544,7 +2473,7 @@
"height": 0.1972,
"width": 0.112,
"x": 0.4511,
"y": 0.546
"y": 0.5832
},
"props": {
"style": {
@ -3365,7 +3294,8 @@
},
"props": {
"params": {
"demoColor": 0
"demoColor": -1,
"demoState": -1
},
"path": "autStand/Equipment/Solenoid"
},
@ -3379,7 +3309,7 @@
"height": 25,
"width": 152,
"x": 60,
"y": 42.5
"y": 48.5
},
"props": {
"style": {
@ -3399,7 +3329,7 @@
"height": 25,
"width": 50,
"x": 62,
"y": 110
"y": 170
},
"props": {
"style": {
@ -3407,7 +3337,7 @@
"fontSize": 16,
"textAlign": "left"
},
"text": "Energized"
"text": "Diverting"
},
"type": "ia.display.label"
},
@ -3439,11 +3369,12 @@
"position": {
"height": 50,
"width": 50,
"y": 96.5
"y": 156.5
},
"props": {
"params": {
"demoColor": 4
"demoColor": 4,
"demoState": 4
},
"path": "autStand/Equipment/Solenoid"
},
@ -3456,11 +3387,12 @@
"position": {
"height": 50,
"width": 50,
"y": 166
"y": 218
},
"props": {
"params": {
"demoColor": 1
"demoColor": 1,
"demoState": 1
},
"path": "autStand/Equipment/Solenoid"
},
@ -3474,7 +3406,7 @@
"height": 25,
"width": 50,
"x": 62,
"y": 178
"y": 228
},
"props": {
"style": {
@ -3485,13 +3417,51 @@
"text": "Fault"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "LS_Actuated_0_NoComm_0"
},
"position": {
"height": 50,
"width": 50,
"y": 96.5
},
"props": {
"params": {
"demoColor": 0,
"demoState": 1
},
"path": "autStand/Equipment/Solenoid"
},
"type": "ia.display.view"
},
{
"meta": {
"name": "Label_NoComm_9"
},
"position": {
"height": 25,
"width": 152,
"x": 60,
"y": 109.5
},
"props": {
"style": {
"fontFamily": "Arial",
"fontSize": 16,
"textAlign": "left"
},
"text": "Normal"
},
"type": "ia.display.label"
}
],
"meta": {
"name": "SOL Status"
},
"position": {
"height": 0.2093,
"height": 0.2611,
"width": 0.113,
"x": 0.4495,
"y": 0.3112
@ -3645,7 +3615,7 @@
"height": 0.1726,
"width": 0.1083,
"x": 0.4511,
"y": 0.7634
"y": 0.8006
},
"props": {
"style": {
@ -4108,8 +4078,8 @@
"name": "root"
},
"position": {
"x": 0,
"y": 0
"x": 0.0292,
"y": 0.0722
},
"props": {
"mode": "percent",

View File

@ -9,9 +9,9 @@
],
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-10-20T13:55:55Z"
"actor": "admin",
"timestamp": "2025-10-21T13:23:21Z"
},
"lastModificationSignature": "b670aa55b82a2fc713ed22cef76d53c6cb43393253f8a91d2502e00f9520399b"
"lastModificationSignature": "f019df3e54f40034f1c4e507e26f53f713471228cce9f6a3a0fbeee4c2cbc4ac"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -618,7 +618,7 @@
"$": [
"ds",
192,
1759761548447
1761053000347
],
"$columns": [
{
@ -2165,7 +2165,7 @@
"$": [
"ds",
192,
1759761548443
1761053000339
],
"$columns": [
{
@ -2217,7 +2217,7 @@
"$": [
"ds",
192,
1759761548444
1761053000341
],
"$columns": [
{
@ -3538,7 +3538,7 @@
"$": [
"ds",
192,
1759761548447
1761053000349
],
"$columns": [
{
@ -4880,7 +4880,7 @@
"$": [
"ds",
192,
1759761548449
1761053000357
],
"$columns": [
{
@ -9629,7 +9629,7 @@
"$": [
"ds",
192,
1759761548449
1761053000357
],
"$columns": [
{
@ -24962,7 +24962,7 @@
"$": [
"ds",
192,
1759761548446
1761053000338
],
"$columns": [
{
@ -29578,7 +29578,7 @@
},
"props": {
"dismissOnSelect": false,
"formattedValue": "Oct 6, 2025 5:39 PM",
"formattedValue": "Oct 21, 2025 4:23 PM",
"formattedValues": {
"date": "Mar 26, 2021",
"datetime": "Mar 26, 2021 12:00 AM",
@ -29596,9 +29596,9 @@
"$": [
"ts",
192,
1759761548441
1761053000328
],
"$ts": 1759757948000
"$ts": 1761049400000
}
},
"type": "ia.input.date-time-input"
@ -29749,7 +29749,7 @@
},
"props": {
"dismissOnSelect": false,
"formattedValue": "Oct 6, 2025 6:39 PM",
"formattedValue": "Oct 21, 2025 5:23 PM",
"formattedValues": {
"date": "Mar 29, 2021",
"datetime": "Mar 29, 2021 1:37 PM",
@ -29767,9 +29767,9 @@
"$": [
"ts",
192,
1759761548441
1761053000328
],
"$ts": 1759761548000
"$ts": 1761053000000
}
},
"type": "ia.input.date-time-input"

View File

@ -1,44 +1,36 @@
def calculateFocus(child, scale=1.7, OFFSET_Y=350):
def calculateFocus(self, child, scale=1.7):
# Read rotation
try:
rot = int(str(self.session.custom.rotation).replace("deg", "")) % 360
except:
rot = 0
DEVICE_VIEW_WIDTH = 1850
DEVICE_VIEW_HEIGHT = 1080
ZOOM_VIEW_WIDTH = 1920
ZOOM_VIEW_HEIGHT = 1080
# Device normalized coords (0..1)
x = float(child.position.x)
y = float(child.position.y)
# Device percent coordinates
percentX = child.position.x
percentY = 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),
}
# Convert to device view pixels
devicePixelX = percentX * DEVICE_VIEW_WIDTH
devicePixelY = percentY * DEVICE_VIEW_HEIGHT
c = COEFFS.get(rot, COEFFS[0])
# Scale to zoom view
zoomPixelX = devicePixelX * (ZOOM_VIEW_WIDTH / DEVICE_VIEW_WIDTH)
zoomPixelY = devicePixelY * (ZOOM_VIEW_HEIGHT / DEVICE_VIEW_HEIGHT)
# Device width scaling
deviceWidthPixels = child.position.width * DEVICE_VIEW_WIDTH
zoomDeviceWidth = deviceWidthPixels * (ZOOM_VIEW_WIDTH / DEVICE_VIEW_WIDTH)
# X offset (account for width)
dx = (ZOOM_VIEW_WIDTH / 2 - zoomPixelX) - (zoomDeviceWidth / 2)
# Rotation-aware vertical offset
rotation = getattr(child.position.rotate, "angle", "0deg")
if rotation == "90deg" and percentY> 0.3:
adjustedOffsetY = zoomDeviceWidth
else:
adjustedOffsetY = OFFSET_Y
# Dynamic Y offset zones
if percentY < 0.5:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2) + adjustedOffsetY
elif 0.5 <= percentY < 0.6:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2)
else:
dy = (zoomPixelY - ZOOM_VIEW_HEIGHT / 2) - adjustedOffsetY
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
@ -149,7 +141,7 @@ def handleTagHighlight(view, currentValue):
system.perspective.openDock(docked_view[0], params = {'tagProps':tagProps, 'tags': docked_view[1], 'devices':docked_view[2]})
system.perspective.sendMessage(
"focusDevice",
payload = calculateFocus(child),
payload = calculateFocus(view, child),
scope="session"
)
foundMatch = True

View File

@ -9,9 +9,9 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-10-10T10:54:17Z"
"timestamp": "2025-10-22T11:44:16Z"
},
"hintScope": 2,
"lastModificationSignature": "f4f3560d4d1aaec9cbe80b7ea9686ca505ffde80c085a9143cae8a5d327f6419"
"lastModificationSignature": "4d39d13641be4875159b88aa2a44c337ef831be88e0d24024d83687702bb777d"
}
}