diff --git a/application/src/main/data/json/system/scada_symbols/cross-pipe.svg b/application/src/main/data/json/system/scada_symbols/cross-pipe.svg new file mode 100644 index 0000000000..45b3df428c --- /dev/null +++ b/application/src/main/data/json/system/scada_symbols/cross-pipe.svg @@ -0,0 +1,476 @@ + +{ + "title": "Cross pipe", + "widgetSizeX": 1, + "widgetSizeY": 1, + "stateRenderFunction": "var horizontalLiquidPattern = ctx.svg.defs().findOne('pattern#horizontal-liquid');\nvar horizontalFluidElements = ctx.tags['horizontal-fluid'];\n\nif (horizontalLiquidPattern) {\n horizontalLiquidPattern.id(ctx.api.generateElementId());\n for (var i=0;i<horizontalFluidElements.length;i++) {\n horizontalFluidElements[i].fill(horizontalLiquidPattern);\n }\n} else {\n horizontalLiquidPattern = horizontalFluidElements[0].reference('fill');\n}\n\nvar verticalLiquidPattern = ctx.svg.defs().findOne('pattern#vertical-liquid');\nvar verticalFluidElements = ctx.tags['vertical-fluid'];\n\nif (verticalLiquidPattern) {\n verticalLiquidPattern.id(ctx.api.generateElementId());\n for (var i=0;i<verticalFluidElements.length;i++) {\n verticalFluidElements[i].fill(verticalLiquidPattern);\n }\n} else {\n verticalLiquidPattern = verticalFluidElements[0].reference('fill');\n}\n\nif (horizontalLiquidPattern) {\n var fluid = ctx.values.horizontalFluid && !ctx.values.leak;\n var flow = ctx.values.horizontalFlow;\n var flowDirection = ctx.values.horizontalFlowDirection;\n var flowAnimationSpeed = ctx.values.horizontalFlowAnimationSpeed;\n \n updateLiquidPatternAnimation(horizontalLiquidPattern, fluid, \n flow, flowDirection, flowAnimationSpeed);\n}\n\nif (verticalLiquidPattern) {\n var fluid = ctx.values.verticalFluid && !ctx.values.leak;\n var flow = ctx.values.verticalFlow;\n var flowDirection = ctx.values.verticalFlowDirection;\n var flowAnimationSpeed = ctx.values.verticalFlowAnimationSpeed;\n \n updateLiquidPatternAnimation(verticalLiquidPattern, fluid, \n flow, flowDirection, flowAnimationSpeed);\n}\n\nfunction updateLiquidPatternAnimation(liquidPattern, fluid, flow, flowDirection, flowAnimationSpeed) {\n var elementFluid = liquidPattern.remember('fluid');\n var elementFlow = null;\n var elementFlowDirection = null;\n \n if (fluid !== elementFluid) {\n liquidPattern.remember('fluid', fluid);\n elementFlow = null;\n elementFlowDirection = null;\n } else {\n elementFlow = liquidPattern.remember('flow');\n elementFlowDirection = liquidPattern.remember('flowDirection');\n }\n \n if (fluid) {\n if (flow !== elementFlow) {\n liquidPattern.remember('flow', flow);\n if (flow) {\n liquidPattern.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n } else {\n ctx.api.resetAnimation(liquidPattern);\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n liquidPattern.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n }\n if (flow && liquidPattern) {\n liquidPattern.timeline().speed(flowAnimationSpeed);\n }\n } else {\n ctx.api.resetAnimation(liquidPattern);\n }\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n ctx.api.resetAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n liquidPattern.animate(1000).ease('-').relative(deltaX, 0).loop();\n}\n\n", + "tags": [ + { + "tag": "horizontal-fluid", + "stateRenderFunction": "var fluid = ctx.values.horizontalFluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}\n", + "actions": null + }, + { + "tag": "horizontal-fluid-background", + "stateRenderFunction": "var fluid = ctx.values.horizontalFluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.horizontalFluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}", + "actions": null + }, + { + "tag": "leak", + "stateRenderFunction": "var leak = ctx.values.leak;\nif (leak) {\n element.show();\n} else {\n element.hide();\n}", + "actions": null + }, + { + "tag": "vertical-fluid", + "stateRenderFunction": "var fluid = ctx.values.verticalFluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}\n", + "actions": null + }, + { + "tag": "vertical-fluid-background", + "stateRenderFunction": "var fluid = ctx.values.verticalFluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.verticalFluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}", + "actions": null + } + ], + "behavior": [ + { + "id": "horizontalFluid", + "name": "Horizontal fluid presence", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "horizontalFlow", + "name": "Horizontal flow presence", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "horizontalFlowDirection", + "name": "Horizontal flow direction", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": true, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "horizontalFlowAnimationSpeed", + "name": "Horizontal flow animation speed", + "hint": null, + "type": "value", + "valueType": "DOUBLE", + "defaultValue": 1, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "verticalFluid", + "name": "Vertical fluid presence", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "verticalFlow", + "name": "Vertical flow presence", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "verticalFlowDirection", + "name": "Vertical flow direction", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": true, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "verticalFlowAnimationSpeed", + "name": "Vertical flow animation speed", + "hint": null, + "type": "value", + "valueType": "DOUBLE", + "defaultValue": 1, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "leak", + "name": "Leak", + "hint": null, + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + } + ], + "properties": [ + { + "id": "horizontalFluidColor", + "name": "Horizontal fluid color", + "type": "color", + "default": "#1EC1F4", + "required": null, + "subLabel": null, + "divider": null, + "fieldSuffix": null, + "disableOnProperty": null, + "rowClass": "", + "fieldClass": "", + "min": null, + "max": null, + "step": null + }, + { + "id": "verticalFluidColor", + "name": "Vertical fluid color", + "type": "color", + "default": "#1EC1F4", + "required": null, + "subLabel": null, + "divider": null, + "fieldSuffix": null, + "disableOnProperty": null, + "rowClass": "", + "fieldClass": "", + "min": null, + "max": null, + "step": null + } + ] +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/horizontal-connector-long.svg b/application/src/main/data/json/system/scada_symbols/horizontal-connector-long.svg deleted file mode 100644 index 40b3148fe0..0000000000 --- a/application/src/main/data/json/system/scada_symbols/horizontal-connector-long.svg +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Horizontal connector long", - "widgetSizeX": 2, - "widgetSizeY": 1, - "tags": [], - "behavior": [], - "properties": [] -} - - - - - - - - - - \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/horizontal-pipe.svg b/application/src/main/data/json/system/scada_symbols/horizontal-pipe.svg index 6dc82ca4ef..2b405e2a9e 100644 --- a/application/src/main/data/json/system/scada_symbols/horizontal-pipe.svg +++ b/application/src/main/data/json/system/scada_symbols/horizontal-pipe.svg @@ -1,6 +1,11 @@ { "title": "Horizontal pipe", + "description": "Horizontal pipe with fluid and leak visualizations.", + "searchTags": [ + "pipe", + "horizontal pipe" + ], "widgetSizeX": 1, "widgetSizeY": 1, "tags": [ @@ -23,50 +28,50 @@ "behavior": [ { "id": "fluid", - "name": "Fluid presence", - "hint": null, + "name": "{i18n:scada.symbol.fluid-presence}", + "hint": "{i18n:scada.symbol.fluid-presence-hint}", "type": "value", "valueType": "BOOLEAN", "defaultValue": false, - "trueLabel": null, - "falseLabel": null, - "stateLabel": null, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.fluid-present}", "valueToDataType": "CONSTANT", "constantValue": false, "valueToDataFunction": "" }, { "id": "flow", - "name": "Flow presence", - "hint": null, + "name": "{i18n:scada.symbol.flow-presence}", + "hint": "{i18n:scada.symbol.flow-presence-hint}", "type": "value", "valueType": "BOOLEAN", "defaultValue": false, - "trueLabel": null, - "falseLabel": null, - "stateLabel": null, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.flow-present}", "valueToDataType": "CONSTANT", "constantValue": false, "valueToDataFunction": "" }, { "id": "flowDirection", - "name": "Flow direction", - "hint": null, + "name": "{i18n:scada.symbol.flow-direction}", + "hint": "{i18n:scada.symbol.flow-direction-hint}", "type": "value", "valueType": "BOOLEAN", "defaultValue": true, - "trueLabel": "Forward", - "falseLabel": "Reverse", - "stateLabel": "Forward", + "trueLabel": "{i18n:scada.symbol.forward}", + "falseLabel": "{i18n:scada.symbol.reverse}", + "stateLabel": "{i18n:scada.symbol.forward}", "valueToDataType": "CONSTANT", "constantValue": false, "valueToDataFunction": "" }, { "id": "flowAnimationSpeed", - "name": "Flow rate animation speed", - "hint": null, + "name": "{i18n:scada.symbol.flow-animation-speed}", + "hint": "{i18n:scada.symbol.flow-animation-speed-hint}", "type": "value", "valueType": "DOUBLE", "defaultValue": 1, @@ -79,14 +84,14 @@ }, { "id": "leak", - "name": "Leak", - "hint": null, + "name": "{i18n:scada.symbol.leak}", + "hint": "{i18n:scada.symbol.leak-hint}", "type": "value", "valueType": "BOOLEAN", "defaultValue": false, "trueLabel": null, "falseLabel": null, - "stateLabel": null, + "stateLabel": "{i18n:scada.symbol.leak-present}", "valueToDataType": "CONSTANT", "constantValue": false, "valueToDataFunction": "" @@ -95,7 +100,7 @@ "properties": [ { "id": "fluidColor", - "name": "Fluid color", + "name": "{i18n:scada.symbol.fluid-color}", "type": "color", "default": "#1EC1F4", "required": null, @@ -271,17 +276,17 @@ <path d="m184.5 134.5h-169v-69h169z" stroke="#000" stroke-opacity=".12"/> <rect transform="scale(-1)" x="-198.5" y="-148.5" width="11.286" height="97" rx="5.6429" fill="#d9d9d9" stroke="#727171"/> <rect transform="scale(-1)" x="-12.5" y="-148.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171"/> - </g><rect x="14" y="64" width="172" height="72" fill="#1ec1f4" stroke-width="1.2099" style="display: none;" tb:tag="fluid-background"/><rect x="14" y="64" width="172" height="72" fill="url(#liquid)" stroke-width="0" style="display: none;" tb:tag="fluid"/><g transform="translate(-1.0519 .50045)" style="display: none;" tb:tag="leak"> - <path d="m60.223 104c0.3722 0.234 0.7942 0.579 1.197 0.733 1.197 0.733 2.5974 1.174 3.9404 1.04 0.6062-0.138 1.2432-0.357 1.7995-0.606 1.5272-0.617 3.0237-1.154 4.5201-1.691 1.3545-0.407 2.851-0.944 3.5034-2.171-0.1304-0.142-0.1802-0.254-0.3107-0.396 2.0453-1.2502 3.7107-3.1991 4.8928-5.3322 0.8252-1.4387 1.3894-3.1614 2.6366-4.2547 0.4259-0.3913 0.9018-0.6714 1.297-0.9821 0.6792-0.5716 1.2778-1.1739 1.7461-1.9182 0.376-0.5026 0.6217-1.1471 0.9172-1.6804 0.8559-1.5193 1.8729-2.9772 3.1814-4.2316-0.1344 0.5947-0.2687 1.1894-0.4031 1.7841 0 0 0.1496 0.3338 0.0997 0.2225-0.1918 0.0192-0.2839 0.2609-0.2648 0.4527 0.6868-0.1073 1.3737-0.2146 1.9799-0.3527 3.273-0.5981 6.5766-1.2767 9.8117-2.2585-2.8438 1.4077-5.9173 2.4509-9.0905 3.2716-0.7175 0.1879-1.4044 0.2952-2.1027 0.6749-1.6999 0.8286-2.598 2.7008-3.3043 4.554l-0.0307 0.0805c-0.0614 0.1612-0.1535 0.4029-0.0231 0.5449 0.0998 0.2225 0.4527 0.2648 0.7252 0.2763 1.3928-0.0228 2.7548 0.035 4.1169 0.0927 1.7151 0.1 3.3381 0.4417 5.0839 0.4612 1.5539 0.0386 3.0887-0.1147 4.5433-0.2986 0.686-0.1074 1.343-0.1341 1.93-0.464 0.667-0.2992 1.204-0.7404 1.692-1.2928 0.629-0.6829 1.228-1.2852 1.777-1.9988 3.2-4.0398 13.554-5.7074 16.122-10.265-0.799 2.0948-1.708 4.2395-2.507 6.3343 2.521-1.5306 5.422-2.3627 8.354-3.2755 0.828-0.2378 1.657-0.4755 2.467-0.9051 0.667-0.2992 1.316-0.7902 1.853-1.2314 1.075-0.8823 2.099-1.8759 2.51-3.1958-0.146 0.8671-0.453 1.6729-0.81 2.3673 0.272 0.0115 0.625 0.0538 0.898 0.0653 2.34 0.1538 4.65 0.3882 6.91 0.5113-0.94 0.2877-1.98 0.3528-2.989 0.3373-1.362-0.0578-2.682-0.4685-4.006-0.1426-1.515 0.3451-2.632 1.5804-3.979 2.4512-2.107 1.4117-4.723 1.983-7.21 2.6963-2.486 0.7133-4.76 0.7733-8.737 2.2602-2.866 1.0716-7.468 2.8981-8.911 4.7473-0.488 0.5525-0.925 1.2162-1.282 1.9106-0.265 0.4527-0.449 0.9361-0.664 1.5001-0.246 0.6446-0.461 1.2086-0.787 1.8224-0.153 0.4029-0.388 0.775-0.672 1.0359-0.314 0.3414-0.84 0.5102-1.254 0.6291-1.4661 0.4563-2.9318 0.9127-4.3976 1.3691 0.2226-0.0997 0.5564-0.2493 0.779-0.349 1.7804-0.7979 3.4806-1.6264 4.7386-2.9921 0.284-0.2609 0.518-0.633 0.561-0.986 0.03-0.0806 0.061-0.1612-0.019-0.1919-8e-3 -0.4642-0.561-0.9516-0.925-0.7214-0.533-0.2956-1.351-0.3302-1.895-0.3533-4.2594 0.0377-8.549 0.156-12.758 0.3051-0.4643 0.0076-0.9286 0.0152-1.4542 0.1839-0.5257 0.1688-0.8903 0.3989-1.2855 0.7097-3.0084 2.083-6.109 4.4077-8.0432 7.5461-0.0307 0.08-0.0614 0.161-0.0921 0.242 0 0 0.0805 0.03 0.1611 0.061-0.1727 0.211-0.3953 0.311-0.5679 0.522-1.1782 1.396-1.6734 3.422-1.996 5.237-0.1028 1.699-0.0321 2.514 0.3722 2.97 0.459 0.518 2.0166 2.282 3.5867 2.137 0.6868-0.107 1.5203-0.964 1.8384-0.945 0.1123 7e-3 1.3512 0.946 0.0862 0.437 0.4564-0.404 6.2118-2.854 9.3354-5.724 0.284-0.261 0.5987-0.602 0.8328-0.974 0.1727-0.211 0.2648-0.453 0.2764-0.726 0.0307-0.08-0.0192-0.191-0.0691-0.303-0.0498-0.111-0.1611-0.061-0.2417-0.092-3.4377-0.664-7.2209-0.906-10.044-3.182 0.1919-0.019 0.2724 0.012 0.4643-8e-3 0.0805 0.031 0.1918-0.019 0.353 0.043 1.9567 0.192 3.971 0.959 5.8588 0.848 0.8479-0.045 1.7266-0.172 2.563 0.055 1.0781 0.318 2.1024 1.262 3.1921 1.308 0.5448 0.023 1.1511-0.115 1.5962-0.314 1.2241-0.549 2.3791-1.4 3.653-1.837 0.6369-0.219 1.4043-0.296 2.0413-0.514 0.1114-0.05 0.1914-0.019 0.3034-0.069 1.465-0.457 6.985-1.209 8.121-2.2524-0.994 0.9134-6.21 1.5964-7.074 2.6514 2.037 0.223 3.994 0.415 6.093 0.477-1.757 0.253-3.534 0.314-5.329 0.183-0.898-0.065-1.796-0.131-2.6747-4e-3 -1.6768 0.283-3.1581 1.749-2.8744 3.426 0.0192 0.192 0.0383 0.383 0.1688 0.525 0.3682 0.971 1.1815 1.743 1.9142 2.483 2.2601 2.061 4.5001 3.93 6.9021 5.86 1.768 1.412 3.568 2.744 5.693 3.462 0.161 0.061 0.353 0.042 0.414-0.119 0.108 0.687 0.722 1.013 1.397 1.178 0.645 0.246 1.35 0.33 2.026 0.495 0.594 0.135 1.189 0.269 1.784 0.403 2.812 0.611 5.655 1.141 8.51 1.398-1.454 0.184-3.008 0.146-4.52-0.246-1.109-0.238-2.156-0.637-3.215-0.764-1.14-0.157-2.241 0.069-3.38-0.089-0.515-0.103-1.109-0.238-1.654-0.261 0.671 0.902 1.373 1.723 2.045 2.625l-1.899-1.554c-0.764-0.66-1.558-1.24-2.352-1.819-2.072-1.344-4.662-2.054-6.53-3.689-0.131-0.142-0.261-0.284-0.391-0.425 0.191-0.02 0.353 0.042 0.544 0.023-0.049-0.112-0.211-0.173-0.26-0.284-1.404-1.643-3.173-3.055-4.9225-4.275-1.5078-1.129-3.1766-2.318-5.003-2.368-0.5448-0.024-1.1204 0.034-1.6652 0.011s-1.1587-0.35-1.4387-0.825c-1.7959 1.807-3.4671 4.15-6.0417 4.368-1.999 0.161-3.2634 1.834-4.5023 0.895 0.8607 0.052-0.0781 1.291-1.3952 1.643-1.317 0.353-5.4134-3.088-5.8583-4.827-0.3949-1.626-0.1836-3.391 0.5302-4.78 0.0307-0.081 0.0307-0.081 0.0614-0.161-2.4058 0.744-4.9229 1.537-7.4783 1.948-0.7674 0.076-1.5655 0.233-2.3214 0.038-1.2277-0.653-2.3517-1.819-3.3952-2.955z" fill="#5c5a5a" style=""/> + </g><rect x="14" y="64" width="172" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="fluid-background"/><rect x="14" y="64" width="172" height="72" fill="url(#liquid)" stroke-width="0" style="display: none;" tb:tag="fluid"/><g transform="translate(5.0806 -.22515)" style="display: none;" tb:tag="leak"> + <path d="m34.253 100.01c0.5162 0.38 1.0932 0.926 1.6625 1.191 1.6625 1.191 3.6513 1.98 5.617 1.926 0.8955-0.136 1.8442-0.387 2.6789-0.691 2.2843-0.737 4.5155-1.36 6.7467-1.983 2.0111-0.448 4.2423-1.0713 5.3196-2.7869-0.1747-0.2201-0.2354-0.387-0.41-0.6071 3.1037-1.6023 5.7289-4.2595 7.671-7.2353 1.3504-2.004 2.3515-4.4482 4.2789-5.906 0.6601-0.5239 1.381-0.8808 1.9881-1.2909 1.0471-0.7592 1.9804-1.5716 2.7391-2.604 0.5994-0.6909 1.0241-1.6018 1.5096-2.3457 1.4035-2.1179 3.0347-4.1297 5.0683-5.8152-0.2579 0.8501-0.5156 1.7002-0.7734 2.5504 0 0 0.1823 0.5008 0.1215 0.3339-0.2808 0.0077-0.4401 0.3492-0.4324 0.63 1.0094-0.0837 2.0188-0.1675 2.9143-0.3044 4.8193-0.5251 9.6917-1.1641 14.496-2.2508-4.2801 1.7469-8.8563 2.9398-13.554 3.7988-1.0625 0.1977-2.0719 0.2815-3.1267 0.7599-2.5575 1.0254-4.0594 3.6519-5.2806 6.2707l-0.0531 0.1138c-0.1062 0.2278-0.2655 0.5694-0.0909 0.7894 0.1216 0.3339 0.6301 0.4324 1.0248 0.4778 2.0265 0.1133 3.9999 0.3404 5.9733 0.5675 2.4819 0.3256 4.8045 0.9928 7.3396 1.2046 2.2542 0.2194 4.5007 0.1581 6.6334 0.0436 1.0094-0.0838 1.9657-0.0537 2.8536-0.4714 1.0017-0.3646 1.8288-0.9493 2.5952-1.7009 0.9863-0.9262 1.9193-1.7386 2.7923-2.7179 5.076-5.5344 20.298-6.8695 24.508-13.223-1.38 2.9604-2.928 5.9816-4.308 8.942 3.824-1.9593 8.128-2.8637 12.484-3.882 1.229-0.2585 2.459-0.5169 3.68-1.0561 1.002-0.3646 1.996-1.01 2.823-1.5947 1.655-1.1693 3.248-2.5055 3.984-4.3804-0.304 1.2448-0.834 2.3834-1.426 3.3551 0.394 0.0454 0.903 0.1439 1.298 0.1893 3.385 0.4696 6.717 1.053 9.988 1.4695-1.396 0.3192-2.914 0.3044-4.379 0.1758-1.973-0.2271-3.848-0.9627-5.806-0.6282-2.239 0.3422-3.992 2.02-6.041 3.1439-3.21 1.8301-7.073 2.3853-10.761 3.1605-3.688 0.7753-6.999 0.6235-12.935 2.3663-4.278 1.256-11.158 3.4266-13.449 5.9623-0.767 0.7516-1.472 1.6701-2.064 2.6418-0.4326 0.6301-0.7511 1.3132-1.1228 2.1103-0.4247 0.9108-0.7964 1.7079-1.335 2.5657-0.2655 0.5693-0.6448 1.0855-1.0849 1.4348-0.4932 0.4631-1.2749 0.6531-1.8896 0.7823-2.1781 0.5091-4.3562 1.0183-6.5343 1.5274 0.3339-0.1215 0.8348-0.3038 1.1687-0.4254 2.6713-0.9722 5.2287-1.9976 7.2015-3.8501 0.4401-0.3492 0.8194-0.8654 0.9179-1.374 0.0531-0.1138 0.1062-0.2277-0.0076-0.2808 0.0377-0.6755-0.7139-1.4418-1.2679-1.1457-0.7439-0.4855-1.9279-0.6217-2.7173-0.7126-6.1933-0.3928-12.44-0.6718-18.572-0.8977-0.6755-0.0377-1.351-0.0755-2.1326 0.1145-0.7817 0.19-1.3357 0.4861-1.9427 0.8961-4.591 2.7109-9.3413 5.7634-12.482 10.121-0.0531 0.1139-0.1062 0.2277-0.1593 0.3416 0 0 0.1138 0.0531 0.2277 0.1062-0.2731 0.288-0.607 0.41-0.8802 0.698-1.8589 1.906-2.7916 4.798-3.4511 7.401-0.3281 2.459-0.3109 3.65 0.2287 4.356 0.6125 0.801 2.6907 3.528 4.9877 3.483 1.0094-0.084 2.3108-1.242 2.7709-1.18 0.1625 0.022 1.8643 1.516 0.0794 0.644 0.7057-0.539 9.3274-3.495 14.168-7.337 0.4401-0.35 0.9333-0.813 1.3126-1.329 0.2732-0.288 0.4325-0.63 0.4779-1.025 0.0531-0.113-0.0077-0.28-0.0684-0.447-0.0608-0.167-0.2278-0.107-0.3416-0.16-4.9261-1.326-10.398-2.076-14.263-5.6801 0.2809-0.0077 0.3947 0.0454 0.6755 0.0377 0.1139 0.0531 0.2808-0.0077 0.5086 0.0985 2.8235 0.4849 5.67 1.8119 8.4251 1.8499 1.2371 0.022 2.5273-0.07 3.719 0.348 1.5333 0.576 2.9227 2.056 4.5014 2.237 0.7894 0.091 1.6849-0.046 2.3527-0.289 1.8365-0.668 3.6046-1.785 5.5019-2.286 0.9486-0.251 2.0719-0.281 3.0205-0.532 0.167-0.061 0.2809-8e-3 0.4478-0.069 2.1781-0.509 10.278-1.0219 12.04-2.4189-1.541 1.2224-9.1936 1.667-10.559 3.1099 2.9374 0.538 5.7609 1.023 8.8043 1.333-2.58 0.183-5.1684 0.085-7.7642-0.294-1.2979-0.189-2.5958-0.379-3.886-0.287-2.4666 0.236-4.7733 2.21-4.5373 4.676 0.0077 0.281 0.0154 0.562 0.19 0.782 0.433 1.45 1.5339 2.656 2.5209 3.809 3.0672 3.233 6.1267 6.184 9.414 9.242 2.4216 2.238 4.8966 4.363 7.9106 5.629 0.227 0.106 0.508 0.099 0.614-0.129 0.084 1.009 0.942 1.548 1.906 1.859 0.911 0.425 1.928 0.622 2.892 0.932l2.55 0.774c4.023 1.183 8.099 2.252 12.22 2.926-2.132 0.114-4.386-0.105-6.542-0.833-1.587-0.463-3.067-1.153-4.592-1.448-1.64-0.349-3.264-0.136-4.903-0.485-0.737-0.204-1.587-0.462-2.376-0.553 0.881 1.381 1.815 2.648 2.695 4.029-0.865-0.819-1.731-1.638-2.596-2.458-1.04-1.039-2.133-1.965-3.227-2.891-2.869-2.169-6.5581-3.474-9.1014-6.046-0.1746-0.22-0.3493-0.44-0.5239-0.66 0.2808-8e-3 0.5086 0.098 0.7894 0.091-0.0608-0.167-0.2885-0.273-0.3493-0.44-1.8678-2.535-4.2896-4.773-6.7037-6.73-2.0725-1.799-4.3727-3.703-7.0216-3.968-0.7894-0.091-1.6318-0.068-2.4212-0.158-0.7894-0.091-1.6471-0.63-2.0041-1.351-2.7999 2.437-5.4747 5.667-9.2392 5.713-2.922 0.024-4.9354 2.323-6.6372 0.828 1.2453 0.166-0.2492 1.868-2.2002 2.242-1.951 0.373-7.5425-5.058-8.0062-7.631-0.403-2.406 0.0896-4.949 1.273-6.892l0.1062-0.228c-3.5745 0.828-7.316 1.718-11.073 2.045-1.1233 0.031-2.2996 0.175-3.3775-0.189-1.7156-1.077-3.2264-2.89-4.6235-4.651z" fill="#5c5a5a" style=""/> <g fill="#8b8b8b" style=""> - <path d="m79.042 114.55c0.518-0.633 0.689-1.08 1.4679-1.429 1.5579-0.698 2.2682-0.493 3.9259-0.969 1.7995-0.606 2.4989-1.184 4.0491-2.346 0.7905-0.622 1.5004-1.274 2.1298-1.957 0.3797 0.698 2.2781 0.514 3.0954 0.548 0.8172 0.035 1.6959-0.092 2.3903 0.265 0.775 0.388 1.2353 1.117 1.8376 1.716 0.6829 0.629 1.5385 1.047 2.363 1.546 1.619 1.079 2.782 2.629 3.833 4.229-0.081-0.031-0.081-0.031-0.161-0.061-1.404-1.643-3.173-3.055-4.9225-4.275-1.5077-1.129-3.1766-2.318-5.0029-2.368-0.5449-0.024-1.1204 0.034-1.6653 0.011-0.5448-0.023-2.1093 0.012-2.3894-0.464-1.7959 1.807-2.7831 3.383-5.3577 3.601-1.999 0.161-2.3163 0.618-4.1774 1.385-0.3836 0.038-0.94 0.288-1.4158 0.568z" style=""/> - <path d="m79.957 102.11c0.1918-0.019 0.2724 0.012 0.4642-7e-3 0.0806 0.03 0.1919-0.02 0.353 0.042l0.0806 0.03c0.5333 0.296 1.0666 0.592 1.7418 0.757 0.4835 0.184 1.0782 0.318 1.5923 0.422 2.2176 0.476 4.6195 0.469 6.7335 1.459-0.2149 0.564-0.4299 1.128-0.7753 1.55 0.1727-0.211 0.2649-0.453 0.2764-0.725 0.0307-0.081-0.0192-0.192-0.069-0.303-0.0499-0.112-0.1612-0.062-0.2417-0.092-3.5798-0.534-7.3322-0.857-10.156-3.133z" style=""/> - <path d="m96.357 104.57c0.2456-0.645 0.7637-1.278 1.3815-1.688 0.6178-0.411 1.4466-0.649 2.145-1.028 0.1112-0.05 0.1915-0.02 0.3035-0.069 1.465-0.457 6.349-1.095 7.485-2.1389-0.994 0.9129-5.575 1.4829-6.438 2.5379 2.037 0.223 4.162 0.317 6.261 0.378-1.757 0.253-3.702 0.413-5.498 0.282-0.897-0.065-1.795-0.131-2.6739-4e-3 -1.6767 0.283-3.158 1.749-2.8743 3.426 0.0192 0.191 0.0383 0.383 0.1688 0.525-0.2302-0.364-0.3798-0.698-0.4181-1.082-0.069-0.303 0.0039-0.736 0.1575-1.139z" style=""/> - <path d="m103.35 116.3c0.587-0.33 1.455-0.184 1.907 0.081 0.825 0.499 1.619 1.078 2.494 1.688 0.744 0.469 1.458 1.017 2.233 1.405 1.953 0.929 4.151 1.213 6.281 1.194 0 0 0.08 0.031 0.111-0.05 2.812 0.611 5.655 1.141 8.51 1.398-1.454 0.184-3.008 0.146-4.52-0.246-1.109-0.238-2.156-0.637-3.215-0.764-1.14-0.157-2.241 0.069-3.38-0.089-0.514-0.103-1.109-0.238-1.654-0.261 0.671 0.902 1.373 1.723 2.045 2.625l-1.899-1.554c-0.764-0.66-1.558-1.24-2.352-1.819-2.214-1.213-4.692-1.973-6.561-3.608z" style=""/> - <path d="m60.223 104c0.3722 0.234 0.7942 0.579 1.197 0.733 0.6331 0.518 1.2162 0.925 2.0526 1.151 0.9976 0.288 2.0872 0.334 3.0465 0.239 1.7266-0.173 3.3343-0.76 4.9421-1.347 0.7482-0.268 1.5463-0.425 2.2714-0.149-0.1112 0.05-0.1112 0.05-0.2225 0.1 0.0307-0.081 0.0307-0.081 0.0614-0.161-2.4058 0.744-4.923 1.538-7.4784 1.948-0.7674 0.076-1.5655 0.234-2.3213 0.038-1.3813-0.25-2.5053-1.416-3.5488-2.552z" style=""/> - <path d="m77.256 100.71c0.4068-0.583 1.0246-0.9932 1.4314-1.5763 0.4874-0.5525 0.8136-1.1663 1.1897-1.6689 0.802-0.8939 1.8342-1.4232 2.6055-2.2366 0.4567-0.4718 0.9441-1.0243 1.4813-1.4654 1.013-0.7212 2.4058-0.744 3.6068-0.7477 4.5314-0.0262 8.9822-0.0831 13.514-0.1093 0.736 4e-3 1.715 0.1 1.983 0.8483 0.069 0.3031 0.027 0.6561-0.065 0.8978 0.031-0.0806 0.061-0.1612-0.019-0.1919-8e-3 -0.4642-0.56-0.9516-0.925-0.7214-0.533-0.2956-1.35-0.3302-1.895-0.3533-4.2591 0.0377-8.5488 0.156-12.758 0.3051-0.4643 0.0076-0.9285 0.0152-1.4542 0.1839-0.5257 0.1688-0.8902 0.3989-1.2855 0.7097-3.0084 2.083-6.109 4.4077-8.0432 7.546-0.0307 0.081-0.0614 0.161-0.0921 0.242 0 0 0.0805 0.03 0.1611 0.061-0.1727 0.211-0.3952 0.311-0.5679 0.522 0.3071-0.806 0.6141-1.612 1.1322-2.245z" style=""/> - <path d="m87.755 86.718c0.6716-1.0359 1.8957-1.5844 3.0391-2.1636 0.1113-0.0499 0.1113-0.0499 0.2226-0.0997 3.2729-0.5981 6.5766-1.2767 9.811-2.2585-2.8431 1.4077-5.9166 2.4509-9.0898 3.2715-0.7176 0.1879-1.4044 0.2953-2.1027 0.675-1.6999 0.8285-2.598 2.7008-3.3043 4.5539 0.0423-0.353 0.2265-0.8364 0.2879-0.9975 0.1843-0.4835 0.3378-0.8863 0.5221-1.3697 0.0538-0.6254 0.238-1.1088 0.6141-1.6114z" style=""/> - <path d="m97.767 99.157c0.2226-0.0997 0.5564-0.2493 0.779-0.349 0.0806 0.0307 0.1918-0.0192 0.1918-0.0192 0.7176-0.1879 1.4348-0.3758 2.0718-0.5944 1.224-0.5485 2.036-1.1096 2.658-2.2568 0.326-0.6138 0.517-1.9007 0.763-2.5452 0.706-1.8531 2.343-3.059 3.552-4.536 1.067-1.3466 5.404-1.8325 7.177-2.589s2.204-0.7304 3.553-1.0939c2.163-0.5825 2.103-0.675 3.154-1.0125 1.386-0.4871 2.541-1.3387 3.926-1.8258 0.94-0.2876 1.98-0.3527 2.839-0.671 1.466-0.4564 2.633-1.5804 3.868-2.4013 0.699-0.3798 1.397-0.7595 2.114-0.9474 2.341 0.1538 4.651 0.3882 6.911 0.5113-0.94 0.2876-1.98 0.3527-2.989 0.3372-1.362-0.0578-2.682-0.4685-4.006-0.1426-1.516 0.3451-2.632 1.5804-3.979 2.4512-2.107 1.4117-4.724 1.983-7.21 2.6963-2.487 0.7133-4.418 0.942-6.214 2.7489-1.685 1.7571-8.691 2.2034-10.134 4.0526-0.487 0.5524-0.925 1.2162-1.282 1.9106-0.265 0.4527-0.449 0.9361-0.664 1.5001-0.245 0.6446-0.46 1.2086-0.787 1.8224-0.153 0.4029-0.387 0.775-0.671 1.0359-0.315 0.3414-0.841 0.5102-1.255 0.6291-1.466 0.4563-2.9315 0.9127-4.3666 1.2885z" style=""/> + <path d="m60.493 117.31c0.8195-0.865 1.1148-1.496 2.2835-1.921 2.3374-0.851 3.3482-0.479 5.8071-0.996 2.679-0.691 3.756-1.458 6.1312-2.985 1.2141-0.82 2.3143-1.693 3.3007-2.619 0.4785 1.055 3.2567 0.986 4.4408 1.122 1.184 0.136 2.4742 0.045 3.4459 0.637 1.0855 0.644 1.6778 1.752 2.4902 2.686 0.9262 0.986 2.1256 1.684 3.2719 2.496 2.2395 1.737 3.7657 4.112 5.125 6.548-0.1139-0.053-0.1139-0.053-0.2277-0.106-1.8678-2.535-4.2896-4.773-6.7037-6.73-2.0726-1.798-4.3728-3.703-7.0217-3.968-0.7893-0.09-1.6318-0.067-2.4211-0.158-0.7894-0.091-3.0668-0.204-3.4237-0.925-2.7999 2.437-4.4002 4.623-8.1647 4.67-2.9221 0.023-3.4312 0.654-6.2164 1.573-0.5616 0.016-1.3964 0.319-2.1173 0.676z" style=""/> + <path d="m63.131 99.331c0.2809-0.0077 0.3947 0.0454 0.6755 0.0377 0.1139 0.0531 0.2808-0.0077 0.5086 0.0985l0.1138 0.0531c0.744 0.4857 1.4879 0.9707 2.4519 1.2817 0.6832 0.319 1.5333 0.577 2.2695 0.781 3.1728 0.925 6.6642 1.167 9.6322 2.828-0.3716 0.797-0.7433 1.595-1.2896 2.172 0.2732-0.289 0.4324-0.631 0.4779-1.025 0.0531-0.114-0.0077-0.281-0.0685-0.448-0.0607-0.167-0.2277-0.106-0.3416-0.159-5.1461-1.152-10.565-2.016-14.43-5.62z" style=""/> + <path d="m86.705 104.64c0.4247-0.911 1.2442-1.777 2.1851-2.308 0.941-0.532 2.1705-0.79 3.2253-1.269 0.1669-0.06 0.2808-7e-3 0.4478-0.068 2.1781-0.509 9.3419-0.924 11.102-2.321-1.54 1.2224-8.256 1.569-9.6217 3.011 2.9373 0.538 6.0157 0.898 9.0587 1.208-2.58 0.183-5.4229 0.21-8.0186-0.168-1.2979-0.19-2.5958-0.379-3.8861-0.288-2.4665 0.236-4.7732 2.21-4.5372 4.677 0.0077 0.281 0.0153 0.562 0.1899 0.782-0.2961-0.554-0.4784-1.055-0.4938-1.617-0.0684-0.447 0.0832-1.07 0.3487-1.639z" style=""/> + <path d="m95.641 122.41c0.8879-0.418 2.1327-0.115 2.7628 0.318 1.1463 0.811 2.2399 1.737 3.4469 2.716 1.032 0.758 2.011 1.631 3.097 2.276 2.74 1.555 5.905 2.199 9.002 2.395 0 0 0.114 0.053 0.167-0.06 4.023 1.182 8.099 2.251 12.22 2.926-2.132 0.114-4.387-0.105-6.542-0.833-1.587-0.463-3.067-1.153-4.593-1.449-1.639-0.348-3.263-0.135-4.903-0.484-0.736-0.205-1.586-0.462-2.375-0.553 0.88 1.381 1.814 2.648 2.695 4.029-0.865-0.819-1.731-1.639-2.596-2.458-1.04-1.04-2.134-1.965-3.227-2.891-3.089-1.995-6.6114-3.36-9.1547-5.932z" style=""/> + <path d="m34.254 100.01c0.5162 0.379 1.0932 0.926 1.6625 1.191 0.8655 0.82 1.6702 1.472 2.8619 1.889 1.4194 0.524 2.9981 0.705 4.4022 0.667 2.5274-0.069 4.9255-0.753 7.3237-1.437 1.1156-0.311 2.2919-0.456 3.3167 0.022-0.167 0.061-0.167 0.061-0.3339 0.122l0.1062-0.228c-3.5745 0.828-7.316 1.717-11.073 2.045-1.1233 0.03-2.2997 0.175-3.3775-0.189-1.9811-0.508-3.4919-2.321-4.889-4.082z" style=""/> + <path d="m59.351 97.017c0.6525-0.8047 1.5935-1.3363 2.246-2.141 0.7663-0.7516 1.3049-1.6094 1.9043-2.3002 1.2595-1.2148 2.8152-1.8755 4.0217-2.9764 0.7132-0.6377 1.4796-1.3893 2.3067-1.974 1.548-0.9416 3.5745-0.8283 5.3201-0.7074 6.588 0.4383 13.062 0.8234 19.65 1.2617 1.0701 0.0831 2.4819 0.3256 2.7934 1.4412 0.0684 0.4478-0.0301 0.9563-0.1894 1.2979 0.0531-0.1139 0.1062-0.2277-0.0076-0.2808 0.0377-0.6755-0.7139-1.4419-1.2678-1.1457-0.744-0.4855-1.928-0.6218-2.7174-0.7126-6.1933-0.3929-12.44-0.6718-18.572-0.8977-0.6755-0.0378-1.351-0.0755-2.1326 0.1145-0.7817 0.1899-1.3357 0.4861-1.9427 0.8961-4.591 2.7109-9.3413 5.7634-12.482 10.121-0.0531 0.1138-0.1062 0.2277-0.1593 0.3415 0 0 0.1139 0.0531 0.2277 0.1062-0.2731 0.2885-0.607 0.4101-0.8802 0.6982 0.531-1.1383 1.0619-2.2769 1.8813-3.1423z" style=""/> + <path d="m76.081 77.786c1.0849-1.4348 2.9214-2.1032 4.6441-2.8247 0.1669-0.0608 0.1669-0.0608 0.3339-0.1216 4.8193-0.5251 9.6917-1.164 14.496-2.2508-4.2801 1.7469-8.8564 2.9399-13.554 3.7989-1.0625 0.1976-2.0719 0.2814-3.1268 0.7599-2.5574 1.0253-4.0594 3.6518-5.2805 6.2706 0.0985-0.5085 0.417-1.1917 0.5232-1.4194 0.3186-0.6832 0.5841-1.2525 0.9026-1.9357 0.144-0.9032 0.4625-1.5863 1.0619-2.2772z" style=""/> + <path d="m89.324 96.916c0.334-0.1215 0.8348-0.3038 1.1687-0.4253 0.1139 0.0531 0.2808-0.0077 0.2808-0.0077 1.0625-0.1977 2.125-0.3953 3.0737-0.646 1.8365-0.6685 3.0748-1.3986 4.099-3.0004 0.5386-0.8578 0.9515-2.7078 1.3763-3.6187 1.2208-2.6188 3.7278-4.199 5.6398-6.2184 1.692-1.8448 8.045-2.0951 10.702-3.0081 2.657-0.9129 3.279-0.8298 5.279-1.2162 3.204-0.6191 3.127-0.7599 4.69-1.1398 2.064-0.5623 3.832-1.6785 5.896-2.2407 1.397-0.3192 2.915-0.3045 4.197-0.6768 2.178-0.5091 3.992-2.02 5.874-3.0831 1.055-0.4785 2.11-0.9569 3.172-1.1546 3.385 0.4696 6.717 1.053 9.989 1.4695-1.397 0.3191-2.915 0.3044-4.38 0.1758-1.973-0.2271-3.848-0.9627-5.806-0.6282-2.239 0.3422-3.992 2.02-6.04 3.1439-3.21 1.8301-7.073 2.3853-10.762 3.1605-3.688 0.7752-6.519 0.9046-9.319 3.3417-2.633 2.3764-12.862 2.2885-15.153 4.8241-0.767 0.7517-1.472 1.6702-2.064 2.6419-0.432 0.6301-0.751 1.3132-1.123 2.1102-0.4243 0.9109-0.7959 1.708-1.3346 2.5658-0.2654 0.5693-0.6448 1.0855-1.0849 1.4347-0.4931 0.4632-1.2748 0.6531-1.8896 0.7823-2.1781 0.5092-4.3562 1.0183-6.4812 1.4136z" style=""/> </g> </g> </svg> \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/long-horizontal-pipe.svg b/application/src/main/data/json/system/scada_symbols/long-horizontal-pipe.svg new file mode 100644 index 0000000000..fb16786572 --- /dev/null +++ b/application/src/main/data/json/system/scada_symbols/long-horizontal-pipe.svg @@ -0,0 +1,362 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="200" fill="none" version="1.1" viewBox="0 0 400 200"> +<tb:metadata xmlns=""><![CDATA[{ + "title": "Long horizontal pipe", + "description": "Long horizontal pipe with fluid and leak visualizations.", + "searchTags": [ + "pipe", + "horizontal pipe" + ], + "widgetSizeX": 2, + "widgetSizeY": 1, + "tags": [ + { + "tag": "fluid", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nvar flow = ctx.values.flow;\nvar flowDirection = ctx.values.flowDirection;\n\nvar elementFluid = element.remember('fluid');\nvar elementFlow = null;\nvar elementFlowDirection = null;\n\nif (fluid !== elementFluid) {\n element.remember('fluid', fluid);\n elementFlow = null;\n elementFlowDirection = null;\n} else {\n elementFlow = element.remember('flow');\n elementFlowDirection = element.remember('flowDirection');\n}\n\nvar liquidPattern = ctx.svg.defs().findOne('pattern#liquid');\nif (liquidPattern) {\n liquidPattern.id(ctx.api.generateElementId());\n element.fill(liquidPattern);\n} else {\n liquidPattern = element.reference('fill');\n}\n\nif (fluid) {\n element.show();\n if (flow !== elementFlow) {\n element.remember('flow', flow);\n if (flow) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n } else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n }\n if (flow && liquidPattern) {\n liquidPattern.timeline().speed(ctx.values.flowAnimationSpeed);\n }\n} else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n element.hide();\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n liquidPattern.animate(1000).ease('-').relative(deltaX, 0).loop();\n }\n}", + "actions": null + }, + { + "tag": "fluid-background", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.fluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}", + "actions": null + }, + { + "tag": "leak", + "stateRenderFunction": "var leak = ctx.values.leak;\nif (leak) {\n element.show();\n} else {\n element.hide();\n}", + "actions": null + } + ], + "behavior": [ + { + "id": "fluid", + "name": "{i18n:scada.symbol.fluid-presence}", + "hint": "{i18n:scada.symbol.fluid-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.fluid-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flow", + "name": "{i18n:scada.symbol.flow-presence}", + "hint": "{i18n:scada.symbol.flow-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.flow-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowDirection", + "name": "{i18n:scada.symbol.flow-direction}", + "hint": "{i18n:scada.symbol.flow-direction-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": true, + "trueLabel": "{i18n:scada.symbol.forward}", + "falseLabel": "{i18n:scada.symbol.reverse}", + "stateLabel": "{i18n:scada.symbol.forward}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowAnimationSpeed", + "name": "{i18n:scada.symbol.flow-animation-speed}", + "hint": "{i18n:scada.symbol.flow-animation-speed-hint}", + "type": "value", + "valueType": "DOUBLE", + "defaultValue": 1, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "leak", + "name": "{i18n:scada.symbol.leak}", + "hint": "{i18n:scada.symbol.leak-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": "{i18n:scada.symbol.leak-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + } + ], + "properties": [ + { + "id": "fluidColor", + "name": "{i18n:scada.symbol.fluid-color}", + "type": "color", + "default": "#1EC1F4", + "required": null, + "subLabel": null, + "divider": null, + "fieldSuffix": null, + "disableOnProperty": null, + "rowClass": "", + "fieldClass": "", + "min": null, + "max": null, + "step": null + } + ] +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/long-vertical-pipe.svg b/application/src/main/data/json/system/scada_symbols/long-vertical-pipe.svg new file mode 100644 index 0000000000..ceaffd4729 --- /dev/null +++ b/application/src/main/data/json/system/scada_symbols/long-vertical-pipe.svg @@ -0,0 +1,359 @@ + +{ + "title": "Long vertical pipe", + "description": "Long vertical pipe with fluid and leak visualizations.", + "searchTags": [ + "pipe", + "vertical pipe" + ], + "widgetSizeX": 1, + "widgetSizeY": 2, + "tags": [ + { + "tag": "fluid", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nvar flow = ctx.values.flow;\nvar flowDirection = ctx.values.flowDirection;\n\nvar elementFluid = element.remember('fluid');\nvar elementFlow = null;\nvar elementFlowDirection = null;\n\nif (fluid !== elementFluid) {\n element.remember('fluid', fluid);\n elementFlow = null;\n elementFlowDirection = null;\n} else {\n elementFlow = element.remember('flow');\n elementFlowDirection = element.remember('flowDirection');\n}\n\nvar liquidPattern = ctx.svg.defs().findOne('pattern#liquid');\nif (liquidPattern) {\n liquidPattern.id(ctx.api.generateElementId());\n element.fill(liquidPattern);\n} else {\n liquidPattern = element.reference('fill');\n}\n\nif (fluid) {\n element.show();\n if (flow !== elementFlow) {\n element.remember('flow', flow);\n if (flow) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n } else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n }\n if (flow && liquidPattern) {\n liquidPattern.timeline().speed(ctx.values.flowAnimationSpeed);\n }\n} else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n element.hide();\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n liquidPattern.animate(1000).ease('-').relative(deltaX, 0).loop();\n }\n}", + "actions": null + }, + { + "tag": "fluid-background", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.fluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}", + "actions": null + }, + { + "tag": "leak", + "stateRenderFunction": "var leak = ctx.values.leak;\nif (leak) {\n element.show();\n} else {\n element.hide();\n}", + "actions": null + } + ], + "behavior": [ + { + "id": "fluid", + "name": "{i18n:scada.symbol.fluid-presence}", + "hint": "{i18n:scada.symbol.fluid-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.fluid-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flow", + "name": "{i18n:scada.symbol.flow-presence}", + "hint": "{i18n:scada.symbol.flow-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.flow-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowDirection", + "name": "{i18n:scada.symbol.flow-direction}", + "hint": "{i18n:scada.symbol.flow-direction-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": true, + "trueLabel": "{i18n:scada.symbol.forward}", + "falseLabel": "{i18n:scada.symbol.reverse}", + "stateLabel": "{i18n:scada.symbol.forward}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowAnimationSpeed", + "name": "{i18n:scada.symbol.flow-animation-speed}", + "hint": "{i18n:scada.symbol.flow-animation-speed-hint}", + "type": "value", + "valueType": "DOUBLE", + "defaultValue": 1, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "leak", + "name": "{i18n:scada.symbol.leak}", + "hint": "{i18n:scada.symbol.leak-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": "{i18n:scada.symbol.leak-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + } + ], + "properties": [ + { + "id": "fluidColor", + "name": "{i18n:scada.symbol.fluid-color}", + "type": "color", + "default": "#1EC1F4", + "required": null, + "subLabel": null, + "divider": null, + "fieldSuffix": null, + "disableOnProperty": null, + "rowClass": "", + "fieldClass": "", + "min": null, + "max": null, + "step": null + } + ] +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/quadro-connector.svg b/application/src/main/data/json/system/scada_symbols/quadro-connector.svg deleted file mode 100644 index 31b2f2accc..0000000000 --- a/application/src/main/data/json/system/scada_symbols/quadro-connector.svg +++ /dev/null @@ -1,26 +0,0 @@ - -{ - "title": "Quadro connector", - "widgetSizeX": 1, - "widgetSizeY": 1, - "tags": [], - "behavior": [], - "properties": [] -} - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/vertical-connector-long.svg b/application/src/main/data/json/system/scada_symbols/vertical-connector-long.svg deleted file mode 100644 index af1c25d862..0000000000 --- a/application/src/main/data/json/system/scada_symbols/vertical-connector-long.svg +++ /dev/null @@ -1,16 +0,0 @@ - -{ - "title": "Vertical connector long", - "widgetSizeX": 1, - "widgetSizeY": 2, - "tags": [], - "behavior": [], - "properties": [] -} - - - - - - - \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/vertical-connector.svg b/application/src/main/data/json/system/scada_symbols/vertical-connector.svg deleted file mode 100644 index 53ae6c58dc..0000000000 --- a/application/src/main/data/json/system/scada_symbols/vertical-connector.svg +++ /dev/null @@ -1,16 +0,0 @@ - -{ - "title": "Vertical connector", - "widgetSizeX": 1, - "widgetSizeY": 1, - "tags": [], - "behavior": [], - "properties": [] -} - - - - - - - \ No newline at end of file diff --git a/application/src/main/data/json/system/scada_symbols/vertical-pipe.svg b/application/src/main/data/json/system/scada_symbols/vertical-pipe.svg new file mode 100644 index 0000000000..0314f062ae --- /dev/null +++ b/application/src/main/data/json/system/scada_symbols/vertical-pipe.svg @@ -0,0 +1,296 @@ + +{ + "title": "Vertical pipe", + "description": "Vertical pipe with fluid and leak visualizations.", + "searchTags": [ + "pipe", + "vertical pipe" + ], + "widgetSizeX": 1, + "widgetSizeY": 1, + "tags": [ + { + "tag": "fluid", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nvar flow = ctx.values.flow;\nvar flowDirection = ctx.values.flowDirection;\n\nvar elementFluid = element.remember('fluid');\nvar elementFlow = null;\nvar elementFlowDirection = null;\n\nif (fluid !== elementFluid) {\n element.remember('fluid', fluid);\n elementFlow = null;\n elementFlowDirection = null;\n} else {\n elementFlow = element.remember('flow');\n elementFlowDirection = element.remember('flowDirection');\n}\n\nvar liquidPattern = ctx.svg.defs().findOne('pattern#liquid');\nif (liquidPattern) {\n liquidPattern.id(ctx.api.generateElementId());\n element.fill(liquidPattern);\n} else {\n liquidPattern = element.reference('fill');\n}\n\nif (fluid) {\n element.show();\n if (flow !== elementFlow) {\n element.remember('flow', flow);\n if (flow) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n } else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n element.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n }\n if (flow && liquidPattern) {\n liquidPattern.timeline().speed(ctx.values.flowAnimationSpeed);\n }\n} else {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n }\n element.hide();\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n if (liquidPattern) {\n ctx.api.resetAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n liquidPattern.animate(1000).ease('-').relative(deltaX, 0).loop();\n }\n}", + "actions": null + }, + { + "tag": "fluid-background", + "stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.fluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}", + "actions": null + }, + { + "tag": "leak", + "stateRenderFunction": "var leak = ctx.values.leak;\nif (leak) {\n element.show();\n} else {\n element.hide();\n}", + "actions": null + } + ], + "behavior": [ + { + "id": "fluid", + "name": "{i18n:scada.symbol.fluid-presence}", + "hint": "{i18n:scada.symbol.fluid-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.fluid-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flow", + "name": "{i18n:scada.symbol.flow-presence}", + "hint": "{i18n:scada.symbol.flow-presence-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": "{i18n:scada.symbol.present}", + "falseLabel": "{i18n:scada.symbol.absent}", + "stateLabel": "{i18n:scada.symbol.flow-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowDirection", + "name": "{i18n:scada.symbol.flow-direction}", + "hint": "{i18n:scada.symbol.flow-direction-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": true, + "trueLabel": "{i18n:scada.symbol.forward}", + "falseLabel": "{i18n:scada.symbol.reverse}", + "stateLabel": "{i18n:scada.symbol.forward}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "flowAnimationSpeed", + "name": "{i18n:scada.symbol.flow-animation-speed}", + "hint": "{i18n:scada.symbol.flow-animation-speed-hint}", + "type": "value", + "valueType": "DOUBLE", + "defaultValue": 1, + "trueLabel": null, + "falseLabel": null, + "stateLabel": null, + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + }, + { + "id": "leak", + "name": "{i18n:scada.symbol.leak}", + "hint": "{i18n:scada.symbol.leak-hint}", + "type": "value", + "valueType": "BOOLEAN", + "defaultValue": false, + "trueLabel": null, + "falseLabel": null, + "stateLabel": "{i18n:scada.symbol.leak-present}", + "valueToDataType": "CONSTANT", + "constantValue": false, + "valueToDataFunction": "" + } + ], + "properties": [ + { + "id": "fluidColor", + "name": "{i18n:scada.symbol.fluid-color}", + "type": "color", + "default": "#1EC1F4", + "required": null, + "subLabel": null, + "divider": null, + "fieldSuffix": null, + "disableOnProperty": null, + "rowClass": "", + "fieldClass": "", + "min": null, + "max": null, + "step": null + } + ] +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/src/main/data/json/system/widget_bundles/scada_water_system_symbols.json b/application/src/main/data/json/system/widget_bundles/scada_water_system_symbols.json index 49e42f3f03..7e15717472 100644 --- a/application/src/main/data/json/system/widget_bundles/scada_water_system_symbols.json +++ b/application/src/main/data/json/system/widget_bundles/scada_water_system_symbols.json @@ -8,10 +8,12 @@ "name": "SCADA water system symbols" }, "widgetTypeFqns": [ - "level_and_fan", - "vertical_connector_long", + "horizontal_pipe", + "long_horizontal_pipe", + "vertical_pipe", + "long_vertical_pipe", + "cross_pipe", "horizontal_tank_with_screen", - "quadro_connector", "horizontal_faucet", "top_white_counter", "right_top_angle_connector", @@ -19,12 +21,10 @@ "water_blower_right_connector", "vertical_tank_with_level", "left_bottom_angle_connector", - "horizontal_connector_long", "top_black_counter", "right_bottom_angle_connector", - "vertical_connector", - "horizontal_pipe", "pump_left", - "pump" + "pump", + "level_and_fan" ] } \ No newline at end of file diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/scada/scada-symbol-basic-config.component.html b/ui-ngx/src/app/modules/home/components/widget/config/basic/scada/scada-symbol-basic-config.component.html index 5a73fc0474..e9c6f0967e 100644 --- a/ui-ngx/src/app/modules/home/components/widget/config/basic/scada/scada-symbol-basic-config.component.html +++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/scada/scada-symbol-basic-config.component.html @@ -18,7 +18,7 @@
-
scada.symbol
+
scada.symbol.symbol
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/scada/scada-symbol-widget-settings.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/settings/scada/scada-symbol-widget-settings.component.html index 7756989ab9..50ec0fabe1 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/scada/scada-symbol-widget-settings.component.html +++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/scada/scada-symbol-widget-settings.component.html @@ -17,7 +17,7 @@ -->
-
scada.symbol
+
scada.symbol.symbol
diff --git a/ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts b/ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts index f54e2bc831..1c4d6c204d 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts +++ b/ui-ngx/src/app/modules/home/pages/admin/admin-routing.module.ts @@ -141,7 +141,7 @@ const routes: Routes = [ icon: 'view_in_ar' } as BreadCrumbConfig, auth: [Authority.TENANT_ADMIN, Authority.SYS_ADMIN], - title: 'scada.symbol' + title: 'scada.symbol.symbol' }, resolve: { symbolData: scadaSymbolResolver diff --git a/ui-ngx/src/app/modules/home/pages/scada-symbol/scada-symbol.component.html b/ui-ngx/src/app/modules/home/pages/scada-symbol/scada-symbol.component.html index 3c613ed7ff..54251bd8ed 100644 --- a/ui-ngx/src/app/modules/home/pages/scada-symbol/scada-symbol.component.html +++ b/ui-ngx/src/app/modules/home/pages/scada-symbol/scada-symbol.component.html @@ -60,7 +60,7 @@
-
scada.symbol
+
scada.symbol.symbol
diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 255f7f61ff..75bca21941 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -3441,7 +3441,6 @@ } }, "scada": { - "symbol": "SCADA symbol", "symbols": "SCADA symbols", "search": "Search symbol", "selected-symbols": "{ count, plural, =1 {1 symbol} other {# symbols} } selected", @@ -3545,6 +3544,27 @@ "property-row-classes": "Property row classes", "property-field-classes": "Property field classes", "not-unique-property-ids-error": "Property Ids must be unique!" + }, + "symbol": { + "symbol": "SCADA symbol", + "fluid-presence": "Fluid presence", + "fluid-presence-hint": "Indicates whether fluid is present in pipe.", + "fluid-present": "Fluid present", + "present": "Present", + "absent": "Absent", + "flow-presence": "Flow presence", + "flow-presence-hint": "Indicates whether fluid is flowing in pipe.", + "flow-present": "Flow present", + "flow-direction": "Flow direction", + "flow-direction-hint": "Indicates fluid flow direction.", + "forward": "Forward", + "reverse": "Reverse", + "flow-animation-speed": "Flow animation speed", + "flow-animation-speed-hint": "Double value indicating animation speed of the flow. 1 - normal speed, 0 - no animation, < 1 - slower animation, > 1 - faster animation.", + "leak": "Leak", + "leak-hint": "Indicates whether is leak present in pipe.", + "leak-present": "Leak present", + "fluid-color": "Fluid color" } }, "item": {