- Create FlowRatePopup view with time series chart for prefilter flow rate - Add onClick event to GPM label in Home view to open popup - Add Low priority alarms to PrimaryValveClosedInd, PumpInd, SedimentFilterValveOpenInd Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1656 lines
54 KiB
JSON
1656 lines
54 KiB
JSON
{
|
|
"custom": {},
|
|
"params": {},
|
|
"props": {},
|
|
"root": {
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Primary Valve"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Valve"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.state": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PrimaryValveClosedInd"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "default",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": false,
|
|
"output": "closed"
|
|
},
|
|
{
|
|
"input": true,
|
|
"output": "open"
|
|
}
|
|
],
|
|
"outputType": "scalar",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
},
|
|
"props.value.text": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PrimaryValveClosedMsg"
|
|
},
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"label": {
|
|
"text": ""
|
|
},
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"value": {}
|
|
},
|
|
"type": "ia.symbol.valve"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "300px",
|
|
"grow": 2
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/PrimaryValveCloseOverrideOn\"])[0].value\n\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PrimaryValveCloseOverrideOn\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PrimaryValveCloseOverrideOn\", \"[default]WaterMeter/PrimaryValveCloseOverrideOff\"], [True, False])\t\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PrimaryValveCloseOverrideOn"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override Open"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/PrimaryValveCloseOverrideOff\"])[0].value\n\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PrimaryValveCloseOverrideOff\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PrimaryValveCloseOverrideOff\", \"[default]WaterMeter/PrimaryValveCloseOverrideOn\"], [True, False])\t\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PrimaryValveCloseOverrideOff"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override Closed"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_2"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "PrimaryFilterDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 20
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Leak Sensors"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/LeakSensor1"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#AAAAAA",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#FF4747"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#00AC00"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Sensor 1"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/LeakSensor2"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#AAAAAA",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#FF4747"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#00AC00"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Sensor 2"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "LeakSensorsDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 0
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Sediment Filter Valve"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Valve"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.state": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/SedimentFilterValveOpenInd"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "default",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "open"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "closed"
|
|
}
|
|
],
|
|
"outputType": "scalar",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
},
|
|
"props.value.text": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/SedimentFilterValveOpenStatusMsg"
|
|
},
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"label": {
|
|
"text": ""
|
|
},
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"value": {}
|
|
},
|
|
"type": "ia.symbol.valve"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "300px",
|
|
"grow": 2
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOn\"])[0].value\n\t\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOn\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOn\", \"[default]WaterMeter/SedimentFilterValueOpenOverrideOff\"], [True, False])\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/SedimentFilterValueOpenOverrideOn"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override Open"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_3"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOff\"])[0].value\n\t\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOff\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/SedimentFilterValueOpenOverrideOff\", \"[default]WaterMeter/SedimentFilterValueOpenOverrideOn\"], [True, False])\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/SedimentFilterValueOpenOverrideOff"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override Closed"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_4"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "SedimentFilterValveDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 40
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Buffer Tank"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "CylindricalTank"
|
|
},
|
|
"position": {
|
|
"basis": "136px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.value": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/TankLevel"
|
|
},
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
}
|
|
},
|
|
"type": "ia.display.cylindrical-tank"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "BufferDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 60
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Pump"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Pump"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.state": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PumpInd"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "default",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "running"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "stopped"
|
|
}
|
|
],
|
|
"outputType": "scalar",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
},
|
|
"props.value.text": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PumpStatusMsg"
|
|
},
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"appearance": "simple",
|
|
"label": {
|
|
"location": "top",
|
|
"text": ""
|
|
},
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"value": {}
|
|
},
|
|
"type": "ia.symbol.pump"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "300px",
|
|
"grow": 2
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/PumpOverrideOn\"])[0].value\n\t\t\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PumpOverrideOn\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PumpOverrideOn\", \"[default]WaterMeter/PumpOverrideOff\"], [True, False])\t\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PumpOverrideOn"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override On"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "\tvalue = system.tag.readBlocking([\"[default]WaterMeter/PumpOverrideOff\"])[0].value\n\t\t\t\n\tif value:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PumpOverrideOff\"], [False])\n\telse:\n\t\tsystem.tag.writeAsync([\"[default]WaterMeter/PumpOverrideOff\", \"[default]WaterMeter/PumpOverrideOn\"], [True, False])\t"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
},
|
|
"meta": {
|
|
"name": "Button"
|
|
},
|
|
"position": {
|
|
"basis": "80px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.style.backgroundColor": {
|
|
"binding": {
|
|
"config": {
|
|
"fallbackDelay": 2.5,
|
|
"mode": "direct",
|
|
"tagPath": "[default]WaterMeter/PumpOverrideOff"
|
|
},
|
|
"transforms": [
|
|
{
|
|
"fallback": "#FFFFFF",
|
|
"inputType": "scalar",
|
|
"mappings": [
|
|
{
|
|
"input": true,
|
|
"output": "#4747FF"
|
|
},
|
|
{
|
|
"input": false,
|
|
"output": "#AAAAAA"
|
|
}
|
|
],
|
|
"outputType": "color",
|
|
"type": "map"
|
|
}
|
|
],
|
|
"type": "tag"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5
|
|
},
|
|
"text": "Override Off"
|
|
},
|
|
"type": "ia.input.button"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_2"
|
|
},
|
|
"position": {
|
|
"basis": "150px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "PumpDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 60
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Pre-Filter Pressure"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "toString(round({[default]WaterMeter/PreFilterPressure},1))+\" PSI\""
|
|
},
|
|
"type": "expr"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"backgroundColor": "#D5D5D5",
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Post-Filter Pressure"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "toString(round({[default]WaterMeter/PostFilterPressure},1))+\" PSI\""
|
|
},
|
|
"type": "expr"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"backgroundColor": "#D5D5D5",
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_2"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "PressuresDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 10
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Flow Rate"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "toString(round({[default]WaterMeter/PrefilterFlowRate},2))+\" GPM\""
|
|
},
|
|
"type": "expr"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"backgroundColor": "#D5D5D5",
|
|
"margin": 5,
|
|
"textAlign": "center",
|
|
"cursor": "pointer"
|
|
}
|
|
},
|
|
"type": "ia.display.label",
|
|
"events": {
|
|
"dom": {
|
|
"onClick": {
|
|
"config": {
|
|
"script": "system.perspective.openPopup('flowRatePopup', 'FlowRatePopup', params={}, title='Flow Rate History', modal=True)"
|
|
},
|
|
"scope": "G",
|
|
"type": "script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1,
|
|
"shrink": 0
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
},
|
|
"text": "Daily Usage"
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"shrink": 0
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "Label"
|
|
},
|
|
"position": {
|
|
"basis": "50px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.text": {
|
|
"binding": {
|
|
"config": {
|
|
"expression": "toString(round({[default]WaterMeter/PrefilterDailyUsage},1))+\" GALLONS\""
|
|
},
|
|
"type": "expr"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"backgroundColor": "#D5D5D5",
|
|
"margin": 5,
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.display.label"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_2"
|
|
},
|
|
"position": {
|
|
"basis": "100px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"style": {
|
|
"textAlign": "center"
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "WaterUsageDisplay"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"direction": "column",
|
|
"style": {
|
|
"borderColor": "#000000",
|
|
"borderStyle": "solid",
|
|
"borderWidth": 2,
|
|
"order": 10
|
|
}
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "TimeSeriesChart"
|
|
},
|
|
"position": {
|
|
"basis": "400px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.series[0].data": {
|
|
"binding": {
|
|
"config": {
|
|
"aggregate": "MinMax",
|
|
"avoidScanClassValidation": true,
|
|
"dateRange": {
|
|
"mostRecent": "1",
|
|
"mostRecentUnits": "HOUR"
|
|
},
|
|
"enableValueCache": true,
|
|
"ignoreBadQuality": false,
|
|
"polling": {
|
|
"enabled": true,
|
|
"rate": "30"
|
|
},
|
|
"preventInterpolation": false,
|
|
"returnFormat": "Wide",
|
|
"returnSize": {
|
|
"delay": "1",
|
|
"delayUnits": "MIN",
|
|
"type": "INTERVAL"
|
|
},
|
|
"tags": [
|
|
{
|
|
"alias": "Prefilter",
|
|
"path": "[CoreDB/ignition-ignition:default]watermeter/prefilterpressure"
|
|
},
|
|
{
|
|
"alias": "Postfilter",
|
|
"path": "[CoreDB/ignition-ignition:default]watermeter/postfilterpressure"
|
|
}
|
|
],
|
|
"valueFormat": "DATASET"
|
|
},
|
|
"type": "tag-history"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"defaultStyles": {
|
|
"colorScheme": "RdGy",
|
|
"colors": [
|
|
"#0000FF",
|
|
"#804600"
|
|
]
|
|
},
|
|
"legend": {
|
|
"position": "right",
|
|
"style": {
|
|
"color": "#000000"
|
|
},
|
|
"visible": true
|
|
},
|
|
"series": [
|
|
{
|
|
"name": "Water Pressure"
|
|
}
|
|
],
|
|
"style": {
|
|
"color": "#000000"
|
|
},
|
|
"timeAxis": {
|
|
"color": "#000000",
|
|
"grid": {
|
|
"color": "#000000"
|
|
},
|
|
"style": {
|
|
"color": "#000000"
|
|
},
|
|
"tick": {
|
|
"color": "#000000",
|
|
"label": {
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"timeRange": {
|
|
"dateFormat": "MM-DD-YYYY",
|
|
"timeFormat": "h:mm:ss A"
|
|
},
|
|
"title": {
|
|
"font": {
|
|
"color": "#000000"
|
|
},
|
|
"height": 20,
|
|
"style": {
|
|
"color": "#000000"
|
|
},
|
|
"text": "Water Pressure (PSI)",
|
|
"visible": true
|
|
},
|
|
"xTrace": {
|
|
"infoBox": {
|
|
"dateFormat": "MM-DD-YYYY",
|
|
"fill": {
|
|
"color": "#FFFFFF"
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
},
|
|
"stroke": {
|
|
"color": "#000000"
|
|
},
|
|
"timeFormat": "h:mm:ss A"
|
|
},
|
|
"line": {
|
|
"color": "#000000"
|
|
}
|
|
}
|
|
},
|
|
"type": "ia.chart.timeseries"
|
|
},
|
|
{
|
|
"meta": {
|
|
"name": "TimeSeriesChart_0"
|
|
},
|
|
"position": {
|
|
"basis": "400px",
|
|
"grow": 1
|
|
},
|
|
"propConfig": {
|
|
"props.series[0].data": {
|
|
"binding": {
|
|
"config": {
|
|
"aggregate": "Average",
|
|
"avoidScanClassValidation": true,
|
|
"dateRange": {
|
|
"mostRecent": "1",
|
|
"mostRecentUnits": "HOUR"
|
|
},
|
|
"enableValueCache": true,
|
|
"ignoreBadQuality": false,
|
|
"polling": {
|
|
"enabled": true,
|
|
"rate": "30"
|
|
},
|
|
"preventInterpolation": false,
|
|
"returnFormat": "Wide",
|
|
"returnSize": {
|
|
"delay": "1",
|
|
"delayUnits": "MIN",
|
|
"type": "INTERVAL"
|
|
},
|
|
"tags": [
|
|
{
|
|
"alias": "Tank Level",
|
|
"path": "[CoreDB/ignition-ignition:default]watermeter/tanklevel"
|
|
}
|
|
],
|
|
"valueFormat": "DATASET"
|
|
},
|
|
"type": "tag-history"
|
|
}
|
|
}
|
|
},
|
|
"props": {
|
|
"series": [
|
|
{
|
|
"name": "Tank Level"
|
|
}
|
|
],
|
|
"title": {
|
|
"text": "Buffer Tank Level",
|
|
"visible": true
|
|
}
|
|
},
|
|
"type": "ia.chart.timeseries"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_0"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
},
|
|
{
|
|
"children": [
|
|
{
|
|
"meta": {
|
|
"name": "AlarmStatusTable"
|
|
},
|
|
"position": {
|
|
"basis": "800px",
|
|
"grow": 1
|
|
},
|
|
"props": {
|
|
"filters": {
|
|
"active": {
|
|
"conditions": {
|
|
"source": "*WaterMeter*"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"type": "ia.display.alarmstatustable"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "FlexContainer_1"
|
|
},
|
|
"position": {
|
|
"basis": "200px",
|
|
"grow": 1
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
],
|
|
"meta": {
|
|
"name": "root"
|
|
},
|
|
"props": {
|
|
"direction": "column"
|
|
},
|
|
"type": "ia.container.flex"
|
|
}
|
|
} |