@record-evolution/widget-scada 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/dist/scada_symbols/3-phase-voltage-relay-hp.svg +549 -0
- package/dist/scada_symbols/apartments-hp.svg +344 -0
- package/dist/scada_symbols/battery-hp.svg +473 -0
- package/dist/scada_symbols/bottom-flow-meter.svg +933 -0
- package/dist/scada_symbols/bottom-light-bulb-hp.svg +346 -0
- package/dist/scada_symbols/bottom-right-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/bottom-right-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/bottom-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/bottom-tee-pipe.svg +857 -0
- package/dist/scada_symbols/centrifugal-pump.svg +626 -0
- package/dist/scada_symbols/conical-tank.svg +1136 -0
- package/dist/scada_symbols/consumers-hp.svg +346 -0
- package/dist/scada_symbols/control-panel-hp.svg +332 -0
- package/dist/scada_symbols/crane-hp.svg +346 -0
- package/dist/scada_symbols/cross-connector-hp.svg +586 -0
- package/dist/scada_symbols/cross-pipe.svg +1051 -0
- package/dist/scada_symbols/curcuit-breaker-hp.svg +444 -0
- package/dist/scada_symbols/cylindrical-tank.svg +1332 -0
- package/dist/scada_symbols/drawwork-hp.svg +355 -0
- package/dist/scada_symbols/drill-hp.svg +354 -0
- package/dist/scada_symbols/drilling-line-hp.svg +361 -0
- package/dist/scada_symbols/drilling-rig-hp.svg +354 -0
- package/dist/scada_symbols/dynamic-horizontal-scale-hp.svg +605 -0
- package/dist/scada_symbols/dynamic-vertical-scale-hp.svg +598 -0
- package/dist/scada_symbols/electrical-distribution-board-hp.svg +332 -0
- package/dist/scada_symbols/electrical-engine-hp.svg +360 -0
- package/dist/scada_symbols/elevated-tank.svg +1564 -0
- package/dist/scada_symbols/energy-meter-hp.svg +488 -0
- package/dist/scada_symbols/extra-long-horizontal-pipe.svg +426 -0
- package/dist/scada_symbols/extra-long-vertical-pipe.svg +438 -0
- package/dist/scada_symbols/filter-hp.svg +287 -0
- package/dist/scada_symbols/four-rate-energy-meter-hp.svg +891 -0
- package/dist/scada_symbols/fuel-generator-hp.svg +359 -0
- package/dist/scada_symbols/gas-preventer-hp.svg +361 -0
- package/dist/scada_symbols/gas-wellhead-hp.svg +363 -0
- package/dist/scada_symbols/heat-exchanger-hp.svg +363 -0
- package/dist/scada_symbols/heat-pump-hp.svg +532 -0
- package/dist/scada_symbols/high-voltage-tower-hp.svg +297 -0
- package/dist/scada_symbols/hook-hp.svg +293 -0
- package/dist/scada_symbols/horizontal-ball-valve.svg +271 -0
- package/dist/scada_symbols/horizontal-broken-pipe.svg +97 -0
- package/dist/scada_symbols/horizontal-connector-hp.svg +268 -0
- package/dist/scada_symbols/horizontal-curcuit-breaker-hp.svg +439 -0
- package/dist/scada_symbols/horizontal-energy-system-controller-hp.svg +378 -0
- package/dist/scada_symbols/horizontal-inline-flow-meter.svg +913 -0
- package/dist/scada_symbols/horizontal-pipe.svg +422 -0
- package/dist/scada_symbols/horizontal-tank-hp.svg +524 -0
- package/dist/scada_symbols/horizontal-tank.svg +1343 -0
- package/dist/scada_symbols/horizontal-valve-hp.svg +392 -0
- package/dist/scada_symbols/horizontal-wheel-valve.svg +300 -0
- package/dist/scada_symbols/house-hp.svg +349 -0
- package/dist/scada_symbols/index.json +702 -0
- package/dist/scada_symbols/industrial-fuel-generator-hp.svg +358 -0
- package/dist/scada_symbols/inverter-hp.svg +578 -0
- package/dist/scada_symbols/large-conical-tank.svg +1146 -0
- package/dist/scada_symbols/large-cylindrical-tank.svg +1323 -0
- package/dist/scada_symbols/large-horizontal-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/large-horizontal-separator-hp.svg +350 -0
- package/dist/scada_symbols/large-inverter-hp.svg +578 -0
- package/dist/scada_symbols/large-stand-cylindrical-tank.svg +1384 -0
- package/dist/scada_symbols/large-stand-vertical-tank.svg +1386 -0
- package/dist/scada_symbols/large-vertical-separator-connector-hp.svg +350 -0
- package/dist/scada_symbols/large-vertical-separator-hp.svg +350 -0
- package/dist/scada_symbols/large-vertical-tank.svg +1325 -0
- package/dist/scada_symbols/leak-sensor.svg +158 -0
- package/dist/scada_symbols/left-analog-water-level-meter.svg +748 -0
- package/dist/scada_symbols/left-bottom-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/left-bottom-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/left-drain-pipe.svg +166 -0
- package/dist/scada_symbols/left-elbow-drain-pipe.svg +181 -0
- package/dist/scada_symbols/left-flow-meter.svg +911 -0
- package/dist/scada_symbols/left-heat-pump.svg +939 -0
- package/dist/scada_symbols/left-motor-pump.svg +541 -0
- package/dist/scada_symbols/left-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/left-tee-pipe.svg +869 -0
- package/dist/scada_symbols/left-top-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/left-top-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/long-bottom-filter.svg +88 -0
- package/dist/scada_symbols/long-horizontal-broken-pipe.svg +97 -0
- package/dist/scada_symbols/long-horizontal-connector-hp.svg +269 -0
- package/dist/scada_symbols/long-horizontal-pipe.svg +488 -0
- package/dist/scada_symbols/long-top-filter.svg +88 -0
- package/dist/scada_symbols/long-vertical-broken-pipe.svg +97 -0
- package/dist/scada_symbols/long-vertical-connector-hp.svg +267 -0
- package/dist/scada_symbols/long-vertical-pipe.svg +485 -0
- package/dist/scada_symbols/low-voltage-tower-hp.svg +278 -0
- package/dist/scada_symbols/low-voltage-transformer-tower-hp.svg +334 -0
- package/dist/scada_symbols/manufacture-hp.svg +344 -0
- package/dist/scada_symbols/meter.svg +751 -0
- package/dist/scada_symbols/oil-pump-hp.svg +357 -0
- package/dist/scada_symbols/platform-hp.svg +267 -0
- package/dist/scada_symbols/pool-hp.svg +523 -0
- package/dist/scada_symbols/pool.svg +998 -0
- package/dist/scada_symbols/power-socket-hp.svg +371 -0
- package/dist/scada_symbols/power-transformer-hp.svg +359 -0
- package/dist/scada_symbols/preventer-hp.svg +343 -0
- package/dist/scada_symbols/pump-hp.svg +368 -0
- package/dist/scada_symbols/right-analog-water-level-meter.svg +748 -0
- package/dist/scada_symbols/right-drain-pipe.svg +167 -0
- package/dist/scada_symbols/right-elbow-drain-pipe.svg +178 -0
- package/dist/scada_symbols/right-flow-meter.svg +911 -0
- package/dist/scada_symbols/right-heat-pump.svg +948 -0
- package/dist/scada_symbols/right-motor-pump.svg +541 -0
- package/dist/scada_symbols/right-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/right-tee-pipe.svg +857 -0
- package/dist/scada_symbols/rotor-hp.svg +346 -0
- package/dist/scada_symbols/sand-filter-hp.svg +652 -0
- package/dist/scada_symbols/sand-filter.svg +704 -0
- package/dist/scada_symbols/short-bottom-filter.svg +88 -0
- package/dist/scada_symbols/short-left-drain-pipe.svg +160 -0
- package/dist/scada_symbols/short-right-drain-pipe.svg +160 -0
- package/dist/scada_symbols/short-top-filter.svg +88 -0
- package/dist/scada_symbols/short-vertical-tank-hp.svg +522 -0
- package/dist/scada_symbols/simple-horizontal-scale-hp.svg +509 -0
- package/dist/scada_symbols/simple-vertical-scale-hp.svg +509 -0
- package/dist/scada_symbols/single-key-switch-hp.svg +373 -0
- package/dist/scada_symbols/small-cylindrical-tank.svg +1306 -0
- package/dist/scada_symbols/small-horizontal-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/small-horizontal-separator-hp.svg +342 -0
- package/dist/scada_symbols/small-left-meter.svg +725 -0
- package/dist/scada_symbols/small-left-motor-pump.svg +443 -0
- package/dist/scada_symbols/small-meter.svg +694 -0
- package/dist/scada_symbols/small-power-transformer-hp.svg +359 -0
- package/dist/scada_symbols/small-right-center.svg +725 -0
- package/dist/scada_symbols/small-right-motor-pump.svg +443 -0
- package/dist/scada_symbols/small-spherical-tank.svg +1362 -0
- package/dist/scada_symbols/small-vertical-separator-connector-hp.svg +342 -0
- package/dist/scada_symbols/small-vertical-separator-hp.svg +342 -0
- package/dist/scada_symbols/solar-panel-hp.svg +353 -0
- package/dist/scada_symbols/spherical-tank.svg +1392 -0
- package/dist/scada_symbols/stand-cylindrical-tank.svg +1393 -0
- package/dist/scada_symbols/stand-horizontal-tank.svg +1404 -0
- package/dist/scada_symbols/stand-solar-panel-hp.svg +357 -0
- package/dist/scada_symbols/stand-vertical-short-tank.svg +1366 -0
- package/dist/scada_symbols/stand-vertical-tank.svg +1386 -0
- package/dist/scada_symbols/three-rate-energy-meter-hp.svg +759 -0
- package/dist/scada_symbols/top-flow-meter.svg +927 -0
- package/dist/scada_symbols/top-light-bulb-hp.svg +346 -0
- package/dist/scada_symbols/top-right-elbow-connector-hp.svg +233 -0
- package/dist/scada_symbols/top-right-elbow-pipe.svg +532 -0
- package/dist/scada_symbols/top-tee-connector-hp.svg +470 -0
- package/dist/scada_symbols/top-tee-pipe.svg +857 -0
- package/dist/scada_symbols/turbine-hp.svg +377 -0
- package/dist/scada_symbols/two-key-switch-hp.svg +489 -0
- package/dist/scada_symbols/two-rate-energy-meter-hp.svg +627 -0
- package/dist/scada_symbols/vertical-ball-valve.svg +271 -0
- package/dist/scada_symbols/vertical-broken-pipe.svg +97 -0
- package/dist/scada_symbols/vertical-connector-hp.svg +269 -0
- package/dist/scada_symbols/vertical-energy-system-controller-hp.svg +378 -0
- package/dist/scada_symbols/vertical-inline-flow-meter.svg +913 -0
- package/dist/scada_symbols/vertical-pipe.svg +422 -0
- package/dist/scada_symbols/vertical-short-tank.svg +1305 -0
- package/dist/scada_symbols/vertical-tank-hp.svg +524 -0
- package/dist/scada_symbols/vertical-tank.svg +1326 -0
- package/dist/scada_symbols/vertical-valve-hp.svg +392 -0
- package/dist/scada_symbols/vertical-wheel-valve.svg +300 -0
- package/dist/scada_symbols/voltage-relay-hp.svg +440 -0
- package/dist/scada_symbols/voltage-stabilizer-hp.svg +584 -0
- package/dist/scada_symbols/waterstop.svg +276 -0
- package/dist/scada_symbols/wind-turbine-cluster-hp.svg +370 -0
- package/dist/scada_symbols/wind-turbine-hp.svg +360 -0
- package/dist/widget-scada.js +1331 -0
- package/dist/widget-scada.js.map +1 -0
- package/package.json +61 -0
- package/scada_symbols/3-phase-voltage-relay-hp.svg +549 -0
- package/scada_symbols/apartments-hp.svg +344 -0
- package/scada_symbols/battery-hp.svg +473 -0
- package/scada_symbols/bottom-flow-meter.svg +933 -0
- package/scada_symbols/bottom-light-bulb-hp.svg +346 -0
- package/scada_symbols/bottom-right-elbow-connector-hp.svg +233 -0
- package/scada_symbols/bottom-right-elbow-pipe.svg +532 -0
- package/scada_symbols/bottom-tee-connector-hp.svg +470 -0
- package/scada_symbols/bottom-tee-pipe.svg +857 -0
- package/scada_symbols/centrifugal-pump.svg +626 -0
- package/scada_symbols/conical-tank.svg +1136 -0
- package/scada_symbols/consumers-hp.svg +346 -0
- package/scada_symbols/control-panel-hp.svg +332 -0
- package/scada_symbols/crane-hp.svg +346 -0
- package/scada_symbols/cross-connector-hp.svg +586 -0
- package/scada_symbols/cross-pipe.svg +1051 -0
- package/scada_symbols/curcuit-breaker-hp.svg +444 -0
- package/scada_symbols/cylindrical-tank.svg +1332 -0
- package/scada_symbols/drawwork-hp.svg +355 -0
- package/scada_symbols/drill-hp.svg +354 -0
- package/scada_symbols/drilling-line-hp.svg +361 -0
- package/scada_symbols/drilling-rig-hp.svg +354 -0
- package/scada_symbols/dynamic-horizontal-scale-hp.svg +605 -0
- package/scada_symbols/dynamic-vertical-scale-hp.svg +598 -0
- package/scada_symbols/electrical-distribution-board-hp.svg +332 -0
- package/scada_symbols/electrical-engine-hp.svg +360 -0
- package/scada_symbols/elevated-tank.svg +1564 -0
- package/scada_symbols/energy-meter-hp.svg +488 -0
- package/scada_symbols/extra-long-horizontal-pipe.svg +426 -0
- package/scada_symbols/extra-long-vertical-pipe.svg +438 -0
- package/scada_symbols/filter-hp.svg +287 -0
- package/scada_symbols/four-rate-energy-meter-hp.svg +891 -0
- package/scada_symbols/fuel-generator-hp.svg +359 -0
- package/scada_symbols/gas-preventer-hp.svg +361 -0
- package/scada_symbols/gas-wellhead-hp.svg +363 -0
- package/scada_symbols/heat-exchanger-hp.svg +363 -0
- package/scada_symbols/heat-pump-hp.svg +532 -0
- package/scada_symbols/high-voltage-tower-hp.svg +297 -0
- package/scada_symbols/hook-hp.svg +293 -0
- package/scada_symbols/horizontal-ball-valve.svg +271 -0
- package/scada_symbols/horizontal-broken-pipe.svg +97 -0
- package/scada_symbols/horizontal-connector-hp.svg +268 -0
- package/scada_symbols/horizontal-curcuit-breaker-hp.svg +439 -0
- package/scada_symbols/horizontal-energy-system-controller-hp.svg +378 -0
- package/scada_symbols/horizontal-inline-flow-meter.svg +913 -0
- package/scada_symbols/horizontal-pipe.svg +422 -0
- package/scada_symbols/horizontal-tank-hp.svg +524 -0
- package/scada_symbols/horizontal-tank.svg +1343 -0
- package/scada_symbols/horizontal-valve-hp.svg +392 -0
- package/scada_symbols/horizontal-wheel-valve.svg +300 -0
- package/scada_symbols/house-hp.svg +349 -0
- package/scada_symbols/index.json +702 -0
- package/scada_symbols/industrial-fuel-generator-hp.svg +358 -0
- package/scada_symbols/inverter-hp.svg +578 -0
- package/scada_symbols/large-conical-tank.svg +1146 -0
- package/scada_symbols/large-cylindrical-tank.svg +1323 -0
- package/scada_symbols/large-horizontal-separator-connector-hp.svg +342 -0
- package/scada_symbols/large-horizontal-separator-hp.svg +350 -0
- package/scada_symbols/large-inverter-hp.svg +578 -0
- package/scada_symbols/large-stand-cylindrical-tank.svg +1384 -0
- package/scada_symbols/large-stand-vertical-tank.svg +1386 -0
- package/scada_symbols/large-vertical-separator-connector-hp.svg +350 -0
- package/scada_symbols/large-vertical-separator-hp.svg +350 -0
- package/scada_symbols/large-vertical-tank.svg +1325 -0
- package/scada_symbols/leak-sensor.svg +158 -0
- package/scada_symbols/left-analog-water-level-meter.svg +748 -0
- package/scada_symbols/left-bottom-elbow-connector-hp.svg +233 -0
- package/scada_symbols/left-bottom-elbow-pipe.svg +532 -0
- package/scada_symbols/left-drain-pipe.svg +166 -0
- package/scada_symbols/left-elbow-drain-pipe.svg +181 -0
- package/scada_symbols/left-flow-meter.svg +911 -0
- package/scada_symbols/left-heat-pump.svg +939 -0
- package/scada_symbols/left-motor-pump.svg +541 -0
- package/scada_symbols/left-tee-connector-hp.svg +470 -0
- package/scada_symbols/left-tee-pipe.svg +869 -0
- package/scada_symbols/left-top-elbow-connector-hp.svg +233 -0
- package/scada_symbols/left-top-elbow-pipe.svg +532 -0
- package/scada_symbols/long-bottom-filter.svg +88 -0
- package/scada_symbols/long-horizontal-broken-pipe.svg +97 -0
- package/scada_symbols/long-horizontal-connector-hp.svg +269 -0
- package/scada_symbols/long-horizontal-pipe.svg +488 -0
- package/scada_symbols/long-top-filter.svg +88 -0
- package/scada_symbols/long-vertical-broken-pipe.svg +97 -0
- package/scada_symbols/long-vertical-connector-hp.svg +267 -0
- package/scada_symbols/long-vertical-pipe.svg +485 -0
- package/scada_symbols/low-voltage-tower-hp.svg +278 -0
- package/scada_symbols/low-voltage-transformer-tower-hp.svg +334 -0
- package/scada_symbols/manufacture-hp.svg +344 -0
- package/scada_symbols/meter.svg +751 -0
- package/scada_symbols/oil-pump-hp.svg +357 -0
- package/scada_symbols/platform-hp.svg +267 -0
- package/scada_symbols/pool-hp.svg +523 -0
- package/scada_symbols/pool.svg +998 -0
- package/scada_symbols/power-socket-hp.svg +371 -0
- package/scada_symbols/power-transformer-hp.svg +359 -0
- package/scada_symbols/preventer-hp.svg +343 -0
- package/scada_symbols/pump-hp.svg +368 -0
- package/scada_symbols/right-analog-water-level-meter.svg +748 -0
- package/scada_symbols/right-drain-pipe.svg +167 -0
- package/scada_symbols/right-elbow-drain-pipe.svg +178 -0
- package/scada_symbols/right-flow-meter.svg +911 -0
- package/scada_symbols/right-heat-pump.svg +948 -0
- package/scada_symbols/right-motor-pump.svg +541 -0
- package/scada_symbols/right-tee-connector-hp.svg +470 -0
- package/scada_symbols/right-tee-pipe.svg +857 -0
- package/scada_symbols/rotor-hp.svg +346 -0
- package/scada_symbols/sand-filter-hp.svg +652 -0
- package/scada_symbols/sand-filter.svg +704 -0
- package/scada_symbols/short-bottom-filter.svg +88 -0
- package/scada_symbols/short-left-drain-pipe.svg +160 -0
- package/scada_symbols/short-right-drain-pipe.svg +160 -0
- package/scada_symbols/short-top-filter.svg +88 -0
- package/scada_symbols/short-vertical-tank-hp.svg +522 -0
- package/scada_symbols/simple-horizontal-scale-hp.svg +509 -0
- package/scada_symbols/simple-vertical-scale-hp.svg +509 -0
- package/scada_symbols/single-key-switch-hp.svg +373 -0
- package/scada_symbols/small-cylindrical-tank.svg +1306 -0
- package/scada_symbols/small-horizontal-separator-connector-hp.svg +342 -0
- package/scada_symbols/small-horizontal-separator-hp.svg +342 -0
- package/scada_symbols/small-left-meter.svg +725 -0
- package/scada_symbols/small-left-motor-pump.svg +443 -0
- package/scada_symbols/small-meter.svg +694 -0
- package/scada_symbols/small-power-transformer-hp.svg +359 -0
- package/scada_symbols/small-right-center.svg +725 -0
- package/scada_symbols/small-right-motor-pump.svg +443 -0
- package/scada_symbols/small-spherical-tank.svg +1362 -0
- package/scada_symbols/small-vertical-separator-connector-hp.svg +342 -0
- package/scada_symbols/small-vertical-separator-hp.svg +342 -0
- package/scada_symbols/solar-panel-hp.svg +353 -0
- package/scada_symbols/spherical-tank.svg +1392 -0
- package/scada_symbols/stand-cylindrical-tank.svg +1393 -0
- package/scada_symbols/stand-horizontal-tank.svg +1404 -0
- package/scada_symbols/stand-solar-panel-hp.svg +357 -0
- package/scada_symbols/stand-vertical-short-tank.svg +1366 -0
- package/scada_symbols/stand-vertical-tank.svg +1386 -0
- package/scada_symbols/three-rate-energy-meter-hp.svg +759 -0
- package/scada_symbols/top-flow-meter.svg +927 -0
- package/scada_symbols/top-light-bulb-hp.svg +346 -0
- package/scada_symbols/top-right-elbow-connector-hp.svg +233 -0
- package/scada_symbols/top-right-elbow-pipe.svg +532 -0
- package/scada_symbols/top-tee-connector-hp.svg +470 -0
- package/scada_symbols/top-tee-pipe.svg +857 -0
- package/scada_symbols/turbine-hp.svg +377 -0
- package/scada_symbols/two-key-switch-hp.svg +489 -0
- package/scada_symbols/two-rate-energy-meter-hp.svg +627 -0
- package/scada_symbols/vertical-ball-valve.svg +271 -0
- package/scada_symbols/vertical-broken-pipe.svg +97 -0
- package/scada_symbols/vertical-connector-hp.svg +269 -0
- package/scada_symbols/vertical-energy-system-controller-hp.svg +378 -0
- package/scada_symbols/vertical-inline-flow-meter.svg +913 -0
- package/scada_symbols/vertical-pipe.svg +422 -0
- package/scada_symbols/vertical-short-tank.svg +1305 -0
- package/scada_symbols/vertical-tank-hp.svg +524 -0
- package/scada_symbols/vertical-tank.svg +1326 -0
- package/scada_symbols/vertical-valve-hp.svg +392 -0
- package/scada_symbols/vertical-wheel-valve.svg +300 -0
- package/scada_symbols/voltage-relay-hp.svg +440 -0
- package/scada_symbols/voltage-stabilizer-hp.svg +584 -0
- package/scada_symbols/waterstop.svg +276 -0
- package/scada_symbols/wind-turbine-cluster-hp.svg +370 -0
- package/scada_symbols/wind-turbine-hp.svg +360 -0
- package/src/default-data.json +18 -0
- package/src/definition-schema.d.ts +1521 -0
- package/src/definition-schema.json +5228 -0
- package/src/scada-runtime.ts +1290 -0
- package/src/widget-scada.ts +269 -0
- package/thumbnail.png +0 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { html, css, LitElement, PropertyValues, nothing } from 'lit'
|
|
2
|
+
import { customElement, property, state, query } from 'lit/decorators.js'
|
|
3
|
+
import { unsafeSVG } from 'lit/directives/unsafe-svg.js'
|
|
4
|
+
import { InputData } from './definition-schema.js'
|
|
5
|
+
import {
|
|
6
|
+
SymbolMetadata,
|
|
7
|
+
ScadaContext,
|
|
8
|
+
ScadaCallbacks,
|
|
9
|
+
buildContext,
|
|
10
|
+
renderAllTags,
|
|
11
|
+
attachActions,
|
|
12
|
+
getSymbolDefaults
|
|
13
|
+
} from './scada-runtime.js'
|
|
14
|
+
|
|
15
|
+
type Theme = {
|
|
16
|
+
theme_name: string
|
|
17
|
+
theme_object: any
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@customElement('widget-scada-versionplaceholder')
|
|
21
|
+
export class WidgetScada extends LitElement {
|
|
22
|
+
@property({ type: Object })
|
|
23
|
+
inputData?: InputData
|
|
24
|
+
|
|
25
|
+
@property({ type: Object })
|
|
26
|
+
theme?: Theme
|
|
27
|
+
|
|
28
|
+
@state() private svgContent: string = ''
|
|
29
|
+
@state() private metadata?: SymbolMetadata
|
|
30
|
+
@state() private themeBgColor?: string
|
|
31
|
+
|
|
32
|
+
@query('.svg-container')
|
|
33
|
+
svgContainer?: HTMLDivElement
|
|
34
|
+
|
|
35
|
+
version: string = 'versionplaceholder'
|
|
36
|
+
private currentSymbol?: string
|
|
37
|
+
private resizeObserver: ResizeObserver
|
|
38
|
+
private svgModules = new Map<string, { svg: string; metadata: SymbolMetadata }>()
|
|
39
|
+
private actionCleanups: Array<() => void> = []
|
|
40
|
+
private ctx?: ScadaContext
|
|
41
|
+
|
|
42
|
+
constructor() {
|
|
43
|
+
super()
|
|
44
|
+
this.resizeObserver = new ResizeObserver(() => this.requestUpdate())
|
|
45
|
+
this.resizeObserver.observe(this)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
disconnectedCallback() {
|
|
49
|
+
super.disconnectedCallback()
|
|
50
|
+
this.resizeObserver?.disconnect()
|
|
51
|
+
this.cleanupActions()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private cleanupActions() {
|
|
55
|
+
for (const cleanup of this.actionCleanups) cleanup()
|
|
56
|
+
this.actionCleanups = []
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Returns the default property values from the currently loaded SVG metadata.
|
|
61
|
+
*/
|
|
62
|
+
getDefaults(): Record<string, any> | undefined {
|
|
63
|
+
if (!this.metadata) return undefined
|
|
64
|
+
return getSymbolDefaults(this.metadata)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private dispatchDefaults() {
|
|
68
|
+
if (!this.metadata) return
|
|
69
|
+
this.dispatchEvent(
|
|
70
|
+
new CustomEvent('widget-defaults', {
|
|
71
|
+
detail: getSymbolDefaults(this.metadata),
|
|
72
|
+
bubbles: true,
|
|
73
|
+
composed: true
|
|
74
|
+
})
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
protected updated(changedProperties: PropertyValues) {
|
|
79
|
+
if (changedProperties.has('inputData')) {
|
|
80
|
+
const newSymbol = this.inputData?.symbol
|
|
81
|
+
if (newSymbol && newSymbol !== this.currentSymbol) {
|
|
82
|
+
this.currentSymbol = newSymbol
|
|
83
|
+
this.loadSymbol(newSymbol)
|
|
84
|
+
} else if (newSymbol === this.currentSymbol) {
|
|
85
|
+
this.applyState()
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (changedProperties.has('theme')) {
|
|
89
|
+
this.registerTheme()
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private registerTheme() {
|
|
94
|
+
const cssBgColor = getComputedStyle(this).getPropertyValue('--re-tile-background-color').trim()
|
|
95
|
+
this.themeBgColor = cssBgColor || this.theme?.theme_object?.backgroundColor
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
private getSymbolUrl(symbolId: string): string {
|
|
99
|
+
// Build URL at runtime without triggering Vite's static asset analysis
|
|
100
|
+
// import.meta.url points to the module's own URL
|
|
101
|
+
const base = import.meta.url
|
|
102
|
+
const segments = base.split('/')
|
|
103
|
+
segments.pop() // remove current filename
|
|
104
|
+
segments.pop() // go up from src/
|
|
105
|
+
return segments.join('/') + '/scada_symbols/' + symbolId + '.svg'
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
private async loadSymbol(symbolId: string) {
|
|
109
|
+
const cached = this.svgModules.get(symbolId)
|
|
110
|
+
if (cached) {
|
|
111
|
+
this.svgContent = cached.svg
|
|
112
|
+
this.metadata = cached.metadata
|
|
113
|
+
await this.updateComplete
|
|
114
|
+
this.applyState()
|
|
115
|
+
this.dispatchDefaults()
|
|
116
|
+
return
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
const url = this.getSymbolUrl(symbolId)
|
|
121
|
+
const resp = await fetch(url)
|
|
122
|
+
if (!resp.ok) {
|
|
123
|
+
this.svgContent = ''
|
|
124
|
+
this.metadata = undefined
|
|
125
|
+
return
|
|
126
|
+
}
|
|
127
|
+
const text = await resp.text()
|
|
128
|
+
|
|
129
|
+
const metaMatch = text.match(/<tb:metadata[^>]*><!\[CDATA\[([\s\S]*?)\]\]>/)
|
|
130
|
+
let metadata: SymbolMetadata | undefined
|
|
131
|
+
if (metaMatch) {
|
|
132
|
+
try {
|
|
133
|
+
metadata = JSON.parse(metaMatch[1])
|
|
134
|
+
} catch {
|
|
135
|
+
/* skip */
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const cleanSvg = text.replace(/<tb:metadata[\s\S]*?<\/tb:metadata>/, '')
|
|
140
|
+
this.svgModules.set(symbolId, { svg: cleanSvg, metadata: metadata! })
|
|
141
|
+
this.svgContent = cleanSvg
|
|
142
|
+
this.metadata = metadata
|
|
143
|
+
await this.updateComplete
|
|
144
|
+
this.applyState()
|
|
145
|
+
} catch {
|
|
146
|
+
this.svgContent = ''
|
|
147
|
+
this.metadata = undefined
|
|
148
|
+
}
|
|
149
|
+
this.dispatchDefaults()
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private applyState() {
|
|
153
|
+
if (!this.metadata || !this.inputData || !this.svgContainer) return
|
|
154
|
+
|
|
155
|
+
requestAnimationFrame(() => {
|
|
156
|
+
const svgEl = this.svgContainer?.querySelector('svg')
|
|
157
|
+
if (!svgEl) return
|
|
158
|
+
|
|
159
|
+
// Build values from bindings
|
|
160
|
+
const values: Record<string, any> = {}
|
|
161
|
+
const bindings = (this.inputData as any)?.bindings ?? {}
|
|
162
|
+
for (const [key, val] of Object.entries(bindings)) {
|
|
163
|
+
values[key] = val
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Build properties: symbol defaults → top-level props → flattened styling
|
|
167
|
+
const data = this.inputData as any
|
|
168
|
+
const symbolDefaults = getSymbolDefaults(this.metadata!)
|
|
169
|
+
const { styling: defaultStyling, bindings: _defaultBindings, ...defaultProps } = symbolDefaults
|
|
170
|
+
const properties: Record<string, any> = { ...defaultProps, ...data }
|
|
171
|
+
delete properties.symbol
|
|
172
|
+
delete properties.bindings
|
|
173
|
+
delete properties.actions
|
|
174
|
+
delete properties.styling
|
|
175
|
+
Object.assign(properties, defaultStyling ?? {}, data?.styling ?? {})
|
|
176
|
+
|
|
177
|
+
// Action callbacks
|
|
178
|
+
const callbacks: ScadaCallbacks = {
|
|
179
|
+
onAction: (event, actionName, args, _opts) => {
|
|
180
|
+
this.dispatchEvent(
|
|
181
|
+
new CustomEvent('action-submit', {
|
|
182
|
+
detail: {
|
|
183
|
+
actionName,
|
|
184
|
+
args,
|
|
185
|
+
actionApp: data?.actions?.actionApp,
|
|
186
|
+
actionDevice: data?.actions?.actionDevice,
|
|
187
|
+
actionTopic: data?.actions?.actionTopic
|
|
188
|
+
},
|
|
189
|
+
bubbles: false,
|
|
190
|
+
composed: false
|
|
191
|
+
})
|
|
192
|
+
)
|
|
193
|
+
},
|
|
194
|
+
onSetValue: (key, value) => {
|
|
195
|
+
// Update the binding value and re-render
|
|
196
|
+
if (this.ctx) this.ctx.values[key] = value
|
|
197
|
+
this.applyState()
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Build context and execute all stateRenderFunctions
|
|
202
|
+
this.ctx = buildContext(svgEl, this.metadata!, values, properties, callbacks)
|
|
203
|
+
|
|
204
|
+
// Cleanup old action handlers and attach new ones
|
|
205
|
+
this.cleanupActions()
|
|
206
|
+
renderAllTags(svgEl, this.metadata!, this.ctx)
|
|
207
|
+
this.actionCleanups = attachActions(svgEl, this.metadata!, this.ctx)
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
static styles = css`
|
|
212
|
+
:host {
|
|
213
|
+
display: block;
|
|
214
|
+
box-sizing: border-box;
|
|
215
|
+
position: relative;
|
|
216
|
+
margin: auto;
|
|
217
|
+
overflow: hidden;
|
|
218
|
+
width: 100%;
|
|
219
|
+
height: 100%;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.wrapper {
|
|
223
|
+
display: flex;
|
|
224
|
+
align-items: center;
|
|
225
|
+
justify-content: center;
|
|
226
|
+
height: 100%;
|
|
227
|
+
width: 100%;
|
|
228
|
+
box-sizing: border-box;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.svg-container {
|
|
232
|
+
width: 100%;
|
|
233
|
+
height: 100%;
|
|
234
|
+
display: flex;
|
|
235
|
+
justify-content: center;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.svg-container svg {
|
|
239
|
+
max-width: 100%;
|
|
240
|
+
max-height: 100%;
|
|
241
|
+
width: auto;
|
|
242
|
+
height: auto;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.no-symbol {
|
|
246
|
+
font-size: 16px;
|
|
247
|
+
color: #999;
|
|
248
|
+
display: flex;
|
|
249
|
+
height: 100%;
|
|
250
|
+
width: 100%;
|
|
251
|
+
text-align: center;
|
|
252
|
+
align-items: center;
|
|
253
|
+
justify-content: center;
|
|
254
|
+
font-family: sans-serif;
|
|
255
|
+
}
|
|
256
|
+
`
|
|
257
|
+
|
|
258
|
+
render() {
|
|
259
|
+
return html`
|
|
260
|
+
<div class="wrapper" style="background-color: ${this.themeBgColor ?? ''}">
|
|
261
|
+
${this.svgContent
|
|
262
|
+
? html`<div class="svg-container">${unsafeSVG(this.svgContent)}</div>`
|
|
263
|
+
: html`<div class="no-symbol">
|
|
264
|
+
${this.inputData?.symbol ? 'Loading...' : 'Select a SCADA symbol'}
|
|
265
|
+
</div>`}
|
|
266
|
+
</div>
|
|
267
|
+
`
|
|
268
|
+
}
|
|
269
|
+
}
|
package/thumbnail.png
ADDED
|
Binary file
|