Files
Stream_PHX_A7/Gateways/FE/projects/.resources/38f3ad61e118602357dc910ae4b42a914ce05fae7b935793cb82bec63e5941cb

754 lines
28 KiB
Plaintext

{
"custom": {
"providers": [
"Ignition_Common_IO_Gtwy",
"Ignition_SATB1_IO1_default",
"Ignition_SATB1_IO2_default",
"Ignition_SATB1_IO3_default",
"Ignition_SATB1_IO4_default",
"Ignition_SATB1_IO5_default"
]
},
"events": {
"system": {
"onStartup": {
"config": {
"script": "\n\tend \u003d system.date.now()\n\tstart \u003d system.date.addDays(end, -7)\n\t\n\tself.getChild(\"root\").getChild(\"Data\").getChild(\"Settings\").getChild(\"StartDate\").getChild(\"DateTimeInput\").props.value \u003d start\n\tself.getChild(\"root\").getChild(\"Data\").getChild(\"Settings\").getChild(\"EndDate\").getChild(\"DateTimeInput\").props.value \u003d end"
},
"scope": "G",
"type": "script"
}
}
},
"params": {},
"propConfig": {
"custom.providers": {
"persistent": true
}
},
"props": {
"defaultSize": {
"width": 1255
}
},
"root": {
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "80px"
},
"props": {
"text": "Provider"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown"
},
"position": {
"grow": 1
},
"propConfig": {
"props.options": {
"binding": {
"config": {
"struct": {
"provs": "{view.custom.providers}"
},
"waitOnAll": true
},
"transforms": [
{
"code": "\tret \u003d []\n\t\n\tfor val in value[\u0027provs\u0027]:\n\t\titem \u003d {\n\t\t\t\"value\": \u0027[\u0027+val+\u0027]\u0027,\n\t\t\t\"label\": val\n\t\t}\n\t\tret.append(item)\n\treturn ret",
"type": "script"
}
],
"type": "expr-struct"
}
}
},
"props": {
"value": "[Ignition_Common_IO_Gtwy]"
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "Provider"
},
"position": {
"basis": "36px"
},
"type": "ia.container.flex"
},
{
"meta": {
"name": "TagBrowseTree"
},
"position": {
"basis": "400px",
"grow": 1
},
"propConfig": {
"props.root.path": {
"binding": {
"config": {
"path": "../Provider/Dropdown.props.value"
},
"type": "property"
}
}
},
"props": {
"filter": {
"enabled": true
},
"root": {}
},
"scripts": {
"customMethods": [],
"extensionFunctions": [
{
"enabled": true,
"name": "filterBrowseNode",
"script": "\t#system.perspective.print(str(node))\n\tif node.attributes is not None:\n\t\tfor attribute in node.getAttributes():\n\t\t\tif attribute.getId() \u003d\u003d \"history\":\n\t\t\t\treturn True\n\treturn node.hasChildren()"
}
],
"messageHandlers": []
},
"type": "ia.display.tag-browse-tree"
}
],
"meta": {
"name": "TagSelect"
},
"position": {
"basis": "325px"
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"overflow": "visible",
"paddingLeft": "5px",
"paddingRight": "5px",
"paddingTop": "80px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "Mode"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown"
},
"position": {
"basis": "36px"
},
"props": {
"options": [
{
"label": "Historical",
"value": "historical"
},
{
"label": "Realtime",
"value": "realtime"
}
],
"value": "historical"
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "Mode"
},
"position": {
"basis": "150px",
"shrink": 0
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "Start Date"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "DateTimeInput"
},
"position": {
"basis": "36px"
},
"props": {
"formattedValue": "Feb 5, 2026 11:05 AM",
"inputProps": {
"style": {
"fontSize": 12
}
},
"value": {
"$": [
"ts",
192,
1770915919423
],
"$ts": 1770311119423
}
},
"type": "ia.input.date-time-input"
}
],
"meta": {
"name": "StartDate"
},
"position": {
"basis": "160px",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "{../Mode/Dropdown.props.value} \u003d \"historical\""
},
"type": "expr"
}
}
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "End Date"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "DateTimeInput"
},
"position": {
"basis": "36px"
},
"propConfig": {
"props.value": {
"binding": {
"config": {
"expression": "addDays(now(0),-1)"
},
"type": "expr"
}
}
},
"props": {
"formattedValue": "Feb 12, 2026 11:05 AM",
"inputProps": {
"style": {
"fontSize": 12
}
}
},
"type": "ia.input.date-time-input"
}
],
"meta": {
"name": "EndDate"
},
"position": {
"basis": "160px",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "{../Mode/Dropdown.props.value} \u003d \"historical\""
},
"type": "expr"
}
}
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "Most Recent"
},
"type": "ia.display.label"
},
{
"children": [
{
"meta": {
"name": "NumericEntryField"
},
"position": {
"basis": "40px",
"shrink": 0
},
"props": {
"format": 0,
"value": 1
},
"type": "ia.input.numeric-entry-field"
},
{
"meta": {
"name": "Dropdown"
},
"position": {
"basis": "256px"
},
"props": {
"options": [
{
"label": "min",
"value": "minutes"
},
{
"label": "hour",
"value": "hours"
},
{
"label": "day",
"value": "days"
}
],
"value": "minutes"
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "37px"
},
"props": {
"style": {
"gap": "1px"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "RealTime"
},
"position": {
"basis": "145px",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "{../Mode/Dropdown.props.value} \u003d \"realtime\""
},
"type": "expr"
}
}
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "Interval"
},
"type": "ia.display.label"
},
{
"children": [
{
"meta": {
"name": "NumericEntryField"
},
"position": {
"basis": "32px",
"shrink": 0
},
"props": {
"format": 0,
"value": 1
},
"type": "ia.input.numeric-entry-field"
},
{
"meta": {
"name": "Dropdown"
},
"position": {
"basis": "256px"
},
"props": {
"options": [
{
"label": "min",
"value": "min"
},
{
"label": "hour",
"value": "hour"
},
{
"label": "day",
"value": "day"
}
],
"value": "min"
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "37px"
},
"props": {
"style": {
"gap": "1px"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Interval"
},
"position": {
"basis": "135px",
"shrink": 0
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px"
},
"props": {
"text": "Calculation"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown"
},
"position": {
"basis": "36px"
},
"props": {
"options": [
{
"label": "Last Value",
"value": "LastValue"
},
{
"label": "Average",
"value": "SimpleAverage"
},
{
"label": "Time Weighted Avg",
"value": "Average"
},
{
"label": "Minimum",
"value": "Minimum"
},
{
"label": "Maximum",
"value": "Maximum"
},
{
"label": "Sum",
"value": "Sum"
},
{
"label": "Range",
"value": "Range"
},
{
"label": "Variance",
"value": "Variance"
},
{
"label": "Std Dev",
"value": "StdDev"
},
{
"label": "Min Max",
"value": "MinMax"
}
],
"value": "LastValue"
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "Calculation"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"direction": "column",
"style": {
"gap": "5px",
"paddingRight": "3px"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tspp \u003d self.parent.parent\n\n\thistMode \u003d spp.getChild(\"Mode\").getChild(\"Dropdown\").props.value\n\tstartDate \u003d spp.getChild(\"StartDate\").getChild(\"DateTimeInput\").props.value\n\tendDate \u003d spp.getChild(\"EndDate\").getChild(\"DateTimeInput\").props.value\n\trecUnit \u003d spp.getChild(\"RealTime\").getChild(\"FlexContainer\").getChild(\"NumericEntryField\").props.value\n\trecMeasure \u003d spp.getChild(\"RealTime\").getChild(\"FlexContainer\").getChild(\"Dropdown\").props.value\n\tintervalUnit \u003d spp.getChild(\"Interval\").getChild(\"FlexContainer\").getChild(\"NumericEntryField\").props.value\n\tintervalMeasure \u003d spp.getChild(\"Interval\").getChild(\"FlexContainer\").getChild(\"Dropdown\").props.value\n\taggMethod \u003d spp.getChild(\"Calculation\").getChild(\"Dropdown\").props.value\n\t\n\tpaths \u003d self.parent.parent.parent.parent.getChild(\"TagSelect\").getChild(\"TagBrowseTree\").props.selection.values\n\tif histMode \u003d\u003d \"realtime\":\n\t\tendDate \u003d system.date.now()\n\t\tif recMeasure \u003d\u003d \"hours\":\n\t\t\trecUnit \u003d 60 * recUnit\n\t\telif recMeasure \u003d\u003d \"days\":\n\t\t\trecUnit \u003d 1440 * recUnit\n\t\tstartDate \u003d system.date.addMinutes(endDate, -(recUnit))\n\t\n\tintervalMinutes \u003d intervalUnit\n\tif intervalMeasure\u003d\u003d \"hour\":\n\t\tintervalMinutes \u003d intervalUnit * 60\n\telif intervalMeasure \u003d\u003d \"day\":\n\t\tintervalMinutes \u003d intervalUnit * 1440\n#\tsystem.perspective.print(system.tag.queryTagHistory(paths, startDate, endDate, -1, aggMethod, intervalMinutes\u003dintervalMinutes))\n\tspp.parent.getChild(\"Table\").props.data \u003d system.tag.queryTagHistory(paths, startDate, endDate, -1, aggMethod, intervalMinutes\u003dintervalMinutes)"
},
"scope": "G",
"type": "script"
}
},
"dom": {
"onClick": {
"config": {
"script": "\tspp \u003d self.parent.parent\n\thistMode \u003d spp.getChild(\"Mode\").getChild(\"Dropdown\").props.value\n\tstartDate \u003d spp.getChild(\"StartDate\").getChild(\"DateTimeInput\").props.value\n\tendDate \u003d spp.getChild(\"EndDate\").getChild(\"DateTimeInput\").props.value\n\trecUnit \u003d spp.getChild(\"RealTime\").getChild(\"FlexContainer\").getChild(\"NumericEntryField\").props.value\n\trecMeasure \u003d spp.getChild(\"RealTime\").getChild(\"FlexContainer\").getChild(\"Dropdown\").props.value\n\tintervalUnit \u003d spp.getChild(\"Interval\").getChild(\"FlexContainer\").getChild(\"NumericEntryField\").props.value\n\tintervalMeasure \u003d spp.getChild(\"Interval\").getChild(\"FlexContainer\").getChild(\"Dropdown\").props.value\n\taggMethod \u003d spp.getChild(\"Calculation\").getChild(\"Dropdown\").props.value\n\t\n\tpaths \u003d[point[\"data\"][\"source\"] for point in self.view.params.selectedPens]\n\t\n\tif histMode \u003d\u003d \"realtime\":\n\t\tendDate \u003d system.date.now()\n\t\tif recMeasure \u003d\u003d \"hours\":\n\t\t\trecUnit \u003d 60 * recUnit\n\t\telif recMeasure \u003d\u003d \"days\":\n\t\t\trecUnit \u003d 1440 * recUnit\n\t\tstartDate \u003d system.date.addMinutes(endDate, -(recUnit))\n\telse:\n\t\tpass\n\t\n\tintervalMinutes \u003d intervalUnit\n\tif intervalMeasure\u003d\u003d \"hour\":\n\t\tintervalMinutes \u003d intervalUnit * 60\n\telif intervalMeasure \u003d\u003d \"day\":\n\t\tintervalMinutes \u003d intervalUnit * 1440\n#\tsystem.perspective.print(system.tag.queryTagHistory(paths, startDate, endDate, -1, aggMethod, intervalMinutes\u003dintervalMinutes))\n\tspp.parent.getChild(\"Table\").props.data \u003d system.tag.queryTagHistory(paths, startDate, endDate, -1, aggMethod, intervalMinutes\u003dintervalMinutes)"
},
"enabled": false,
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Set"
},
"position": {
"basis": "34px"
},
"props": {
"text": "Set"
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tds \u003d self.parent.parent.parent.getChild(\"Table\").props.data\n\tbyteData \u003d system.dataset.toExcel(True, [ds], [\"Trend\"])\n\tfName \u003d \"EQ Data Export.xlsx\"%()\n\tsystem.perspective.download(fName, byteData)"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Export"
},
"position": {
"basis": "34px"
},
"props": {
"text": "Export"
},
"type": "ia.input.button"
}
],
"meta": {
"name": "Buttons"
},
"position": {
"basis": "114px",
"shrink": 0
},
"props": {
"direction": "column",
"justify": "space-around"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Settings"
},
"position": {
"basis": "85px",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"meta": {
"name": "Table"
},
"position": {
"basis": "400px",
"grow": 1,
"shrink": 0
},
"propConfig": {
"props.columns": {
"binding": {
"config": {
"path": "this.props.data"
},
"transforms": [
{
"code": "\timport copy\n\tallCols \u003d []\n\ttry:\n\t\theaders \u003d system.dataset.getColumnHeaders(value)\n\t\ttemplate \u003d {\n\t\t\t \"field\": \"\",\n\t\t\t \"visible\": True,\n\t\t\t \"editable\": False,\n\t\t\t \"render\": \"auto\",\n\t\t\t \"justify\": \"auto\",\n\t\t\t \"align\": \"center\",\n\t\t\t \"resizable\": False,\n\t\t\t \"sortable\": False,\n\t\t\t \"sort\": \"none\",\n\t\t\t \"filter\": {\n\t\t\t \"enabled\": False,\n\t\t\t \"visible\": \"on-hover\",\n\t\t\t \"string\": {\n\t\t\t \"condition\": \"\",\n\t\t\t \"value\": \"\"\n\t\t\t },\n\t\t\t \"number\": {\n\t\t\t \"condition\": \"\",\n\t\t\t \"value\": \"\"\n\t\t\t },\n\t\t\t \"boolean\": {\n\t\t\t \"condition\": \"\"\n\t\t\t },\n\t\t\t \"date\": {\n\t\t\t \"condition\": \"\",\n\t\t\t \"value\": \"\"\n\t\t\t }\n\t\t\t },\n\t\t\t \"viewPath\": \"\",\n\t\t\t \"viewParams\": {},\n\t\t\t \"boolean\": \"checkbox\",\n\t\t\t \"number\": \"value\",\n\t\t\t \"toggleSwitch\": {\n\t\t\t \"color\": {\n\t\t\t \"selected\": \"\",\n\t\t\t \"unselected\": \"\"\n\t\t\t }\n\t\t\t },\n\t\t\t \"nullFormat\": {\n\t\t\t \"includeNullStrings\": False,\n\t\t\t \"strict\": False,\n\t\t\t \"nullFormatValue\": \"\"\n\t\t\t },\n\t\t\t \"numberFormat\": \"0,0.##\",\n\t\t\t \"dateFormat\": \"MM/DD/YYYY\",\n\t\t\t \"width\": \"\",\n\t\t\t \"strictWidth\": False,\n\t\t\t \"style\": {\n\t\t\t \"classes\": \"\"\n\t\t\t },\n\t\t\t \"header\": {\n\t\t\t \"title\": \"\",\n\t\t\t \"justify\": \"left\",\n\t\t\t \"align\": \"center\",\n\t\t\t \"style\": {\n\t\t\t \"classes\": \"\"\n\t\t\t }\n\t\t\t }\n\t\t\t}\n\t\t\n\t\tfor colname in headers:\n\t\t\tt1 \u003d copy.deepcopy(template)\n\t\t\tt1[\"field\"] \u003d colname\n\t\t\tif colname \u003d\u003d \"t_stamp\":\n\t\t\t\tt1[\"render\"] \u003d \"date\"\n\t\t\t\tt1[\"dateFormat\"] \u003d \"MM/DD/YYYY HH:mm:ss\"\n\t\t\t\tt1[\"header\"][\"title\"] \u003d \"Timestamp\"\n\t\t\tallCols.append(t1)\n\texcept:\n\t\tpass\n\treturn allCols\n\t",
"type": "script"
}
],
"type": "property"
}
},
"props.data": {
"persistent": false
}
},
"props": {
"emptyMessage": {
"noData": {
"text": "No Data Found"
}
}
},
"type": "ia.display.table"
}
],
"meta": {
"name": "Data"
},
"position": {
"basis": "200px",
"grow": 1
},
"props": {
"direction": "column",
"style": {
"overflow": "visible"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "root"
},
"props": {
"style": {
"gap": "5px"
}
},
"type": "ia.container.flex"
}
}