first commit
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
name: "\U0001F41E Bug report"
|
||||
about: Create a report to help us improve
|
||||
title: "Your title here"
|
||||
labels: ['bug', 'unconfirmed']
|
||||
assignees: Ultrazombie
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Your Server Environment**
|
||||
<!-- 🔅🔅🔅🔅🔅🔅🔅 Choose one of the following or write your own 🔅🔅🔅🔅🔅🔅🔅-->
|
||||
* [Live Demo](https://demo.thingsboard.io)
|
||||
* [ThingsBoard Cloud](https://thingsboard.cloud)
|
||||
* own setup
|
||||
* Deployment: monolith or microservices
|
||||
* Deployment type: deb, rpm, exe, docker-compose, k8s, ami
|
||||
* ThingsBoard Version
|
||||
* Community or Professional Edition
|
||||
* OS Name and Version
|
||||
|
||||
**Your Client Environment**
|
||||
<!-- 🔅🔅🔅🔅🔅🔅🔅 Choose one of the following or write your own 🔅🔅🔅🔅🔅🔅🔅-->
|
||||
**Desktop (please complete the following information):**
|
||||
|
||||
* OS: [e.g. iOS]
|
||||
* Browser [e.g. chrome, safari]
|
||||
* Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
* Device: [e.g. iPhone6]
|
||||
* OS: [e.g. iOS8.1]
|
||||
* Browser [e.g. stock browser, safari]
|
||||
* Version [e.g. 22]
|
||||
|
||||
**Your Device**
|
||||
|
||||
* Connectivity
|
||||
* MQTT
|
||||
* HTTP
|
||||
* CoAP
|
||||
* Gateway
|
||||
* Integration: (Specify name)
|
||||
* Device vendor and model
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, please add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
Please feel free to add any other context about the problem here.
|
||||
|
||||
________________________________________________________________
|
||||
**Disclaimer**
|
||||
|
||||
We appreciate your contribution whether it is a bug report, feature request, or pull request with improvement (hopefully). Please comply with the [Community ethics policy](https://docs.github.com/en/site-policy/acceptable-use-policies/github-acceptable-use-policies), and do not expect us to answer your requests immediately. Also, do not treat *GitHub issues* as a support channel.
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "Your title here"
|
||||
labels: ['feature']
|
||||
assignees: 'Ultrazombie'
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
||||
_____________________________________________________
|
||||
**Disclaimer**
|
||||
|
||||
We appreciate your contribution whether it is a bug report, feature request, or pull request with improvement (hopefully). Please comply with the [Community ethics policy](https://docs.github.com/en/site-policy/acceptable-use-policies/github-acceptable-use-policies)), and do not expect us to answer your requests immediately. Also, do not treat *GitHub issues* as a support channel.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
name: Question
|
||||
about: Describe your questions in detail
|
||||
title: "Your title here"
|
||||
labels: ['question']
|
||||
assignees: 'Ultrazombie'
|
||||
|
||||
---
|
||||
|
||||
**Component**
|
||||
|
||||
<!-- Choose one of the following and delete all others. -->
|
||||
* UI
|
||||
* Rule Engine
|
||||
* Installation
|
||||
* Generic
|
||||
|
||||
**Description**
|
||||
Clear and concise details.
|
||||
|
||||
**Environment**
|
||||
<!-- Add information about your environment and ThingsBoard version if applicable -->
|
||||
* OS: name and version
|
||||
* ThingsBoard: version
|
||||
* Browser: name and version
|
||||
|
||||
___________________________________________________________
|
||||
**Disclaimer**
|
||||
|
||||
We appreciate your contribution whether it is a bug report, feature request, or pull request with improvement (hopefully). Please comply with the [Community ethics policy](https://docs.github.com/en/site-policy/acceptable-use-policies/github-acceptable-use-policies), and do not expect us to answer your requests immediately. Also, do not treat *GitHub issues* as a support channel.
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
#
|
||||
# Copyright © 2016-2025 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
changelog:
|
||||
exclude:
|
||||
labels:
|
||||
- Ignore for release
|
||||
categories:
|
||||
- title: 'Major Core & Rule Engine'
|
||||
labels:
|
||||
- 'Major Core'
|
||||
- 'Major Rule Engine'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Major UI'
|
||||
labels:
|
||||
- 'Major UI'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Major Transport'
|
||||
labels:
|
||||
- 'Major Transport'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Major Edge'
|
||||
labels:
|
||||
- 'Major Edge'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Core & Rule Engine'
|
||||
labels:
|
||||
- 'Core'
|
||||
- 'Rule Engine'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'UI'
|
||||
labels:
|
||||
- 'UI'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Transport'
|
||||
labels:
|
||||
- 'Transport'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Edge'
|
||||
labels:
|
||||
- 'Edge'
|
||||
exclude:
|
||||
labels:
|
||||
- 'Bug'
|
||||
- title: 'Bug: Core & Rule Engine'
|
||||
labels:
|
||||
- 'Core'
|
||||
- 'Rule Engine'
|
||||
- 'Bug'
|
||||
- title: 'Bug: UI'
|
||||
labels:
|
||||
- 'UI'
|
||||
- 'Bug'
|
||||
- title: 'Bug: Transport'
|
||||
labels:
|
||||
- 'Transport'
|
||||
- 'Bug'
|
||||
- title: 'Bug: Edge'
|
||||
labels:
|
||||
- 'Edge'
|
||||
- 'Bug'
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
#
|
||||
# Copyright © 2016-2025 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
name: Check configuration files
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths:
|
||||
- 'application/src/main/resources/thingsboard.yml'
|
||||
- 'transport/http/src/main/resources/tb-http-transport.yml'
|
||||
- 'transport/http/src/main/resources/tb-mqtt-transport.yml'
|
||||
- 'transport/http/src/main/resources/tb-coap-transport.yml'
|
||||
- 'transport/http/src/main/resources/tb-lwm2m-transport.yml'
|
||||
- 'transport/http/src/main/resources/tb-snmp-transport.yml'
|
||||
- 'msa/vc-executor/src/main/resources/tb-vc-executor.yml'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Check thingsboard.yml file
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: "3.13.2"
|
||||
architecture: "x64"
|
||||
env:
|
||||
AGENT_TOOLSDIRECTORY: /opt/hostedtoolcache
|
||||
- name: Run Verification Script
|
||||
run: python3 tools/src/main/python/check_yml_file.py
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
#
|
||||
# Copyright © 2016-2025 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
name: License header format
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'develop/3*'
|
||||
- 'hotfix/3*'
|
||||
|
||||
jobs:
|
||||
license-format:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'corretto' # https://github.com/actions/setup-java?tab=readme-ov-file#supported-distributions
|
||||
java-version: '21'
|
||||
cache: 'maven' # https://github.com/actions/setup-java?tab=readme-ov-file#caching-sbt-dependencies
|
||||
|
||||
- name: License header format
|
||||
run: mvn -T 1C license:format
|
||||
|
||||
- name: License header format (msa/black-box-tests/)
|
||||
run: mvn -T 1C license:format -f msa/black-box-tests/
|
||||
|
||||
- name: Set Git user information
|
||||
run: |
|
||||
git config user.name "ThingsBoard Bot"
|
||||
git config user.email "noreply@thingsboard.io"
|
||||
|
||||
- name: Check and push changes
|
||||
run: |
|
||||
git diff --exit-code || git commit -am "License header format" && git push
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
*.toDelete
|
||||
output/**
|
||||
*.class
|
||||
*~
|
||||
*.iml
|
||||
*/.idea/**
|
||||
.idea/**
|
||||
.idea
|
||||
*.log
|
||||
*.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
|
||||
*/.classpath
|
||||
.classpath
|
||||
*/.project
|
||||
.project
|
||||
.cache/**
|
||||
target/
|
||||
build/
|
||||
tmp_deb_control/
|
||||
tmp_rpm_control/
|
||||
tmp_sh/
|
||||
.gwt/
|
||||
.settings/
|
||||
/bin
|
||||
bin/
|
||||
**/dependency-reduced-pom.xml
|
||||
pom.xml.versionsBackup
|
||||
.DS_Store
|
||||
**/.gradle
|
||||
**/local.properties
|
||||
**/build
|
||||
**/target
|
||||
**/Californium.properties
|
||||
**/Californium3.properties
|
||||
**/.env
|
||||
.instance_id
|
||||
rebuild-docker.sh
|
||||
*/.run/**
|
||||
.run/**
|
||||
.run
|
||||
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2016 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# ThingsBoard
|
||||
[](https://builds.thingsboard.io/viewType.html?buildTypeId=ThingsBoard_Build&guest=1)
|
||||
|
||||
ThingsBoard is an open-source IoT platform for data collection, processing, visualization, and device management.
|
||||
|
||||
<img src="./img/logo.png?raw=true" width="100" height="100">
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
ThingsBoard documentation is hosted on [thingsboard.io](https://thingsboard.io/docs).
|
||||
|
||||
## IoT use cases
|
||||
|
||||
[**Smart energy**](https://thingsboard.io/smart-energy/)
|
||||
[](https://thingsboard.io/smart-energy/)
|
||||
|
||||
[**SCADA Swimming pool**](https://thingsboard.io/use-cases/scada/)
|
||||
[](https://thingsboard.io/use-cases/scada/)
|
||||
|
||||
[**Fleet tracking**](https://thingsboard.io/fleet-tracking/)
|
||||
[](https://thingsboard.io/fleet-tracking/)
|
||||
|
||||
[**Smart farming**](https://thingsboard.io/smart-farming/)
|
||||
[](https://thingsboard.io/smart-farming/)
|
||||
|
||||
[**IoT Rule Engine**](https://thingsboard.io/docs/user-guide/rule-engine-2-0/re-getting-started/)
|
||||
[](https://thingsboard.io/docs/user-guide/rule-engine-2-0/re-getting-started/)
|
||||
|
||||
[**Smart metering**](https://thingsboard.io/smart-metering/)
|
||||
[](https://thingsboard.io/smart-metering/)
|
||||
|
||||
## Getting Started
|
||||
|
||||
Collect and Visualize your IoT data in minutes by following this [guide](https://thingsboard.io/docs/getting-started-guides/helloworld/).
|
||||
|
||||
## Support
|
||||
|
||||
- [Stackoverflow](http://stackoverflow.com/questions/tagged/thingsboard)
|
||||
|
||||
## Licenses
|
||||
|
||||
This project is released under [Apache 2.0 License](./LICENSE).
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
!bin/
|
||||
/bin/
|
||||
|
|
@ -0,0 +1,519 @@
|
|||
<!--
|
||||
|
||||
Copyright © 2016-2025 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<version>4.2.1</version>
|
||||
<artifactId>thingsboard</artifactId>
|
||||
</parent>
|
||||
<artifactId>application</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>ThingsBoard Server Application</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
<description>Open-source IoT Platform - Device management, data collection, processing and visualization
|
||||
</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/..</main.dir>
|
||||
<pkg.type>java</pkg.type>
|
||||
<pkg.disabled>false</pkg.disabled>
|
||||
<pkg.process-resources.phase>process-resources</pkg.process-resources.phase>
|
||||
<pkg.package.phase>package</pkg.package.phase>
|
||||
<pkg.name>thingsboard</pkg.name>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
<pkg.copyInstallScripts>true</pkg.copyInstallScripts>
|
||||
<pkg.implementationTitle>ThingsBoard</pkg.implementationTitle>
|
||||
<pkg.mainClass>org.thingsboard.server.ThingsboardServerApplication</pkg.mainClass>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<!-- Explicitly bring in the linux classifier, test may fail on 32-bit linux -->
|
||||
<classifier>linux-x86_64</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>actor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>util</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.rule-engine</groupId>
|
||||
<artifactId>rule-engine-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>cluster-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>version-control</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.rule-engine</groupId>
|
||||
<artifactId>rule-engine-components</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>transport-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>mqtt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>http</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>coap</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>lwm2m</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>snmp</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>dao</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>queue</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.script</groupId>
|
||||
<artifactId>script-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.script</groupId>
|
||||
<artifactId>remote-js-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>stats</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>edge-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>edqs</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>discovery-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>dao</artifactId>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.takari.junit</groupId>
|
||||
<artifactId>takari-cpsuite</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.mqttv5.client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>ui-ngx</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.integration</groupId>
|
||||
<artifactId>spring-integration-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-oauth2-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-oauth2-jose</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-freemarker</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-csv</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context-support</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>log4j-over-slf4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>jakarta.mail</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.xml.bind</groupId>
|
||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.twilio.sdk</groupId>
|
||||
<artifactId>twilio</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.amazonaws</groupId>
|
||||
<artifactId>aws-java-sdk-sns</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.curator</groupId>
|
||||
<artifactId>curator-recipes</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-all</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-tcnative-boringssl-static</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-netty-shaded</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-protobuf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.grpc</groupId>
|
||||
<artifactId>grpc-stub</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.opensmpp</groupId>
|
||||
<artifactId>opensmpp-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.winsw</groupId>
|
||||
<artifactId>winsw</artifactId>
|
||||
<classifier>bin</classifier>
|
||||
<type>exe</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>tools</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>rest-client</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.jayway.jsonpath</groupId>
|
||||
<artifactId>json-path</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.jayway.jsonpath</groupId>
|
||||
<artifactId>json-path-assert</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.awaitility</groupId>
|
||||
<artifactId>awaitility</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dbunit</groupId>
|
||||
<artifactId>dbunit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.springtestdbunit</groupId>
|
||||
<artifactId>spring-test-dbunit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>cassandra</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>jdbc</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.javadelight</groupId>
|
||||
<artifactId>delight-nashorn-sandbox</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.passay</groupId>
|
||||
<artifactId>passay</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.ua-parser</groupId>
|
||||
<artifactId>uap-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.java-websocket</groupId>
|
||||
<artifactId>Java-WebSocket</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jboss.aerogear</groupId>
|
||||
<artifactId>aerogear-otp-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.slack.api</groupId>
|
||||
<artifactId>slack-api-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.oauth-client</groupId>
|
||||
<artifactId>google-oauth-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.firebase</groupId>
|
||||
<artifactId>firebase-admin</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.rocksdb</groupId>
|
||||
<artifactId>rocksdbjni</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-open-ai</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-azure-open-ai</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-google-ai-gemini</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-vertex-ai-gemini</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-mistral-ai</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-anthropic</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-bedrock</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-github-models</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.azure</groupId>
|
||||
<artifactId>azure-core-test</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-ollama</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${pkg.name}-${project.version}</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${project.basedir}/src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>thingsboard.yml</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>${project.basedir}/src/main/resources</directory>
|
||||
<filtering>false</filtering>
|
||||
<excludes>
|
||||
<exclude>thingsboard.yml</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>io.github.git-commit-id</groupId>
|
||||
<artifactId>git-commit-id-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<spring.config.name>thingsboard</spring.config.name>
|
||||
</systemPropertyVariables>
|
||||
<excludes>
|
||||
<exclude>**/nosql/*Test.java</exclude>
|
||||
</excludes>
|
||||
<includes>
|
||||
<include>**/*Test.java</include>
|
||||
<include>**/*TestSuite.java</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>gradle-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.xolstice.maven.plugins</groupId>
|
||||
<artifactId>protobuf-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>jenkins</id>
|
||||
<name>Jenkins Repository</name>
|
||||
<url>https://repo.jenkins-ci.org/releases</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
|
||||
Copyright © 2016-2025 The Thingsboard Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!DOCTYPE configuration>
|
||||
<configuration scan="true" scanPeriod="10 seconds">
|
||||
|
||||
<appender name="fileLogAppender"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${pkg.logFolder}/${pkg.name}.log</file>
|
||||
<rollingPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${pkg.logFolder}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>3GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="org.thingsboard.server" level="INFO" />
|
||||
<logger name="com.microsoft.azure.servicebus.primitives.CoreMessageReceiver" level="OFF" />
|
||||
<logger name="org.apache.kafka.common.utils.AppInfoParser" level="WARN"/>
|
||||
<logger name="org.apache.kafka.clients" level="WARN"/>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="fileLogAppender"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#
|
||||
# Copyright © 2016-2025 The Thingsboard Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
export JAVA_OPTS="$JAVA_OPTS -Dplatform=@pkg.platform@ -Dinstall.data_dir=@pkg.installFolder@/data"
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=@pkg.logFolder@/gc.log:time,uptime,level,tags:filecount=10,filesize=10M"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"
|
||||
export LOG_FILENAME=${pkg.name}.out
|
||||
export LOADER_PATH=${pkg.installFolder}/conf,${pkg.installFolder}/extensions
|
||||
export SQL_DATA_FOLDER=${pkg.installFolder}/data/sql
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
|
||||
MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
|
||||
2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
|
||||
1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
|
||||
q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
|
||||
tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
|
||||
vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
|
||||
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
|
||||
5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
|
||||
1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
|
||||
NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
|
||||
Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
|
||||
8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
|
||||
pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
||||
MrY=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
Here is the list of commands, that can be used to quickly install ThingsBoard Edge on RHEL/CentOS 7/8 and connect to the server.
|
||||
|
||||
#### Prerequisites
|
||||
Before continue to installation execute the following commands in order to install necessary tools:
|
||||
|
||||
```bash
|
||||
sudo yum install -y nano wget && sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 1. Install Java 17 (OpenJDK)
|
||||
ThingsBoard service is running on Java 17. Follow these instructions to install OpenJDK 17:
|
||||
|
||||
```bash
|
||||
sudo dnf install java-17-openjdk
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Please don't forget to configure your operating system to use OpenJDK 17 by default.
|
||||
You can configure which version is the default using the following command:
|
||||
|
||||
```bash
|
||||
sudo update-alternatives --config java
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
You can check the installation using the following command:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Expected command output is:
|
||||
|
||||
```text
|
||||
openjdk version "17.x.xx"
|
||||
OpenJDK Runtime Environment (...)
|
||||
OpenJDK 64-Bit Server VM (build ...)
|
||||
```
|
||||
|
||||
#### Step 2. Configure ThingsBoard Database
|
||||
ThingsBoard Edge supports SQL and hybrid database approaches.
|
||||
In this guide we will use SQL only.
|
||||
For hybrid details please follow official installation instructions from the ThingsBoard documentation site.
|
||||
|
||||
### PostgresSql
|
||||
ThingsBoard Edge uses PostgreSQL database as a local storage.
|
||||
To install PostgreSQL, follow the instructions below.
|
||||
|
||||
```bash
|
||||
# Update your system
|
||||
sudo dnf update
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Install the repository RPM:
|
||||
**For CentOS/RHEL 8:**
|
||||
|
||||
```bash
|
||||
# Install the repository RPM (For CentOS/RHEL 8):
|
||||
sudo sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
**For CentOS/RHEL 9:**
|
||||
|
||||
```bash
|
||||
# Install the repository RPM (for CentOS 9):
|
||||
sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Install packages and initialize PostgreSQL. The PostgreSQL service will automatically start every time the system boots up.
|
||||
|
||||
```bash
|
||||
sudo dnf -qy module disable postgresql && \
|
||||
sudo dnf -y install postgresql16 postgresql16-server postgresql16-contrib && \
|
||||
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb && \
|
||||
sudo systemctl enable --now postgresql-16
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Once PostgreSQL is installed, it is recommended to set the password for the PostgreSQL main user.
|
||||
|
||||
The following command will switch the current user to the PostgreSQL user and set the password directly in PostgreSQL.
|
||||
|
||||
```bash
|
||||
sudo -u postgres psql -c "\password"
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Then, enter and confirm the password.
|
||||
|
||||
Since ThingsBoard Edge uses the PostgreSQL database for local storage, configuring MD5 authentication ensures that only authenticated users or
|
||||
applications can access the database, thus protecting your data. After configuring the password,
|
||||
edit the pg_hba.conf file to use MD5 hashing for authentication instead of the default method (ident) for local IPv4 connections.
|
||||
|
||||
To replace ident with md5, run the following command:
|
||||
|
||||
```bash
|
||||
sudo sed -i 's/^host\s\+all\s\+all\s\+127\.0\.0\.1\/32\s\+ident/host all all 127.0.0.1\/32 md5/' /var/lib/pgsql/16/data/pg_hba.conf
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Then run the command that will restart the PostgreSQL service to apply configuration changes, connect to the database as a postgres user,
|
||||
and create the ThingsBoard Edge database (tb_edge). To connect to the PostgreSQL database, enter the PostgreSQL password.
|
||||
|
||||
```bash
|
||||
sudo systemctl restart postgresql-16.service && psql -U postgres -d postgres -h 127.0.0.1 -W -c "CREATE DATABASE tb_edge;"
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 3. Choose Queue Service
|
||||
|
||||
ThingsBoard Edge supports only Kafka or in-memory queue (since v4.0) for message storage and communication between ThingsBoard services.
|
||||
How to choose the right queue implementation?
|
||||
|
||||
In Memory queue implementation is built-in and default. It is useful for development(PoC) environments and is not suitable for production deployments or any sort of cluster deployments.
|
||||
|
||||
Kafka is recommended for production deployments. This queue is used on the most of ThingsBoard production environments now.
|
||||
|
||||
In Memory queue is built in and enabled by default. No additional configuration is required.
|
||||
|
||||
#### Step 4. ThingsBoard Edge Service Installation
|
||||
Download installation package:
|
||||
|
||||
```bash
|
||||
wget wget https://github.com/thingsboard/thingsboard-edge/releases/download/v${TB_EDGE_TAG}/tb-edge-${TB_EDGE_TAG}.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Go to the download repository and install ThingsBoard Edge service:
|
||||
|
||||
```bash
|
||||
sudo rpm -Uvh tb-edge-${TB_EDGE_TAG}.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 5. Configure ThingsBoard Edge
|
||||
To configure ThingsBoard Edge, you can use the following command to automatically update the configuration file with specific values:
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export CLOUD_ROUTING_KEY=${CLOUD_ROUTING_KEY}
|
||||
export CLOUD_ROUTING_SECRET=${CLOUD_ROUTING_SECRET}
|
||||
export CLOUD_RPC_HOST=${BASE_URL}
|
||||
export CLOUD_RPC_PORT=${CLOUD_RPC_PORT}
|
||||
export CLOUD_RPC_SSL_ENABLED=${CLOUD_RPC_SSL_ENABLED}
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
##### Configure PostgreSQL (Optional)
|
||||
If you changed PostgreSQL default datasource settings, use the following command:
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/tb_edge
|
||||
export SPRING_DATASOURCE_USERNAME=postgres
|
||||
export SPRING_DATASOURCE_PASSWORD=<PUT_YOUR_POSTGRESQL_PASSWORD_HERE>
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
PUT_YOUR_POSTGRESQL_PASSWORD_HERE: Replace with your actual PostgreSQL user password.
|
||||
|
||||
|
||||
##### [Optional] Update bind ports
|
||||
If ThingsBoard Edge is going to be running on the same machine where ThingsBoard server (cloud) is running, you'll need to update configuration parameters to avoid port collision between ThingsBoard server and ThingsBoard Edge.
|
||||
|
||||
Please execute the following command to update ThingsBoard Edge configuration file (**/etc/tb-edge/conf/tb-edge.conf**):
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export HTTP_BIND_PORT=18080
|
||||
export MQTT_BIND_PORT=11883
|
||||
export COAP_BIND_PORT=15683
|
||||
export LWM2M_ENABLED=false
|
||||
export SNMP_ENABLED=false
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Make sure that ports above (18080, 11883, 15683) are not used by any other application.
|
||||
|
||||
#### Step 6. Run installation Script
|
||||
Once ThingsBoard Edge is installed and configured please execute the following install script:
|
||||
|
||||
```bash
|
||||
sudo /usr/share/tb-edge/bin/install/install.sh
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 7. Restart ThingsBoard Edge Service
|
||||
|
||||
```bash
|
||||
sudo service tb-edge restart
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 8. Open ThingsBoard Edge UI
|
||||
|
||||
Once started, you will be able to open **ThingsBoard Edge UI** using the following link http://localhost:8080.
|
||||
|
||||
###### NOTE: Edge HTTP bind port update
|
||||
|
||||
If the Edge HTTP bind port was changed to 18080 during Edge installation, access the ThingsBoard Edge instance at http://localhost:18080.
|
||||
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
Here is the list of commands, that can be used to quickly install ThingsBoard Edge using docker compose and connect to the server.
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
Install <a href="https://docs.docker.com/engine/install/" target="_blank"> Docker CE</a> and <a href="https://docs.docker.com/compose/install/" target="_blank"> Docker Compose</a>.
|
||||
|
||||
#### Step 1. Running ThingsBoard Edge
|
||||
|
||||
Here you can find ThingsBoard Edge docker image:
|
||||
|
||||
<a href="https://hub.docker.com/r/thingsboard/tb-edge" target="_blank"> thingsboard/tb-edge</a>
|
||||
|
||||
#### Step 2. Choose Queue and/or Database Services
|
||||
|
||||
ThingsBoard Edge supports only Kafka or in-memory queue (since v4.0) for message storage and communication between ThingsBoard services.
|
||||
|
||||
ThingsBoard Edge supports SQL and hybrid database approaches.
|
||||
In this guide we will use SQL only.
|
||||
For hybrid details please follow official installation instructions from the ThingsBoard documentation site.
|
||||
|
||||
How to choose the right queue implementation?
|
||||
|
||||
In Memory queue implementation is built-in and default. It is useful for development(PoC) environments and is not suitable for production deployments or any sort of cluster deployments.
|
||||
|
||||
Kafka is recommended for production deployments. This queue is used on the most of ThingsBoard production environments now.
|
||||
|
||||
Hybrid implementation combines PostgreSQL and Cassandra databases with Kafka queue service. It is recommended if you plan to manage 1M+ devices in production or handle high data ingestion rate (more than 5000 msg/sec).
|
||||
|
||||
Create a docker compose file for the ThingsBoard Edge service:
|
||||
|
||||
##### In Memory
|
||||
|
||||
```bash
|
||||
nano docker-compose.yml
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Add the following lines to the yml file:
|
||||
|
||||
```bash
|
||||
version: '3.8'
|
||||
services:
|
||||
mytbedge:
|
||||
restart: always
|
||||
image: "thingsboard/tb-edge:${TB_EDGE_VERSION}"
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "1883:1883"
|
||||
- "5683-5688:5683-5688/udp"
|
||||
environment:
|
||||
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/tb-edge
|
||||
CLOUD_ROUTING_KEY: ${CLOUD_ROUTING_KEY}
|
||||
CLOUD_ROUTING_SECRET: ${CLOUD_ROUTING_SECRET}
|
||||
CLOUD_RPC_HOST: ${BASE_URL}
|
||||
CLOUD_RPC_PORT: ${CLOUD_RPC_PORT}
|
||||
CLOUD_RPC_SSL_ENABLED: ${CLOUD_RPC_SSL_ENABLED}
|
||||
volumes:
|
||||
- tb-edge-data:/data
|
||||
- tb-edge-logs:/var/log/tb-edge
|
||||
postgres:
|
||||
restart: always
|
||||
image: "postgres:16"
|
||||
ports:
|
||||
- "5432"
|
||||
environment:
|
||||
POSTGRES_DB: tb-edge
|
||||
POSTGRES_PASSWORD: postgres
|
||||
volumes:
|
||||
- tb-edge-postgres-data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
tb-edge-data:
|
||||
name: tb-edge-data
|
||||
tb-edge-logs:
|
||||
name: tb-edge-logs
|
||||
tb-edge-postgres-data:
|
||||
name: tb-edge-postgres-data
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
##### [Optional] Update bind ports
|
||||
If ThingsBoard Edge is set to run on the same machine where the ThingsBoard server is operating, you need to update port configuration to prevent port collision between the ThingsBoard server and ThingsBoard Edge.
|
||||
|
||||
Ensure that the ports 18080, 11883, 15683-15688 are not used by any other application.
|
||||
|
||||
Then, update the port configuration in the docker-compose.yml file:
|
||||
```bash
|
||||
sed -i ‘s/8080:8080/18080:8080/; s/1883:1883/11883:1883/; s/5683-5688:5683-5688\/udp/15683-15688:5683-5688\/udp/’ docker-compose.yml
|
||||
{:copy-code}
|
||||
```
|
||||
#### Start ThingsBoard Edge
|
||||
Set the terminal in the directory which contains the docker-compose.yml file and execute the following commands to up this docker compose directly:
|
||||
|
||||
```bash
|
||||
docker compose up -d && docker compose logs -f mytbedge
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
###### NOTE: Docker Compose V2 vs docker-compose (with a hyphen)
|
||||
|
||||
ThingsBoard supports Docker Compose V2 (Docker Desktop or Compose plugin) starting from **3.4.2** release, because **docker-compose** as standalone setup is no longer supported by Docker.
|
||||
We **strongly** recommend to update to Docker Compose V2 and use it.
|
||||
If you still rely on using Docker Compose as docker-compose (with a hyphen), then please execute the following commands to start ThingsBoard Edge:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
docker-compose logs -f mytbedge
|
||||
```
|
||||
|
||||
#### Step 3. Open ThingsBoard Edge UI
|
||||
|
||||
Once the Edge service is started, open the Edge UI at http://localhost:8080.
|
||||
|
||||
###### NOTE: Edge HTTP bind port update
|
||||
|
||||
If the Edge HTTP bind port was changed to 18080 during Edge installation, access the ThingsBoard Edge instance at http://localhost:18080.
|
||||
|
||||
Please use your tenant credentials from local Server instance or ThingsBoard Live Demo to log in to the ThingsBoard Edge.
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
Here is the list of commands, that can be used to quickly install ThingsBoard Edge on Ubuntu Server and connect to the server.
|
||||
|
||||
#### Step 1. Install Java 17 (OpenJDK)
|
||||
ThingsBoard service is running on Java 17. To install OpenJDK 17, follow these instructions:
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt install openjdk-17-jdk
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Configure your operating system to use OpenJDK 17 by default. You can configure the default version by running the following command:
|
||||
|
||||
```bash
|
||||
sudo update-alternatives --config java
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
To check the installed Java version on your system, use the following command:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
The expected result is:
|
||||
|
||||
```text
|
||||
openjdk version "17.x.xx"
|
||||
OpenJDK Runtime Environment (...)
|
||||
OpenJDK 64-Bit Server VM (...)
|
||||
```
|
||||
|
||||
#### Step 2. Configure ThingsBoard Edge Database
|
||||
|
||||
ThingsBoard Edge supports SQL and hybrid database approaches.
|
||||
In this guide we will use SQL only.
|
||||
For hybrid details please follow official installation instructions from the ThingsBoard documentation site.
|
||||
|
||||
### Configure PostgreSQL
|
||||
ThingsBoard Edge uses PostgreSQL database as a local storage.
|
||||
|
||||
To install the PostgreSQL database, run these commands:
|
||||
|
||||
```bash
|
||||
# Automated repository configuration:
|
||||
sudo apt install -y postgresql-common
|
||||
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
|
||||
|
||||
# install and launch the postgresql service:
|
||||
sudo apt update
|
||||
sudo apt -y install postgresql-16
|
||||
sudo service postgresql start
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Once PostgreSQL is installed, it is recommended to set the password for the PostgreSQL main user.
|
||||
|
||||
The following command will switch the current user to the PostgreSQL user and set the password directly in PostgreSQL.
|
||||
|
||||
```bash
|
||||
sudo -u postgres psql -c "\password"
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Then, enter and confirm the password.
|
||||
|
||||
Finally, create a new PostgreSQL database named tb_edge by running the following command:
|
||||
|
||||
```bash
|
||||
echo "CREATE DATABASE tb_edge;" | psql -U postgres -d postgres -h 127.0.0.1 -W
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 3. Choose Queue Service
|
||||
|
||||
ThingsBoard Edge supports only Kafka or in-memory queue (since v4.0) for message storage and communication between ThingsBoard services. Choose the appropriate queue implementation based on your specific business needs:
|
||||
|
||||
In Memory: The built-in and default queue implementation. It is useful for development or proof-of-concept (PoC) environments, but is not recommended for production or any type of clustered deployments due to limited scalability.
|
||||
|
||||
Kafka: Recommended for production deployments. This queue is used in the most of ThingsBoard production environments now.
|
||||
|
||||
In Memory queue is built in and enabled by default. No additional configuration is required.
|
||||
|
||||
#### Step 4. ThingsBoard Edge Service Installation
|
||||
Download installation package:
|
||||
|
||||
```bash
|
||||
wget https://github.com/thingsboard/thingsboard-edge/releases/download/v${TB_EDGE_TAG}/tb-edge-${TB_EDGE_TAG}.deb
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Go to the download repository and install ThingsBoard Edge service:
|
||||
|
||||
```bash
|
||||
sudo dpkg -i tb-edge-${TB_EDGE_TAG}.deb
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 5. Configure ThingsBoard Edge
|
||||
To configure ThingsBoard Edge, you can use the following command to automatically update the configuration file with specific values:
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export CLOUD_ROUTING_KEY=${CLOUD_ROUTING_KEY}
|
||||
export CLOUD_ROUTING_SECRET=${CLOUD_ROUTING_SECRET}
|
||||
export CLOUD_RPC_HOST=${BASE_URL}
|
||||
export CLOUD_RPC_PORT=${CLOUD_RPC_PORT}
|
||||
export CLOUD_RPC_SSL_ENABLED=${CLOUD_RPC_SSL_ENABLED}
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
##### [Optional] Configure PostgreSQL
|
||||
If you changed PostgreSQL default datasource settings, use the following command:
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/tb_edge
|
||||
export SPRING_DATASOURCE_USERNAME=postgres
|
||||
export SPRING_DATASOURCE_PASSWORD=<PUT_YOUR_POSTGRESQL_PASSWORD_HERE>
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
PUT_YOUR_POSTGRESQL_PASSWORD_HERE: Replace with your actual PostgreSQL user password.
|
||||
|
||||
##### [Optional] Update bind ports
|
||||
If ThingsBoard Edge is going to be running on the same machine where ThingsBoard server (cloud) is running, you'll need to update configuration parameters to avoid port collision between ThingsBoard server and ThingsBoard Edge.
|
||||
|
||||
Please execute the following command to update ThingsBoard Edge configuration file (**/etc/tb-edge/conf/tb-edge.conf**):
|
||||
|
||||
```bash
|
||||
sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
|
||||
export HTTP_BIND_PORT=18080
|
||||
export MQTT_BIND_PORT=11883
|
||||
export COAP_BIND_PORT=15683
|
||||
export LWM2M_ENABLED=false
|
||||
export SNMP_ENABLED=false
|
||||
EOL'
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Make sure that ports above (18080, 11883, 15683) are not used by any other application.
|
||||
|
||||
#### Step 6. Run installation Script
|
||||
|
||||
Once ThingsBoard Edge is installed and configured please execute the following install script:
|
||||
|
||||
```bash
|
||||
sudo /usr/share/tb-edge/bin/install/install.sh
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 7. Restart ThingsBoard Edge Service
|
||||
|
||||
```bash
|
||||
sudo service tb-edge restart
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
#### Step 8. Open ThingsBoard Edge UI
|
||||
|
||||
Once started, you will be able to open **ThingsBoard Edge UI** using the following link http://localhost:8080.
|
||||
|
||||
###### NOTE: Edge HTTP bind port update
|
||||
|
||||
Use next **ThingsBoard Edge UI** link **http://localhost:18080** if you updated HTTP 8080 bind port to **18080**.
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#### Upgrading to ${TB_EDGE_VERSION}EDGE
|
||||
|
||||
**ThingsBoard Edge package download:**
|
||||
```bash
|
||||
wget https://github.com/thingsboard/thingsboard-edge/releases/download/v${TB_EDGE_TAG}/tb-edge-${TB_EDGE_TAG}.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
##### ThingsBoard Edge service upgrade
|
||||
|
||||
Install package:
|
||||
```bash
|
||||
sudo rpm -Uvh tb-edge-${TB_EDGE_TAG}.rpm
|
||||
{:copy-code}
|
||||
```
|
||||
${UPGRADE_DB}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#### Upgrading to ${TB_EDGE_VERSION}
|
||||
|
||||
Execute the following command to pull **${TB_EDGE_VERSION}** image:
|
||||
|
||||
```bash
|
||||
docker pull thingsboard/tb-edge:${TB_EDGE_VERSION}
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
${UPGRADE_DB}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
Modify ‘main’ docker compose (`docker-compose.yml`) file for ThingsBoard Edge and update version of the image:
|
||||
```bash
|
||||
nano docker-compose.yml
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
```text
|
||||
version: '3.8'
|
||||
services:
|
||||
mytbedge:
|
||||
restart: always
|
||||
image: "thingsboard/tb-edge:${TB_EDGE_VERSION}"
|
||||
...
|
||||
```
|
||||
|
||||
Make sure your image is the set to **tb-edge-${TB_EDGE_VERSION}**.
|
||||
Execute the following commands to up this docker compose directly:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
docker compose logs -f mytbedge
|
||||
{:copy-code}
|
||||
```
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
Create docker compose file for ThingsBoard Edge upgrade process:
|
||||
|
||||
```bash
|
||||
> docker-compose-upgrade.yml && nano docker-compose-upgrade.yml
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Add the following lines to the yml file:
|
||||
|
||||
```bash
|
||||
version: '3.8'
|
||||
services:
|
||||
mytbedge:
|
||||
restart: on-failure
|
||||
image: "thingsboard/tb-edge:${TB_EDGE_VERSION}"
|
||||
environment:
|
||||
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/tb-edge
|
||||
volumes:
|
||||
- tb-edge-data:/data
|
||||
- tb-edge-logs:/var/log/tb-edge
|
||||
entrypoint: upgrade-tb-edge.sh
|
||||
postgres:
|
||||
restart: always
|
||||
image: "postgres:16"
|
||||
ports:
|
||||
- "5432"
|
||||
environment:
|
||||
POSTGRES_DB: tb-edge
|
||||
POSTGRES_PASSWORD: postgres
|
||||
volumes:
|
||||
- tb-edge-postgres-data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
tb-edge-data:
|
||||
name: tb-edge-data
|
||||
tb-edge-logs:
|
||||
name: tb-edge-logs
|
||||
tb-edge-postgres-data:
|
||||
name: tb-edge-postgres-data
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Execute the following command to start upgrade process:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose-upgrade.yml up --abort-on-container-exit
|
||||
{:copy-code}
|
||||
```
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
Here is the list of commands, that can be used to quickly upgrade ThingsBoard Edge on Docker (Linux or MacOS).
|
||||
|
||||
#### Prepare for upgrading ThingsBoard Edge
|
||||
Set the terminal in the directory which contains the `docker-compose.yml` file and execute the following command
|
||||
to stop and remove currently running TB Edge container:
|
||||
|
||||
```bash
|
||||
docker compose stop
|
||||
docker compose rm mytbedge
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
**OPTIONAL:** If you still rely on Docker Compose as docker-compose (with a hyphen) here is the list of the above commands:
|
||||
```text
|
||||
docker-compose stop
|
||||
docker-compose rm mytbedge
|
||||
```
|
||||
|
||||
##### Migrating Data from Docker Bind Mount Folders to Docker Volumes
|
||||
Starting with the **3.6.2** release, the ThingsBoard team has transitioned from using Docker bind mount folders to Docker volumes.
|
||||
This change aims to enhance security and efficiency in storing data for Docker containers and to mitigate permission issues across various environments.
|
||||
|
||||
To migrate from Docker bind mounts to Docker volumes, please execute the following commands:
|
||||
|
||||
```bash
|
||||
docker run --rm -v tb-edge-data:/volume -v ~/.mytb-edge-data:/backup busybox sh -c "cp -a /backup/. /volume"
|
||||
docker run --rm -v tb-edge-logs:/volume -v ~/.mytb-edge-logs:/backup busybox sh -c "cp -a /backup/. /volume"
|
||||
docker run --rm -v tb-edge-postgres-data:/volume -v ~/.mytb-edge-data/db:/backup busybox sh -c "cp -a /backup/. /volume"
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
After completing the data migration to the newly created Docker volumes, you'll need to update the volume mounts in your Docker Compose configuration.
|
||||
Modify the `docker-compose.yml` file for ThingsBoard Edge to update the volume settings.
|
||||
|
||||
Update volume mounts. Locate the following snippet:
|
||||
```text
|
||||
volumes:
|
||||
- ~/.mytb-edge-data:/data
|
||||
- ~/.mytb-edge-logs:/var/log/tb-edge
|
||||
...
|
||||
```
|
||||
|
||||
And replace it with:
|
||||
```text
|
||||
volumes:
|
||||
- tb-edge-data:/data
|
||||
- tb-edge-logs:/var/log/tb-edge
|
||||
...
|
||||
```
|
||||
|
||||
Apply a similar update for the PostgreSQL service. Find the section:
|
||||
```text
|
||||
volumes:
|
||||
- ~/.mytb-edge-data/db:/var/lib/postgresql/data
|
||||
...
|
||||
```
|
||||
|
||||
And replace it with:
|
||||
```text
|
||||
volumes:
|
||||
- tb-edge-postgres-data:/var/lib/postgresql/data
|
||||
...
|
||||
```
|
||||
|
||||
Finally, please add next volumes section at the end of the file:
|
||||
```text
|
||||
...
|
||||
volumes:
|
||||
tb-edge-data:
|
||||
name: tb-edge-data
|
||||
tb-edge-logs:
|
||||
name: tb-edge-logs
|
||||
tb-edge-postgres-data:
|
||||
name: tb-edge-postgres-data
|
||||
```
|
||||
|
||||
##### Backup Database
|
||||
Make a copy of the database volume before upgrading:
|
||||
|
||||
```bash
|
||||
docker run --rm -v tb-edge-postgres-data:/source -v tb-edge-postgres-data-backup:/backup busybox sh -c "cp -a /source/. /backup"
|
||||
{:copy-code}
|
||||
```
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
Start the service
|
||||
|
||||
```bash
|
||||
sudo systemctl tb-edge start
|
||||
{:copy-code}
|
||||
```
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#### Upgrading to ${TB_EDGE_VERSION}EDGE
|
||||
|
||||
**ThingsBoard Edge package download:**
|
||||
```bash
|
||||
wget https://github.com/thingsboard/thingsboard-edge/releases/download/v${TB_EDGE_TAG}/tb-edge-${TB_EDGE_TAG}.deb
|
||||
{:copy-code}
|
||||
```
|
||||
##### ThingsBoard Edge service upgrade
|
||||
|
||||
Install package:
|
||||
```bash
|
||||
sudo dpkg -i tb-edge-${TB_EDGE_TAG}.deb
|
||||
{:copy-code}
|
||||
```
|
||||
${UPGRADE_DB}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
**NOTE**: Package installer may ask you to merge your tb-edge configuration. It is preferred to use **merge option** to make sure that all your previous parameters will not be overwritten.
|
||||
|
||||
Execute regular upgrade script:
|
||||
|
||||
```bash
|
||||
sudo /usr/share/tb-edge/bin/install/upgrade.sh --fromVersion=${FROM_TB_EDGE_VERSION}
|
||||
{:copy-code}
|
||||
```
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
Here is the list of commands, that can be used to quickly upgrade ThingsBoard Edge on ${OS}
|
||||
|
||||
#### Prepare for upgrading ThingsBoard Edge
|
||||
|
||||
Stop ThingsBoard Edge service:
|
||||
|
||||
```bash
|
||||
sudo systemctl stop tb-edge
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
##### Backup Database
|
||||
Make a backup of the database before upgrading. **Make sure you have enough space to place a backup of the database.**
|
||||
|
||||
Check database size:
|
||||
|
||||
```bash
|
||||
sudo -u postgres psql -c "SELECT pg_size_pretty( pg_database_size('tb_edge') );"
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Check free space:
|
||||
|
||||
```bash
|
||||
df -h /
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
If there is enough free space - make a backup:
|
||||
|
||||
```bash
|
||||
sudo -Hiu postgres pg_dump tb_edge > tb_edge.sql.bak
|
||||
{:copy-code}
|
||||
```
|
||||
|
||||
Check backup file created successfully.
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
{
|
||||
"ruleChain": {
|
||||
"additionalInfo": null,
|
||||
"name": "Edge Root Rule Chain",
|
||||
"type": "EDGE",
|
||||
"firstRuleNodeId": null,
|
||||
"root": true,
|
||||
"debugMode": false,
|
||||
"configuration": null,
|
||||
"externalId": null
|
||||
},
|
||||
"metadata": {
|
||||
"firstNodeIndex": 0,
|
||||
"nodes": [
|
||||
{
|
||||
"additionalInfo": {
|
||||
"description": "Process incoming messages from devices with the alarm rules defined in the device profile. Dispatch all incoming messages with \"Success\" relation type.",
|
||||
"layoutX": 187,
|
||||
"layoutY": 468
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.profile.TbDeviceProfileNode",
|
||||
"name": "Device Profile Node",
|
||||
"configuration": {
|
||||
"persistAlarmRulesState": false,
|
||||
"fetchAlarmRulesStateOnStart": false
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 823,
|
||||
"layoutY": 157
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode",
|
||||
"name": "Save Timeseries",
|
||||
"configurationVersion": 1,
|
||||
"configuration": {
|
||||
"defaultTTL": 0,
|
||||
"useServerTs": false,
|
||||
"processingSettings": {
|
||||
"type": "ON_EVERY_MESSAGE"
|
||||
}
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 824,
|
||||
"layoutY": 52
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgAttributesNode",
|
||||
"name": "Save Client Attributes",
|
||||
"configurationVersion": 3,
|
||||
"configuration": {
|
||||
"processingSettings": {
|
||||
"type": "ON_EVERY_MESSAGE"
|
||||
},
|
||||
"scope": "CLIENT_SCOPE",
|
||||
"notifyDevice": false,
|
||||
"sendAttributesUpdatedNotification": false,
|
||||
"updateAttributesOnlyOnValueChange": true
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 347,
|
||||
"layoutY": 149
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.filter.TbMsgTypeSwitchNode",
|
||||
"name": "Message Type Switch",
|
||||
"configuration": {
|
||||
"version": 0
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 825,
|
||||
"layoutY": 266
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.action.TbLogNode",
|
||||
"name": "Log RPC from Device",
|
||||
"configuration": {
|
||||
"scriptLang": "TBEL",
|
||||
"jsScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);",
|
||||
"tbelScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);"
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 824,
|
||||
"layoutY": 378
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.action.TbLogNode",
|
||||
"name": "Log Other",
|
||||
"configuration": {
|
||||
"scriptLang": "TBEL",
|
||||
"jsScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);",
|
||||
"tbelScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);"
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 824,
|
||||
"layoutY": 466
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.rpc.TbSendRPCRequestNode",
|
||||
"name": "RPC Call Request",
|
||||
"configuration": {
|
||||
"timeoutInSeconds": 60
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 1126,
|
||||
"layoutY": 104
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.edge.TbMsgPushToCloudNode",
|
||||
"name": "Push to cloud",
|
||||
"configuration": {
|
||||
"scope": "CLIENT_SCOPE"
|
||||
},
|
||||
"externalId": null
|
||||
},
|
||||
{
|
||||
"additionalInfo": {
|
||||
"layoutX": 826,
|
||||
"layoutY": 601
|
||||
},
|
||||
"type": "org.thingsboard.rule.engine.edge.TbMsgPushToCloudNode",
|
||||
"name": "Push to cloud",
|
||||
"configuration": {
|
||||
"scope": "SERVER_SCOPE"
|
||||
},
|
||||
"externalId": null
|
||||
}
|
||||
],
|
||||
"connections": [
|
||||
{
|
||||
"fromIndex": 0,
|
||||
"toIndex": 3,
|
||||
"type": "Success"
|
||||
},
|
||||
{
|
||||
"fromIndex": 1,
|
||||
"toIndex": 7,
|
||||
"type": "Success"
|
||||
},
|
||||
{
|
||||
"fromIndex": 2,
|
||||
"toIndex": 7,
|
||||
"type": "Success"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 1,
|
||||
"type": "Post telemetry"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 2,
|
||||
"type": "Post attributes"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 4,
|
||||
"type": "RPC Request from Device"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 5,
|
||||
"type": "Other"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 6,
|
||||
"type": "RPC Request to Device"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 8,
|
||||
"type": "Attributes Deleted"
|
||||
},
|
||||
{
|
||||
"fromIndex": 3,
|
||||
"toIndex": 8,
|
||||
"type": "Attributes Updated"
|
||||
}
|
||||
],
|
||||
"ruleChainConnections": null
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"providerId": "Apple",
|
||||
"additionalInfo": null,
|
||||
"accessTokenUri": "https://appleid.apple.com/auth/token",
|
||||
"authorizationUri": "https://appleid.apple.com/auth/authorize?response_mode=form_post",
|
||||
"scope": ["email","openid","name"],
|
||||
"jwkSetUri": "https://appleid.apple.com/auth/keys",
|
||||
"userInfoUri": null,
|
||||
"clientAuthenticationMethod": "POST",
|
||||
"userNameAttributeName": "email",
|
||||
"mapperConfig": {
|
||||
"type": "APPLE",
|
||||
"basic": {
|
||||
"emailAttributeKey": "email",
|
||||
"firstNameAttributeKey": "firstName",
|
||||
"lastNameAttributeKey": "lastName",
|
||||
"tenantNameStrategy": "DOMAIN"
|
||||
}
|
||||
},
|
||||
"comment": null,
|
||||
"loginButtonIcon": "apple-logo",
|
||||
"loginButtonLabel": "Apple",
|
||||
"helpLink": "https://developer.apple.com/sign-in-with-apple/get-started/"
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"providerId": "Facebook",
|
||||
"accessTokenUri": "https://graph.facebook.com/v2.8/oauth/access_token",
|
||||
"authorizationUri": "https://www.facebook.com/v2.8/dialog/oauth",
|
||||
"scope": ["email","public_profile"],
|
||||
"jwkSetUri": null,
|
||||
"userInfoUri": "https://graph.facebook.com/me?fields=id,name,first_name,last_name,email",
|
||||
"clientAuthenticationMethod": "BASIC",
|
||||
"userNameAttributeName": "email",
|
||||
"mapperConfig": {
|
||||
"type": "BASIC",
|
||||
"basic": {
|
||||
"emailAttributeKey": "email",
|
||||
"firstNameAttributeKey": "first_name",
|
||||
"lastNameAttributeKey": "last_name",
|
||||
"tenantNameStrategy": "DOMAIN"
|
||||
}
|
||||
},
|
||||
"comment": null,
|
||||
"loginButtonIcon": "facebook-logo",
|
||||
"loginButtonLabel": "Facebook",
|
||||
"helpLink": "https://developers.facebook.com/docs/facebook-login/web#logindialog"
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"providerId": "Github",
|
||||
"accessTokenUri": "https://github.com/login/oauth/access_token",
|
||||
"authorizationUri": "https://github.com/login/oauth/authorize",
|
||||
"scope": ["read:user","user:email"],
|
||||
"jwkSetUri": null,
|
||||
"userInfoUri": "https://api.github.com/user",
|
||||
"clientAuthenticationMethod": "BASIC",
|
||||
"userNameAttributeName": "login",
|
||||
"mapperConfig": {
|
||||
"type": "GITHUB",
|
||||
"basic": {
|
||||
"firstNameAttributeKey": "name",
|
||||
"tenantNameStrategy": "DOMAIN"
|
||||
}
|
||||
},
|
||||
"comment": "In order to log into ThingsBoard you need to have user's email. You may configure and use Custom OAuth2 Mapper to get email information. Please refer to <a href=\"https://docs.github.com/en/rest/reference/users#list-email-addresses-for-the-authenticated-user\">Github Documentation</a>",
|
||||
"loginButtonIcon": "github-logo",
|
||||
"loginButtonLabel": "Github",
|
||||
"helpLink": "https://docs.github.com/en/developers/apps/creating-an-oauth-app"
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"providerId": "Google",
|
||||
"additionalInfo": null,
|
||||
"accessTokenUri": "https://oauth2.googleapis.com/token",
|
||||
"authorizationUri": "https://accounts.google.com/o/oauth2/v2/auth",
|
||||
"scope": ["email","openid","profile"],
|
||||
"jwkSetUri": "https://www.googleapis.com/oauth2/v3/certs",
|
||||
"userInfoUri": "https://openidconnect.googleapis.com/v1/userinfo",
|
||||
"clientAuthenticationMethod": "BASIC",
|
||||
"userNameAttributeName": "email",
|
||||
"mapperConfig": {
|
||||
"type": "BASIC",
|
||||
"basic": {
|
||||
"emailAttributeKey": "email",
|
||||
"firstNameAttributeKey": "given_name",
|
||||
"lastNameAttributeKey": "family_name",
|
||||
"tenantNameStrategy": "DOMAIN"
|
||||
}
|
||||
},
|
||||
"comment": null,
|
||||
"loginButtonIcon": "google-logo",
|
||||
"loginButtonLabel": "Google",
|
||||
"helpLink": "https://developers.google.com/adwords/api/docs/guides/authentication"
|
||||
}
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -0,0 +1,344 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="400" fill="none" version="1.1" viewBox="0 0 400 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Apartments",
|
||||
"description": "Apartments with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy",
|
||||
"consumer"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m25 106c0-2.761 2.2386-5 5-5h210c2.761 0 5 2.239 5 5v266c0 2.761-2.239 5-5 5h-210c-2.7614 0-5-2.239-5-5v-266z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="143" y="146" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="143" y="254" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="143" y="200" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="143" y="308" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m155 6c0-2.7614 2.239-5 5-5h210c2.761 0 5 2.2386 5 5v366c0 2.761-2.239 5-5 5h-210c-2.761 0-5-2.239-5-5v-366z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="269" y="57" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="269" y="165" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="269" y="111" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="269" y="219" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="175" y="57" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="175" y="165" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="175" y="111" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="175" y="219" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="216" y="286" width="98" height="91" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="49" y="146" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="49" y="254" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="49" y="200" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="49" y="308" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="1" y="377" width="398" height="22" rx="5" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m134.53 0s-134.53 0-134.53 67v328.36c0 2.6512 3.5818 4.6403 8 4.6403h384c4.418 0 8-1.9892 8-4.6403v-328.36c0-67-132.14-67-132.14-67h-67.86zm134.14 81.2c-2.5774 0-4.6666 1.2536-4.6666 2.8v300.4c0 1.5464 2.0894 2.8 4.6666 2.8h29.332c2.5774 0 4.6666-1.2536 4.6666-2.8v-300.4c0-1.5464-2.0894-2.8-4.6666-2.8z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 320.94)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -0,0 +1,473 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="200" fill="none" version="1.1" viewBox="0 0 600 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Battery",
|
||||
"description": "Battery with various states and scalable quantity.",
|
||||
"searchTags": [
|
||||
"energy",
|
||||
"power",
|
||||
"rechargeable",
|
||||
"storage",
|
||||
"lithium-ion",
|
||||
"ev"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "indicator",
|
||||
"stateRenderFunction": "if (ctx.values.running) {\n element.fill(ctx.properties.runningIndicatorColor);\n} else {\n element.fill(ctx.properties.stoppedIndicatorColor);\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\nctx.api.text(element, ctx.properties.label);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "left-bottom-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.leftBottomConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "left-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.leftConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "left-top-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.leftTopConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "right-bottom-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.rightBottomConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "right-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.rightConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "right-top-connector",
|
||||
"stateRenderFunction": "if (!ctx.properties.rightTopConnector) {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "runningIndicatorColor",
|
||||
"name": "{i18n:scada.symbol.indicator-colors}",
|
||||
"type": "color",
|
||||
"default": "#198038",
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedIndicatorColor",
|
||||
"name": "{i18n:scada.symbol.indicator-colors}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "ON",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 30,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "leftConnector",
|
||||
"name": "{i18n:scada.symbol.left-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "leftTopConnector",
|
||||
"name": "{i18n:scada.symbol.left-top-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "leftBottomConnector",
|
||||
"name": "{i18n:scada.symbol.left-bottom-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "rightConnector",
|
||||
"name": "{i18n:scada.symbol.right-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "rightTopConnector",
|
||||
"name": "{i18n:scada.symbol.right-top-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "rightBottomConnector",
|
||||
"name": "{i18n:scada.symbol.right-bottom-connector}",
|
||||
"group": "{i18n:scada.symbol.connectors-positions}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" tb:tag="background">
|
||||
<rect x="1" y="41" width="598" height="120" rx="6" stroke="#000" stroke-width="2"/>
|
||||
<circle cx="468" cy="102.5" r="12"/>
|
||||
<circle cx="468" cy="101.5" r="11" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<circle cx="84" cy="101.5" r="11" stroke="#1a1a1a" stroke-width="2"/>
|
||||
<circle cx="516" cy="102.5" r="12"/>
|
||||
<circle cx="516" cy="101.5" r="11" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<circle cx="132" cy="101.5" r="11" stroke="#1a1a1a" stroke-width="2"/>
|
||||
</g><circle cx="204" cy="102" r="10" fill="#198038" tb:tag="indicator"/><text x="221" y="105.37933" fill="#000000" font-family="Roboto, sans-serif" font-size="30px" font-weight="400" tb:tag="label" xml:space="preserve"><tspan dominant-baseline="middle">ON</tspan></text><path d="m103 200h-6s7.858-27.047 14-44c6.324-17.455 18-44 18-44h6s-11.676 26.545-18 44c-6.142 16.953-14 44-14 44z" fill="#1a1a1a" tb:tag="left-bottom-connector"/><path d="m103 0h-6s-6.4394 26.077-9.5 43c-3.2977 18.234-6.5 47-6.5 47h6s2.7023-26.766 6-45c3.0606-16.923 10-45 10-45z" fill="#1a1a1a" tb:tag="left-top-connector"/><path d="m497 0h6s6.439 26.077 9.5 43c3.298 18.234 6.5 47 6.5 47h-6s-2.702-26.766-6-45c-3.061-16.923-10-45-10-45z" fill="#1a1a1a" tb:tag="right-top-connector"/><path d="m0 100h73" stroke="#1a1a1a" stroke-width="6" tb:tag="left-connector"/><path d="m527 100h73" stroke="#1a1a1a" stroke-width="6" tb:tag="right-connector"/><path d="m497 200h6s-7.858-27.047-14-44c-6.324-17.455-18-44-18-44h-6s11.676 26.545 18 44c6.142 16.953 14 44 14 44z" fill="#1a1a1a" tb:tag="right-bottom-connector"/><path d="m201.8 40s-201.8 0-201.8 20.435v100.15c0 0.80861 5.3727 1.4153 12 1.4153h576c6.627 0 12-0.60671 12-1.4153v-100.15c0-20.435-198.21-20.435-198.21-20.435h-101.79zm201.21 24.766c-3.8661 0-6.9999 0.38235-6.9999 0.854v91.622c0 0.47165 3.1341 0.854 6.9999 0.854h43.998c3.8661 0 6.9999-0.38235 6.9999-0.854v-91.622c0-0.47165-3.1341-0.854-6.9999-0.854z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
|
@ -0,0 +1,346 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Bottom light bulb",
|
||||
"description": "Bottom light bulb with various states.",
|
||||
"searchTags": [
|
||||
"energy"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<path d="m77.22 69 1.6-8h42.36l1.6 8h-45.56z"/>
|
||||
<path d="m77.117 69h45.742c0.108 0.2569 0.244 0.5047 0.385 0.7358 0.342 0.5586 0.824 1.1869 1.403 1.8699 1.16 1.3677 2.802 3.0619 4.738 5.0193 0.519 0.5244 1.059 1.0689 1.62 1.6328 3.641 3.6659 8.098 8.154 12.557 13.274 10.326 11.856 20.438 26.862 20.438 42.468 0 21.266-7.121 37.489-18.622 48.399-11.511 10.92-27.5 16.601-45.378 16.601-17.878 0-33.867-5.681-45.378-16.601-11.502-10.91-18.622-27.133-18.622-48.399 0-15.606 10.106-30.612 20.426-42.468 4.456-5.1195 8.9107-9.6073 12.55-13.273 0.5601-0.5643 1.1009-1.1091 1.6194-1.6337 1.9344-1.9574 3.576-3.6516 4.735-5.0193 0.5788-0.683 1.0604-1.3114 1.4022-1.87 0.1413-0.231 0.2771-0.4787 0.3847-0.7355z"/>
|
||||
<path d="m80.13 5.9751c1.5245-3.049 4.6409-4.9751 8.0498-4.9751h23.64c3.409 0 6.525 1.926 8.05 4.9751l6.18 12.361c0.625 1.2497 0.95 2.6277 0.95 4.0249v38.639h-54v-38.639c0-1.3972 0.3253-2.7752 0.9502-4.0249l6.1803-12.361z"/>
|
||||
</g><path d="m73 53h54" stroke="#1A1A1A" stroke-width="2"/><path d="m73 21h54" stroke="#1A1A1A" stroke-width="2"/><path d="m67.265 0s-67.265 0-67.265 33.5v164.18c0 1.3256 1.7909 2.3202 4 2.3202h192c2.209 0 4-0.9946 4-2.3202v-164.18c0-33.5-66.07-33.5-66.07-33.5h-33.93zm67.07 40.6c-1.2887 0-2.3333 0.6268-2.3333 1.4v150.2c0 0.7732 1.0447 1.4 2.3333 1.4h14.666c1.2887 0 2.3333-0.6268 2.3333-1.4v-150.2c0-0.7732-1.0447-1.4-2.3333-1.4z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,233 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Bottom right elbow connector",
|
||||
"description": "Bottom right elbow connector",
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "const {\n flowAnimation,\n animationDirection: flowDirection,\n flowAnimationSpeed\n} = ctx.values;\nconst {\n flowAnimationWidth: lineWidth,\n flowAnimationColor: lineColor,\n flowStyleDash: dashWidth,\n flowStyleGap: dashGap,\n flowDashCap: dashCap\n} = ctx.properties;\nconst line = ctx.tags.line[0].attr('d');\nconst lineReversed = 'M 200,100 L 125,100 Q 100,100 100,125 L 100, 200';\nconst animation = ctx.tags.animationGroup[0];\nconst duration = 1 / flowAnimationSpeed;\n\nlet animateFlow = ctx.api.connectorAnimation(animation);\n\nif (flowAnimation) {\n if (!animateFlow) {\n animateFlow = ctx.api.connectorAnimate(animation, line, lineReversed).flowAppearance(lineWidth, lineColor, dashCap, dashWidth, dashGap).duration(duration).direction(flowDirection).play();\n } else {\n animateFlow.duration(duration).direction(flowDirection).play();\n }\n} else {\n if (animateFlow) {\n animateFlow.finish();\n }\n}\n",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "line",
|
||||
"stateRenderFunction": "element.stroke(ctx.properties.lineColor);\nelement.attr({'stroke-width': ctx.properties.mainLineSize});",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "flowAnimation",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "animationDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "mainLineSize",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "number",
|
||||
"default": 6,
|
||||
"required": true,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"max": 99,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "lineColor",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationWidth",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 4,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationColor",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleDash",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.dash}",
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleGap",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "{i18n:scada.symbol.gap}",
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowDashCap",
|
||||
"name": "{i18n:scada.symbol.flow-dash-cap}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "select",
|
||||
"default": "butt",
|
||||
"items": [
|
||||
{
|
||||
"value": "butt",
|
||||
"label": "{i18n:scada.symbol.dash-cap-butt}"
|
||||
},
|
||||
{
|
||||
"value": "round",
|
||||
"label": "{i18n:scada.symbol.dash-cap-round}"
|
||||
},
|
||||
{
|
||||
"value": "square",
|
||||
"label": "{i18n:scada.symbol.dash-cap-square}"
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="M 100,200 L 100,125 Q 100,100 125,100 L 200, 100" stroke="#1A1A1A" stroke-width="6" tb:tag="line"/><g tb:tag="animationGroup"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.4 KiB |
|
|
@ -0,0 +1,532 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Bottom right elbow pipe",
|
||||
"description": "Bottom right elbow pipe with fluid and leak visualizations.",
|
||||
"searchTags": [
|
||||
"pipe",
|
||||
"elbow"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "var centerLiquidPattern = prepareLiquidPattern('center-fluid-background');\nvar horizontalLiquidPattern = prepareLiquidPattern('horizontal-fluid');\nvar verticalLiquidPattern = prepareLiquidPattern('vertical-fluid');\n\nvar fluid = ctx.values.fluid && !ctx.values.leak;\nvar flow = ctx.values.flow;\nvar flowDirection = ctx.values.flowDirection;\nvar flowAnimationSpeed = ctx.values.flowAnimationSpeed;\n \nif (horizontalLiquidPattern) {\n updateLiquidPatternAnimation(horizontalLiquidPattern, fluid, \n flow, flowDirection, flowAnimationSpeed, false);\n}\n\nif (verticalLiquidPattern) {\n updateLiquidPatternAnimation(verticalLiquidPattern, fluid, \n flow, flowDirection, flowAnimationSpeed, false);\n}\n\nif (centerLiquidPattern) {\n updateLiquidPatternAnimation(centerLiquidPattern, fluid, \n flow, flowDirection, flowAnimationSpeed, true);\n}\n\nfunction prepareLiquidPattern(fluidElementTag) {\n return ctx.tags[fluidElementTag][0].reference('fill').first();\n}\n\nfunction updateLiquidPatternAnimation(liquidPattern, fluid, flow, flowDirection, flowAnimationSpeed, center) {\n \n var fluidAnimation = ctx.api.cssAnimation(liquidPattern);\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 if (elementFlowDirection !== flowDirection || !fluidAnimation) {\n liquidPattern.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection, center);\n } else {\n fluidAnimation.play();\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n liquidPattern.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection, center);\n }\n if (flow && fluidAnimation) {\n fluidAnimation.speed(flowAnimationSpeed);\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse, center) {\n ctx.api.resetCssAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n if (center) {\n var duration = 1000 * 1.17;\n return ctx.api.cssAnimate(liquidPattern, duration).relative(deltaX, 0).loop();\n } else {\n return ctx.api.cssAnimate(liquidPattern, 1000).relative(deltaX, 0).loop();\n }\n}",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "center-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\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": "horizontal-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}\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": "pipe-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.pipeColor;\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "vertical-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.fluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "fluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leak",
|
||||
"name": "{i18n:scada.symbol.leak}",
|
||||
"hint": "{i18n:scada.symbol.leak-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.leak-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "fluidColor",
|
||||
"name": "{i18n:scada.symbol.fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "pipeColor",
|
||||
"name": "{i18n:scada.symbol.pipe-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g transform="rotate(-90,100,100)" clip-path="url(#clip0_1245_66459)">
|
||||
<rect x="14" y="64" width="50" height="72" fill="#fff" tb:tag="pipe-background"/>
|
||||
<rect x="14" y="64" width="50" height="72" fill="url(#paint0_linear_1245_66459)" style="fill:url(#paint0_linear_1245_66459)"/>
|
||||
<rect x="15.5" y="65.5" width="47" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<path d="m64 186v-50h72v50z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m64 186v-50h72v50z" fill="url(#paint1_linear_1245_66459)" style="fill:url(#paint1_linear_1245_66459)"/>
|
||||
<path d="m65.5 184.5v-47h69v47z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/>
|
||||
<rect transform="rotate(-90,51.5,198.5)" x="51.5" y="198.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/>
|
||||
<path d="m64 64s30.518 1.7177 50.4 21.6c19.882 19.882 21.6 50.4 21.6 50.4h-72z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m64 64s30.518 1.7177 50.4 21.6c19.882 19.882 21.6 50.4 21.6 50.4h-72z" fill="url(#paint2_linear_1245_66459)" style="fill:url(#paint2_linear_1245_66459)"/>
|
||||
<path d="m65.5 134.5v-68.865c0.8334 0.0861 1.9717 0.2211 3.3584 0.4273 3.1196 0.464 7.4889 1.2873 12.47 2.7228 9.9828 2.8767 22.316 8.1809 32.01 17.875 9.695 9.6942 14.999 22.027 17.875 32.01 1.436 4.982 2.259 9.351 2.723 12.471 0.206 1.386 0.341 2.525 0.428 3.358z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
</g><defs>
|
||||
<pattern id="liquid" width="172" height="72" patternUnits="userSpaceOnUse">
|
||||
<circle transform="rotate(-90)" cx="-15" cy="21" r="8" fill="url(#paint28_linear_1182_32781-5)"/>
|
||||
<circle transform="rotate(-90)" cx="-15" cy="150" r="8" fill="url(#paint29_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-16" cy="113" r="8" fill="url(#paint30_linear_1182_32781-7)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="34" r="8" fill="url(#paint31_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="155" r="8" fill="url(#paint32_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="33" r="5" fill="url(#paint33_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="162" r="5" fill="url(#paint34_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="5" r="5" fill="url(#paint35_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-8" cy="94" r="4" fill="url(#paint36_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-60" cy="72" r="4" fill="url(#paint37_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="112" r="5" fill="url(#paint38_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-39" cy="59" r="5" fill="url(#paint39_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-62" cy="115" r="5" fill="url(#paint40_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-42" cy="139" r="5" fill="url(#paint41_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-21" cy="76" r="5" fill="url(#paint42_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-50.5" cy="126.5" r="2.5" fill="url(#paint43_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-46.5" cy="169.5" r="2.5" fill="url(#paint44_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-9.5" cy="57.5" r="2.5" fill="url(#paint45_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-35.5" cy="96.5" r="2.5" fill="url(#paint46_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="91.5" r="2.5" fill="url(#paint47_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-40.5" cy="22.5" r="2.5" fill="url(#paint48_linear_1182_32781-88)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="124.5" r="2.5" fill="url(#paint49_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-47.5" cy="86.5" r="2.5" fill="url(#paint50_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-21.5" cy="51.5" r="2.5" fill="url(#paint51_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-51.5" cy="48.5" r="2.5" fill="url(#paint52_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="14" r="4" fill="url(#paint53_linear_1182_32781-83)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="135" r="4" fill="url(#paint54_linear_1182_32781-33)"/>
|
||||
<circle transform="rotate(-90)" cx="-58.5" cy="95.5" r="9.5" fill="url(#paint55_linear_1182_32781-8)"/>
|
||||
<path d="m0 0h172v72h-172z" fill="url(#paint84_linear_1182_32781-8)" stroke-width=".57735"/>
|
||||
</pattern>
|
||||
<linearGradient id="paint28_linear_1182_32781-5" x1="19.316" x2="21" y1="8.2632" y2="23" gradientTransform="translate(-36,6)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint29_linear_1182_32781-1" x1="148.32" x2="150" y1="8.2632" y2="23" gradientTransform="translate(-165,135)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint30_linear_1182_32781-7" x1="111.32" x2="113" y1="9.2632" y2="24" gradientTransform="translate(-129,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint31_linear_1182_32781-4" x1="32.316" x2="34" y1="51.263" y2="66" gradientTransform="translate(-92,-24)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint32_linear_1182_32781-3" x1="153.32" x2="155" y1="51.263" y2="66" gradientTransform="translate(-213,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint33_linear_1182_32781-1" x1="31.947" x2="33" y1="21.789" y2="31" gradientTransform="translate(-59,7)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint34_linear_1182_32781-4" x1="160.95" x2="162" y1="21.789" y2="31" gradientTransform="translate(-188,136)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint35_linear_1182_32781-6" x1="3.9474" x2="5" y1="32.79" y2="42" gradientTransform="translate(-42,-32)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint36_linear_1182_32781-9" x1="93.158" x2="94" y1="4.6316" y2="12" gradientTransform="translate(-102,86)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint37_linear_1182_32781-4" x1="71.158" x2="72" y1="56.632" y2="64" gradientTransform="translate(-132,12)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint38_linear_1182_32781-2" x1="110.95" x2="112" y1="32.79" y2="42" gradientTransform="translate(-149,75)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint39_linear_1182_32781-2" x1="57.947" x2="59" y1="34.79" y2="44" gradientTransform="translate(-98,20)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint40_linear_1182_32781-6" x1="113.95" x2="115" y1="57.79" y2="67" gradientTransform="translate(-177,53)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint41_linear_1182_32781-4" x1="137.95" x2="139" y1="37.79" y2="47" gradientTransform="translate(-181,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint42_linear_1182_32781-1" x1="74.947" x2="76" y1="16.789" y2="26" gradientTransform="translate(-97,55)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint43_linear_1182_32781-2" x1="125.97" x2="126.5" y1="48.395" y2="53" gradientTransform="translate(-177,76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint44_linear_1182_32781-8" x1="168.97" x2="169.5" y1="44.395" y2="49" gradientTransform="translate(-216,123)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint45_linear_1182_32781-8" x1="56.974" x2="57.5" y1="7.3947" y2="12" gradientTransform="translate(-67,48)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint46_linear_1182_32781-9" x1="95.974" x2="96.5" y1="33.395" y2="38" gradientTransform="translate(-132,61)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint47_linear_1182_32781-2" x1="90.974" x2="91.5" y1="21.395" y2="26" gradientTransform="translate(-115,68)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint48_linear_1182_32781-88" x1="21.974" x2="22.5" y1="38.395" y2="43" gradientTransform="translate(-63,-18)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint49_linear_1182_32781-8" x1="123.97" x2="124.5" y1="21.395" y2="26" gradientTransform="translate(-148,101)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint50_linear_1182_32781-6" x1="85.974" x2="86.5" y1="45.395" y2="50" gradientTransform="translate(-134,39)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint51_linear_1182_32781-8" x1="50.974" x2="51.5" y1="19.395" y2="24" gradientTransform="translate(-73,30)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint52_linear_1182_32781-3" x1="47.974" x2="48.5" y1="49.395" y2="54" gradientTransform="translate(-100,-3)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint53_linear_1182_32781-83" x1="13.158" x2="14" y1="60.632" y2="68" gradientTransform="translate(-78,-50)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint54_linear_1182_32781-33" x1="134.16" x2="135" y1="60.632" y2="68" gradientTransform="translate(-199,71)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint55_linear_1182_32781-8" x1="93.5" x2="95.5" y1="50.5" y2="68" gradientTransform="translate(-154,37)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint84_linear_1182_32781-8" x1="248" x2="248" y1="1.8513e-7" y2="72" gradientTransform="scale(.33333 1)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" offset=".10895"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".11331"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".88736"/>
|
||||
<stop stop-color="#727171" offset=".89138"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_1245_66459">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<linearGradient id="paint0_linear_1245_66459" x1="27" x2="26.346" y1="64" y2="136" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1245_66459" x1="64" x2="136" y1="173" y2="173.65" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1245_66459" x1="114" x2="64.321" y1="89" y2="136.34" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".35637"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".4903"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".56651"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".63374"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".75781"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clipPath4310">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4304">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4298">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4292">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4286">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4280">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4274">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4268">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4262">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4256">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4250">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4244">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4238">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4232">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4226">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4220">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4214">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4208">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<pattern id="base-horizontal-liquid" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="horizontal-liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect x="-172" width="688" height="72" fill="url(#base-horizontal-liquid)" stroke-width="0"/></pattern>
|
||||
<pattern id="base-vertical-liquid" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="vertical-liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect x="-172" width="688" height="72" fill="url(#base-vertical-liquid)" stroke-width="0"/></pattern>
|
||||
<pattern id="base-center-liquid" width="172" height="72" patternTransform="translate(15)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="center-liquid" width="172" height="72" patternTransform="scale(1.17) rotate(135)" patternUnits="userSpaceOnUse"><rect x="-172" width="688" height="72" fill="url(#base-center-liquid)" stroke-width="0"/></pattern>
|
||||
</defs><rect x="136" y="64" width="50" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="fluid-background"/><rect transform="rotate(90)" x="136" y="-136" width="50" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="fluid-background"/><rect x="136" y="64" width="50" height="72" fill="url(#horizontal-liquid)" stroke-width="0" style="display: none;" tb:tag="horizontal-fluid"/><rect transform="rotate(-90)" x="-186" y="64" width="50" height="72" fill="url(#vertical-liquid)" stroke-width="0" style="display: none;" tb:tag="vertical-fluid"/><path d="m136.05 136-72.05 0.1c0.09-0.87135 0.23117-2.1615 0.44675-3.6113 0.48513-3.2616 1.3459-7.8299 2.8468-13.038 3.0077-10.437 8.5533-23.332 18.689-33.468 10.136-10.136 23.03-15.682 33.467-18.689 5.2088-1.5014 9.7767-2.3619 13.039-2.847 1.4491-0.21538 2.6909-0.35652 3.5618-0.44748z" fill="#1ec1f4" stroke="#000" stroke-width="0" style="display: none;" tb:tag="fluid-background"/><g transform="matrix(-.99929 0 0 -.99919 199.91 199.9)" style="display: none;" tb:tag="center-fluid">
|
||||
<path d="m63.956 63.95 72.051-0.10008c-0.0901 0.87205-0.23133 2.1632-0.44707 3.6142-0.48547 3.2643-1.3469 7.8362-2.8488 13.048-3.0098 10.446-8.5594 23.351-18.702 33.495-10.143 10.145-23.046 15.695-33.491 18.704-5.2125 1.5026-9.7836 2.3638-13.048 2.8493-1.4501 0.21555-2.7428 0.3568-3.6144 0.44784z" fill="url(#center-liquid)" stroke="#000" stroke-width="0" tb:tag="center-fluid-background" style=""/>
|
||||
<path d="m132.05 63.75s-0.0216 31.824-17.622 50.677c-17.142 17.939-50.576 17.628-50.576 17.628" fill="none" stroke="#727171" stroke-width="7.9" style=""/>
|
||||
<path d="m63.956 63.954v-0.15398h7.8942v8.05h-8.0503v-7.896z" style="fill: rgb(114, 113, 113);"/>
|
||||
</g><g transform="rotate(-90 100 100)" style="display: none;" tb:tag="leak">
|
||||
<path d="m62.784 80.767c0.417 0.1391 0.9517 0.2463 1.3259 0.4603 1.326 0.4603 2.5556 1.2628 3.3039 2.386 0.2779 0.5563 0.5129 1.1873 0.6731 1.7756 0.4915 1.5723 1.0257 3.0697 1.5599 4.5672 0.545 1.3049 1.0792 2.8023 0.544 4.0855-0.1925-0.0107-0.3101 0.0213-0.5026 0.0105 0.3307 2.3744 2.2423 0.7354 6.5024 7.0127 2.2452 8.828 4.8752 21.579 4.8212 23.236-0.0323 0.578 0.0531 1.123 0.0636 1.626-0.011 0.887-0.0969 1.732-0.3752 2.566-0.1499 0.61-0.4924 1.209-0.7172 1.775-0.6315 1.626-1.1134 3.337-1.253 5.144 0.3745-0.481 0.749-0.962 1.1234-1.443 0 0 0.353-0.096 0.2353-0.064-0.1069-0.161 0.0216-0.385 0.182-0.492 0.3527 0.599 0.7055 1.198 0.9833 1.754 1.6139 2.91 3.185 5.894 4.478 9.017-0.7155-3.091-1.8588-6.128-3.2374-9.102-0.3099-0.674-0.6626-1.273-0.8121-2.054-0.4378-1.839 0.4398-3.721 1.4243-5.443l0.0428-0.075c0.0856-0.149 0.214-0.374 0.4065-0.363 0.2354-0.064 0.4919 0.182 0.6737 0.385 0.8659 1.091 1.7746 2.108 2.6833 3.124 1.1653 1.262 2.459 2.3 3.5814 3.637 1.0156 1.177 1.8708 2.461 2.6511 3.702 0.3527 0.599 0.7482 1.123 0.8656 1.786 0.1923 0.706 0.192 1.401 0.0742 2.128-0.1287 0.92-0.2146 1.765-0.4181 2.642-1.0925 5.036 4.1863 14.098 2.2917 18.974 1.1129-1.946 2.1938-4.009 3.3067-5.955 0.4161 2.919 1.6132 5.69 2.7672 8.535 0.342 0.791 0.684 1.583 0.865 2.481 0.192 0.706 0.224 1.519 0.224 2.214 0 1.391-0.119 2.813-0.878 3.968 0.577-0.663 1.006-1.412 1.316-2.128 0.182 0.203 0.438 0.449 0.62 0.652 1.604 1.712 3.25 3.349 4.779 5.018-0.374-0.909-0.984-1.754-1.636-2.525-0.908-1.016-2.063-1.776-2.651-3.006-0.695-1.39-0.448-3.037-0.629-4.631-0.245-2.524-1.464-4.909-2.49-7.284-1.026-2.374-2.4215-4.17-3.795-8.188-0.9898-2.895-2.4972-7.611-1.9831-9.9 0.1179-0.727 0.3534-1.486 0.6638-2.203 0.182-0.492 0.4389-0.941 0.7385-1.465 0.3424-0.599 0.642-1.123 0.9096-1.764 0.2141-0.374 0.3532-0.791 0.3748-1.176 0.0643-0.46-0.1387-0.974-0.3097-1.369-0.577-1.423-1.1541-2.846-1.7311-4.268 0.0641 0.235 0.1602 0.588 0.2243 0.823 0.5127 1.883 0.9506 3.722 0.6933 5.562-0.0216 0.385-0.1607 0.802-0.4068 1.058-0.0428 0.075-0.0856 0.15-0.1605 0.107-0.3637 0.289-1.0909 0.171-1.1442-0.257-0.5668-0.224-1.112-0.834-1.4754-1.241-2.6726-3.316-5.3023-6.707-7.8572-10.055-0.2886-0.364-0.5773-0.728-0.7803-1.241-0.203-0.514-0.2563-0.942-0.2669-1.444-0.2982-3.647-2.4962-15.905-3.458-18.422-1.5388-4.028-0.5464-4.267-2.5593-5.9434 0.0535-0.2674-6.9427-5.6276-6.8891-5.8949 0.3322-1.7966 1.584-3.4646 2.7823-4.8651 1.2483-1.1574 5.2035 1.7887 5.8127 1.8117 0.6917 0.0262 13.721 15.05 14.606 16.356 0.3527 0.599 0.2189 1.786 0.4355 2.02 0.0765 0.083 1.5882 0.445 0.3927-0.21-0.023 0.609 1.7337 6.612 1.497 10.847-0.0216 0.385-0.0859 0.845-0.2251 1.262-0.0535 0.268-0.1819 0.492-0.3852 0.674-0.0428 0.075-0.1605 0.107-0.2781 0.139-0.1177 0.032-0.1497-0.086-0.2246-0.129-2.6943-2.236-5.2814-5.006-8.8318-5.746 0.1069 0.161 0.1817 0.204 0.2886 0.364 0.0749 0.043 0.1069 0.161 0.2566 0.246 1.3898 1.391 3.261 2.461 4.3728 3.991 0.5024 0.684 0.962 1.444 1.6677 1.947 0.9302 0.631 2.3097 0.824 3.0367 1.637 0.3635 0.407 0.6414 0.963 0.7695 1.433 0.3525 1.295 0.4269 2.728 0.897 3.99 0.2351 0.631 0.6627 1.273 0.8974 1.904 0.032 0.118 0.107 0.16 0.139 0.278 0.577 1.423 3.497 6.167 3.411 7.707 0.075-1.348-2.706-5.814-2.438-7.151 1.465 1.434 2.855 2.825 4.234 4.408-0.919-1.519-1.999-2.931-3.239-4.236-0.62-0.653-1.24-1.305-1.7-2.065-0.8443-1.476-0.6511-3.551 0.825-4.395 0.161-0.107 0.321-0.214 0.513-0.203 0.985-0.331 2.097-0.192 3.134-0.095 3.027 0.439 5.893 0.986 8.908 1.618 2.214 0.471 4.385 1.017 6.288 2.205 0.15 0.086 0.257 0.246 0.171 0.396 0.599-0.353 1.241-0.085 1.797 0.332 0.598 0.342 1.111 0.835 1.667 1.252 0.482 0.374 0.963 0.749 1.444 1.123 2.256 1.787 4.469 3.649 6.479 5.692-0.78-1.241-1.796-2.418-3.058-3.338-0.887-0.706-1.86-1.262-2.63-2.001-0.844-0.781-1.368-1.775-2.213-2.556-0.406-0.332-0.887-0.707-1.251-1.113 1.123-0.053 2.203-0.031 3.326-0.084-0.802-0.161-1.604-0.322-2.406-0.483-0.994-0.171-1.946-0.417-2.898-0.664-2.352-0.749-4.544-2.301-6.993-2.708-0.193-0.011-0.385-0.021-0.578-0.032 0.107 0.16 0.257 0.246 0.364 0.406-0.118 0.033-0.268-0.053-0.385-0.021-2.161-0.044-4.374-0.515-6.427-1.093-1.829-0.45-3.807-0.985-5.005-2.365-0.363-0.407-0.684-0.888-1.047-1.295-0.364-0.406-1.0054-0.674-1.5508-0.589 0.2575-2.534 1.0086-5.312-0.4558-7.441-1.1438-1.647-0.6523-3.686-2.1639-4.048 0.5862 0.632 0.9484-0.88 0.3852-2.121-0.5632-1.242-11.812-19.078-21.406-19.814-1.5082 0.7267-2.7386 2.0097-3.3594 3.4425-0.0428 0.0749-0.0428 0.0749-0.0856 0.1497-0.951-2.3317-1.9341-4.7812-3.2381-7.0168-0.4275-0.6418-0.8123-1.3585-1.4431-1.8186-1.2832-0.5352-2.898-0.6641-4.438-0.7501z" clip-path="url(#clipPath4310)" fill="#5c5a5a" style=""/>
|
||||
<path d="m96.836 106.97c-0.1607 0.802-0.3972 1.217-0.1729 2.041 0.4486 1.647 1.0572 2.066 1.7411 3.649 0.6732 1.776 0.6698 2.683 0.7546 4.619 0.0211 1.005-0.0327 1.968-0.1614 2.887 0.7808-0.149 1.8421 1.436 2.3871 2.046 0.545 0.609 1.005 1.369 1.722 1.679 0.791 0.353 1.646 0.247 2.491 0.333 0.92 0.128 1.786 0.524 2.695 0.845 1.861 0.568 3.797 0.483 5.7 0.28-0.075-0.042-0.075-0.042-0.149-0.085-2.161-0.044-4.374-0.515-6.428-1.093-1.828-0.45-3.807-0.985-5.004-2.365-0.363-0.407-0.684-0.888-1.048-1.295-0.363-0.406-1.328-1.638-1.8737-1.553 0.2575-2.534 0.8497-4.297-0.615-6.426-1.1437-1.647-0.9919-2.182-1.5794-4.108-0.2138-0.321-0.374-0.909-0.4594-1.454z" clip-path="url(#clipPath4304)" fill="#8b8b8b" style=""/>
|
||||
<path d="m87.799 115.57c0.1069 0.161 0.1818 0.204 0.2887 0.364 0.0748 0.043 0.1069 0.161 0.2566 0.246l0.0748 0.043c0.5667 0.225 1.1335 0.449 1.6895 0.867 0.4491 0.257 0.9302 0.631 1.3365 0.963 1.7748 1.412 3.2928 3.273 5.3993 4.279 0.2997-0.523 0.5993-1.047 0.7064-1.582-0.0535 0.267-0.182 0.492-0.3852 0.674-0.0428 0.074-0.1605 0.106-0.2781 0.138-0.1177 0.033-0.1497-0.085-0.2246-0.128-2.6835-2.429-5.3135-5.125-8.8639-5.864z" clip-path="url(#clipPath4298)" fill="#8b8b8b" style=""/>
|
||||
<path d="m100.11 126.68c-0.3425 0.599-0.5032 1.401-0.4286 2.139s0.4166 1.529 0.5656 2.31c0.032 0.118 0.107 0.16 0.139 0.278 0.577 1.423 3.181 5.603 3.095 7.143 0.076-1.348-2.389-5.25-2.122-6.587 1.465 1.434 2.886 3.017 4.265 4.6-0.92-1.519-2.03-3.123-3.27-4.428-0.62-0.653-1.24-1.305-1.7-2.065-0.8442-1.476-0.651-3.551 0.825-4.395 0.161-0.107 0.321-0.214 0.514-0.203-0.428 0.053-0.781 0.149-1.102 0.363-0.278 0.139-0.567 0.471-0.781 0.845z" clip-path="url(#clipPath4292)" fill="#8b8b8b" style=""/>
|
||||
<path d="m113.61 124.66c0.117 0.663 0.78 1.241 1.272 1.423 0.909 0.321 1.861 0.567 2.887 0.856 0.834 0.279 1.711 0.482 2.503 0.836 1.956 0.92 3.571 2.439 4.907 4.097 0 0 0.075 0.043 0.032 0.118 2.256 1.787 4.469 3.648 6.479 5.692-0.78-1.241-1.796-2.418-3.057-3.338-0.888-0.706-1.861-1.263-2.631-2.001-0.844-0.781-1.368-1.776-2.213-2.557-0.406-0.331-0.887-0.706-1.25-1.112 1.123-0.053 2.203-0.032 3.326-0.085-0.802-0.16-1.604-0.321-2.407-0.482-0.994-0.171-1.946-0.418-2.898-0.664-2.341-0.942-4.501-2.376-6.95-2.783z" clip-path="url(#clipPath4286)" fill="#8b8b8b" style=""/>
|
||||
<path d="m75.688 97.084c0.3847 0.2128 0.8909 0.4157 1.2199 0.6943 0.7593 0.3043 1.3971 0.6186 1.9992 1.2417 0.7338 0.7346 1.3003 1.6664 1.6795 2.5524 0.6826 1.596 0.9449 3.287 1.2072 4.978 0.1261 0.785 0.3738 1.56 0.9659 2.062-0.0101-0.122-0.0101-0.122-0.0201-0.243-0.0558 0.065-0.0558 0.065-0.1115 0.131-0.51-2.466-1.0299-5.054-1.9045-7.49-0.3033-0.709-0.551-1.4833-1.0873-2.0507-0.8855-1.0892-2.4498-1.5103-3.9483-1.8757z" clip-path="url(#clipPath4280)" fill="#8b8b8b" style=""/>
|
||||
<path d="m85.474 114.68c-0.1927 0.685-0.1181 1.423-0.3108 2.107-0.1179 0.727-0.3855 1.369-0.5354 1.979-0.1823 1.187 0.0633 2.32-0.0761 3.433-0.0751 0.652-0.193 1.379-0.1932 2.074 0.0851 1.241 0.951 2.332 1.71 3.263 2.8543 3.519 5.6337 6.996 8.488 10.516 0.4704 0.567 1.1653 1.262 1.914 0.995 0.2781-0.139 0.5242-0.396 0.6526-0.62-0.0428 0.075-0.0856 0.149-0.1605 0.107-0.3637 0.288-1.0909 0.17-1.1442-0.257-0.5667-0.225-1.112-0.835-1.4754-1.242-2.6726-3.316-5.3023-6.707-7.8572-10.055-0.2886-0.364-0.5773-0.728-0.7803-1.241-0.203-0.514-0.2563-0.941-0.2668-1.444-0.2982-3.647-0.468-7.519 0.731-11.005 0.0428-0.074 0.0856-0.149 0.1284-0.224 0 0 0.0748 0.043 0.1497 0.085 0.0535-0.267-0.0105-0.502 0.043-0.77-0.428 0.749-0.8561 1.497-1.0168 2.299z" clip-path="url(#clipPath4274)" fill="#8b8b8b" style=""/>
|
||||
<path d="m80.849 131.36c-0.3747 1.176-0.0222 2.47 0.2554 3.722 0.0321 0.117 0.0321 0.117 0.0641 0.235 1.6139 2.91 3.185 5.894 4.478 9.017-0.7155-3.091-1.8588-6.128-3.2374-9.102-0.3099-0.674-0.6626-1.273-0.8121-2.054-0.4378-1.839 0.4398-3.721 1.4243-5.443-0.2461 0.257-0.5029 0.706-0.5885 0.856-0.2568 0.449-0.4708 0.823-0.7277 1.272-0.4493 0.438-0.7061 0.887-0.8561 1.497z" clip-path="url(#clipPath4268)" fill="#8b8b8b" style=""/>
|
||||
<path d="m96.816 131.21c0.064 0.235 0.1602 0.588 0.2243 0.824 0.0748 0.042 0.1069 0.16 0.1069 0.16 0.3099 0.674 0.6198 1.348 0.8548 1.979 0.3525 1.294 0.4336 2.277-0.0588 3.486-0.2676 0.641-1.1412 1.605-1.4836 2.204-0.9845 1.722-0.8778 3.752-1.2528 5.624-0.3642 1.679 2.0111 5.339 2.5513 7.19s0.8333 2.167 1.4085 3.441c0.9213 2.041 0.8121 2.054 1.2183 3.081 0.502 1.379 0.576 2.812 1.079 4.192 0.374 0.909 0.983 1.754 1.282 2.621 0.577 1.422 0.448 3.037 0.597 4.513 0.15 0.781 0.299 1.562 0.609 2.236 1.604 1.711 3.25 3.348 4.779 5.017-0.374-0.909-0.983-1.754-1.635-2.524-0.909-1.017-2.064-1.776-2.652-3.007-0.694-1.39-0.448-3.037-0.629-4.631-0.245-2.524-1.464-4.909-2.489-7.284-1.026-2.374-2.0749-4.012-1.8174-6.547 0.2896-2.417-3.8098-8.116-3.2956-10.405 0.1179-0.727 0.3534-1.486 0.6638-2.202 0.182-0.492 0.4388-0.941 0.7384-1.465 0.3425-0.599 0.6421-1.123 0.9097-1.765 0.214-0.374 0.3532-0.791 0.3747-1.176 0.0643-0.46-0.1387-0.973-0.3097-1.369-0.577-1.423-1.154-2.845-1.7738-4.193z" clip-path="url(#clipPath4262)" fill="#8b8b8b" style=""/>
|
||||
<path d="m16.279 134.17c0.4279-0.1 0.9702-0.159 1.3623-0.338 1.3624-0.337 2.6599-1.025 3.5072-2.075 0.3273-0.529 0.6188-1.136 0.8318-1.707 0.6324-1.521 1.3006-2.964 1.9688-4.407 0.6613-1.25 1.3295-2.692 0.9133-4.019-0.1927-7e-3 -0.307-0.049-0.4996-0.056 0.5452-2.334 0.3266-4.889-0.3627-7.228-0.4453-1.598-1.2759-3.209-1.179-4.865 0.0204-0.578 0.155-1.113 0.2112-1.613 0.0697-0.885 0.0611-1.734-0.1403-2.59-0.0938-0.62-0.3804-1.248-0.5527-1.833-0.4811-1.676-0.8054-3.424-0.7801-5.2361 0.3292 0.5132 0.6584 1.0264 0.9875 1.5396 0 0 0.3428 0.1278 0.2285 0.0852-0.121 0.1501-0.0135 0.3853 0.1365 0.5063 0.4058-0.5644 0.8115-1.1288 1.1388-1.6575 1.8718-2.7507 3.7078-5.5798 5.2795-8.5725-0.9937 3.0131-2.4085 5.9342-4.0518 8.7701-0.3699 0.6429-0.7756 1.2079-0.9955 1.9709-0.6033 1.793 0.0995 3.747 0.9234 5.551l0.0358 0.078c0.0717 0.157 0.1791 0.392 0.3718 0.399 0.2285 0.085 0.5064-0.137 0.7059-0.322 0.9615-1.008 1.9589-1.938 2.9562-2.867 1.2753-1.151 2.658-2.067 3.8975-3.297 1.1184-1.0795 2.0867-2.28 2.9766-3.4448 0.4057-0.5645 0.8473-1.0505 1.0245-1.7002 0.2557-0.6855 0.3187-1.3778 0.2674-2.1127-0.0445-0.9276-0.0532-1.7767-0.1761-2.6685-0.63-5.1153 5.4511-13.66 4.0078-18.688-0.2735-1.2766 0-2.776 1.7265-1.2764 1.5 2.0004 2 1.9997 5 1.9997 0.4125-0.7572 3.5 2 5 2 1 0.5 0.9415-0.3767 1.0045-1.069 0.126-1.3846 0.1377-2.8118-0.5139-4.0308 0.5151 0.7126 0.8733 1.4969 1.1172 2.2386 0.1995-0.1859 0.4774-0.4076 0.6769-0.5935 1.7526-1.5587 3.5411-3.0391 5.2153-4.562-0.4551 0.8714-1.1388 1.6575-1.8582 2.3653-0.9974 0.9294-2.2165 1.581-2.9137 2.7525-0.8182 1.3217-0.7225 2.9841-1.0479 4.5546-0.4737 2.4913-6.8401-3.4917-8.0776-1.2202-1.2376 2.2714-2.7911 3.9327-4.5243 7.8089-1.249 2.7934-3.1791 7.3531-2.8752 9.6789 0.0513 0.7349 0.2168 1.5124 0.4607 2.2541 0.1365 0.5064 0.3514 0.977 0.6022 1.526 0.2865 0.6275 0.5373 1.1765 0.7454 1.8397 0.1791 0.3922 0.2798 0.8202 0.2662 1.2055 0.0223 0.4638-0.2266 0.957-0.4329 1.335-0.704 1.364-1.408 2.729-2.112 4.093 0.0852-0.229 0.213-0.571 0.2983-0.8 0.6817-1.828 1.2851-3.62 1.1961-5.4753 0.0136-0.3853-0.0871-0.8133-0.3088-1.0912-0.0358-0.0784-0.0716-0.1569-0.1501-0.121-0.3359-0.3206-1.0708-0.2693-1.1628 0.1519-0.5849 0.1723-1.1833 0.73-1.5822 1.1018-2.9631 3.0598-5.8903 6.1978-8.7391 9.2998-0.3205 0.336-0.641 0.672-0.8899 1.164-0.2489 0.493-0.3409 0.914-0.3971 1.414-0.6286 3.605-1.1498 7.445-0.2728 11.026 0.0358 0.078 0.0717 0.156 0.1075 0.235l0.1568-0.072c0.0291 0.271-0.0561 0.5-0.0271 0.771 0.1674 1.819 1.2624 3.594 2.3283 5.098 1.1379 1.266 1.7677 1.788 2.3766 1.82 0.6911 0.037 3.0405 0.166 4.04-1.054 0.4057-0.564 0.3805-1.759 0.6175-1.972 0.0837-0.076 1.622-0.299 0.3719 0.245 0.0324-0.609 2.3279-6.428 2.4772-10.667 0.0136-0.385-0.0086-0.849-0.1093-1.277-0.029-0.271-0.1365-0.506-0.3224-0.706-0.0358-0.078-0.15-0.121-0.2643-0.163-0.1142-0.043-0.1569 0.071-0.2353 0.107-2.8865 1.982-5.7149 4.506-9.3178 4.919 0.1211-0.15 0.1995-0.186 0.3205-0.336 0.0785-0.036 0.1211-0.15 0.2779-0.222 1.5106-1.258 3.4713-2.154 4.7176-3.576 0.5626-0.636 1.0893-1.351 1.8378-1.787 0.9838-0.544 2.3752-0.611 3.1731-1.355 0.3989-0.371 0.7262-0.9 0.8967-1.357 0.4687-1.257 0.6731-2.677 1.256-3.891 0.2915-0.607 0.7757-1.208 1.0672-1.815 0.0426-0.114 0.121-0.15 0.1636-0.264 0.704-1.364 4.0433-5.8234 4.0976-7.3648-0.0475 1.3488-3.2231 5.5438-3.078 6.8988 1.589-1.294 3.0996-2.553 4.6169-4.0042-1.0535 1.4292-2.2572 2.7372-3.6108 3.9242-0.6769 0.593-1.3537 1.187-1.8805 1.901-0.9751 1.394-0.9714 3.477 0.4218 4.452 0.1501 0.122 0.3002 0.243 0.4929 0.249 0.9498 0.42 2.0701 0.382 3.1119 0.38 3.0539-0.162 5.9577-0.446 9.0184-0.801 2.2473-0.268 4.4588-0.615 6.4622-1.624 0.1569-0.072 0.2779-0.222 0.2063-0.379 0.5644 0.406 1.2277 0.198 1.8193-0.167 0.6275-0.287 1.1833-0.73 1.7749-1.095 0.5132-0.329 1.0264-0.659 1.5396-0.988 2.4091-1.574 4.7824-3.227 6.9698-5.079-0.8899 1.165-2.0083 2.244-3.3484 3.046-0.948 0.623-1.9676 1.088-2.8013 1.753-0.9121 0.701-1.5241 1.644-2.4363 2.345-0.4347 0.294-0.9479 0.623-1.3469 0.995 1.1135 0.155 2.1912 0.231 3.3047 0.386-0.8134 0.087-1.6267 0.174-2.4401 0.261-1.006 0.081-1.9762 0.24-2.9464 0.398-2.411 0.533-4.7349 1.878-7.2107 2.061-0.1927-7e-3 -0.3853-0.013-0.578-0.02 0.121-0.15 0.2779-0.222 0.3989-0.372-0.1142-0.043-0.2711 0.029-0.3854-0.014-2.1553-0.153-4.4026 0.115-6.4999 0.505-1.8619 0.281-3.8808 0.634-5.1986 1.9-0.399 0.372-0.7621 0.822-1.161 1.194-0.399 0.371-1.0623 0.58-1.5977 0.445 0.026 2.547 0.5213 5.382-1.1306 7.369-1.2889 1.537-0.9848 3.612-2.5231 3.835 0.6413-0.576 0.8645 0.962 0.1907 2.147s-6.0002 1.687-7.5503 0.783c-1.4359-0.861-2.5445-2.25-3.0324-3.733-0.0358-0.079-0.0358-0.079-0.0716-0.157-1.1591 2.235-2.3609 4.585-3.8628 6.693-0.4842 0.6-0.9325 1.279-1.6026 1.68-1.3265 0.416-2.9464 0.398-4.4878 0.343z" clip-path="url(#clipPath4256)" fill="#5c5a5a" style=""/>
|
||||
<path d="m37.003 128.18c-0.0871-0.813-0.2849-1.248 0.0134-2.048 0.5966-1.6 1.2408-1.962 2.0658-3.476 0.8319-1.707 0.911-2.611 1.1715-4.531 0.1124-1 0.1464-1.963 0.1019-2.891 0.7639 0.22 1.965-1.261 2.5634-1.819s1.1252-1.272 1.8669-1.516c0.8201-0.28 1.6625-0.096 2.5117-0.105 0.9276-0.044 1.8261-0.36 2.7605-0.597 1.9046-0.396 3.8246-0.135 5.702 0.24-0.0784 0.035-0.0784 0.035-0.1568 0.071-2.1554-0.153-4.4027 0.115-6.4999 0.504-1.862 0.282-3.8808 0.635-5.1987 1.901-0.399 0.371-0.7621 0.822-1.161 1.193-0.399 0.372-1.4722 1.511-2.0077 1.376 0.026 2.548 0.4552 4.357-1.1968 6.344-1.2888 1.537-1.1862 2.083-1.9464 3.947-0.2421 0.3-0.4552 0.871-0.5898 1.407z" clip-path="url(#clipPath4250)" fill="#8b8b8b" style=""/>
|
||||
<path d="m28.786 118.79c0.121-0.15 0.1995-0.185 0.3205-0.336 0.0784-0.035 0.121-0.15 0.2779-0.221l0.0784-0.036c0.5849-0.172 1.1697-0.345 1.7613-0.71 0.4706-0.215 0.9838-0.544 1.4186-0.837 1.8959-1.245 3.5769-2.961 5.7661-3.771 0.2508 0.549 0.5015 1.098 0.5596 1.64-0.029-0.271-0.1365-0.506-0.3224-0.706-0.0358-0.078-0.1501-0.121-0.2643-0.163-0.1143-0.043-0.1569 0.071-0.2353 0.107-2.8933 2.175-5.7575 4.62-9.3604 5.033z" clip-path="url(#clipPath4244)" fill="#8b8b8b" style=""/>
|
||||
<path d="m42.054 108.84c-0.2865-0.628-0.3736-1.441-0.2322-2.169s0.5539-1.485 0.7738-2.249c0.0426-0.114 0.121-0.15 0.1636-0.264 0.704-1.365 3.6774-5.2907 3.7318-6.8322-0.0476 1.3488-2.8573 5.0102-2.7122 6.3662 1.589-1.295 3.1477-2.742 4.665-4.1932-1.0536 1.4292-2.3053 2.9262-3.659 4.1132-0.6768 0.593-1.3537 1.187-1.8804 1.901-0.9751 1.393-0.9714 3.477 0.4218 4.452 0.1501 0.121 0.3002 0.242 0.4929 0.249-0.4212-0.092-0.764-0.22-1.0641-0.462-0.2643-0.164-0.5219-0.52-0.701-0.912z" clip-path="url(#clipPath4238)" fill="#8b8b8b" style=""/>
|
||||
<path d="m55.316 112.09c0.1773-0.65 0.8899-1.165 1.3963-1.302 0.9344-0.237 1.9046-0.396 2.9533-0.59 0.8559-0.202 1.7477-0.324 2.5678-0.604 2.0324-0.739 3.7783-2.105 5.2598-3.635 0 0 0.0784-0.035 0.0426-0.114 2.4091-1.574 4.7824-3.227 6.9698-5.079-0.8899 1.165-2.0083 2.244-3.3484 3.046-0.948 0.623-1.9676 1.088-2.8013 1.753-0.9121 0.701-1.5241 1.644-2.4363 2.345-0.4347 0.294-0.9479 0.623-1.3469 0.995 1.1135 0.155 2.1912 0.231 3.3047 0.386-0.8134 0.087-1.6267 0.174-2.4401 0.261-1.006 0.081-1.9762 0.239-2.9464 0.398-2.4177 0.725-4.699 1.957-7.1749 2.14z" clip-path="url(#clipPath4232)" fill="#8b8b8b" style=""/>
|
||||
<path d="m16.28 134.17c0.428-0.101 0.9702-0.159 1.3624-0.338 0.8133-0.087 1.5124-0.217 2.2609-0.654 0.9053-0.508 1.7032-1.251 2.3084-2.002 1.0894-1.35 1.8002-2.907 2.511-4.464 0.3341-0.721 0.7824-1.4 1.4883-1.723-0.0426 0.115-0.0426 0.115-0.0852 0.229-0.0358-0.079-0.0358-0.079-0.0716-0.157-1.1592 2.236-2.3609 4.586-3.8628 6.693-0.4842 0.601-0.9325 1.279-1.6026 1.68-1.1474 0.809-2.7673 0.79-4.3088 0.736z" clip-path="url(#clipPath4226)" fill="#8b8b8b" style=""/>
|
||||
<path d="m25.894 119.74c-0.1297-0.699 0.0117-1.427-0.118-2.126-0.0512-0.735-0.2594-1.398-0.3532-2.019-0.0736-1.199 0.2741-2.305 0.2364-3.425-0.0154-0.657-0.0667-1.392-0.0037-2.084 0.1976-1.228 1.1591-2.236 1.9996-3.094 3.1625-3.245 6.2466-6.455 9.4092-9.6999 0.5199-0.5219 1.2752-1.1512 1.9965-0.8171 0.2644 0.1637 0.4861 0.4416 0.5935 0.6769-0.0358-0.0785-0.0716-0.1569-0.15-0.1211-0.336-0.3205-1.0709-0.2692-1.1629 0.152-0.5848 0.1723-1.1833 0.7299-1.5822 1.1017-2.9631 3.0595-5.8903 6.1975-8.7391 9.2995-0.3205 0.336-0.641 0.672-0.8899 1.165s-0.3409 0.914-0.397 1.413c-0.6287 3.605-1.1498 7.445-0.2728 11.026 0.0358 0.078 0.0716 0.157 0.1074 0.235 0 0 0.0784-0.036 0.1569-0.071 0.029 0.271-0.0562 0.499-0.0272 0.77-0.3582-0.784-0.7164-1.568-0.8035-2.382z" clip-path="url(#clipPath4220)" fill="#8b8b8b" style=""/>
|
||||
<path d="m23.301 102.44c-0.2662-1.206 0.2025-2.4623 0.5928-3.6832 0.0426-0.1143 0.0426-0.1143 0.0852-0.2285 1.8718-2.7507 3.7078-5.5798 5.2794-8.5726-0.9936 3.0131-2.4084 5.9343-4.0517 8.7702-0.3699 0.6429-0.7756 1.2073-0.9955 1.9711-0.6033 1.792 0.0995 3.746 0.9234 5.55-0.2217-0.278-0.4367-0.748-0.5083-0.905-0.2149-0.471-0.394-0.863-0.6089-1.333-0.4076-0.478-0.6226-0.948-0.7164-1.569z" clip-path="url(#clipPath4214)" fill="#8b8b8b" style=""/>
|
||||
<path d="m39.188 104.04c0.0852-0.228 0.213-0.571 0.2982-0.799 0.0785-0.036 0.1211-0.151 0.1211-0.151 0.3699-0.642 0.7398-1.285 1.0313-1.892 0.4687-1.2572 0.6388-2.2291 0.2584-3.4772-0.2082-0.6632-0.9905-1.7027-1.277-2.3301-0.8239-1.8039-0.5329-3.8167-0.7361-5.7145-0.21-1.7051 2.4883-5.1344 3.1945-6.9284 0.7063-1.794 1.027-2.0822 1.7156-3.2985 1.1036-1.9492 0.9955-1.9713 1.4933-2.957 0.6255-1.3284 0.7126-1.9891 2.2126-2.4891 2 0 4.493 2.5003 6.5 2.5003 1.1428-0.8663 0.5121-1.4938 0.7949-2.95 0.2199-0.764 0.4397-1.5279 0.8096-2.1708 1.7527-1.5588 3.5411-3.0391 5.2153-4.5621-0.4551 0.8714-1.1387 1.6576-1.8582 2.3653-0.9974 0.9295-2.2164 1.5811-2.9137 2.7526-0.8182 1.3216-0.7225 2.9841-1.0479 4.5546-0.4736 2.4913-7.4351-3.3159-8.6727-1.0445-1.2375 2.2714-2.4308 3.8077-2.4048 6.3552 0.0686 2.4332-4.5321 7.7359-4.2282 10.062 0.0512 0.7349 0.2168 1.5124 0.4607 2.2541 0.1365 0.5064 0.3514 0.977 0.6022 1.526 0.2865 0.6275 0.5373 1.1765 0.7454 1.8397 0.1791 0.3922 0.2798 0.8202 0.2662 1.2055 0.0222 0.4638-0.2266 0.9567-0.4329 1.3352-0.704 1.364-1.408 2.728-2.1478 4.014z" clip-path="url(#clipPath4208)" fill="#8b8b8b" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -0,0 +1,470 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Bottom tee connector",
|
||||
"description": "Bottom tee connector",
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "const {\n flowAnimationWidth: lineWidth,\n flowAnimationColor: lineColor,\n flowStyleDash: dashWidth,\n flowStyleGap: dashGap,\n flowDashCap: dashCap\n} = ctx.properties;\n\nconst leftLine = \"M0 100H100\";\nconst leftLineReversed = \"M 100,100 H 0\";\nconst rightLine = \"M100 100H200\";\nconst rightLineReversed = \"M 200,100 H 100\";\nconst bottomLine = \"M 100,200 V 103\";\nconst bottomLineReversed = \"M 100,103 V 200\";\n\nprepareFlowAnimation('left', leftLine, leftLineReversed);\nprepareFlowAnimation('right', rightLine, rightLineReversed);\nprepareFlowAnimation('bottom', bottomLine, bottomLineReversed);\n\nfunction prepareFlowAnimation(prefix, line, reversedLine) {\n const flowAnimation = ctx.values[prefix + 'Flow'];\n const flowDirection = ctx.values[prefix + 'FlowDirection'];\n const flowAnimationSpeed = ctx.values[prefix + 'FlowAnimationSpeed'];\n\n const animation = ctx.tags[prefix + 'Line'][0];\n const duration = 1 / flowAnimationSpeed;\n \n let animateFlow = ctx.api.connectorAnimation(animation);\n \n if (flowAnimation) {\n if (!animateFlow) {\n animateFlow = ctx.api.connectorAnimate(animation, line, reversedLine).flowAppearance(lineWidth, lineColor, dashCap, dashWidth, dashGap).duration(duration).direction(flowDirection).play();\n } else {\n animateFlow.duration(duration).direction(flowDirection).play();\n }\n } else {\n if (animateFlow) {\n animateFlow.finish();\n }\n }\n}\n",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "line",
|
||||
"stateRenderFunction": "element.stroke(ctx.properties.lineColor);\nelement.attr({'stroke-width': ctx.properties.mainLineSize});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "line-color",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.lineColor);\nelement.stroke(ctx.properties.lineColor);",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "leftFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "mainLineSize",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "number",
|
||||
"default": 6,
|
||||
"required": true,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"max": 99,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "lineColor",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationWidth",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 4,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationColor",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleDash",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.dash}",
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleGap",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "{i18n:scada.symbol.gap}",
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowDashCap",
|
||||
"name": "{i18n:scada.symbol.flow-dash-cap}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "select",
|
||||
"default": "butt",
|
||||
"items": [
|
||||
{
|
||||
"value": "butt",
|
||||
"label": "{i18n:scada.symbol.dash-cap-butt}"
|
||||
},
|
||||
{
|
||||
"value": "round",
|
||||
"label": "{i18n:scada.symbol.dash-cap-round}"
|
||||
},
|
||||
{
|
||||
"value": "square",
|
||||
"label": "{i18n:scada.symbol.dash-cap-square}"
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="M200 100H115C106.716 100 100 106.716 100 115V200" stroke="#1A1A1A" stroke-width="6" id="path2" tb:tag="line"/><path d="M0 100H85C93.2843 100 100 106.716 100 115V200" stroke="#1A1A1A" stroke-width="6" id="path4" tb:tag="line"/><path d="M0 100L200 100" stroke="#1A1A1A" stroke-width="6" id="path6" tb:tag="line"/><path d="M87 100H113C113 100 100 100 100 114C100 100 87 100 87 100Z" fill="#1A1A1A" stroke="#1A1A1A" stroke-width="2" id="path8" tb:tag="line-color"/><g tb:tag="animationGroup"><g tb:tag="leftLine"/><g tb:tag="rightLine"/><g tb:tag="bottomLine"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1,857 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Bottom tee pipe",
|
||||
"description": "Bottom tee pipe with configurable left/right/bottom fluid and leak visualizations.",
|
||||
"searchTags": [
|
||||
"pipe",
|
||||
"tee"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "var leftLiquidPattern = prepareLiquidPattern('left-fluid');\nvar rightLiquidPattern = prepareLiquidPattern('right-fluid');\nvar bottomLiquidPattern = prepareLiquidPattern('bottom-fluid');\n\nupdateLiquidPatternAnimation(leftLiquidPattern, 'left');\nupdateLiquidPatternAnimation(rightLiquidPattern, 'right');\nupdateLiquidPatternAnimation(bottomLiquidPattern, 'bottom');\n\n\nfunction prepareLiquidPattern(fluidElementTag) {\n return ctx.tags[fluidElementTag][0].reference('fill').first();\n}\n\nfunction updateLiquidPatternAnimation(liquidPattern, prefix) {\n if (liquidPattern) {\n var fluid = ctx.values[prefix + 'Fluid'] && !ctx.values.leak;\n var flow = ctx.values[prefix + 'Flow'];\n var flowDirection = ctx.values[prefix + 'FlowDirection'];\n var flowAnimationSpeed = ctx.values[prefix + 'FlowAnimationSpeed'];\n\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 var fluidAnimation = ctx.api.cssAnimation(liquidPattern);\n \n if (fluid) {\n if (flow !== elementFlow) {\n liquidPattern.remember('flow', flow);\n if (flow) {\n if (elementFlowDirection !== flowDirection || !fluidAnimation) {\n liquidPattern.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n } else {\n fluidAnimation.play();\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n liquidPattern.remember('flowDirection', flowDirection);\n animateFlow(liquidPattern, flowDirection);\n }\n if (flow) {\n if (fluidAnimation) {\n fluidAnimation.speed(flowAnimationSpeed);\n }\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n }\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n ctx.api.resetCssAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n return ctx.api.cssAnimate(liquidPattern, 1000).relative(deltaX, 0).loop();\n}\n",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "bottom-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.bottomFluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "bottom-fluid-background",
|
||||
"stateRenderFunction": "var fluid = ctx.values.bottomFluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.bottomFluidColor;\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": "left-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.leftFluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "left-fluid-background",
|
||||
"stateRenderFunction": "var fluid = ctx.values.leftFluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.leftFluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "overlay",
|
||||
"stateRenderFunction": "var fluid = (ctx.values.leftFluid || ctx.values.rightFluid ||\n ctx.values.bottomFluid) && !ctx.values.leak;\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "pipe-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.pipeColor;\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "right-fluid",
|
||||
"stateRenderFunction": "var fluid = ctx.values.rightFluid && !ctx.values.leak;\n\nif (fluid) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "right-fluid-background",
|
||||
"stateRenderFunction": "var fluid = ctx.values.rightFluid && !ctx.values.leak;\nif (fluid) {\n var color = ctx.properties.rightFluidColor;\n element.attr({fill: color});\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "leftFluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.left-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.left-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.left-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.left-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.right-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.right-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.right-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.right-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-pipe}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leak",
|
||||
"name": "{i18n:scada.symbol.leak}",
|
||||
"hint": "{i18n:scada.symbol.leak-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.leak-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "leftFluidColor",
|
||||
"name": "{i18n:scada.symbol.left-fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "rightFluidColor",
|
||||
"name": "{i18n:scada.symbol.right-fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFluidColor",
|
||||
"name": "{i18n:scada.symbol.bottom-fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "pipeColor",
|
||||
"name": "{i18n:scada.symbol.pipe-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g clip-path="url(#clip0_1245_66617)">
|
||||
<path d="m14 64h172v72h-172z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m14 64h172v72h-172z" fill="url(#paint0_linear_1245_66617)" style="fill:url(#paint0_linear_1245_66617)"/>
|
||||
<path d="m15.5 65.5h169v69h-169z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<path d="m136 186v-51l-36-35-36 35v51z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m136 186v-51l-36-35-36 35v51z" fill="url(#paint1_linear_1245_66617)" style="fill:url(#paint1_linear_1245_66617)"/>
|
||||
<path d="m134.5 184.5v-48.866l-34.5-33.542-34.5 33.542v48.866z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/>
|
||||
<rect x="187.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/>
|
||||
<rect transform="rotate(-90,51.5,198.5)" x="51.5" y="198.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/>
|
||||
</g><defs>
|
||||
<pattern id="liquid" width="172" height="72" patternUnits="userSpaceOnUse">
|
||||
<circle transform="rotate(-90)" cx="-15" cy="21" r="8" fill="url(#paint28_linear_1182_32781-5)"/>
|
||||
<circle transform="rotate(-90)" cx="-15" cy="150" r="8" fill="url(#paint29_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-16" cy="113" r="8" fill="url(#paint30_linear_1182_32781-7)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="34" r="8" fill="url(#paint31_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="155" r="8" fill="url(#paint32_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="33" r="5" fill="url(#paint33_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="162" r="5" fill="url(#paint34_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="5" r="5" fill="url(#paint35_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-8" cy="94" r="4" fill="url(#paint36_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-60" cy="72" r="4" fill="url(#paint37_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="112" r="5" fill="url(#paint38_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-39" cy="59" r="5" fill="url(#paint39_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-62" cy="115" r="5" fill="url(#paint40_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-42" cy="139" r="5" fill="url(#paint41_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-21" cy="76" r="5" fill="url(#paint42_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-50.5" cy="126.5" r="2.5" fill="url(#paint43_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-46.5" cy="169.5" r="2.5" fill="url(#paint44_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-9.5" cy="57.5" r="2.5" fill="url(#paint45_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-35.5" cy="96.5" r="2.5" fill="url(#paint46_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="91.5" r="2.5" fill="url(#paint47_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-40.5" cy="22.5" r="2.5" fill="url(#paint48_linear_1182_32781-88)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="124.5" r="2.5" fill="url(#paint49_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-47.5" cy="86.5" r="2.5" fill="url(#paint50_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-21.5" cy="51.5" r="2.5" fill="url(#paint51_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-51.5" cy="48.5" r="2.5" fill="url(#paint52_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="14" r="4" fill="url(#paint53_linear_1182_32781-83)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="135" r="4" fill="url(#paint54_linear_1182_32781-33)"/>
|
||||
<circle transform="rotate(-90)" cx="-58.5" cy="95.5" r="9.5" fill="url(#paint55_linear_1182_32781-8)"/>
|
||||
<path d="m0 0h172v72h-172z" fill="url(#paint84_linear_1182_32781-8)" stroke-width=".57735"/>
|
||||
</pattern>
|
||||
<linearGradient id="paint28_linear_1182_32781-5" x1="19.316" x2="21" y1="8.2632" y2="23" gradientTransform="translate(-36,6)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint29_linear_1182_32781-1" x1="148.32" x2="150" y1="8.2632" y2="23" gradientTransform="translate(-165,135)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint30_linear_1182_32781-7" x1="111.32" x2="113" y1="9.2632" y2="24" gradientTransform="translate(-129,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint31_linear_1182_32781-4" x1="32.316" x2="34" y1="51.263" y2="66" gradientTransform="translate(-92,-24)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint32_linear_1182_32781-3" x1="153.32" x2="155" y1="51.263" y2="66" gradientTransform="translate(-213,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint33_linear_1182_32781-1" x1="31.947" x2="33" y1="21.789" y2="31" gradientTransform="translate(-59,7)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint34_linear_1182_32781-4" x1="160.95" x2="162" y1="21.789" y2="31" gradientTransform="translate(-188,136)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint35_linear_1182_32781-6" x1="3.9474" x2="5" y1="32.79" y2="42" gradientTransform="translate(-42,-32)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint36_linear_1182_32781-9" x1="93.158" x2="94" y1="4.6316" y2="12" gradientTransform="translate(-102,86)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint37_linear_1182_32781-4" x1="71.158" x2="72" y1="56.632" y2="64" gradientTransform="translate(-132,12)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint38_linear_1182_32781-2" x1="110.95" x2="112" y1="32.79" y2="42" gradientTransform="translate(-149,75)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint39_linear_1182_32781-2" x1="57.947" x2="59" y1="34.79" y2="44" gradientTransform="translate(-98,20)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint40_linear_1182_32781-6" x1="113.95" x2="115" y1="57.79" y2="67" gradientTransform="translate(-177,53)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint41_linear_1182_32781-4" x1="137.95" x2="139" y1="37.79" y2="47" gradientTransform="translate(-181,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint42_linear_1182_32781-1" x1="74.947" x2="76" y1="16.789" y2="26" gradientTransform="translate(-97,55)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint43_linear_1182_32781-2" x1="125.97" x2="126.5" y1="48.395" y2="53" gradientTransform="translate(-177,76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint44_linear_1182_32781-8" x1="168.97" x2="169.5" y1="44.395" y2="49" gradientTransform="translate(-216,123)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint45_linear_1182_32781-8" x1="56.974" x2="57.5" y1="7.3947" y2="12" gradientTransform="translate(-67,48)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint46_linear_1182_32781-9" x1="95.974" x2="96.5" y1="33.395" y2="38" gradientTransform="translate(-132,61)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint47_linear_1182_32781-2" x1="90.974" x2="91.5" y1="21.395" y2="26" gradientTransform="translate(-115,68)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint48_linear_1182_32781-88" x1="21.974" x2="22.5" y1="38.395" y2="43" gradientTransform="translate(-63,-18)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint49_linear_1182_32781-8" x1="123.97" x2="124.5" y1="21.395" y2="26" gradientTransform="translate(-148,101)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint50_linear_1182_32781-6" x1="85.974" x2="86.5" y1="45.395" y2="50" gradientTransform="translate(-134,39)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint51_linear_1182_32781-8" x1="50.974" x2="51.5" y1="19.395" y2="24" gradientTransform="translate(-73,30)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint52_linear_1182_32781-3" x1="47.974" x2="48.5" y1="49.395" y2="54" gradientTransform="translate(-100,-3)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint53_linear_1182_32781-83" x1="13.158" x2="14" y1="60.632" y2="68" gradientTransform="translate(-78,-50)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint54_linear_1182_32781-33" x1="134.16" x2="135" y1="60.632" y2="68" gradientTransform="translate(-199,71)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint55_linear_1182_32781-8" x1="93.5" x2="95.5" y1="50.5" y2="68" gradientTransform="translate(-154,37)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint84_linear_1182_32781-8" x1="248" x2="248" y1="1.8513e-7" y2="72" gradientTransform="scale(.33333 1)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" offset=".10895"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".11331"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".88736"/>
|
||||
<stop stop-color="#727171" offset=".89138"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<pattern id="base-left-liquid" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="left-liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect width="688" height="72" x="-172" y="0" stroke-width="0" fill="url(#base-left-liquid)"/></pattern>
|
||||
<pattern id="base-right-liquid" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="right-liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect width="688" height="72" x="-172" y="0" stroke-width="0" fill="url(#base-right-liquid)"/></pattern>
|
||||
<pattern id="base-bottom-liquid" patternTransform="translate(14,8)" patternUnits="userSpaceOnUse" xlink:href="#liquid"/>
|
||||
<pattern id="bottom-liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect width="688" height="72" x="-172" y="0" stroke-width="0" fill="url(#base-bottom-liquid)"/></pattern>
|
||||
<clipPath id="clip0_1245_66617">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<linearGradient id="paint0_linear_1245_66617" x1="58.72" x2="58.53" y1="64" y2="136" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1245_66617" x1="136" x2="63.996" y1="163.64" y2="164.02" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint0_linear_1281_41706" x1="57.778" x2="57.778" y1="-8.4191e-7" y2="72" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1281_41706" x1="-8.4192e-7" x2="72" y1="100.76" y2="100.76" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clipPath11075">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11069">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11063">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11057">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11051">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11045">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11039">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11033">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11027">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11021">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11015">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11009">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath11003">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath10997">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath10991">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath10985">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath10979">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath10973">
|
||||
<rect width="200" height="200" fill="#fff"/>
|
||||
</clipPath>
|
||||
</defs><rect x="14" y="64" width="50" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="left-fluid-background"/><rect transform="rotate(90)" x="136" y="-136" width="50" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="bottom-fluid-background"/><rect x="136" y="64" width="50" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="right-fluid-background"/><rect x="14" y="64" width="50" height="72" fill="url(#left-liquid)" stroke-width="0" style="display: none;" tb:tag="left-fluid"/><rect x="136" y="64" width="50" height="72" fill="url(#right-liquid)" stroke-width="0" style="display: none;" tb:tag="right-fluid"/><rect transform="rotate(90)" x="136" y="-136" width="50" height="72" fill="url(#bottom-liquid)" stroke-width="0" style="display: none;" tb:tag="bottom-fluid"/><g transform="translate(64 64)" style="display: none;" tb:tag="overlay">
|
||||
<path d="m0 0h72v72h-72z" fill="url(#paint0_linear_1281_41706)" style="fill: url("#paint0_linear_1281_41706");"/>
|
||||
<path d="m1.5 1.5h69v69h-69z" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
<path d="m0 72 36-36 36 36z" fill="url(#paint1_linear_1281_41706)" style="fill: url("#paint1_linear_1281_41706");"/>
|
||||
<path d="m68.379 70.5h-64.757l32.379-32.379z" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
</g><g transform="translate(-4e-4 -5.8337e-5)" style="display: none;" tb:tag="leak">
|
||||
<path d="m136 83.175c-0.386-0.2112-0.828-0.5305-1.239-0.6594-1.239-0.6594-2.664-1.0154-3.996-0.8004-0.597 0.1744-1.219 0.4311-1.76 0.7135-1.487 0.7087-2.948 1.3351-4.409 1.9614-1.328 0.4876-2.789 1.114-3.366 2.3789 0.138 0.1338 0.195 0.2419 0.334 0.3757-1.966 1.3718-2.064-1.1443-9.564 0-8 4.3557-19.138 11.096-20.317 12.263-0.4015 0.4163-0.8595 0.725-1.2353 1.059-0.6434 0.611-1.2046 1.249-1.627 2.02-0.345 0.524-0.5513 1.182-0.814 1.733-0.7626 1.568-1.6896 3.084-2.92 4.416l0.2946-1.806-0.113-0.216c0.1904-0.03 0.2677-0.277 0.237-0.468-0.6791 0.149-1.3582 0.298-1.955 0.472-3.2308 0.795-6.4874 1.672-9.6569 2.847 2.7531-1.577 5.758-2.804 8.8759-3.815 0.7048-0.23 1.3839-0.379 2.0581-0.8 1.6467-0.93 2.43-2.853 3.0231-4.746l0.0257-0.082c0.0516-0.1644 0.129-0.4112-0.0098-0.5451-0.113-0.2161-0.4679-0.2369-0.7405-0.232-1.3889 0.1069-2.752 0.1315-4.1151 0.1562-1.7179 0.0038-3.3586-0.2393-5.1024-0.1532-1.5534 0.0553-3.0761 0.301-4.5165 0.5725-0.6791 0.1486-1.3324 0.2146-1.8985 0.5796-0.6484 0.339-1.158 0.812-1.6111 1.393-0.5869 0.719-1.1481 1.357-1.6528 2.102-2.9506 4.226-13.185 6.516-15.472 11.221 0.6704-2.14 1.4488-4.335 2.1192-6.475-2.424 1.681-5.2693 2.686-8.1403 3.775-0.8129 0.287-1.6258 0.574-2.408 1.052-0.6484 0.339-1.2661 0.868-1.7757 1.341-1.0192 0.946-1.9819 2-2.3121 3.342 0.0933-0.875 0.3511-1.697 0.6654-2.412-0.2726 5e-3 -0.6275-0.016-0.9001-0.011-2.3455-0.012-4.6652-0.107-6.9285-0.093 0.921-0.344 1.955-0.472 2.9632-0.517 1.3631-0.025 2.7053 0.305 4.007-0.1 1.492-0.436 2.5321-1.736 3.8239-2.687 2.0175-1.536 4.5951-2.265 7.0338-3.127 2.4388-0.862 4.7047-1.059 8.5848-2.784 2.7962-1.243 7.2796-3.344 8.6082-5.277 0.4531-0.581 0.8497-1.2696 1.164-1.9843 0.237-0.4679 0.3917-0.9615 0.5722-1.5375 0.2062-0.6582 0.3867-1.2341 0.6753-1.8666 0.1289-0.4114 0.3401-0.797 0.6078-1.0745 0.2935-0.3599 0.808-0.5601 1.2144-0.7038 1.4356-0.5441 2.8711-1.0881 4.3066-1.6322-0.2161 0.113-0.5403 0.2824-0.7565 0.3954-1.7289 0.904-3.3756 1.8336-4.5495 3.2729-0.2677 0.2776-0.4789 0.6632-0.4998 1.0181-0.0258 0.0823-0.0515 0.1645 0.0307 0.1903 0.0357 0.463 0.6165 0.9161 0.9665 0.6643 0.5502 0.2628 1.368 0.248 1.9133 0.2382 4.2489-0.295 8.5235-0.6723 12.716-1.0753 0.4629-0.0356 0.9259-0.0713 1.4404-0.2715s0.8645-0.4519 1.2402-0.7859c2.8771-2.261 13.36-8.9832 15.86-9.9896 4-1.6103 3.5-2.5 6.098-2.1639 0.16-0.221 8.847 1.2649 9.007 1.0439 1.091-1.4651 1.463-3.5171 1.676-5.3481 0-1.7023-4.85-2.5996-5.281-3.0307-0.489-0.4894-20.365 0.1707-21.924 0.4097-0.6791 0.1486-1.4593 1.0544-1.7779 1.0544-0.1125 0-1.4059-0.8623-0.1125-0.4311-0.4311 0.4311-6.028 3.2247-8.9726 6.2777-0.2677 0.2776-0.5611 0.6374-0.7723 1.023-0.1597 0.2211-0.237 0.4679-0.2321 0.7405-0.0258 0.0823 0.0307 0.1904 0.0872 0.2984 0.0565 0.1081 0.1646 0.0516 0.2468 0.0774 3.4716 0.4554 7.2625 0.4686 10.218 2.5696-0.1904 0.0307-0.2727 0.0049-0.463 0.0356-0.0823-0.0257-0.1903 0.0308-0.3549-0.0208-1.9648-0.0736-4.0218-0.7182-5.8994-0.4933-0.8436 0.097-1.713 0.2764-2.5616 0.1008-1.0954-0.2529-2.1749-1.1333-3.2653-1.1136-0.5453 0.0099-1.1421 0.1843-1.5743 0.4102-1.1887 0.6215-2.2902 1.5413-3.5354 2.0547-0.6225 0.2567-1.3839 0.3795-2.0065 0.6362-0.108 0.0565-0.1903 0.0307-0.2984 0.0872-1.4355 0.5441-6.8997 1.6285-7.9705 2.7387 0.937-0.9714 6.1028-1.9686 6.9009-3.0739-2.0471-0.0993-4.0119-0.1729-6.1106-0.1077 1.7389-0.3587 3.5084-0.527 5.3087-0.505 0.9001 0.011 1.8002 0.022 2.6697-0.1573 1.6565-0.3845 3.0465-1.9368 2.6621-3.5933-0.0307-0.1904-0.0614-0.3807-0.2002-0.5146-0.4262-0.9467-1.2846-1.6675-2.0607-2.3625-2.38-1.9205-4.7293-3.6506-7.2432-5.4323-1.8507-1.3029-3.7271-2.5234-5.8921-3.1115-0.1646-0.0515-0.3549-0.0208-0.4065 0.1437-0.1486-0.6791-0.7811-0.9676-1.4651-1.0916-0.6582-0.2063-1.368-0.248-2.052-0.372-0.6017-0.0982-1.2035-0.1964-1.8052-0.2946-2.8441-0.4394-5.714-0.7966-8.5789-0.8812 1.4404-0.2715 2.9939-0.3268 4.5264-0.0273 1.1212 0.1707 2.1908 0.5058 3.2555 0.5684 1.147 0.0884 2.2325-0.204 3.3795-0.1156 0.5194 0.0724 1.1212 0.1706 1.6664 0.1608-0.7246-0.8596-1.4749-1.6369-2.1995-2.4965 0.6632 0.4789 1.3263 0.9578 1.9895 1.4367 0.8019 0.6127 1.6296 1.1432 2.4573 1.6736 2.1491 1.2156 4.7771 1.7681 6.7407 3.287 0.1388 0.1339 0.2776 0.2677 0.4163 0.4016-0.1903 0.0307-0.3549-0.0209-0.5452 0.0098 0.0565 0.1081 0.2211 0.1597 0.2776 0.2677 1.5007 1.5546 3.3514 2.8574 5.1713 3.9699 1.5732 1.0351 3.3109 2.1218 5.1369 2.0615 0.5453-0.0099 1.1163-0.102 1.6615-0.1118 0.5452-0.0099 1.1777 0.2787 1.4859 0.7367 1.6835-1.9121 3.2101-4.3518 5.7668-4.7253 1.9856-0.2813 3.1466-2.028 4.44-1.1657-0.8622 0 0-1.2934 1.2933-1.7245 1.2934-0.4311 22.021-4.3085 29.084 2.2264 0.492 1.6001 0.388 3.3745-0.241 4.804-0.026 0.0823-0.026 0.0823-0.051 0.1645 2.356-0.8879 4.821-1.8324 7.347-2.3962 0.761-0.1229 1.548-0.328 2.314-0.1782 1.265 0.5771 2.458 1.6736 3.568 2.7444z" clip-path="url(#clipPath11075)" fill="#5c5a5a" style=""/>
|
||||
<path d="m93.634 76.02c-0.4789 0.6631-0.6226 1.1189-1.379 1.5144-1.5129 0.7909-2.2343 0.6298-3.8601 1.2046-1.7597 0.7136-2.4228 1.3331-3.9001 2.587-0.7515 0.668-1.4207 1.3619-2.0076 2.0816-0.4213-0.6742-2.305-0.375-3.1229-0.3602-0.8178 0.0148-1.6872 0.1941-2.402-0.1202-0.797-0.3401-1.3005-1.0401-1.9379-1.6012-0.7196-0.587-1.5989-0.9529-2.4524-1.4011-1.6812-0.9786-2.9351-2.4558-4.0809-3.9895 0.0823 0.0258 0.0823 0.0258 0.1646 0.0515 1.5007 1.5546 3.3514 2.8574 5.1714 3.9699 1.5731 1.0351 3.3108 2.1218 5.1368 2.0615 0.5453-0.0098 1.1163-0.102 1.6615-0.1118 0.5453-0.0099 2.1048-0.1396 2.4131 0.3185 1.6835-1.9122 2.5737-3.5448 5.1304-3.9182 1.9857-0.2814 2.2748-0.7565 4.0861-1.6347 0.3806-0.0614 0.9209-0.3438 1.379-0.6521z" clip-path="url(#clipPath11069)" fill="#8b8b8b" style=""/>
|
||||
<path d="m93.472 88.493c-0.1903 0.0307-0.2726 0.0049-0.4629 0.0356-0.0823-0.0258-0.1904 0.0307-0.3549-0.0208l-0.0823-0.0258c-0.5502-0.2628-1.1003-0.5255-1.7843-0.6495-0.4937-0.1547-1.0954-0.2529-1.6149-0.3254-2.2423-0.3412-4.6394-0.1888-6.8094-1.0495 0.1805-0.576 0.361-1.1519 0.6803-1.594-0.1597 0.221-0.237 0.4679-0.2321 0.7405-0.0258 0.0823 0.0307 0.1903 0.0872 0.2984s0.1646 0.0516 0.2469 0.0773c3.6054 0.3167 7.3705 0.4122 10.326 2.5132z" clip-path="url(#clipPath11063)" fill="#8b8b8b" style=""/>
|
||||
<path d="m76.953 87.024c-0.2063 0.6582-0.6852 1.3214-1.277 1.7684-0.5919 0.447-1.4048 0.7344-2.079 1.1557-0.108 0.0565-0.1903 0.0307-0.2984 0.0872-1.4355 0.5441-6.2713 1.4766-7.3421 2.5868 0.9369-0.9714 5.4744-1.8167 6.2725-2.922-2.0471-0.0993-4.1738-0.0647-6.2725 5e-4 1.7389-0.3587 3.6703-0.6352 5.4706-0.6132 0.9001 0.011 1.8002 0.022 2.6697-0.1574 1.6565-0.3844 3.0465-1.9367 2.6621-3.5933-0.0307-0.1903-0.0614-0.3806-0.2002-0.5145 0.2517 0.35 0.4212 0.6742 0.4826 1.0548 0.0873 0.2984 0.0406 0.7356-0.0883 1.147z" clip-path="url(#clipPath11057)" fill="#8b8b8b" style=""/>
|
||||
<path d="m69.261 75.743c-0.5661 0.3648-1.4405 0.2715-1.9083 0.0345-0.8535-0.4482-1.6812-0.9786-2.5912-1.5348-0.7713-0.4224-1.5167-0.9271-2.3137-1.2672-2.0054-0.8092-4.217-0.9601-6.3415-0.8126 0 0-0.0822-0.0258-0.108 0.0565-2.8441-0.4395-5.714-0.7967-8.579-0.8812 1.4405-0.2715 2.9939-0.3268 4.5265-0.0273 1.1212 0.1706 2.1908 0.5058 3.2555 0.5684 1.1469 0.0883 2.2325-0.204 3.3795-0.1156 0.5194 0.0724 1.1211 0.1706 1.6664 0.1607-0.7246-0.8595-1.475-1.6368-2.1995-2.4964 0.6631 0.4789 1.3263 0.9578 1.9894 1.4367 0.8019 0.6127 1.6297 1.1431 2.4574 1.6736 2.2829 1.0768 4.8028 1.6858 6.7665 3.2047z" clip-path="url(#clipPath11051)" fill="#8b8b8b" style=""/>
|
||||
<path d="m115.26 84.806c-0.418-0.1373-0.911-0.3706-1.339-0.4224-0.739-0.3499-1.403-0.6039-2.27-0.6218-1.037-0.0386-2.106 0.1796-3.014 0.5041-1.634 0.5841-3.052 1.5416-4.471 2.4992-0.661 0.4411-1.398 0.7864-2.168 0.6932 0.096-0.0752 0.096-0.0752 0.192-0.1505-0.01 0.0856-0.01 0.0856-0.021 0.1712 2.155-1.3027 4.406-2.6808 6.787-3.6957 0.726-0.2596 1.463-0.6048 2.244-0.5972 1.4-0.0912 2.773 0.7695 4.06 1.6199z" clip-path="url(#clipPath11045)" fill="#8b8b8b" style=""/>
|
||||
<path d="m95.702 89.595c-0.3709 0.6066-0.9627 1.0536-1.3336 1.6603-0.4531 0.5809-0.7416 1.2133-1.0867 1.7377-0.7465 0.9407-1.7449 1.5314-2.4657 2.3898-0.4273 0.4986-0.8804 1.0795-1.39 1.5523-0.9676 0.7811-2.3565 0.888-3.555 0.9642-4.5215 0.2999-8.9608 0.6256-13.482 0.9255-0.7356 0.0405-1.718 0.0038-2.0311-0.7269-0.0873-0.2984-0.0664-0.6533 0.011-0.9001-0.0258 0.0823-0.0516 0.1645 0.0307 0.1903 0.0356 0.463 0.6165 0.9161 0.9664 0.6643 0.5502 0.2628 1.3681 0.248 1.9133 0.2382 4.2489-0.295 8.5236-0.6723 12.716-1.0753 0.4629-0.0356 0.9259-0.0713 1.4404-0.2715s0.8645-0.4519 1.2403-0.786c2.8771-2.2609 5.8315-4.7687 7.5726-8.0181 0.0258-0.0822 0.0516-0.1645 0.0774-0.2468l-0.1646-0.0516c0.1597-0.221 0.3758-0.334 0.5354-0.5551-0.2578 0.8228-0.5157 1.6456-0.9945 2.3088z" clip-path="url(#clipPath11039)" fill="#8b8b8b" style=""/>
|
||||
<path d="m86.618 104.33c-0.6078 1.074-1.7965 1.696-2.9029 2.343-0.108 0.056-0.108 0.056-0.2161 0.113-3.2308 0.795-6.4875 1.672-9.6569 2.847 2.7531-1.577 5.758-2.804 8.8758-3.815 0.7049-0.231 1.384-0.379 2.0581-0.801 1.6467-0.929 2.4301-2.852 3.0231-4.745-0.0208 0.355-0.1755 0.849-0.2271 1.013-0.1547 0.494-0.2836 0.905-0.4383 1.399-0.0159 0.628-0.1706 1.121-0.5157 1.646z" clip-path="url(#clipPath11033)" fill="#8b8b8b" style=""/>
|
||||
<path d="m75.872 92.514c-0.2161 0.113-0.5403 0.2825-0.7564 0.3955-0.0823-0.0258-0.1904 0.0307-0.1904 0.0307-0.7048 0.2309-1.4097 0.4618-2.0323 0.7185-1.1887 0.6214-1.9648 1.2306-2.5161 2.4132-0.2886 0.6324-0.4015 1.9285-0.6078 2.5867-0.593 1.8919-2.1548 3.1949-3.2722 4.7419-0.9836 1.409-5.2828 2.156-7.0072 3.018-1.7245 0.862-2.1556 0.862-3.4809 1.307-2.1237 0.712-2.0581 0.801-3.0871 1.201-1.3533 0.57-2.4548 1.49-3.808 2.06-0.921 0.343-1.955 0.471-2.7937 0.841-1.4355 0.544-2.532 1.736-3.7158 2.631-0.6741 0.421-1.3483 0.842-2.0531 1.073-2.3455-0.012-4.6653-0.107-6.9285-0.093 0.921-0.344 1.955-0.472 2.9632-0.517 1.3631-0.025 2.7053 0.305 4.007-0.1 1.492-0.436 2.532-1.736 3.8238-2.687 2.0176-1.536 4.5951-2.265 7.0339-3.127s4.3532-1.207 6.0367-3.119c1.5754-1.856 8.5418-2.725 9.8704-4.658 0.4531-0.58 0.8497-1.2694 1.164-1.9841 0.237-0.4679 0.3917-0.9616 0.5722-1.5375 0.2063-0.6582 0.3867-1.2342 0.6753-1.8666 0.1289-0.4114 0.3401-0.797 0.6078-1.0746 0.2935-0.3598 0.808-0.56 1.2145-0.7037 1.4355-0.5441 2.871-1.0882 4.2807-1.55z" clip-path="url(#clipPath11027)" fill="#8b8b8b" style=""/>
|
||||
<path d="m183.72 65.826c-0.428 0.1006-0.97 0.1587-1.362 0.3378-1.363 0.3378-2.66 1.0252-3.508 2.0757-0.327 0.5286-0.618 1.1357-0.831 1.707-0.633 1.5211-1.301 2.9637-1.969 4.4064-0.661 1.2499-1.33 2.6926-0.913 4.0191 0.192 0.0068 0.307 0.0494 0.499 0.0562-0.545 2.3344-0.326 4.8887 0.363 7.228 0.445 1.5977 1.276 3.2089 1.179 4.8646-0.021 0.5781-0.155 1.1135-0.211 1.6131-0.07 0.885-0.061 1.7341 0.14 2.5901 0.094 0.6206 0.38 1.2481 0.553 1.8329 0.481 1.6761 0.805 3.4238 0.78 5.2368-0.329-0.514-0.659-1.027-0.988-1.54 0 0-0.343-0.128-0.228-0.085 0.121-0.15 0.013-0.3856-0.137-0.5066-0.406 0.5646-0.811 1.1286-1.139 1.6576-1.871 2.751-3.707 5.58-5.279 8.573 0.994-3.014 2.408-5.935 4.052-8.771 0.37-0.643 0.775-1.207 0.995-1.971 0.604-1.7922-0.099-3.7461-0.923-5.55l-0.036-0.0785c-0.072-0.1568-0.179-0.3921-0.372-0.3989-0.228-0.0852-0.506 0.1365-0.706 0.3224-0.961 1.0079-1.959 1.9373-2.956 2.8668-1.275 1.1512-2.658 2.067-3.897 3.2966-1.119 1.0796-2.087 2.2806-2.977 3.4446-0.406 0.565-0.847 1.051-1.024 1.7-0.256 0.686-0.319 1.378-0.268 2.113 0.045 0.928 0.053 1.777 0.176 2.669 0.63 5.115-5.451 13.659-4.008 18.687 0.274 1.277 0 2.776-1.726 1.277-1.5-2.001-2-2-5-2-0.413 0.757-3.5-2-5-2-1-0.5-0.942 0.377-1.005 1.069-0.126 1.385-0.137 2.812 0.514 4.031-0.515-0.713-0.873-1.497-1.117-2.239-0.199 0.186-0.477 0.408-0.677 0.594-1.752 1.559-3.541 3.039-5.215 4.562 0.455-0.872 1.139-1.658 1.858-2.365 0.998-0.93 2.217-1.582 2.914-2.753 0.818-1.322 0.722-2.984 1.048-4.555 0.473-2.491 6.84 3.492 8.077 1.221 1.238-2.272 2.791-3.933 4.525-7.809 1.249-2.794 3.179-7.353 2.875-9.679-0.051-0.735-0.217-1.513-0.461-2.254-0.136-0.507-0.351-0.977-0.602-1.526-0.287-0.628-0.537-1.177-0.745-1.84-0.18-0.392-0.28-0.82-0.267-1.206-0.022-0.463 0.227-0.9562 0.433-1.3347 0.704-1.3643 1.408-2.7285 2.112-4.0927-0.085 0.2285-0.213 0.5713-0.298 0.7998-0.682 1.828-1.285 3.6202-1.196 5.4756-0.014 0.385 0.087 0.813 0.309 1.091 0.035 0.078 0.071 0.157 0.15 0.121 0.336 0.321 1.071 0.269 1.163-0.152 0.584-0.172 1.183-0.73 1.582-1.102 2.963-3.0592 5.89-6.1971 8.739-9.2992 0.32-0.336 0.641-0.6719 0.89-1.1648 0.249-0.4928 0.341-0.9139 0.397-1.4136 0.628-3.6047 1.15-7.4448 0.273-11.025-0.036-0.0785-0.072-0.1569-0.108-0.2353 0 0-0.078 0.0358-0.157 0.0716-0.029-0.2711 0.057-0.4996 0.027-0.7707-0.167-1.8194-1.262-3.5943-2.328-5.098-1.138-1.2661-1.768-1.7877-2.376-1.8202-0.692-0.0368-3.041-0.1656-4.04 1.0539-0.406 0.5644-0.381 1.7596-0.618 1.9726-0.084 0.0752-1.622 0.2984-0.372-0.2454-0.032 0.6088-2.328 6.4278-2.477 10.667-0.014 0.3853 9e-3 0.8491 0.109 1.2771 0.029 0.2711 0.137 0.5064 0.323 0.7059 0.035 0.0784 0.15 0.121 0.264 0.1636s0.157-0.0716 0.235-0.1074c2.887-1.9819 5.715-4.5059 9.318-4.9191-0.121 0.15-0.199 0.1859-0.32 0.3359-0.079 0.0359-0.121 0.1501-0.278 0.2217-1.511 1.2587-3.472 2.1542-4.718 3.5765-0.563 0.6361-1.089 1.3506-1.838 1.7872-0.984 0.5441-2.375 0.6109-3.173 1.3544-0.399 0.3718-0.726 0.9005-0.897 1.3575-0.468 1.2567-0.673 2.6771-1.256 3.8913-0.291 0.6071-0.775 1.2073-1.067 1.8144-0.042 0.1143-0.121 0.1501-0.163 0.2643-0.704 1.3643-4.044 5.8234-4.098 7.3644 0.048-1.348 3.223-5.5431 3.078-6.8987-1.589 1.2944-3.1 2.5531-4.617 4.0047 1.054-1.4294 2.257-2.7374 3.611-3.9244 0.677-0.5935 1.354-1.187 1.88-1.9015 0.976-1.3933 0.972-3.477-0.421-4.4521-0.15-0.121-0.301-0.2421-0.493-0.2488-0.95-0.4194-2.07-0.3817-3.112-0.3798-3.054 0.1625-5.958 0.446-9.019 0.8011-2.247 0.2681-4.458 0.6146-6.462 1.6243-0.157 0.0717-0.278 0.2218-0.206 0.3786-0.564-0.4057-1.228-0.1976-1.819 0.1674-0.628 0.2866-1.184 0.73-1.775 1.095-0.513 0.3292-1.027 0.6583-1.54 0.9875-2.409 1.5742-4.782 3.2269-6.97 5.079 0.89-1.1647 2.009-2.2443 3.349-3.0459 0.948-0.6225 1.967-1.0882 2.801-1.7533 0.912-0.701 1.524-1.644 2.436-2.345 0.435-0.2933 0.948-0.6225 1.347-0.9943-1.113-0.155-2.191-0.2315-3.304-0.3865 0.813-0.0871 1.626-0.1742 2.44-0.2613 1.006-0.0803 1.976-0.239 2.946-0.3978 2.411-0.5323 4.735-1.8781 7.211-2.0609 0.192 0.0068 0.385 0.0136 0.578 0.0204-0.121 0.15-0.278 0.2217-0.399 0.3718 0.114 0.0426 0.271-0.0291 0.385 0.0135 2.156 0.1531 4.403-0.1149 6.5-0.504 1.862-0.2817 3.881-0.6349 5.199-1.9004 0.399-0.3718 0.762-0.822 1.161-1.1937 0.399-0.3718 1.062-0.58 1.597-0.4453-0.026-2.5475-0.521-5.3825 1.131-7.3692 1.289-1.5365 0.985-3.6117 2.523-3.8349-0.641 0.5763-0.864-0.962-0.191-2.1472 0.674-1.1851 6.001-1.6866 7.551-0.7832 1.436 0.8609 2.544 2.2504 3.032 3.7338 0.036 0.0785 0.036 0.0785 0.072 0.1569 1.159-2.2356 2.361-4.5855 3.863-6.6933 0.484-0.6003 0.932-1.279 1.602-1.6798 1.327-0.4163 2.947-0.3978 4.488-0.3434z" clip-path="url(#clipPath11021)" fill="#5c5a5a" style=""/>
|
||||
<path d="m163 71.822c0.087 0.8133 0.285 1.2484-0.013 2.0481-0.597 1.5995-1.241 1.9619-2.066 3.4762-0.832 1.707-0.911 2.611-1.172 4.531-0.112 0.9993-0.146 1.9627-0.102 2.8903-0.764-0.2199-1.965 1.2618-2.563 1.8195-0.598 0.5576-1.125 1.2722-1.867 1.5161-0.82 0.2798-1.662 0.0958-2.512 0.1044-0.927 0.0445-1.826 0.3601-2.76 0.5973-1.905 0.3959-3.825 0.1353-5.702-0.2395 0.078-0.0359 0.078-0.0359 0.157-0.0717 2.155 0.1531 4.402-0.1149 6.5-0.504 1.862-0.2817 3.88-0.635 5.198-1.9004 0.399-0.3718 0.762-0.822 1.161-1.1938 0.399-0.3717 1.472-1.5107 2.008-1.376-0.026-2.5475-0.455-4.3569 1.197-6.3436 1.289-1.5366 1.186-2.0832 1.946-3.9471 0.242-0.3001 0.455-0.8714 0.59-1.4068z" clip-path="url(#clipPath11015)" fill="#8b8b8b" style=""/>
|
||||
<path d="m171.21 81.208c-0.121 0.1501-0.199 0.1859-0.32 0.3359-0.079 0.0359-0.121 0.1501-0.278 0.2218l-0.079 0.0358c-0.585 0.1723-1.169 0.3446-1.761 0.7096-0.471 0.2149-0.984 0.5441-1.419 0.8374-1.896 1.2451-3.576 2.9607-5.766 3.771-0.251-0.549-0.501-1.098-0.559-1.6402 0.029 0.2711 0.136 0.5064 0.322 0.7058 0.036 0.0785 0.15 0.1211 0.264 0.1637 0.115 0.0426 0.157-0.0716 0.236-0.1075 2.893-2.1745 5.757-4.6201 9.36-5.0333z" clip-path="url(#clipPath11009)" fill="#8b8b8b" style=""/>
|
||||
<path d="m157.95 91.157c0.286 0.6274 0.373 1.4407 0.232 2.1689-0.142 0.7281-0.554 1.4852-0.774 2.2492-0.043 0.1142-0.121 0.15-0.164 0.2643-0.704 1.3642-3.677 5.2905-3.731 6.8315 0.047-1.349 2.857-5.0103 2.712-6.3659-1.589 1.2945-3.148 2.7418-4.665 4.1929 1.053-1.4288 2.305-2.9256 3.659-4.1126 0.677-0.5935 1.353-1.1869 1.88-1.9015 0.975-1.3932 0.972-3.4769-0.422-4.452-0.15-0.1211-0.3-0.2421-0.492-0.2489 0.421 0.092 0.763 0.2198 1.064 0.4619 0.264 0.1637 0.521 0.52 0.701 0.9122z" clip-path="url(#clipPath11003)" fill="#8b8b8b" style=""/>
|
||||
<path d="m144.68 87.909c-0.177 0.6497-0.889 1.1647-1.396 1.3012-0.934 0.2372-1.904 0.3959-2.953 0.5905-0.856 0.2013-1.748 0.3242-2.568 0.604-2.032 0.7386-3.778 2.1047-5.26 3.6345 0 0-0.078 0.0358-0.042 0.1142-2.409 1.5742-4.783 3.2269-6.97 5.079 0.89-1.1647 2.008-2.2443 3.348-3.0459 0.948-0.6225 1.968-1.0882 2.802-1.7533 0.912-0.701 1.524-1.644 2.436-2.345 0.435-0.2933 0.948-0.6225 1.347-0.9943-1.114-0.155-2.191-0.2315-3.305-0.3865 0.813-0.0871 1.627-0.1742 2.44-0.2613 1.006-0.0803 1.976-0.239 2.947-0.3978 2.417-0.725 4.699-1.9565 7.174-2.1393z" clip-path="url(#clipPath10997)" fill="#8b8b8b" style=""/>
|
||||
<path d="m183.72 65.826c-0.428 0.1007-0.97 0.1587-1.362 0.3378-0.814 0.0871-1.513 0.2168-2.261 0.6535-0.905 0.5082-1.703 1.2518-2.309 2.0022-1.089 1.3506-1.8 2.9075-2.511 4.4644-0.334 0.7213-0.782 1.4001-1.488 1.7224 0.043-0.1142 0.043-0.1142 0.085-0.2285 0.036 0.0785 0.036 0.0785 0.072 0.1569 1.159-2.2356 2.361-4.5855 3.863-6.6933 0.484-0.6003 0.932-1.279 1.602-1.6798 1.148-0.8084 2.768-0.7899 4.309-0.7356z" clip-path="url(#clipPath10991)" fill="#8b8b8b" style=""/>
|
||||
<path d="m174.11 80.265c0.13 0.6991-0.012 1.4272 0.118 2.1263 0.051 0.7349 0.259 1.3982 0.353 2.0188 0.074 1.1987-0.274 2.3054-0.236 3.4257 0.015 0.6564 0.067 1.3913 4e-3 2.0836-0.198 1.2278-1.16 2.2357-2 3.0935-3.163 3.2454-6.247 6.4549-9.409 9.6999-0.52 0.522-1.275 1.152-1.997 0.817-0.264-0.163-0.486-0.441-0.593-0.676 0.036 0.078 0.071 0.156 0.15 0.121 0.336 0.32 1.071 0.269 1.163-0.152 0.584-0.173 1.183-0.73 1.582-1.102 2.963-3.0595 5.89-6.1974 8.739-9.2995 0.32-0.336 0.641-0.672 0.89-1.1648s0.341-0.914 0.397-1.4136c0.628-3.6048 1.15-7.4448 0.273-11.026-0.036-0.0784-0.072-0.1568-0.108-0.2353 0 0-0.078 0.0358-0.157 0.0717-0.029-0.2712 0.057-0.4997 0.028-0.7708 0.358 0.7843 0.716 1.5686 0.803 2.382z" clip-path="url(#clipPath10985)" fill="#8b8b8b" style=""/>
|
||||
<path d="m176.7 97.565c0.266 1.2055-0.203 2.462-0.593 3.683-0.043 0.114-0.043 0.114-0.085 0.229-1.872 2.75-3.708 5.58-5.28 8.572 0.994-3.013 2.409-5.934 4.052-8.77 0.37-0.643 0.776-1.207 0.995-1.9711 0.604-1.7922-0.099-3.7462-0.923-5.5501 0.222 0.2779 0.437 0.7484 0.508 0.9053 0.215 0.4706 0.394 0.8627 0.609 1.3333 0.408 0.4774 0.623 0.948 0.717 1.5686z" clip-path="url(#clipPath10979)" fill="#8b8b8b" style=""/>
|
||||
<path d="m160.81 95.963c-0.086 0.2285-0.213 0.5712-0.299 0.7997-0.078 0.0359-0.121 0.1501-0.121 0.1501-0.37 0.6429-0.739 1.2858-1.031 1.8929-0.469 1.2563-0.639 2.2283-0.258 3.4763 0.208 0.664 0.99 1.703 1.277 2.331 0.823 1.803 0.533 3.816 0.736 5.714 0.21 1.705-2.489 5.134-3.195 6.928s-1.027 2.083-1.715 3.299c-1.104 1.949-0.996 1.971-1.494 2.957-0.625 1.328-0.712 1.989-2.212 2.489-2 0-4.493-2.5-6.5-2.5-1.143 0.866-0.512 1.494-0.795 2.95-0.22 0.764-0.44 1.528-0.81 2.171-1.752 1.558-3.541 3.039-5.215 4.562 0.455-0.872 1.139-1.658 1.858-2.366 0.997-0.929 2.217-1.581 2.914-2.752 0.818-1.322 0.722-2.984 1.048-4.555 0.473-2.491 7.435 3.316 8.672 1.045 1.238-2.272 2.431-3.808 2.405-6.356-0.068-2.433 4.532-7.735 4.228-10.061-0.051-0.735-0.216-1.513-0.46-2.254-0.137-0.507-0.352-0.977-0.602-1.526-0.287-0.628-0.538-1.177-0.746-1.84-0.179-0.392-0.28-0.82-0.266-1.206-0.022-0.463 0.227-0.956 0.433-1.3348 0.704-1.3642 1.408-2.7284 2.148-4.0142z" clip-path="url(#clipPath10973)" fill="#8b8b8b" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 58 KiB |
|
|
@ -0,0 +1,626 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="400" fill="none" version="1.1" viewBox="0 0 400 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Centrifugal pump",
|
||||
"description": "Centrifugal pump with configurable connectors, running animation and various states.",
|
||||
"searchTags": [
|
||||
"pump",
|
||||
"centrifugal"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.critical) {\n color = ctx.properties.criticalColor;\n} else if (ctx.values.warning) {\n color = ctx.properties.warningColor;\n} else if (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "center",
|
||||
"stateRenderFunction": "var running = ctx.values.running;\nvar speed = ctx.values.rotationAnimationSpeed;\nvar centerRotate = ctx.api.cssAnimation(element);\nif (running) {\n if (!centerRotate) {\n centerRotate = ctx.api.cssAnimate(element, 2000)\n .rotate(360).loop().speed(speed);\n } else {\n centerRotate.speed(speed).play();\n }\n} else {\n if (centerRotate) {\n centerRotate.pause();\n }\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "leftBottomConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.leftBottomConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "leftTopConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.leftTopConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "rightBottomConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.rightBottomConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "rightTopConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.rightTopConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "topLeftConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.topLeftConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "topRightConnector",
|
||||
"stateRenderFunction": "if (ctx.properties.topRightConnector) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning-state}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical-state}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rotationAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.rotation-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.rotation-animation-speed-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"openInSeparateDialog": false,
|
||||
"openInPopover": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "rightTopConnector",
|
||||
"name": "{i18n:scada.symbol.right-top-connector}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"required": null,
|
||||
"subLabel": "",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "rightBottomConnector",
|
||||
"name": "{i18n:scada.symbol.right-bottom-connector}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"required": null,
|
||||
"subLabel": "",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "leftTopConnector",
|
||||
"name": "{i18n:scada.symbol.left-top-connector}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "leftBottomConnector",
|
||||
"name": "{i18n:scada.symbol.left-bottom-connector}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "topLeftConnector",
|
||||
"name": "{i18n:scada.symbol.top-left-connector}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "topRightConnector",
|
||||
"name": "{i18n:scada.symbol.top-right-connector}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.running-color}",
|
||||
"type": "color",
|
||||
"default": "#1C943E",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.stopped-color}",
|
||||
"type": "color",
|
||||
"default": "#696969",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.warning-color}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.critical-color}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="50" y="371" width="300" height="29" rx="7" fill="#fff"/><rect x="50" y="371" width="300" height="29" rx="7" fill="url(#paint0_linear_1481_75415)"/><rect x="51.5" y="372.5" width="297" height="26" rx="5.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><path d="m103 274h194l32 100h-258l32-100z" fill="#fff"/><path d="m103 274h194l32 100h-258l32-100z" fill="url(#paint1_linear_1481_75415)"/><path d="m73.055 372.5 31.04-97h191.81l31.04 97h-253.89z" stroke="#000" stroke-opacity=".12" stroke-width="3"/><g tb:tag="rightTopConnector">
|
||||
<rect x="200" y="64" width="186" height="72" fill="#fff"/>
|
||||
<rect x="200" y="64" width="186" height="72" fill="url(#paint2_linear_1481_75415)"/>
|
||||
<rect x="201.5" y="65.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="387.5" y="51.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3"/>
|
||||
</g><g style="display: none;" tb:tag="rightBottomConnector">
|
||||
<rect x="200" y="264" width="186" height="72" fill="#fff" style=""/>
|
||||
<rect x="200" y="264" width="186" height="72" fill="url(#paint3_linear_1481_75415)" style=""/>
|
||||
<rect x="201.5" y="265.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
<rect x="387.5" y="251.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3" style=""/>
|
||||
</g><g style="display: none;" tb:tag="topRightConnector">
|
||||
<rect transform="rotate(-90 264 200)" x="264" y="200" width="186" height="72" fill="#fff" style=""/>
|
||||
<rect transform="rotate(-90 264 200)" x="264" y="200" width="186" height="72" fill="url(#paint4_linear_1481_75415)" style=""/>
|
||||
<rect transform="rotate(-90 265.5 198.5)" x="265.5" y="198.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
<rect transform="rotate(-90 251.5 12.5)" x="251.5" y="12.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3" style=""/>
|
||||
</g><g style="display: none;" tb:tag="topLeftConnector">
|
||||
<rect transform="rotate(-90 64 200)" x="64" y="200" width="186" height="72" fill="#fff" style=""/>
|
||||
<rect transform="rotate(-90 64 200)" x="64" y="200" width="186" height="72" fill="url(#paint5_linear_1481_75415)" style=""/>
|
||||
<rect transform="rotate(-90 65.5 198.5)" x="65.5" y="198.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
<rect transform="rotate(-90 51.5 12.5)" x="51.5" y="12.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3" style=""/>
|
||||
</g><g style="display: none;" tb:tag="leftTopConnector">
|
||||
<rect x="14" y="64" width="186" height="72" fill="#fff" style=""/>
|
||||
<rect x="14" y="64" width="186" height="72" fill="url(#paint6_linear_1481_75415)" style=""/>
|
||||
<rect x="15.5" y="65.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3" style=""/>
|
||||
<rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3" style=""/>
|
||||
</g><g tb:tag="leftBottomConnector">
|
||||
<rect x="14" y="264" width="186" height="72" fill="#fff"/>
|
||||
<rect x="14" y="264" width="186" height="72" fill="url(#paint7_linear_1481_75415)"/>
|
||||
<rect x="15.5" y="265.5" width="183" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="1.5" y="251.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3"/>
|
||||
</g><circle cx="200" cy="186" r="178" fill="#fff"/><circle cx="200" cy="186" r="178" fill="url(#paint8_linear_1481_75415)"/><circle cx="200" cy="186" r="176" stroke="#000" stroke-opacity=".12" stroke-width="4"/><path d="m308 186c0 59.647-48.353 108-108 108s-108-48.353-108-108 48.353-108 108-108 108 48.353 108 108z" fill="#1C943E" tb:tag="background"/><path d="m308 186c0 59.647-48.353 108-108 108s-108-48.353-108-108 48.353-108 108-108 108 48.353 108 108z" fill="url(#paint9_radial_1481_75415)" fill-opacity=".8"/><path d="m306.5 186c0 58.818-47.681 106.5-106.5 106.5-58.818 0-106.5-47.682-106.5-106.5s47.682-106.5 106.5-106.5c58.819 0 106.5 47.682 106.5 106.5z" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="200" cy="186" r="54" fill="url(#paint10_radial_1481_75415)" fill-opacity=".8"/><circle cx="200" cy="186" r="52.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><g tb:tag="center">
|
||||
<rect x="196" y="81" width="8" height="51" rx="4" fill="url(#paint11_linear_1481_75415)" style="fill:url(#paint11_linear_1481_75415)"/>
|
||||
<rect x="197.5" y="82.5" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="rotate(-45 122 115.66)" x="122" y="115.66" width="8" height="51" rx="4" fill="url(#paint12_linear_1481_75415)" style="fill:url(#paint12_linear_1481_75415)"/>
|
||||
<rect transform="rotate(-45 124.12 115.66)" x="124.12" y="115.66" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="matrix(.70711 .70711 .70711 -.70711 122 256.06)" width="8" height="51" rx="4" fill="url(#paint13_linear_1481_75415)" style="fill:url(#paint13_linear_1481_75415)"/>
|
||||
<rect transform="matrix(.70711 .70711 .70711 -.70711 122.62 254.56)" x="2.1213" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="matrix(-.70711 -.70711 -.70711 .70711 277.72 115.66)" width="8" height="51" rx="4" fill="url(#paint13_linear_1481_75415)" style="fill:url(#paint13_linear_1481_75415)"/>
|
||||
<rect transform="matrix(-.70711 -.70711 -.70711 .70711 274.1 114.16)" x="-2.1213" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="rotate(135 277.72 256.06)" x="277.72" y="256.06" width="8" height="51" rx="4" fill="url(#paint15_linear_1481_75415)" style="fill:url(#paint15_linear_1481_75415)"/>
|
||||
<rect transform="rotate(135 275.6 256.06)" x="275.6" y="256.06" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="196" y="240" width="8" height="51" rx="4" fill="url(#paint16_linear_1481_75415)" style="fill:url(#paint16_linear_1481_75415)"/>
|
||||
<rect x="197.5" y="241.5" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="rotate(-90,254,190)" x="254" y="190" width="8" height="51" rx="4" fill="url(#paint17_linear_1481_75415)" style="fill:url(#paint17_linear_1481_75415)"/>
|
||||
<rect transform="rotate(-90,255.5,188.5)" x="255.5" y="188.5" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect transform="rotate(-90 95 190)" x="95" y="190" width="8" height="51" rx="4" fill="url(#paint18_linear_1481_75415)" style="fill:url(#paint18_linear_1481_75415)"/>
|
||||
<rect transform="rotate(-90 96.5 188.5)" x="96.5" y="188.5" width="5" height="48" rx="2.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
</g><path d="m314 186c0 62.96-51.039 114-114 114-62.96 0-114-51.04-114-114s51.04-114 114-114c62.961 0 114 51.04 114 114zm-222.02 0c0 59.659 48.363 108.02 108.02 108.02 59.659 0 108.02-48.363 108.02-108.02s-48.363-108.02-108.02-108.02c-59.658 0-108.02 48.363-108.02 108.02z" fill="url(#paint19_linear_1481_75415)"/><path d="m314 186c0 62.96-51.039 114-114 114-62.96 0-114-51.04-114-114s51.04-114 114-114c62.961 0 114 51.04 114 114zm-222.02 0c0 59.659 48.363 108.02 108.02 108.02 59.659 0 108.02-48.363 108.02-108.02s-48.363-108.02-108.02-108.02c-59.658 0-108.02 48.363-108.02 108.02z" fill="url(#paint19_linear_1481_75415)"/><circle cx="200" cy="40" r="12" fill="url(#paint21_linear_1481_75415)" fill-opacity=".8"/><circle cx="200" cy="40" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="200" cy="332" r="12" fill="url(#paint22_linear_1481_75415)" fill-opacity=".8"/><circle cx="200" cy="332" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="346" cy="186" r="12" fill="url(#paint23_linear_1481_75415)" fill-opacity=".8"/><circle cx="346" cy="186" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="305" cy="84" r="12" fill="url(#paint24_linear_1481_75415)" fill-opacity=".8"/><circle cx="305" cy="84" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="303" cy="287" r="12" fill="url(#paint25_linear_1481_75415)" fill-opacity=".8"/><circle cx="303" cy="287" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="98" cy="84" r="12" fill="url(#paint26_linear_1481_75415)" fill-opacity=".8"/><circle cx="98" cy="84" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="98" cy="287" r="12" fill="url(#paint27_linear_1481_75415)" fill-opacity=".8"/><circle cx="98" cy="287" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><circle cx="54" cy="186" r="12" fill="url(#paint28_linear_1481_75415)" fill-opacity=".8"/><circle cx="54" cy="186" r="10.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><defs>
|
||||
<linearGradient id="paint0_linear_1481_75415" x1="56.818" x2="67.377" y1="385.5" y2="439.46" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" stop-opacity=".2" offset="0"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1481_75415" x1="329" x2="71.146" y1="324.62" y2="318.06" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1481_75415" x1="248.36" x2="248.18" y1="64" y2="136.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_1481_75415" x1="248.36" x2="248.18" y1="264" y2="336.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_1481_75415" x1="312.36" x2="312.18" y1="200" y2="272.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_1481_75415" x1="112.36" x2="112.18" y1="200" y2="272.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_1481_75415" x1="62.36" x2="62.184" y1="64" y2="136.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_1481_75415" x1="62.36" x2="62.184" y1="264" y2="336.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_1481_75415" x1="79.85" x2="329.05" y1="52.5" y2="323.95" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="paint9_radial_1481_75415" cx="0" cy="0" r="1" gradientTransform="translate(200 186) rotate(55.856) scale(105.12)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity="0" offset="0"/>
|
||||
<stop stop-color="#fff" stop-opacity=".15" offset=".73347"/>
|
||||
<stop stop-color="#020202" stop-opacity=".2" offset="1"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint10_radial_1481_75415" cx="0" cy="0" r="1" gradientTransform="translate(200 186) rotate(44.226) scale(52.331)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="paint11_linear_1481_75415" x1="200.06" x2="212.53" y1="81" y2="84.259" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_1481_75415" x1="126.06" x2="138.53" y1="115.66" y2="118.92" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_1481_75415" x1="4.0579" x2="16.532" y1=".00011564" y2="3.2593" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint15_linear_1481_75415" x1="281.78" x2="294.25" y1="256.06" y2="259.32" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint16_linear_1481_75415" x1="200.06" x2="212.53" y1="240" y2="243.26" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="0"/>
|
||||
<stop stop-color="#fff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint17_linear_1481_75415" x1="258.06" x2="270.53" y1="190" y2="193.26" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="0"/>
|
||||
<stop stop-color="#fff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint18_linear_1481_75415" x1="99.058" x2="111.53" y1="190" y2="193.26" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".65" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint19_linear_1481_75415" x1="86" x2="314" y1="186" y2="186" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F4F4F4" offset="0"/>
|
||||
<stop stop-color="#EBE7E7" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint21_linear_1481_75415" x1="191.44" x2="206.56" y1="32" y2="49.667" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint22_linear_1481_75415" x1="191.44" x2="206.56" y1="324" y2="341.67" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint23_linear_1481_75415" x1="337.44" x2="352.56" y1="178" y2="195.67" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint24_linear_1481_75415" x1="296.44" x2="311.56" y1="76" y2="93.667" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint25_linear_1481_75415" x1="294.44" x2="309.56" y1="279" y2="296.67" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint26_linear_1481_75415" x1="89.445" x2="104.56" y1="76" y2="93.667" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint27_linear_1481_75415" x1="89.445" x2="104.56" y1="279" y2="296.67" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint28_linear_1481_75415" x1="45.445" x2="60.556" y1="178" y2="195.67" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs><circle cx="200" cy="186" r="178" fill="#000" fill-opacity="0" tb:tag="clickArea"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
|
@ -0,0 +1,346 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Consumers",
|
||||
"description": "Consumers with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<path d="m21 240.65c0-1.409 0.5943-2.752 1.6366-3.699l104-94.546c1.907-1.734 4.819-1.734 6.726 0l104 94.546c1.043 0.947 1.637 2.29 1.637 3.699v131.35c0 2.761-2.239 5-5 5h-208c-2.7614 0-5-2.239-5-5v-131.35z"/>
|
||||
<path d="m130.68 141.26-0.678-0.626-0.678 0.626-112.38 103.74h-14.385l127.44-117.64 127.44 117.64h-14.384l-112.38-103.74z"/>
|
||||
</g><rect x="56" y="307" width="44" height="70" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m80 240c0-0.552 0.4477-1 1-1h18c0.5523 0 1 0.448 1 1v44c0 0.552-0.4477 1-1 1h-18c-0.5523 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m170 240c0-0.552 0.448-1 1-1h18c0.552 0 1 0.448 1 1v44c0 0.552-0.448 1-1 1h-18c-0.552 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m170 308c0-0.552 0.448-1 1-1h18c0.552 0 1 0.448 1 1v44c0 0.552-0.448 1-1 1h-18c-0.552 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m56 240c0-0.552 0.4477-1 1-1h18c0.5523 0 1 0.448 1 1v44c0 0.552-0.4477 1-1 1h-18c-0.5523 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m146 240c0-0.552 0.448-1 1-1h18c0.552 0 1 0.448 1 1v44c0 0.552-0.448 1-1 1h-18c-0.552 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect transform="rotate(-90 194 285)" x="194" y="285" width="46" height="20" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m146 308c0-0.552 0.448-1 1-1h18c0.552 0 1 0.448 1 1v44c0 0.552-0.448 1-1 1h-18c-0.552 0-1-0.448-1-1v-44z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect transform="rotate(-90 194 353)" x="194" y="353" width="46" height="20" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m129.26 178.32c0.397-0.442 1.089-0.442 1.486 0l0.744-0.669-0.744 0.669 13.51 15.01c0.579 0.644 0.122 1.669-0.744 1.669h-27.018c-0.866 0-1.323-1.025-0.744-1.669l13.51-15.01z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m425 176v1.804l1.53-0.956 60.94-38.088c0.666-0.416 1.53 0.063 1.53 0.848v37.392h85c2.761 0 5 2.239 5 5v190c0 2.761-2.239 5-5 5h-217c-2.761 0-5-2.239-5-5v-194.8c0-0.369 0.204-0.709 0.529-0.882l71-37.867c0.667-0.355 1.471 0.127 1.471 0.882v36.667z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m519.88 19.938c0.033-0.527 0.47-0.9376 0.998-0.9376h30.242c0.528 0 0.965 0.4106 0.998 0.9376l9.75 156c0.036 0.575-0.421 1.062-0.998 1.062h-49.742c-0.577 0-1.034-0.487-0.998-1.062l9.75-156z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="429" y="236" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="385" y="236" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="429" y="280" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="385" y="280" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="473" y="236" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="473" y="280" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="517" y="236" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="517" y="280" width="38" height="38" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m190 6c0-2.7614 2.239-5 5-5h210c2.761 0 5 2.2386 5 5v366c0 2.761-2.239 5-5 5h-210c-2.761 0-5-2.239-5-5v-366z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="304" y="57" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="304" y="165" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="304" y="111" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="304" y="219" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="210" y="57" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="210" y="165" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="210" y="111" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="210" y="219" width="86" height="36" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="251" y="286" width="98" height="91" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="1" y="377" width="598" height="22" rx="5" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m201.8 0s-201.8 0-201.8 67v328.36c0 2.6512 5.3727 4.6403 12 4.6403h576c6.627 0 12-1.9892 12-4.6403v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 320.94)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1,332 @@
|
|||
<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": "HP Control panel",
|
||||
"description": "Sends the command to the device or updates attribute/time series when the user pushes the button. Widget settings will enable you to configure behavior, how to fetch the initial state, and what to trigger when power on/off states.",
|
||||
"searchTags": [
|
||||
"control"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.background);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.label) {\n element.show();\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, ctx.properties.labelText);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "offButton",
|
||||
"stateRenderFunction": "var offButtonChildren = element.children();\nif(ctx.values.value){\n ctx.api.enable(element);\n offButtonChildren[0].fill(ctx.properties.defaultButtonColor);\n} else {\n ctx.api.disable(element);\n offButtonChildren[0].fill(ctx.properties.activeButtonColor);\n}\n\noffButtonChildren[1].stroke(ctx.properties.borderButtonColor);\n\nif (!ctx.properties.label) {\n element.transform({translateY: -37});\n}",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.disable(element);\nctx.api.callAction(event, 'offUpdateState', undefined, {\n next: () => {\n ctx.api.setValue('value', false);\n },\n error: () => {\n ctx.api.enable(element);\n } \n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "offLabel",
|
||||
"stateRenderFunction": "ctx.api.text(element, ctx.properties.offLabelText);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "onButton",
|
||||
"stateRenderFunction": "var onButtonChildren = element.children();\nif(ctx.values.value){\n ctx.api.disable(element);\n onButtonChildren[0].fill(ctx.properties.activeButtonColor);\n} else {\n ctx.api.enable(element);\n onButtonChildren[0].fill(ctx.properties.defaultButtonColor);\n}\nonButtonChildren[1].stroke(ctx.properties.borderButtonColor);\nif (!ctx.properties.label) {\n element.transform({translateY: -37});\n}",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.disable(element);\nctx.api.callAction(event, 'onUpdateState', undefined, {\n next: () => {\n ctx.api.setValue('value', true);\n },\n error: () => {\n ctx.api.enable(element);\n } \n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "onLabel",
|
||||
"stateRenderFunction": "ctx.api.text(element, ctx.properties.onLabelText);",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "value",
|
||||
"name": "On/Off state",
|
||||
"hint": null,
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "On",
|
||||
"falseLabel": "Off",
|
||||
"stateLabel": "On",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "value"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "onUpdateState",
|
||||
"name": "On update state",
|
||||
"hint": null,
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "value"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "offUpdateState",
|
||||
"name": "Off update state",
|
||||
"hint": null,
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "value"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "background",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "labelText",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "Heat pump",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "flex",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 56,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#000000DE",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "onLabelText",
|
||||
"name": "{i18n:scada.symbol.on-label}",
|
||||
"type": "text",
|
||||
"default": "On",
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "flex",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "offLabelText",
|
||||
"name": "{i18n:scada.symbol.off-label}",
|
||||
"type": "text",
|
||||
"default": "Off",
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "flex",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "activeButtonColor",
|
||||
"name": "{i18n:scada.symbol.button-color}",
|
||||
"type": "color",
|
||||
"default": "#999999",
|
||||
"required": null,
|
||||
"subLabel": "Active",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "defaultButtonColor",
|
||||
"name": "{i18n:scada.symbol.button-color}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"required": null,
|
||||
"subLabel": "Default",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "borderButtonColor",
|
||||
"name": "{i18n:scada.symbol.button-color}",
|
||||
"type": "color",
|
||||
"default": "#999999",
|
||||
"required": null,
|
||||
"subLabel": "Border",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect width="400" height="200" rx="8" fill="#dedede" tb:tag="background"/><rect x="1" y="1" width="398" height="198" rx="7" stroke="#000" stroke-opacity=".87" stroke-width="2"/><text x="198.7832" y="57.511719" fill="#000000" font-family="Roboto, sans-serif" font-size="56px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="preserve"><tspan dominant-baseline="middle">Heat pump</tspan></text><g tb:tag="onButton">
|
||||
<rect x="29" y="100" width="156" height="72" rx="9.8143" fill="#999" style="stroke-width:.95761"/>
|
||||
<path d="m29.957 109.03c0-4.4589 3.9482-8.0734 8.8189-8.0734h136.45c4.8707 0 8.8189 3.6144 8.8189 8.0734v53.938c0 4.4589-3.9482 8.0743-8.8189 8.0743h-136.45c-4.8707 0-8.8189-3.6153-8.8189-8.0743z" shape-rendering="crispEdges" stroke="#999" stroke-width="1.9147"/>
|
||||
<text x="107.44609" y="138.7375" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="500" text-anchor="middle" tb:tag="onLabel" xml:space="preserve"><tspan dominant-baseline="middle">On</tspan></text>
|
||||
</g><g tb:tag="offButton">
|
||||
<rect x="214" y="100" width="156" height="72" rx="9.8143" fill="#dedede" style="stroke-width:.95761"/>
|
||||
<path d="m214.96 109.03c0-4.4589 3.9482-8.0734 8.8189-8.0734h136.45c4.8707 0 8.8189 3.6144 8.8189 8.0734v53.938c0 4.4589-3.9482 8.0743-8.8189 8.0743h-136.45c-4.8707 0-8.8189-3.6153-8.8189-8.0743z" shape-rendering="crispEdges" stroke="#999" stroke-width="1.9147"/>
|
||||
<text x="290.68408" y="139.33516" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="500" text-anchor="middle" tb:tag="offLabel" xml:space="preserve"><tspan dominant-baseline="middle">Off</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -0,0 +1,346 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="1e3" height="1200" fill="none" version="1.1" viewBox="0 0 1e3 1200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Crane",
|
||||
"description": "Crane with various states.",
|
||||
"searchTags": [
|
||||
"crane"
|
||||
],
|
||||
"widgetSizeX": 5,
|
||||
"widgetSizeY": 6,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1a1a1a" stroke-width="2" tb:tag="background">
|
||||
<path d="m999 1101h-518v98h518z"/>
|
||||
<path d="m89 301h-88v38h88z"/>
|
||||
<path d="m38.637 353.25c1.8257-2.795 3.0211-5.169 3.5801-7.616 0.4834-2.115 0.4778-4.225 0.0646-6.636h22.765c0.4236 2.76 0.5531 8.434-2.4543 17.437-1.0074 3.015-3.2478 5.918-6.1765 8.829-2.4452 2.43-5.2981 4.799-8.1981 7.207-0.57 0.473-1.1418 0.948-1.7126 1.425-3.4492 2.882-6.8589 5.843-9.4634 8.969s-4.4841 6.511-4.7352 10.25c-0.4781 7.123 1.5349 12.183 4.5904 15.755 3.0323 3.545 7.0211 5.546 10.381 6.711 2.6292 0.911 7.97 1.542 12.913-0.172 2.4934-0.865 4.9095-2.335 6.8093-4.687 1.9017-2.355 3.2394-5.537 3.6645-9.748 0.2685-2.66 0.4677-4.993 0.639-7.001 0.0914-1.07 0.1749-2.048 0.2566-2.933 0.2394-2.589 0.4634-4.351 0.8094-5.493 0.345-1.138 0.6919-1.294 0.9494-1.334 0.2122-0.033 0.5457-0.012 1.0684 0.146 0.5169 0.156 1.1513 0.424 1.9388 0.814 8.6238 4.272 11.837 11.217 12.524 18.027 0.6932 6.867-1.1952 13.571-2.7777 17.098-6.6047 14.722-20.145 23.7-37.326 23.7-10.333 0-18.218-1.819-24.553-5.103-6.3316-3.283-11.186-8.065-15.404-14.105-3.3703-4.826-6.7534-12.808-7.5927-21.713-0.83751-8.887 0.86149-18.628 7.5566-27.085 6.2949-7.951 12.501-11.818 17.718-14.561 0.9365-0.492 1.8598-0.957 2.7531-1.407 1.5646-0.788 3.0372-1.53 4.3284-2.291 2.0627-1.216 3.8384-2.576 5.0837-4.483z"/>
|
||||
</g><path d="m559.64 1101-515.24-1098.3 341.87 221.97 538.94 876.28z" stroke="#1a1a1a" stroke-width="2"/><path d="m148 225h237" stroke="#1a1a1a" stroke-width="2"/><path d="m249 438h269" stroke="#1a1a1a" stroke-width="2"/><path d="m362 680h304" stroke="#1a1a1a" stroke-width="2"/><path d="m491 955h344" stroke="#1a1a1a" stroke-width="2"/><path d="m249 437.92 136.32-212.92" stroke="#1a1a1a" stroke-width="2"/><path d="m362 680.92 155.32-242.92" stroke="#1a1a1a" stroke-width="1.9997"/><path d="m492 954.92 175.31-274.92" stroke="#1a1a1a" stroke-width="2.0018"/><path d="m44 2v299" stroke="#1a1a1a" stroke-width="2"/><path d="m336.32 0s-336.32 0-336.32 201v985.08c0 7.9536 8.9545 13.921 20 13.921h960c11.045 0 20-5.9676 20-13.921v-985.08c0-201-330.35-201-330.35-201h-169.65zm335.35 243.6c-6.4435 0-11.667 3.7608-11.667 8.4v901.2c0 4.6392 5.2235 8.4 11.667 8.4h73.33c6.4435 0 11.667-3.7608 11.667-8.4v-901.2c0-4.6392-5.2235-8.4-11.667-8.4z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,586 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Cross connector",
|
||||
"description": "Cross connector",
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "const {\n flowAnimationWidth: lineWidth,\n flowAnimationColor: lineColor,\n flowStyleDash: dashWidth,\n flowStyleGap: dashGap,\n flowDashCap: dashCap\n} = ctx.properties;\n\nconst leftLine = \"M0 100H100\";\nconst leftLineReversed = \"M 100,100 H 0\";\nconst topLine = \"M100 97L100 0\";\nconst topLineReversed = \"M 100,0 V 97\";\nconst rightLine = \"M100 100H200\";\nconst rightLineReversed = \"M 200,100 H 100\";\nconst bottomLine = \"M 100,200 V 103\";\nconst bottomLineReversed = \"M 100,103 V 200\";\n\nprepareFlowAnimation('left', leftLine, leftLineReversed);\nprepareFlowAnimation('top', topLine, topLineReversed);\nprepareFlowAnimation('right', rightLine, rightLineReversed);\nprepareFlowAnimation('bottom', bottomLine, bottomLineReversed);\n\nfunction prepareFlowAnimation(prefix, line, reversedLine) {\n const flowAnimation = ctx.values[prefix + 'Flow'];\n const flowDirection = ctx.values[prefix + 'FlowDirection'];\n const flowAnimationSpeed = ctx.values[prefix + 'FlowAnimationSpeed'];\n\n const animation = ctx.tags[prefix + 'Line'][0];\n const duration = 1 / flowAnimationSpeed;\n \n let animateFlow = ctx.api.connectorAnimation(animation);\n \n if (flowAnimation) {\n if (!animateFlow) {\n animateFlow = ctx.api.connectorAnimate(animation, line, reversedLine).flowAppearance(lineWidth, lineColor, dashCap, dashWidth, dashGap).duration(duration).direction(flowDirection).play();\n } else {\n animateFlow.duration(duration).direction(flowDirection).play();\n }\n } else {\n if (animateFlow) {\n animateFlow.finish();\n }\n }\n}",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "line",
|
||||
"stateRenderFunction": "element.stroke(ctx.properties.lineColor);\nelement.attr({'stroke-width': ctx.properties.mainLineSize});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "line-color",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.lineColor);",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "leftFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leftFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.left-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "topFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.top-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "topFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.top-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "topFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.top-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "rightFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.right-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlow",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "bottomFlowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.bottom-connector}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "mainLineSize",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "number",
|
||||
"default": 6,
|
||||
"required": true,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"max": 99,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "lineColor",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationWidth",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 4,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationColor",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleDash",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.dash}",
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleGap",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "{i18n:scada.symbol.gap}",
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowDashCap",
|
||||
"name": "{i18n:scada.symbol.flow-dash-cap}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "select",
|
||||
"default": "butt",
|
||||
"items": [
|
||||
{
|
||||
"value": "butt",
|
||||
"label": "{i18n:scada.symbol.dash-cap-butt}"
|
||||
},
|
||||
{
|
||||
"value": "round",
|
||||
"label": "{i18n:scada.symbol.dash-cap-round}"
|
||||
},
|
||||
{
|
||||
"value": "square",
|
||||
"label": "{i18n:scada.symbol.dash-cap-square}"
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="M87 100H113C113 100 100 100 100 86C100 100 87 100 87 100Z" id="path12" fill="#1A1A1A" tb:tag="line-color"/><path d="M87 100H113C113 100 100 100 100 114C100 100 87 100 87 100Z" id="path10" fill="#1A1A1A" tb:tag="line-color"/><path d="M0 100H85C93.2843 100 100 93.2843 100 85V0" stroke-width="6" id="path8" stroke="#1A1A1A" tb:tag="line"/><path d="M200 100H115C106.716 100 100 93.2843 100 85V0" stroke-width="6" id="path6" stroke="#1A1A1A" tb:tag="line"/><path d="M0 100H85C93.2843 100 100 106.716 100 115V200" stroke-width="6" id="path4" stroke="#1A1A1A" tb:tag="line"/><path d="M200 100H115C106.716 100 100 106.716 100 115V200" stroke-width="6" id="path2" stroke="#1A1A1A" tb:tag="line"/><g tb:tag="animationGroup"><g tb:tag="leftLine"/><g tb:tag="topLine"/><g tb:tag="rightLine"/><g tb:tag="bottomLine"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
|
@ -0,0 +1,444 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="400" fill="none" version="1.1" viewBox="0 0 200 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Circuit breaker",
|
||||
"description": "Circuit breaker with various states.",
|
||||
"searchTags": [
|
||||
"energy",
|
||||
"power",
|
||||
"ev",
|
||||
"switch"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.backgroundColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "breaker",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "var initial = ctx.values.initialState;\nvar action = initial ? 'offUpdateState' : 'onUpdateState';\n\nctx.api.callAction(event, action, undefined, {\n next: () => {\n ctx.api.setValue('initialState', !initial);\n }\n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "breaker-trigger",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.disabledColor);\nif (ctx.values.initialState) {\n element.transform({translateY: 0});\n} else {\n element.transform({translateY: 160});\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.label) {\n element.show();\n var label = ctx.values.initialState ? ctx.properties.onLabel : ctx.properties.offLabel;\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, label);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label-box",
|
||||
"stateRenderFunction": "var color = ctx.properties.disabledColor;\nif (ctx.values.initialState) {\n color = ctx.properties.enabledColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "initialState",
|
||||
"name": "{i18n:scada.symbol.on-off-state}",
|
||||
"hint": "{i18n:scada.symbol.on-off-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.on}",
|
||||
"falseLabel": "{i18n:scada.symbol.off}",
|
||||
"stateLabel": "",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "onUpdateState",
|
||||
"name": "{i18n:scada.symbol.on-update-state}",
|
||||
"hint": "{i18n:scada.symbol.on-update-state-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "EXECUTE_RPC",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "state"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "offUpdateState",
|
||||
"name": "{i18n:scada.symbol.off-update-state}",
|
||||
"hint": "{i18n:scada.symbol.off-update-state-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "EXECUTE_RPC",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"key": "state",
|
||||
"scope": "SERVER_SCOPE"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "onLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "ON",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "OFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 42,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "enabledColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.enabled}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "disabledColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.disabled}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect width="200" height="400" fill="#fff" tb:tag="background"/><rect x="1" y="1" width="198" height="398" stroke="#000" stroke-opacity=".87" stroke-width="2"/><g tb:tag="breaker">
|
||||
<path d="m50 100h100v198c0 1.105-0.895 2-2 2h-96c-1.1046 0-2-0.895-2-2v-198z"/>
|
||||
<path d="m51 101h98v197c0 0.552-0.448 1-1 1h-96c-0.5523 0-1-0.448-1-1v-197z" stroke="#000" stroke-opacity=".87" stroke-width="2" tb:tag="label-box"/>
|
||||
<text x="100" y="201.65533" fill="#000000" font-family="Roboto, sans-serif" font-size="40px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="preserve"><tspan dominant-baseline="start">ON</tspan></text>
|
||||
<g tb:tag="breaker-trigger">
|
||||
<rect x="24" y="100" width="152" height="40" rx="2" fill="#999"/>
|
||||
<rect x="25" y="101" width="150" height="38" rx="1" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
</g>
|
||||
</g><circle cx="100" cy="50" r="20" fill="#fff"/><circle cx="100" cy="50" r="19" stroke="#000" stroke-opacity=".87" stroke-width="2"/><circle cx="100" cy="350" r="20" fill="#fff"/><circle cx="100" cy="350" r="19" stroke="#000" stroke-opacity=".87" stroke-width="2"/><path d="m100 0v31" stroke="#1a1a1a" stroke-width="6"/><path d="m100 369v31" stroke="#1a1a1a" stroke-width="6"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
|
@ -0,0 +1,355 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Drawwork",
|
||||
"description": "Drawwork with various states.",
|
||||
"searchTags": [
|
||||
"drawwork"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "circle-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = '#dedede';\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "drawwork-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1a1a1a" tb:tag="drawwork-background">
|
||||
<path d="m65.049 374 49.936-64h143.35l49.622 64z" stroke-width="2"/>
|
||||
<rect x="24.777" y="374" width="324" height="24.999" rx="3.6512" stroke-width="2.0011"/>
|
||||
<rect x="188" y="1" width="333" height="252" stroke-width="2"/>
|
||||
<rect x="521" y="1" width="78" height="398" stroke-width="2"/>
|
||||
<circle cx="187" cy="187" r="186" stroke-width="2"/>
|
||||
</g><mask id="path-6-inside-1_4465_2848" fill="#ffffff">
|
||||
<path d="m308.33 187c0 66.274-53.726 120-120 120s-120-53.726-120-120 53.726-120 120-120 120 53.726 120 120zm-221.31 0c0 55.95 45.357 101.31 101.31 101.31s101.31-45.357 101.31-101.31-45.357-101.31-101.31-101.31-101.31 45.357-101.31 101.31z"/>
|
||||
</mask><path d="m308.33 187c0 66.274-53.726 120-120 120s-120-53.726-120-120 53.726-120 120-120 120 53.726 120 120zm-221.31 0c0 55.95 45.357 101.31 101.31 101.31s101.31-45.357 101.31-101.31-45.357-101.31-101.31-101.31-101.31 45.357-101.31 101.31z" fill="#dedede" mask="url(#path-6-inside-1_4465_2848)" stroke="#1a1a1a" stroke-width="4" tb:tag="circle-background"/><line x1="421.5" x2="421.5" y1="4.3711e-8" y2="254" stroke="#1a1a1a" stroke-width="2"/><line x1="442" x2="442" y1="4.3711e-8" y2="254" stroke="#1a1a1a" stroke-width="2"/><line x1="462" x2="462" y1="4.3711e-8" y2="254" stroke="#1a1a1a" stroke-width="2"/><line x1="482" x2="482" y1="4.3711e-8" y2="254" stroke="#1a1a1a" stroke-width="2"/><line x1="502" x2="502" y1="4.3711e-8" y2="254" stroke="#1a1a1a" stroke-width="2"/><path d="m201.79 0s-201.79 0-201.79 67v328.36c0 2.6512 5.3727 4.6404 12 4.6404h576c6.627 0 12-1.9892 12-4.6404v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,354 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Drill",
|
||||
"description": "Drill with various states.",
|
||||
"searchTags": [
|
||||
"drill",
|
||||
"drilling"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<mask id="path-5-inside-1_4566_53869" fill="#ffffff">
|
||||
<path d="m160 113.52v50.507h-20.5l-10.711-48.771c-13.492 6.47-22.789 20.101-22.789 35.871 0 22.024 18.132 39.877 40.5 39.877s40.5-17.853 40.5-39.877c0-17.362-11.27-32.133-27-37.607z" clip-rule="evenodd" fill-rule="evenodd"/>
|
||||
</mask><mask id="path-7-inside-2_4566_53869" fill="#ffffff">
|
||||
<path d="m40 113.52v50.507h20.5l10.711-48.771c13.492 6.47 22.789 20.101 22.789 35.871 0 22.024-18.132 39.877-40.5 39.877s-40.5-17.853-40.5-39.877c0-17.362 11.27-32.133 27-37.607z" clip-rule="evenodd" fill-rule="evenodd"/>
|
||||
</mask><g fill="#fff" tb:tag="background">
|
||||
<path d="m62.143 81 10.732-80h54.25l10.732 80z" stroke="#1a1a1a" stroke-width="2"/>
|
||||
<path d="m70 81h60v103.02c-0.122 0.098-0.274 0.218-0.453 0.358-0.534 0.419-1.312 1.019-2.284 1.739-1.945 1.442-4.662 3.363-7.751 5.283-3.092 1.921-6.539 3.829-9.947 5.255-3.421 1.431-6.73 2.344-9.565 2.344-2.8349 0-6.1436-0.913-9.5652-2.344-3.4077-1.426-6.8551-3.334-9.9469-5.255-3.0891-1.92-5.806-3.841-7.7511-5.283-0.9721-0.72-1.7501-1.32-2.2841-1.739-0.179-0.14-0.3305-0.26-0.4527-0.358z" stroke="#1a1a1a" stroke-width="2"/>
|
||||
<path d="m120.9 81.054c4e-3 -0.0183 8e-3 -0.0363 0.012-0.054h24.671l15.413 23.301v60.699h-22.222c-0.093-0.212-0.209-0.478-0.346-0.794-0.389-0.898-0.951-2.199-1.637-3.812-1.373-3.226-3.245-7.696-5.241-12.672-4.001-9.972-8.476-21.912-10.459-29.961-2.355-9.559-2.358-18.942-1.767-25.951 0.296-3.5009 0.739-6.4002 1.108-8.4209 0.184-1.0102 0.35-1.8002 0.468-2.3352z" stroke="#1a1a1a" stroke-width="2"/>
|
||||
<path d="m79.096 81.054c-0.0041-0.0183-0.0081-0.0363-0.012-0.054h-24.67l-15.413 23.301v60.699h22.222c0.0926-0.212 0.2084-0.478 0.3456-0.794 0.3896-0.898 0.951-2.199 1.6373-3.812 1.3728-3.226 3.2446-7.696 5.2411-12.672 4.0007-9.972 8.4754-21.912 10.459-29.961 2.3552-9.559 2.3585-18.942 1.7667-25.951-0.2956-3.5009-0.7389-6.4002-1.1075-8.4209-0.1842-1.0102-0.3497-1.8002-0.4685-2.3352z" stroke="#1a1a1a" stroke-width="2"/>
|
||||
<path d="m160 113.52v50.507h-20.5l-10.711-48.771c-13.492 6.47-22.789 20.101-22.789 35.871 0 22.024 18.132 39.877 40.5 39.877s40.5-17.853 40.5-39.877c0-17.362-11.27-32.133-27-37.607z" clip-rule="evenodd" fill-rule="evenodd"/>
|
||||
<path d="m40 113.52v50.507h20.5l10.711-48.771c13.492 6.47 22.789 20.101 22.789 35.871 0 22.024-18.132 39.877-40.5 39.877s-40.5-17.853-40.5-39.877c0-17.362 11.27-32.133 27-37.607z" clip-rule="evenodd" fill-rule="evenodd"/>
|
||||
</g><path d="m139.62 111.98 0.876 52.023-2 0.033-0.876-52.022zm20.376 1.533h-2v-2.814l2.657 0.925zm0 50.507h2v2h-2zm-20.5 0v2h-1.608l-0.345-1.571zm-10.711-48.771-0.865-1.804 2.277-1.091 0.541 2.466zm33.211-1.736v50.507h-4v-50.507zm-2 52.507h-20.5v-4h20.5zm-22.453-1.571-10.712-48.771 3.907-0.858 10.711 48.771zm-7.893-47.397c-12.836 6.156-21.654 19.109-21.654 34.068h-4c0-16.58 9.776-30.89 23.924-37.675zm-21.654 34.068c0 20.89 17.208 37.877 38.5 37.877v4c-23.443 0-42.5-18.72-42.5-41.877zm38.5 37.877c21.292 0 38.5-16.987 38.5-37.877h4c0 23.157-19.057 41.877-42.5 41.877zm38.5-37.877c0-16.469-10.69-30.51-25.657-35.719l1.314-3.777c16.494 5.739 28.343 21.24 28.343 39.496z" fill="#1a1a1a" mask="url(#path-5-inside-1_4566_53869)"/><path d="m59.5 111.84v52.183h2v-52.183zm-19.5 1.676h2v-2.814l-2.6574 0.925zm0 50.507h-2v2h2zm20.5 0v2h1.6084l0.345-1.571zm10.711-48.771 0.8648-1.804-2.2766-1.091-0.5417 2.466zm-33.211-1.736v50.507h4v-50.507zm2 52.507h20.5v-4h-20.5zm22.453-1.571 10.711-48.771-3.9069-0.858-10.711 48.771zm7.8931-47.397c12.836 6.156 21.654 19.109 21.654 34.068h4c0-16.58-9.7765-30.89-23.924-37.675zm21.654 34.068c0 20.89-17.208 37.877-38.5 37.877v4c23.443 0 42.5-18.72 42.5-41.877zm-38.5 37.877c-21.292 0-38.5-16.987-38.5-37.877h-4c0 23.157 19.057 41.877 42.5 41.877zm-38.5-37.877c0-16.469 10.69-30.51 25.657-35.719l-1.3148-3.777c-16.493 5.739-28.343 21.24-28.343 39.496z" fill="#1a1a1a" mask="url(#path-7-inside-2_4566_53869)"/><path d="m121.36 81.141 17.501 23.335" stroke="#1a1a1a" stroke-width="2"/><path d="m138.65 164.92v-61.051" stroke="#1a1a1a" stroke-width="2"/><path d="m138.59 104.21h22.274" stroke="#1a1a1a" stroke-width="2"/><path d="m79.019 81.141-17.854 23.246" stroke="#1a1a1a" stroke-width="2"/><path d="m61.342 164.58-0.17678-60.281" stroke="#1a1a1a" stroke-width="2"/><path d="m39.023 104.3 22.185 0.0442" stroke="#1a1a1a" stroke-width="2"/><path d="m67.264 0s-67.264 0-67.264 33.5v164.18c0 1.3256 1.7909 2.3202 4 2.3202h192c2.209 0 4-0.9946 4-2.3202v-164.18c0-33.5-66.07-33.5-66.07-33.5h-33.929zm67.07 40.6c-1.2887 0-2.3333 0.6268-2.3333 1.4v150.2c0 0.7732 1.0447 1.4 2.3333 1.4h14.666c1.2887 0 2.3333-0.6268 2.3333-1.4v-150.2c0-0.7732-1.0447-1.4-2.3333-1.4z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1,361 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="400" fill="none" version="1.1" viewBox="0 0 200 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Drilling line",
|
||||
"description": "Drilling line with various states.",
|
||||
"searchTags": [
|
||||
"drilling line"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "secondary-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = '#dedede';\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke-width="2" tb:tag="background">
|
||||
<path d="m63 121h74v240h-74z" stroke="#1A1A1A"/>
|
||||
<ellipse cx="100.54" cy="101" rx="99.422" ry="100"/>
|
||||
<g transform="translate(-.043811 1)" clip-path="url(#clip0_4864_4144)" stroke="#727171">
|
||||
<path d="m97.225 37.672c-7.5861-19.484-16.826-28.051-22.054-34.859l-28.813 0.75778-20.347 24.447c1.6695-1.8123 10.516-0.092 32.545 21.288 22.029 21.38 29.908 40.861 31.093 47.929l15.475-10.344c0-15.191-0.313-29.735-7.899-49.219z"/>
|
||||
<path d="m166.5 132.89c20.8 2.127 32.637-2.193 41.079-3.744l12.457-25.992-12.488-29.253c0.852 2.312-4.71 9.4022-33.78 19.267-29.07 9.8649-50.001 7.9989-56.833 5.8331l-3.553 17.159c13.521 6.923 32.318 14.603 53.118 16.73z"/>
|
||||
<path d="m46.728 132.5c-14.634 14.934-23.517 27.044-27.569 34.611l12.551 25.947 30.656 8.48c-2.3389-0.776-4.4126-9.546 6.0037-38.423s24.928-44.076 30.881-48.066l-12.593-9.458c-13.844 6.253-25.296 11.976-39.93 26.909z"/>
|
||||
</g>
|
||||
<circle cx="100.47" cy="101.51" r="20.796" fill="#dedede" stroke="#000" tb:tag="secondary-background"/>
|
||||
<path d="m39 361h122v38h-122z" fill="#dedede" stroke="#000" tb:tag="secondary-background"/>
|
||||
</g><ellipse cx="100.11" cy="101" rx="99.009" ry="99.164" stroke="#000" stroke-width="2"/><path d="m67.264 0s-67.264 0-67.264 67v328.36c0 2.6512 1.7909 4.6404 4 4.6404h192c2.209 0 4-1.9892 4-4.6404v-328.36c0-67-66.07-67-66.07-67h-33.929zm67.07 81.2c-1.2887 0-2.3333 1.2536-2.3333 2.8v300.4c0 1.5464 1.0447 2.8 2.3333 2.8h14.666c1.2887 0 2.3333-1.2536 2.3333-2.8v-300.4c0-1.5464-1.0447-2.8-2.3333-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><defs>
|
||||
<clipPath id="clip0_4864_4144">
|
||||
<rect width="200" height="200" rx="100" fill="#fff"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,354 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="800" height="1800" fill="none" version="1.1" viewBox="0 0 800 1800"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Drilling rig",
|
||||
"description": "Drilling rig with various states.",
|
||||
"searchTags": [
|
||||
"drilling rig"
|
||||
],
|
||||
"widgetSizeX": 4,
|
||||
"widgetSizeY": 9,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "drilling-ring",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m280.06 201h239.89c2.435 0 4.516 1.754 4.928 4.153l273.94 1593.8h-797.63l273.94-1593.8c0.413-2.399 2.493-4.153 4.928-4.153z" stroke="#1a1a1a" stroke-width="2"/><line x1="276.08" x2="575.67" y1="202.29" y2="501.88" stroke="#1a1a1a" stroke-width="1.9986"/><line x1="523.29" x2="224.71" y1="201.71" y2="500.29" stroke="#1a1a1a" stroke-width="1.9986"/><line x1="225.08" x2="647.67" y1="500.29" y2="922.88" stroke="#1a1a1a" stroke-width="1.999"/><line x1="573.88" x2="151.29" y1="502.29" y2="924.88" stroke="#1a1a1a" stroke-width="1.999"/><line x1="152.71" x2="751.29" y1="925.29" y2="1523.9" stroke="#1a1a1a" stroke-width="1.9993"/><line x1="647.29" x2="48.707" y1="924.71" y2="1523.3" stroke="#1a1a1a" stroke-width="1.9993"/><path d="m389.98 1028.8c2.365-3.65 3.896-6.72 4.6109-9.87 0.64099-2.82 0.61099-5.64 0.017-8.92h30.21c0.58999 3.57 0.85699 11.11-3.162 23.22-1.333 4.02-4.2859 7.86-8.1039 11.68-3.19 3.19-6.9109 6.3-10.681 9.45-0.73999 0.62-1.482 1.24-2.223 1.86-4.4839 3.77-8.8969 7.63-12.264 11.69-3.366 4.07-5.7649 8.44-6.0849 13.24-0.61599 9.24 1.978 15.78 5.8949 20.39 3.8929 4.58 9.0239 7.17 13.365 8.69 3.366 1.17 10.24 1.99 16.595-0.23 3.199-1.11 6.2889-3.01 8.7169-6.03 2.429-3.03 4.1489-7.14 4.6969-12.59 0.349-3.48 0.607-6.53 0.82999-9.15 0.119-1.4 0.227-2.69 0.334-3.85 0.31099-3.38 0.60399-5.72 1.064-7.25 0.461-1.53 0.96899-1.88 1.476-1.96 0.337-0.05 0.81799-0.01 1.519 0.2 0.69499 0.21 1.536 0.57 2.566 1.09 11.321 5.64 15.547 14.83 16.45 23.83 0.90799 9.05-1.564 17.88-3.637 22.53-8.6369 19.38-26.348 31.19-48.797 31.19-13.467 0-23.767-2.39-32.055-6.71-8.2839-4.32-14.63-10.62-20.134-18.55-4.4109-6.36-8.8289-16.85-9.9249-28.56-1.095-11.69 1.125-24.52 9.8889-35.66 8.2179-10.45 16.325-15.53 23.13-19.13 1.229-0.65 2.434-1.27 3.598-1.85 2.026-1.03 3.924-1.99 5.5949-2.99 2.665-1.58 4.9279-3.33 6.5099-5.76z" fill="#dedede" stroke="#1a1a1a" stroke-width="2"/><path d="m339 1150h122v38h-122z" fill="#dedede" stroke="#1a1a1a" stroke-width="2"/><path d="m339 981h122v38h-122z" fill="#dedede" stroke="#1a1a1a" stroke-width="2"/><path d="m363 1188h74v487h-74z" fill="#dedede" stroke="#1a1a1a" stroke-width="2"/><path d="m363 201h74v780h-74z" stroke="#1a1a1a" stroke-width="2"/><circle cx="401.33" cy="120" r="119" fill="#dedede" stroke="#1a1a1a" stroke-width="2.0026"/><g clip-path="url(#clip0_4613_175962)" fill="#dedede">
|
||||
<path d="m397.27 45.19c-9.0358-23.378-20.04-33.657-26.268-41.826l-34.32 0.90925-24.236 29.334c1.9888-2.1746 12.525-0.11046 38.765 25.543 26.239 25.653 35.623 49.028 37.035 57.509l18.432-12.412c0-18.227-0.37246-35.679-9.4092-59.057z" stroke="#727171" stroke-width="1.996"/>
|
||||
<path d="m480.57 159.3c24.917 2.557 39.097-2.6364 49.21-4.5l14.922-31.246-14.959-35.167c1.0206 2.7794-5.643 11.303-40.467 23.162-34.824 11.859-59.898 9.617-68.082 7.0128l-4.2568 20.627c16.198 8.3224 38.716 17.554 63.633 20.112z" stroke="#727171" stroke-width="2.0051"/>
|
||||
<path d="m337.34 158.51c-17.566 17.88-28.229 32.38-33.094 41.44l15.066 31.067 36.799 10.153c-2.8073-0.928-5.2964-11.429 7.2073-46.004 12.504-34.575 29.922-52.773 37.069-57.55l-15.116-11.324c-16.619 7.4871-30.366 14.338-47.932 32.219z" stroke="#727171" stroke-width="2.0037"/>
|
||||
<ellipse cx="401.68" cy="120.34" rx="24.997" ry="24.997" stroke="#1a1a1a" stroke-width="2.0051"/>
|
||||
</g><circle cx="401.33" cy="120" r="119" stroke="#1a1a1a" stroke-width="2.0026"/><defs>
|
||||
<clipPath id="clip0_4613_175962">
|
||||
<rect x="281.33" width="240" height="240" rx="120" fill="#fff"/>
|
||||
</clipPath>
|
||||
</defs><g fill="#fff" stroke="#1a1a1a" stroke-width="2" tb:tag="drilling-ring">
|
||||
<path d="m229 1675h342v91h-342z"/>
|
||||
<path d="m141 1765h518v34h-518z"/>
|
||||
</g><path d="m269.06 0s-269.06 0-269.06 301.5v1477.6c0 11.93 7.1636 20.882 16 20.882h768c8.836 0 16-8.9514 16-20.882v-1477.6c0-301.5-264.28-301.5-264.28-301.5h-135.72zm268.28 365.4c-5.1548 0-9.3332 5.6412-9.3332 12.6v1351.8c0 6.9588 4.1788 12.6 9.3332 12.6h58.664c5.1548 0 9.3332-5.6412 9.3332-12.6v-1351.8c0-6.9588-4.1788-12.6-9.3332-12.6z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1,605 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="800" height="400" fill="none" version="1.1" viewBox="0 0 800 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Dynamic horizontal scale",
|
||||
"description": "Dynamic horizontal scale with current volume value and dynamically configurable warning and critical scale.",
|
||||
"searchTags": [
|
||||
"scale"
|
||||
],
|
||||
"widgetSizeX": 4,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "highCriticalScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, highCriticalState } = ctx.values;\nconst {\n minValue,\n maxValue,\n showHighCriticalScale,\n activeCriticalScaleColor,\n defaultCriticalScaleColor\n} = ctx.properties;\n\nif (showHighCriticalScale && highCriticalState !== null) {\n element.show();\n const offset = calculateOffset(highCriticalState, minValue, maxValue);\n element.width(653 - offset);\n} else {\n element.hide();\n}\n\nif (showHighCriticalScale && value !== null && highCriticalState !== null) {\n const isActive = minValue < maxValue ? value >= highCriticalState : value <= highCriticalState;\n element.fill(isActive ? activeCriticalScaleColor : defaultCriticalScaleColor);\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "highWarningScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, highWarningState, highCriticalState: initialHighCriticalState } = ctx.values;\nconst {\n minValue,\n maxValue,\n showHighCriticalScale,\n showHighWarningScale,\n activeWarningScaleColor,\n defaultWarningScaleColor\n} = ctx.properties;\n\nif (showHighWarningScale && highWarningState !== null) {\n element.show();\n const offset = calculateOffset(highWarningState, minValue, maxValue);\n element.width(653 - offset);\n} else {\n element.hide();\n}\n\nif (showHighWarningScale && value !== null) {\n let adjustedHighCriticalState = initialHighCriticalState;\n if (!showHighCriticalScale) {\n adjustedHighCriticalState = minValue < maxValue ? Number.MAX_SAFE_INTEGER : Number.MIN_SAFE_INTEGER;\n }\n if (highWarningState !== null && adjustedHighCriticalState !== null) {\n let adjustedHighWarningState = highWarningState;\n if (minValue > maxValue) {\n [adjustedHighCriticalState, adjustedHighWarningState] = [adjustedHighWarningState, adjustedHighCriticalState];\n }\n const isActive = value < adjustedHighCriticalState && value >= adjustedHighWarningState;\n element.fill(isActive ? activeWarningScaleColor : defaultWarningScaleColor);\n }\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.label) {\n element.show();\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, ctx.properties.labelText);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "lowCriticalScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, lowCriticalState: lowCriticalValue } = ctx.values;\nconst {\n minValue,\n maxValue,\n showLowCriticalScale,\n activeCriticalScaleColor,\n defaultCriticalScaleColor\n} = ctx.properties;\n\nif (showLowCriticalScale && lowCriticalValue !== null) {\n element.show();\n const offset = calculateOffset(lowCriticalValue, minValue, maxValue);\n element.width(offset);\n} else {\n element.hide();\n}\n\nif (showLowCriticalScale && value !== null && lowCriticalValue !== null) {\n const isActive = minValue < maxValue ? value <= lowCriticalValue : value >= lowCriticalValue;\n element.fill(isActive ? activeCriticalScaleColor : defaultCriticalScaleColor);\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "lowWarningScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst {\n value,\n lowWarningState,\n lowCriticalState: initialLowCriticalState\n} = ctx.values;\nconst {\n minValue,\n maxValue,\n showLowWarningScale,\n showLowCriticalScale,\n activeWarningScaleColor,\n defaultWarningScaleColor\n} = ctx.properties;\n\nif (showLowWarningScale && lowWarningState !== null) {\n element.show();\n const offset = calculateOffset(lowWarningState, minValue, maxValue);\n element.width(offset);\n} else {\n element.hide();\n}\n\nif (showLowWarningScale && value !== null) {\n let adjustedLowCriticalState = initialLowCriticalState;\n if (!showLowCriticalScale) {\n adjustedLowCriticalState = minValue < maxValue ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER;\n }\n if (initialLowCriticalState !== null && lowWarningState !== null) {\n let adjustedLowWarningState = lowWarningState;\n if (minValue > maxValue) {\n [adjustedLowCriticalState, adjustedLowWarningState] = [adjustedLowWarningState, adjustedLowCriticalState];\n }\n const isActive = value > adjustedLowCriticalState && value <= adjustedLowWarningState;\n element.fill(isActive ? activeWarningScaleColor : defaultWarningScaleColor);\n }\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "maxValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n ctx.api.text(element, ctx.api.convertUnitValue(ctx.properties.maxValue, ctx.properties.units).toFixed(0));\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "minMaxValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "minValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n ctx.api.text(element, ctx.api.convertUnitValue(ctx.properties.minValue, ctx.properties.units).toFixed(0));\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "scaleBackground",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.scaleColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "target",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar showTarget = ctx.properties.showTarget;\nvar targetValue = ctx.values.targetValue;\n\nif (showTarget && targetValue !== null) {\n element.show();\n var offset = calculateOffset(targetValue, minValue, maxValue);\n element.transform({translateX: Math.min(Math.max(offset-17, 0), 619)});\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "targetBackground",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.targetColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "units",
|
||||
"stateRenderFunction": "if (ctx.properties.showUnits) {\n element.show();\n ctx.api.font(element, ctx.properties.unitsFont, ctx.properties.unitsColor);\n ctx.api.text(element, ctx.api.unitSymbol(ctx.properties.units));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value",
|
||||
"stateRenderFunction": "if (ctx.properties.value) {\n element.show();\n ctx.api.font(element, ctx.properties.valueFont, ctx.properties.valueColor);\n ctx.api.text(element, ctx.api.formatValue(ctx.values.value, {units: ctx.properties.units, decimals: ctx.properties.valueDecimals, ignoreUnitSymbol: true}));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valueArrowPosition",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar value = ctx.values.value;\n\nif (value !== null) {\n var offset = calculateOffset(value, minValue, maxValue);\n element.transform({translateX: offset});\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valuePointer",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.arrowColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valueTextPositon",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar value = ctx.values.value;\n\nif (value !== null) {\n var offset = calculateOffset(value, minValue, maxValue);\n element.transform({translateX: offset});\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "value",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"hint": "{i18n:scada.symbol.value-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "temperature"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "highCriticalState",
|
||||
"name": "{i18n:scada.symbol.high-critical-state}",
|
||||
"hint": "{i18n:scada.symbol.high-critical-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 85,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "highCriticalState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "highWarningState",
|
||||
"name": "{i18n:scada.symbol.high-warning-state}",
|
||||
"hint": "{i18n:scada.symbol.high-warning-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 70,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "highWarningState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "lowWarningState",
|
||||
"name": "{i18n:scada.symbol.low-warning-state}",
|
||||
"hint": "{i18n:scada.symbol.low-warning-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 30,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "lowWarningState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "lowCriticalState",
|
||||
"name": "{i18n:scada.symbol.low-critical-state}",
|
||||
"hint": "{i18n:scada.symbol.low-critical-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 15,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "lowCriticalState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "targetValue",
|
||||
"name": "{i18n:scada.symbol.target-value}",
|
||||
"hint": "{i18n:scada.symbol.target-value-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "target"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "minMaxValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "minValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.min-value}",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "maxValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "number",
|
||||
"default": 100,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.max-value}",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "value",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueDecimals",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": "Decimals",
|
||||
"disableOnProperty": "value",
|
||||
"min": 0,
|
||||
"max": 10,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 60,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "value",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disableOnProperty": "value",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelText",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "Outdoor",
|
||||
"disableOnProperty": "label",
|
||||
"fieldClass": "flex",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 56,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "label",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#000000DE",
|
||||
"disableOnProperty": "label",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showUnits",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "units",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "units",
|
||||
"default": "°C",
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsFont",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 40,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsColor",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "color",
|
||||
"default": "#000000DE",
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "arrowColor",
|
||||
"name": "{i18n:scada.symbol.arrow-color}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showTarget",
|
||||
"name": "{i18n:scada.symbol.target}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "targetColor",
|
||||
"name": "{i18n:scada.symbol.target}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disableOnProperty": "showTarget",
|
||||
"disabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showHighCriticalScale",
|
||||
"name": "{i18n:scada.symbol.show-high-critical-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showHighWarningScale",
|
||||
"name": "{i18n:scada.symbol.show-high-warning-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showLowWarningScale",
|
||||
"name": "{i18n:scada.symbol.show-low-warning-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showLowCriticalScale",
|
||||
"name": "{i18n:scada.symbol.show-low-critical-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "scaleColor",
|
||||
"name": "{i18n:scada.symbol.scale-color}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "defaultWarningScaleColor",
|
||||
"name": "{i18n:scada.symbol.warning-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#EBEBEB",
|
||||
"subLabel": "Default",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "activeWarningScaleColor",
|
||||
"name": "{i18n:scada.symbol.warning-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "Active",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "defaultCriticalScaleColor",
|
||||
"name": "{i18n:scada.symbol.critical-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "Default",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "activeCriticalScaleColor",
|
||||
"name": "{i18n:scada.symbol.critical-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "Active",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<text x="409.16602" y="97.234375" fill="#000000" font-family="Roboto, sans-serif" font-size="56px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="preserve"><tspan transform="translate(0,-144)" dominant-baseline="middle">Outdoor</tspan></text><text x="401.15625" y="345.75" fill="#000000" font-family="Roboto, sans-serif" font-size="40px" font-weight="400" text-anchor="middle" tb:tag="units" xml:space="preserve"><tspan transform="translate(0,-144)" dominant-baseline="middle">°C</tspan></text><g fill="#666" font-family="Roboto, sans-serif" font-size="32px" font-weight="500" text-anchor="middle" style="display: none;" tb:tag="minMaxValue">
|
||||
<text x="88.070312" y="268" tb:tag="minValue" xml:space="preserve" style=""><tspan dominant-baseline="middle">0</tspan></text>
|
||||
<text x="705.02344" y="268" tb:tag="maxValue" xml:space="preserve" style=""><tspan dominant-baseline="middle">100</tspan></text>
|
||||
</g><g transform="translate(180)" tb:tag="valueArrowPosition">
|
||||
<path d="m80 179 24-42h-48z" fill="#666" tb:tag="valuePointer"/>
|
||||
</g><g transform="translate(180)" tb:tag="valueTextPositon">
|
||||
<text x="79.779297" y="273.125" fill="#002878" font-family="Roboto, sans-serif" font-size="60px" font-weight="400" text-anchor="middle" tb:tag="value" xml:space="preserve"><tspan transform="translate(0,-144)" dominant-baseline="middle">26</tspan></text>
|
||||
</g><g stroke="#000" tb:tag="scale">
|
||||
<rect x="80.5" y="183.5" width="652" height="41" fill="#c8dff7" tb:tag="scaleBackground"/>
|
||||
<rect x="80.5" y="183.5" width="164" height="41" fill="#ebebeb" tb:tag="lowWarningScale"/>
|
||||
<rect x="80.5" y="183.5" width="81" height="41" fill="#666" tb:tag="lowCriticalScale"/>
|
||||
<rect transform="scale(-1,1)" x="-732.5" y="183.5" width="164" height="41" fill="#ebebeb" tb:tag="highWarningScale"/>
|
||||
<rect transform="scale(-1,1)" x="-732.5" y="183.5" width="81" height="41" fill="#666" tb:tag="highCriticalScale"/>
|
||||
</g><g transform="translate(400)" style="display: none;" tb:tag="target">
|
||||
<rect transform="rotate(45)" x="201.8" y="64.66" width="22" height="22" fill="#dedede" stroke="#000" stroke-width="2" tb:tag="targetBackground" style=""/>
|
||||
</g><path d="m269.06 0s-269.06 0-269.06 67v328.36c0 2.6512 7.1634 4.6404 16 4.6404h768c8.836 0 16-1.9892 16-4.6404v-328.36c0-67-264.28-67-264.28-67h-135.72zm268.28 81.2c-5.1546 0-9.3334 1.2536-9.3334 2.8v300.4c0 1.5464 4.1786 2.8 9.3334 2.8h58.666c5.1546 0 9.3334-1.2536 9.3334-2.8v-300.4c0-1.5464-4.1786-2.8-9.3334-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 26 KiB |
|
|
@ -0,0 +1,598 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="800" fill="none" version="1.1" viewBox="0 0 400 800"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Dynamic vertical scale",
|
||||
"description": "Dynamic vertical scale with current volume value and dynamically configurable warning and critical scale.",
|
||||
"searchTags": [
|
||||
"scale"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 4,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "highCriticalScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, highCriticalState } = ctx.values;\nconst {\n minValue,\n maxValue,\n showHighCriticalScale,\n activeCriticalScaleColor,\n defaultCriticalScaleColor\n} = ctx.properties;\n\nif (showHighCriticalScale && highCriticalState !== null) {\n element.show();\n const offset = calculateOffset(highCriticalState, minValue, maxValue);\n element.height(653 - offset);\n} else {\n element.hide();\n}\n\nif (showHighCriticalScale && value !== null && highCriticalState !== null) {\n const isActive = minValue < maxValue ? value >= highCriticalState : value <= highCriticalState;\n element.fill(isActive ? activeCriticalScaleColor : defaultCriticalScaleColor);\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "highWarningScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, highWarningState, highCriticalState: initialHighCriticalState } = ctx.values;\nconst {\n minValue,\n maxValue,\n showHighCriticalScale,\n showHighWarningScale,\n activeWarningScaleColor,\n defaultWarningScaleColor\n} = ctx.properties;\n\nif (showHighWarningScale && highWarningState !== null) {\n element.show();\n const offset = calculateOffset(highWarningState, minValue, maxValue);\n element.height(653 - offset);\n} else {\n element.hide();\n}\n\nif (showHighWarningScale && value !== null) {\n let adjustedHighCriticalState = initialHighCriticalState;\n if (!showHighCriticalScale) {\n adjustedHighCriticalState = minValue < maxValue ? Number.MAX_SAFE_INTEGER : Number.MIN_SAFE_INTEGER;\n }\n if (highWarningState !== null && adjustedHighCriticalState !== null) {\n let adjustedHighWarningState = highWarningState;\n if (minValue > maxValue) {\n [adjustedHighCriticalState, adjustedHighWarningState] = [adjustedHighWarningState, adjustedHighCriticalState];\n }\n const isActive = value < adjustedHighCriticalState && value >= adjustedHighWarningState;\n element.fill(isActive ? activeWarningScaleColor : defaultWarningScaleColor);\n }\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.label) {\n element.show();\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, ctx.properties.labelText);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "lowCriticalScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst { value, lowCriticalState: lowCriticalValue } = ctx.values;\nconst {\n minValue,\n maxValue,\n showLowCriticalScale,\n activeCriticalScaleColor,\n defaultCriticalScaleColor\n} = ctx.properties;\n\nif (showLowCriticalScale && lowCriticalValue !== null) {\n element.show();\n const offset = calculateOffset(lowCriticalValue, minValue, maxValue);\n element.height(offset);\n} else {\n element.hide();\n}\n\nif (showLowCriticalScale && value !== null && lowCriticalValue !== null) {\n const isActive = minValue < maxValue ? value <= lowCriticalValue : value >= lowCriticalValue;\n element.fill(isActive ? activeCriticalScaleColor : defaultCriticalScaleColor);\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "lowWarningScale",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n const clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n const normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n return normalizedValue * 653;\n}\n\nconst {\n value,\n lowWarningState,\n lowCriticalState: initialLowCriticalState\n} = ctx.values;\nconst {\n minValue,\n maxValue,\n showLowWarningScale,\n showLowCriticalScale,\n activeWarningScaleColor,\n defaultWarningScaleColor\n} = ctx.properties;\n\nif (showLowWarningScale && lowWarningState !== null) {\n element.show();\n const offset = calculateOffset(lowWarningState, minValue, maxValue);\n element.height(offset);\n} else {\n element.hide();\n}\n\nif (showLowWarningScale && value !== null) {\n let adjustedLowCriticalState = initialLowCriticalState;\n if (!showLowCriticalScale) {\n adjustedLowCriticalState = minValue < maxValue ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER;\n }\n if (initialLowCriticalState !== null && lowWarningState !== null) {\n let adjustedLowWarningState = lowWarningState;\n if (minValue > maxValue) {\n [adjustedLowCriticalState, adjustedLowWarningState] = [adjustedLowWarningState, adjustedLowCriticalState];\n }\n const isActive = value > adjustedLowCriticalState && value <= adjustedLowWarningState;\n element.fill(isActive ? activeWarningScaleColor : defaultWarningScaleColor);\n }\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "maxValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n ctx.api.text(element, ctx.api.convertUnitValue(ctx.properties.maxValue, ctx.properties.units).toFixed(0));\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "minMaxValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "minValue",
|
||||
"stateRenderFunction": "if (ctx.properties.minMaxValue) {\n ctx.api.text(element, ctx.api.convertUnitValue(ctx.properties.minValue, ctx.properties.units).toFixed(0));\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "scaleBackground",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.scaleColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "target",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar showTarget = ctx.properties.showTarget;\nvar targetValue = ctx.values.targetValue;\n\nif (showTarget && targetValue !== null) {\n element.show();\n var offset = calculateOffset(targetValue, minValue, maxValue);\n element.transform({translateY: -Math.min(Math.max(offset-17, 0), 619)});\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "targetBackground",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.targetColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "units",
|
||||
"stateRenderFunction": "if (ctx.properties.showUnits) {\n element.show();\n ctx.api.font(element, ctx.properties.unitsFont, ctx.properties.unitsColor);\n ctx.api.text(element, ctx.api.unitSymbol(ctx.properties.units));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value",
|
||||
"stateRenderFunction": "if (ctx.properties.value) {\n element.show();\n ctx.api.font(element, ctx.properties.valueFont, ctx.properties.valueColor);\n ctx.api.text(element, ctx.api.formatValue(ctx.values.value, {units: ctx.properties.units, decimals: ctx.properties.valueDecimals, ignoreUnitSymbol: true}));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valueArrowPosition",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar value = ctx.values.value;\n\nif (value !== null) {\n var offset = calculateOffset(value, minValue, maxValue);\n element.transform({translateY: -offset});\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valuePointer",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.arrowColor);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "valueTextPositon",
|
||||
"stateRenderFunction": "function calculateOffset(value, minValue, maxValue) {\n var clampedValue = Math.max(Math.min(value, Math.max(minValue, maxValue)), Math.min(minValue, maxValue));\n var normalizedValue = minValue < maxValue\n ? (clampedValue - minValue) / (maxValue - minValue)\n : (minValue - clampedValue) / (minValue - maxValue);\n var offset = normalizedValue * 653;\n return offset;\n}\n\nvar minValue = ctx.properties.minValue;\nvar maxValue = ctx.properties.maxValue;\nvar value = ctx.values.value;\n\nif (value !== null) {\n var offset = calculateOffset(value, minValue, maxValue);\n element.transform({translateY: -offset});\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "value",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"hint": "{i18n:scada.symbol.value-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "temperature"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "highCriticalState",
|
||||
"name": "{i18n:scada.symbol.high-critical-state}",
|
||||
"hint": "{i18n:scada.symbol.high-critical-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 85,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "highCriticalState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "highWarningState",
|
||||
"name": "{i18n:scada.symbol.high-warning-state}",
|
||||
"hint": "{i18n:scada.symbol.high-warning-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 70,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "highWarningState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "lowWarningState",
|
||||
"name": "{i18n:scada.symbol.low-warning-state}",
|
||||
"hint": "{i18n:scada.symbol.low-warning-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 30,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "lowWarningState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "lowCriticalState",
|
||||
"name": "{i18n:scada.symbol.low-critical-state}",
|
||||
"hint": "{i18n:scada.symbol.low-critical-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 15,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "lowCriticalState"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "targetValue",
|
||||
"name": "{i18n:scada.symbol.target-value}",
|
||||
"hint": "{i18n:scada.symbol.target-value-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "target"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "minMaxValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "minValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.min-value}",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "maxValue",
|
||||
"name": "{i18n:scada.symbol.min-max-value}",
|
||||
"type": "number",
|
||||
"default": 100,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.max-value}",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "value",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueDecimals",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": "Decimals",
|
||||
"min": 0,
|
||||
"max": 10,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 60,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelText",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "Outdoor",
|
||||
"fieldClass": "flex",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 56,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#000000DE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showUnits",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "units",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "units",
|
||||
"default": "°C",
|
||||
"required": false,
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsFont",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 56,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsColor",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "color",
|
||||
"default": "#000000DE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "arrowColor",
|
||||
"name": "{i18n:scada.symbol.arrow-color}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showTarget",
|
||||
"name": "{i18n:scada.symbol.target}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "targetColor",
|
||||
"name": "{i18n:scada.symbol.target}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disableOnProperty": "showTarget",
|
||||
"disabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showHighCriticalScale",
|
||||
"name": "{i18n:scada.symbol.show-high-critical-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showHighWarningScale",
|
||||
"name": "{i18n:scada.symbol.show-high-warning-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showLowWarningScale",
|
||||
"name": "{i18n:scada.symbol.show-low-warning-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showLowCriticalScale",
|
||||
"name": "{i18n:scada.symbol.show-low-critical-scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "scaleColor",
|
||||
"name": "{i18n:scada.symbol.scale-color}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "defaultWarningScaleColor",
|
||||
"name": "{i18n:scada.symbol.warning-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#EBEBEB",
|
||||
"subLabel": "Default",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "activeWarningScaleColor",
|
||||
"name": "{i18n:scada.symbol.warning-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "Active",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "defaultCriticalScaleColor",
|
||||
"name": "{i18n:scada.symbol.critical-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "Default",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "activeCriticalScaleColor",
|
||||
"name": "{i18n:scada.symbol.critical-scale-color}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "Active",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<text x="206.16602" y="43.234375" fill="#000000" font-family="Roboto, sans-serif" font-size="56px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="preserve"><tspan transform="translate(0,-144)" dominant-baseline="middle">Outdoor</tspan></text><text x="195.21875" y="770" fill="#000000" font-family="Roboto, sans-serif" font-size="40px" font-weight="400" text-anchor="middle" tb:tag="units" xml:space="preserve"><tspan transform="translate(0,-144)" dominant-baseline="middle">°C</tspan></text><g stroke="#000" tb:tag="scale">
|
||||
<rect x="176.5" y="83" width="41" height="652" fill="#c8dff7" tb:tag="scaleBackground"/>
|
||||
<rect transform="scale(1,-1)" x="176.5" y="-735" width="41" height="164" fill="#ebebeb" tb:tag="lowWarningScale"/>
|
||||
<rect x="176.5" y="83.5" width="41" height="164" fill="#ebebeb" tb:tag="highWarningScale"/>
|
||||
<rect transform="scale(1,-1)" x="176.5" y="-735" width="41" height="81" fill="#666" tb:tag="lowCriticalScale"/>
|
||||
<rect x="176.5" y="83.5" width="41" height="81" fill="#666" tb:tag="highCriticalScale"/>
|
||||
</g><g fill="#666" font-family="Roboto, sans-serif" font-size="32px" font-weight="500" style="display: none;" tb:tag="minMaxValue">
|
||||
<text x="237.48438" y="97" tb:tag="maxValue" xml:space="preserve" style=""><tspan dominant-baseline="middle">100</tspan></text>
|
||||
<text x="238.89062" y="727" tb:tag="minValue" xml:space="preserve" style=""><tspan dominant-baseline="middle">0</tspan></text>
|
||||
</g><g transform="translate(0,-180)" tb:tag="valueArrowPosition">
|
||||
<path d="m168 735-42-24v48z" fill="#666" tb:tag="valuePointer"/>
|
||||
</g><g transform="translate(0,-180)" tb:tag="valueTextPositon">
|
||||
<text x="223.60547" y="739.125" fill="#002878" font-family="Roboto, sans-serif" font-size="60px" font-weight="400" tb:tag="value" xml:space="preserve"><tspan dominant-baseline="middle">26</tspan></text>
|
||||
</g><g transform="translate(0,-400)" style="display: none;" tb:tag="target">
|
||||
<rect transform="rotate(-45)" x="-379.76" y="636.31" width="22" height="22" fill="#dedede" stroke="#000" stroke-width="2" tb:tag="targetBackground" style=""/>
|
||||
</g><path d="m134.53 0s-134.53 0-134.53 134v656.72c0 5.3024 3.5817 9.2808 8 9.2808h384c4.418 0 8-3.9784 8-9.2808v-656.72c0-134-132.14-134-132.14-134h-67.86zm134.14 162.4c-2.5773 0-4.6667 2.5072-4.6667 5.6v600.8c0 3.0928 2.0893 5.6 4.6667 5.6h29.333c2.5773 0 4.6667-2.5072 4.6667-5.6v-600.8c0-3.0928-2.0893-5.6-4.6667-5.6z" fill="#000" fill-opacity="0" tb:tag="clickArea"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -0,0 +1,332 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="600" fill="none" version="1.1" viewBox="0 0 400 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Electrical distribution board",
|
||||
"description": "Electrical distribution board with various states.",
|
||||
"searchTags": [
|
||||
"energy",
|
||||
"power",
|
||||
"fuse",
|
||||
"panel"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.backgroundColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "icon",
|
||||
"stateRenderFunction": "var showIcon = ctx.properties.showIcon;\nvar showLabel = ctx.properties.label;\nif (showIcon) {\n element.show();\n var icon = ctx.properties.icon;\n var iconSize = ctx.properties.iconSize;\n var iconColor = ctx.properties.iconColor;\n ctx.api.icon(element, icon, iconSize, iconColor, true);\n if (!showLabel) {\n element.transform({translateX: 200, translateY: 310});\n }\n} else {\n element.hide()\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "triangle",
|
||||
"stateRenderFunction": "if (ctx.properties.showTriangle) {\n element.show();\n element.stroke(ctx.properties.triangleColor);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "showIcon",
|
||||
"name": "{i18n:scada.symbol.icon}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "iconSize",
|
||||
"name": "{i18n:scada.symbol.icon}",
|
||||
"type": "number",
|
||||
"default": 44,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "icon",
|
||||
"name": "{i18n:scada.symbol.icon}",
|
||||
"type": "icon",
|
||||
"default": "bolt",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showTriangle",
|
||||
"name": "{i18n:scada.symbol.triangle}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "triangleColor",
|
||||
"name": "{i18n:scada.symbol.triangle}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "iconColor",
|
||||
"name": "{i18n:scada.symbol.icon}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"divider": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="398" height="598" rx="3" fill="#fff" stroke="#1a1a1a" stroke-width="2" tb:tag="background"/><path d="m150.82 344.75c-1.541 0-2.503-1.669-1.731-3.002l49.176-84.942c0.771-1.33 2.692-1.33 3.462 0l49.177 84.942c0.772 1.333-0.19 3.002-1.731 3.002h-98.353z" stroke="#D12730" stroke-width="8" tb:tag="triangle"/><g transform="translate(200,310)" tb:tag="icon">
|
||||
<path d="m4.3731-15.914-16.841 15.085c-1.041 0.943-0.455 2.682 0.943 2.812l13.151 1.268-7.884 10.989c-0.358 0.504-0.309 1.203 0.13 1.642 0.487 0.488 1.251 0.504 1.755 0.033l16.841-15.086c1.041-0.943 0.455-2.682-0.943-2.812l-13.151-1.268 7.885-10.989c0.357-0.504 0.308-1.203-0.131-1.642-0.487-0.488-1.251-0.504-1.755-0.032z" fill="#1a1a1a"/>
|
||||
</g><path d="m134.53 0s-134.53 0-134.53 100.5v492.54c0 3.9768 3.5818 6.9606 8 6.9606h384c4.418 0 8-2.9838 8-6.9606v-492.54c0-100.5-132.14-100.5-132.14-100.5h-67.86zm134.14 121.8c-2.5774 0-4.6666 1.8804-4.6666 4.2v450.6c0 2.3196 2.0894 4.2 4.6666 4.2h29.332c2.5774 0 4.6666-1.8804 4.6666-4.2v-450.6c0-2.3196-2.0894-4.2-4.6666-4.2z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,360 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Electrical engine",
|
||||
"description": "Electrical engine with various states.",
|
||||
"searchTags": [
|
||||
"extraction",
|
||||
"power"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<rect x="161" y="21" width="178" height="30" rx="1"/>
|
||||
<rect x="201" y="1" width="98" height="20" rx="1"/>
|
||||
<rect x="51" y="377" width="398" height="22" rx="3"/>
|
||||
<path d="m76.152 377 32.051-38h283.59l32.051 38h-347.7z"/>
|
||||
<path d="m1 100c0-27.062 21.938-49 49-49h446c1.657 0 3 1.3431 3 3v282c0 1.657-1.343 3-3 3h-446c-27.062 0-49-21.938-49-49v-190z"/>
|
||||
<path d="m499 116h16v158h-16v-158z"/>
|
||||
<path d="m515 29c0-1.6569 1.343-3 3-3h26c1.657 0 3 1.3431 3 3v332c0 1.657-1.343 3-3 3h-26c-1.657 0-3-1.343-3-3v-332z"/>
|
||||
<path d="m545 183c0-1.657 1.343-3 3-3h48c1.657 0 3 1.343 3 3v24c0 1.657-1.343 3-3 3h-48c-1.657 0-3-1.343-3-3v-24z"/>
|
||||
</g><path d="m56 50v290" stroke="#1A1A1A" stroke-width="2"/><path d="m56 83h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 67h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 99h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 115h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 131h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 147h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 163h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 179h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 211h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 195h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 227h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 259h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 243h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 275h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 291h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 307h389" stroke="#1A1A1A" stroke-width="2"/><path d="m56 323h389" stroke="#1A1A1A" stroke-width="2"/><path d="m445 50v290" stroke="#1A1A1A" stroke-width="2"/><path d="m201.79 0s-201.79 0-201.79 67v328.36c0 2.6512 5.3727 4.6404 12 4.6404h576c6.627 0 12-1.9892 12-4.6404v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 316)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
|
@ -0,0 +1,488 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="400" fill="none" version="1.1" viewBox="0 0 400 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Energy meter",
|
||||
"description": "Energy meter with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.showLabel) {\n element.show();\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, ctx.properties.label);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "units",
|
||||
"stateRenderFunction": "if (ctx.properties.showUnits) {\n element.show();\n ctx.api.font(element, ctx.properties.unitsFont, ctx.properties.unitsColor);\n ctx.api.text(element, ctx.api.unitSymbol(ctx.properties.units));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.valueFont, ctx.properties.valueColor);\nctx.api.text(element, ctx.api.formatValue(ctx.values.measured, {units: ctx.properties.units, decimals: 0, ignoreUnitSymbol: true}));",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-box",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.valueBoxBackground;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "measured",
|
||||
"name": "{i18n:scada.symbol.measured}",
|
||||
"hint": "{i18n:scada.symbol.measured-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "measured"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "T1",
|
||||
"disableOnProperty": "showLabel",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showUnits",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "units",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "units",
|
||||
"default": "kWh",
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsFont",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsColor",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 48,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="398" height="398" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="49" y="143" width="302" height="114" rx="3" fill="#DEDEDE" stroke="#1A1A1A" stroke-width="2" tb:tag="value-box"/><text x="199.83594" y="217.64844" fill="#002878" font-family="Roboto, sans-serif" font-size="48px" font-weight="400" text-anchor="middle" tb:tag="value" xml:space="preserve"><tspan dominant-baseline="start">000023</tspan></text><text x="199.89453" y="341.65625" fill="#000000" font-family="Roboto, sans-serif" font-size="36px" font-weight="400" text-anchor="middle" tb:tag="units" xml:space="preserve"><tspan dominant-baseline="start">kWh</tspan></text><text x="199.70117" y="83.648438" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="default"><tspan dominant-baseline="start">T1</tspan></text><path d="m134.53-2e-4s-134.53 0-134.53 67v328.36c0 2.6512 3.5818 4.6404 8 4.6404h384c4.418 0 8-1.9892 8-4.6404v-328.36c0-67-132.14-67-132.14-67h-67.858zm134.14 81.2c-2.5774 0-4.6666 1.2536-4.6666 2.8v300.4c0 1.5464 2.0894 2.8 4.6666 2.8h29.332c2.5774 0 4.6666-1.2536 4.6666-2.8v-300.4c0-1.5464-2.0894-2.8-4.6666-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
|
@ -0,0 +1,287 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="400" fill="none" version="1.1" viewBox="0 0 200 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Filter",
|
||||
"description": "Filter with various states.",
|
||||
"searchTags": [
|
||||
"filter"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.filterColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "filterColor",
|
||||
"name": "{i18n:scada.symbol.filter-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "",
|
||||
"divider": false,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m19.382 177.15c-0.0794-1.362-0.71139-2.633-1.7498-3.518l-9.0296-7.697c-4.0474-3.45-6.4624-8.4-6.6282-13.706-0.65056-20.807-1.9624-74.2 0.297-110.67 0.77777-12.553 2.4266-30.326 3.1467-37.866 0.1463-1.5318 1.4324-2.6953 2.9818-2.6953h183.2c1.549 0 2.835 1.1635 2.982 2.6953 0.71999 7.5402 2.369 25.314 3.146 37.866 2.26 36.465 0.94799 89.858 0.297 110.67-0.165 5.306-2.58 10.256-6.6279 13.706l-9.0289 7.697c-1.039 0.885-1.671 2.156-1.75 3.518l-8.5699 147.01c-0.589 10.108-5.361 19.513-13.17 25.958-34.184 28.21-83.573 28.21-117.76 0-7.8087-6.445-12.581-15.85-13.17-25.958z" fill="#fff" stroke="#000" stroke-width="2" tb:tag="background"/><path d="m67.264 0s-67.264 0-67.264 67v328.36c0 2.6512 1.7909 4.6404 4 4.6404h192c2.209 0 4-1.9892 4-4.6404v-328.36c0-67-66.07-67-66.07-67h-33.929zm67.07 81.2c-1.2887 0-2.3333 1.2536-2.3333 2.8v300.4c0 1.5464 1.0447 2.8 2.3333 2.8h14.666c1.2887 0 2.3333-1.2536 2.3333-2.8v-300.4c0-1.5464-1.0447-2.8-2.3333-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0,316)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1,891 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Four-rate energy meter",
|
||||
"description": "Four-rate energy meter with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "export-label",
|
||||
"stateRenderFunction": "if (ctx.properties.showExportLabel) {\n element.show();\n ctx.api.font(element, ctx.properties.exportLabelFont, ctx.properties.exportLabelColor);\n ctx.api.text(element, ctx.properties.exportLabel);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "export-rate",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.exportValueFont, ctx.properties.exportValueColor);\nctx.api.text(element, ctx.api.formatValue(ctx.values.exportRate, {units: ctx.properties.units, decimals: 0, ignoreUnitSymbol: true}));",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "night-label",
|
||||
"stateRenderFunction": "if (ctx.properties.showNightLabel) {\n element.show();\n ctx.api.font(element, ctx.properties.nightLabelFont, ctx.properties.nightLabelColor);\n ctx.api.text(element, ctx.properties.nightLabel);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "night-rate",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.nightValueFont, ctx.properties.nightValueColor);\nctx.api.text(element, ctx.api.formatValue(ctx.values.nightRate, {units: ctx.properties.units, decimals: 0, ignoreUnitSymbol: true}));",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "off-peak-label",
|
||||
"stateRenderFunction": "if (ctx.properties.showOffPeakLabel) {\n element.show();\n ctx.api.font(element, ctx.properties.offPeakLabelFont, ctx.properties.offPeakLabelColor);\n ctx.api.text(element, ctx.properties.offPeakLabel);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "off-peak-rate",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.offPeakValueFont, ctx.properties.offPeakValueColor);\nctx.api.text(element, ctx.api.formatValue(ctx.values.offPeakRate, {units: ctx.properties.units, decimals: 0, ignoreUnitSymbol: true}));",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "peak-label",
|
||||
"stateRenderFunction": "if (ctx.properties.showPeakLabel) {\n element.show();\n ctx.api.font(element, ctx.properties.peakLabelFont, ctx.properties.peakLabelColor);\n ctx.api.text(element, ctx.properties.peakLabel);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "peak-rate",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.peakValueFont, ctx.properties.peakValueColor);\nctx.api.text(element, ctx.api.formatValue(ctx.values.peakRate, {units: ctx.properties.units, decimals: 0, ignoreUnitSymbol: true}));",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "units",
|
||||
"stateRenderFunction": "if (ctx.properties.showUnits) {\n element.show();\n ctx.api.font(element, ctx.properties.unitsFont, ctx.properties.unitsColor);\n ctx.api.text(element, ctx.api.unitSymbol(ctx.properties.units));\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-box-export",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.exportValueBoxBackground;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-box-night",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.nightValueBoxBackground;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-box-off-peak",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.offPeakValueBoxBackground;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-box-peak",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.peakValueBoxBackground;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "offPeakRate",
|
||||
"name": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"hint": "{i18n:scada.symbol.measured-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "offPeakRate"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "nightRate",
|
||||
"name": "{i18n:scada.symbol.night-rate}",
|
||||
"hint": "{i18n:scada.symbol.measured-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "nightRate"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "peakRate",
|
||||
"name": "{i18n:scada.symbol.peak-rate}",
|
||||
"hint": "{i18n:scada.symbol.measured-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "peakRate"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "exportRate",
|
||||
"name": "{i18n:scada.symbol.export-rate}",
|
||||
"hint": "{i18n:scada.symbol.measured-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "exportRate"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showOffPeakLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "text",
|
||||
"default": "T1",
|
||||
"disableOnProperty": "showOffPeakLabel",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakLabelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showOffPeakLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakLabelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#000000",
|
||||
"disableOnProperty": "showOffPeakLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakValueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 48,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakValueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offPeakValueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"group": "{i18n:scada.symbol.off-peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showNightLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "text",
|
||||
"default": "T2",
|
||||
"disableOnProperty": "showNightLabel",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightLabelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showNightLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightLabelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showNightLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightValueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 48,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightValueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "nightValueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"group": "{i18n:scada.symbol.night-rate}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showPeakLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "text",
|
||||
"default": "T3",
|
||||
"disableOnProperty": "showPeakLabel",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakLabelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showPeakLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakLabelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showPeakLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakValueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 48,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakValueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "peakValueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"group": "{i18n:scada.symbol.peak-rate}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showExportLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "text",
|
||||
"default": "Export",
|
||||
"disableOnProperty": "showExportLabel",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportLabelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showExportLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportLabelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showExportLabel",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportValueFont",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 48,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportValueColor",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "exportValueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"group": "{i18n:scada.symbol.export-rate}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "showUnits",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "units",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "units",
|
||||
"default": "kWh",
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsFont",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 36,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "unitsColor",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disableOnProperty": "showUnits",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="598" height="398" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="49" y="81" width="238" height="82" rx="3" fill="#dedede" stroke="#1a1a1a" stroke-width="2" tb:tag="value-box-off-peak"/><rect x="313" y="81" width="238" height="82" rx="3" fill="#dedede" stroke="#1a1a1a" stroke-width="2" tb:tag="value-box-night"/><rect x="49" y="237" width="238" height="82" rx="3" fill="#dedede" stroke="#1a1a1a" stroke-width="2" tb:tag="value-box-peak"/><rect x="313" y="237" width="238" height="82" rx="3" fill="#dedede" stroke="#1a1a1a" stroke-width="2" tb:tag="value-box-export"/><text x="171.2998" y="58.286133" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="400" text-anchor="middle" tb:tag="off-peak-label" xml:space="default"><tspan dominant-baseline="start">T1</tspan></text><text x="433.2998" y="58.734375" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="400" text-anchor="middle" tb:tag="night-label"><tspan dominant-baseline="start">T2</tspan></text><text x="169.2998" y="214.23438" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="400" text-anchor="middle" tb:tag="peak-label" xml:space="default"><tspan dominant-baseline="start">T3</tspan></text><text x="432.31152" y="213.78613" fill="#000000" font-family="Roboto, sans-serif" font-size="34px" font-weight="400" text-anchor="middle" tb:tag="export-label" xml:space="default"><tspan dominant-baseline="start">Export</tspan></text><text x="169.45312" y="139.625" fill="#002878" font-family="Roboto, sans-serif" font-size="48px" font-weight="400" text-anchor="middle" tb:tag="off-peak-rate" xml:space="default"><tspan dominant-baseline="start">000223</tspan></text><text x="433.45312" y="139.625" fill="#002878" font-family="Roboto, sans-serif" font-size="48px" font-weight="400" text-anchor="middle" tb:tag="night-rate" xml:space="default"><tspan dominant-baseline="start">000223</tspan></text><text x="169.45312" y="295.625" fill="#002878" font-family="Roboto, sans-serif" font-size="48px" font-weight="400" text-anchor="middle" tb:tag="peak-rate" xml:space="default"><tspan dominant-baseline="start">000223</tspan></text><text x="433.45312" y="295.625" fill="#002878" font-family="Roboto, sans-serif" font-size="48px" font-weight="400" text-anchor="middle" tb:tag="export-rate" xml:space="default"><tspan dominant-baseline="start">000223</tspan></text><text x="299.89453" y="371.67578" fill="#000000" font-family="Roboto, sans-serif" font-size="36px" font-weight="400" text-anchor="middle" tb:tag="units" xml:space="preserve"><tspan dominant-baseline="start">kWh</tspan></text><path d="m201.8-2e-4s-201.8 0-201.8 67v328.36c0 2.6512 5.3727 4.6404 12 4.6404h576c6.627 0 12-1.9892 12-4.6404v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -0,0 +1,359 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Fuel generator",
|
||||
"description": "Fuel generator with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy",
|
||||
"fuel",
|
||||
"generation"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<path d="m1 24c0-12.702 10.298-23 23-23h95c12.703 0 23 10.298 23 23v37c0 3.866-3.134 7-7 7h-14c-3.866 0-7-3.134-7-7v-21c0-6.0751-4.925-11-11-11h-63c-6.0751 0-11 4.9249-11 11v282c0 6.075 4.9249 11 11 11h520c6.075 0 11-4.925 11-11v-314c0-3.866 3.134-7 7-7h14c3.866 0 7 3.134 7 7v330c0 12.703-10.297 23-23 23h-552c-12.702 0-23-10.297-23-23v-314z"/>
|
||||
<path d="m29 78c0-12.702 10.298-23 23-23h496c12.703 0 23 10.298 23 23v244c0 6.075-4.925 11-11 11h-520c-6.0751 0-11-4.925-11-11v-244z"/>
|
||||
<circle cx="478" cy="350" r="49"/>
|
||||
<path d="m60 361h30v33c0 2.761-2.2386 5-5 5h-20c-2.7614 0-5-2.239-5-5v-33z"/>
|
||||
<path d="m221 44c0-12.702 10.297-23 23-23h272c12.703 0 23 10.298 23 23v11h-318v-11z"/>
|
||||
</g><line x1="87" x2="181" y1="211" y2="211" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="87" x2="181" y1="243" y2="243" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="87" x2="181" y1="275" y2="275" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="203" x2="297" y1="211" y2="211" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="203" x2="297" y1="243" y2="243" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="203" x2="297" y1="275" y2="275" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><path d="m201.8 0s-201.8 0-201.8 67v328.36c0 2.6512 5.3727 4.6403 12 4.6403h576c6.627 0 12-1.9892 12-4.6403v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,361 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Gas preventer",
|
||||
"description": "Gas preventer with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<rect x="58" y="177" width="84" height="22" rx="2"/>
|
||||
<rect x="41" y="147" width="118" height="30" rx="2"/>
|
||||
<rect x="1" y="1" width="198" height="146" rx="2"/>
|
||||
<rect x="1" y="33" width="198" height="38"/>
|
||||
<circle cx="20" cy="52" r="7"/>
|
||||
<circle cx="52" cy="52" r="7"/>
|
||||
<circle cx="84" cy="52" r="7"/>
|
||||
<circle cx="116" cy="52" r="7"/>
|
||||
<circle cx="148" cy="52" r="7"/>
|
||||
<circle cx="180" cy="52" r="7"/>
|
||||
</g><path d="m67.263 0s-67.263 0-67.263 33.5v164.18c0 1.3256 1.7909 2.3202 4 2.3202h192c2.209 0 4-0.9946 4-2.3202v-164.18c0-33.5-66.07-33.5-66.07-33.5h-33.93zm67.07 40.6c-1.2887 0-2.3333 0.6268-2.3333 1.4v150.2c0 0.7732 1.0447 1.4 2.3333 1.4h14.666c1.2887 0 2.3333-0.6268 2.3333-1.4v-150.2c0-0.7732-1.0447-1.4-2.3333-1.4z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,116)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 116)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,363 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="800" height="1000" fill="none" version="1.1" viewBox="0 0 800 1000"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Gas wellhead",
|
||||
"description": "Gas wellhead with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 4,
|
||||
"widgetSizeY": 5,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m368 869h1v-45c0-0.552 0.448-1 1-1h60c0.552 0 1 0.448 1 1v45h1 38c0.552 0 1 0.448 1 1v60c0 0.552-0.448 1-1 1h-39v45c0 0.552-0.448 1-1 1h-60c-0.552 0-1-0.448-1-1v-45h-39c-0.552 0-1-0.448-1-1v-60c0-0.552 0.448-1 1-1h38z" stroke="#1A1A1A" stroke-width="2"/><rect x="385" y="116" width="30" height="143" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="106" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="259" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="385" y="588" width="30" height="225" stroke="#1A1A1A" stroke-width="2"/><rect x="385" y="341" width="30" height="225" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="578" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="331" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="813" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="566" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="377" y="94" width="46" height="10" rx="1" stroke="#1A1A1A" stroke-width="2"/><circle cx="400" cy="30" r="29" stroke="#1A1A1A" stroke-width="2"/><circle cx="400" cy="30" r="20" stroke="#1A1A1A" stroke-width="2"/><rect x="390" y="57" width="2" height="37" fill="#1A1A1A"/><rect x="176" y="285" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="408" y="57" width="2" height="37" fill="#1A1A1A"/><rect x="176" y="885" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="646" y="285" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="646" y="885" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="11" y="285" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="11" y="885" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="481" y="285" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="481" y="885" width="143" height="30" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="319" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="319" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="789" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="789" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="329" y="269" width="142" height="62" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="166" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="166" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="636" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="636" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="154" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="154" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="624" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="624" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="1" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="1" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="471" y="277" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><rect x="471" y="877" width="10" height="46" rx="1" stroke="#1A1A1A" stroke-width="2"/><g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<rect x="281" y="977" width="238" height="22" rx="1"/>
|
||||
<path d="m436.76 159.34-0.692-0.919-0.813 0.814-27.767 27.766 27.767 27.766 0.813 0.814 0.692-0.919c5.803-7.698 9.243-17.279 9.243-27.661s-3.44-19.963-9.243-27.661zm-10.147-8.434 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381-10.382 0-19.963 3.44-27.661 9.243l-0.919 0.692 0.814 0.813 26.766 26.767 27.61-27.61zm-62.705 9.485-0.84-0.84-0.684 0.971c-5.28 7.488-8.381 16.623-8.381 26.479s3.101 18.991 8.381 26.479l0.684 0.971 27.45-27.45-26.61-26.61zm8.329 61.862-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243 9.856 0 18.991-3.101 26.479-8.381l0.971-0.684-28.45-28.45-26.766 26.767zm27.766-98.252c34.794 0 63 28.206 63 63s-28.206 63-63 63-63-28.206-63-63 28.206-63 63-63z"/>
|
||||
<path d="m436.76 430.34-0.692-0.919-0.813 0.814-27.767 27.766 27.767 27.766 0.813 0.814 0.692-0.919c5.803-7.698 9.243-17.279 9.243-27.661s-3.44-19.963-9.243-27.661zm-10.147-8.434 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381-10.382 0-19.963 3.44-27.661 9.243l-0.919 0.692 0.814 0.813 26.766 26.767 27.61-27.61zm-62.705 9.485-0.84-0.84-0.684 0.971c-5.28 7.488-8.381 16.623-8.381 26.479s3.101 18.991 8.381 26.479l0.684 0.971 27.45-27.45-26.61-26.61zm8.329 61.862-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243 9.856 0 18.991-3.101 26.479-8.381l0.971-0.684-28.45-28.45-26.766 26.767zm27.766-98.252c34.794 0 63 28.206 63 63s-28.206 63-63 63-63-28.206-63-63 28.206-63 63-63z"/>
|
||||
<path d="m436.76 677.34-0.692-0.919-0.813 0.814-27.767 27.766 27.767 27.766 0.813 0.814 0.692-0.919c5.803-7.698 9.243-17.279 9.243-27.661s-3.44-19.963-9.243-27.661zm-10.147-8.434 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381-10.382 0-19.963 3.44-27.661 9.243l-0.919 0.692 0.814 0.813 26.766 26.767 27.61-27.61zm-62.705 9.485-0.84-0.84-0.684 0.971c-5.28 7.488-8.381 16.623-8.381 26.479s3.101 18.991 8.381 26.479l0.684 0.971 27.45-27.45-26.61-26.61zm8.329 61.862-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243 9.856 0 18.991-3.101 26.479-8.381l0.971-0.684-28.45-28.45-26.766 26.767zm27.766-98.252c34.794 0 63 28.206 63 63s-28.206 63-63 63-63-28.206-63-63 28.206-63 63-63z"/>
|
||||
<path d="m275.66 336.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
<path d="m275.66 936.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
<path d="m745.66 336.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
<path d="m745.66 936.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
<path d="m110.66 336.76 0.919-0.692-0.814-0.813-27.059-27.06-0.7071-0.707-0.7071 0.707-27.059 27.06-0.8134 0.813 0.9186 0.692c7.6985 5.803 17.28 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.06 26.059-0.7071 0.707 0.7071 0.707 26.903 26.903zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.9707 0.684 0.8399 0.84 25.903 25.903 0.7071 0.707 0.7071-0.707 25.903-25.903zm-61.862 8.329-0.8134-0.814-0.6923 0.919c-5.8024 7.698-9.2427 17.279-9.2427 27.661 0 9.856 3.1011 18.991 8.3807 26.479l0.6844 0.971 0.8399-0.84 26.903-26.903 0.7071-0.707-0.7071-0.707-26.059-26.059zm98.252 27.766c0 34.794-28.206 63-63 63-34.794 0-63-28.206-63-63s28.206-63 63-63c34.794 0 63 28.206 63 63z"/>
|
||||
<path d="m110.66 936.76 0.919-0.692-0.814-0.813-27.059-27.06-0.7071-0.707-0.7071 0.707-27.059 27.06-0.8134 0.813 0.9186 0.692c7.6985 5.803 17.28 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.06 26.059-0.7071 0.707 0.7071 0.707 26.903 26.903zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.9707 0.684 0.8399 0.84 25.903 25.903 0.7071 0.707 0.7071-0.707 25.903-25.903zm-61.862 8.329-0.8134-0.814-0.6923 0.919c-5.8024 7.698-9.2427 17.279-9.2427 27.661 0 9.856 3.1011 18.991 8.3807 26.479l0.6844 0.971 0.8399-0.84 26.903-26.903 0.7071-0.707-0.7071-0.707-26.059-26.059zm98.252 27.766c0 34.794-28.206 63-63 63-34.794 0-63-28.206-63-63s28.206-63 63-63c34.794 0 63 28.206 63 63z"/>
|
||||
<path d="m580.66 336.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
<path d="m580.66 936.76 0.919-0.692-0.814-0.813-27.766-27.767-27.766 27.767-0.814 0.813 0.919 0.692c7.698 5.803 17.279 9.243 27.661 9.243s19.963-3.44 27.661-9.243zm8.434-10.147 0.84 0.84 0.684-0.971c5.28-7.488 8.381-16.623 8.381-26.479 0-10.382-3.44-19.963-9.243-27.661l-0.692-0.919-0.813 0.814-26.767 26.766 27.61 27.61zm-9.485-62.705 0.84-0.84-0.971-0.684c-7.488-5.28-16.623-8.381-26.479-8.381s-18.991 3.101-26.479 8.381l-0.971 0.684 27.45 27.45 26.61-26.61zm-61.862 8.329-0.813-0.814-0.692 0.919c-5.803 7.698-9.243 17.279-9.243 27.661 0 9.856 3.101 18.991 8.381 26.479l0.684 0.971 28.45-28.45-26.767-26.766zm98.252 27.766c0 34.794-28.206 63-63 63s-63-28.206-63-63 28.206-63 63-63 63 28.206 63 63z"/>
|
||||
</g><path d="m269.05 0s-269.05 0-269.05 167.5v820.9c0 6.628 7.1636 11.601 16 11.601h768c8.836 0 16-4.973 16-11.601v-820.9c0-167.5-264.28-167.5-264.28-167.5h-135.72zm268.28 203c-5.1548 0-9.3332 3.134-9.3332 7v751c0 3.866 4.1788 7 9.3332 7h58.664c5.1548 0 9.3332-3.134 9.3332-7v-751c0-3.866-4.1788-7-9.3332-7z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,916)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 916)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,363 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="600" fill="none" version="1.1" viewBox="0 0 600 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Heat exchanger",
|
||||
"description": "Heat exchanger with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<path d="m1 5c0-2.2091 1.7909-4 4-4h590c2.209 0 4 1.7909 4 4v134h-598v-134z"/>
|
||||
<path d="m121 317h358v54c0 2.209-1.791 4-4 4h-350c-2.209 0-4-1.791-4-4v-54z"/>
|
||||
<rect x="271" y="375" width="58" height="80"/>
|
||||
<rect x="248" y="456" width="104" height="14" rx="2"/>
|
||||
<path d="m221 474c0-2.209 1.791-4 4-4h150c2.209 0 4 1.791 4 4v125h-158v-125z"/>
|
||||
<path d="m120.65 317-79.111-178h516.92l-79.111 178h-358.7z"/>
|
||||
<path d="m263 318v56"/>
|
||||
<path d="m188 318v56"/>
|
||||
<path d="m413 318v56"/>
|
||||
<path d="m200 0v138"/>
|
||||
<path d="m400 0v138"/>
|
||||
<path d="m338 318v56"/>
|
||||
</g><path d="m201.79 0s-201.79 0-201.79 100.5v492.54c0 3.9768 5.3727 6.9606 12 6.9606h576c6.627 0 12-2.9838 12-6.9606v-492.54c0-100.5-198.21-100.5-198.21-100.5h-101.79zm201.21 121.8c-3.8661 0-6.9999 1.8804-6.9999 4.2v450.6c0 2.3196 3.1341 4.2 6.9999 4.2h43.998c3.8661 0 6.9999-1.8804 6.9999-4.2v-450.6c0-2.3196-3.1341-4.2-6.9999-4.2z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,532 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="800" height="600" fill="none" version="1.1" viewBox="0 0 800 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Heat pump",
|
||||
"description": "Heat pump",
|
||||
"searchTags": [
|
||||
"pump",
|
||||
"high performance"
|
||||
],
|
||||
"widgetSizeX": 4,
|
||||
"widgetSizeY": 3,
|
||||
"stateRenderFunction": "var levelUpButton = ctx.tags.levelUpButton;\nvar levelDownButton = ctx.tags.levelDownButton;\n\nvar enabledColor = ctx.properties.runningColor;\nvar disabledColor = ctx.properties.stoppedColor;\n\nvar temperature = ctx.values.temperature;\nvar running = ctx.values.running;\nvar minTemperature = ctx.properties.minTemperature;\nvar maxTemperature = ctx.properties.maxTemperature;\n\nvar levelUpEnabled = running && temperature < maxTemperature;\nvar levelDownEnabled = running && temperature > minTemperature;\n\nif (levelUpEnabled) {\n ctx.api.enable(levelUpButton);\n levelUpButton[0].attr({fill: enabledColor});\n} else {\n ctx.api.disable(levelUpButton);\n levelUpButton[0].attr({fill: disabledColor});\n}\n \nif (levelDownEnabled) {\n ctx.api.enable(levelDownButton);\n levelDownButton[0].attr({fill: enabledColor});\n} else {\n ctx.api.disable(levelDownButton);\n levelDownButton[0].attr({fill: disabledColor});\n}",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "circle-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = '#cccccc';\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "levelDownButton",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "if (ctx.values.running) {\n var temperature = ctx.values.temperature; \n var minTemperature = ctx.properties.minTemperature;\n var step = ctx.properties.temperatureStep;\n \n var newTemperature = Math.max(minTemperature, temperature - step);\n ctx.api.setValue('temperature', newTemperature);\n ctx.api.callAction(event, 'updateTemperatureState', newTemperature, {\n error: () => {\n ctx.api.setValue('temperature', temperature);\n }\n });\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "levelUpButton",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "if (ctx.values.running) {\n var temperature = ctx.values.temperature; \n var temperature = ctx.values.temperature; \n var maxTemperature = ctx.properties.maxTemperature;\n var minTemperature = ctx.properties.minTemperature;\n var step = ctx.properties.temperatureStep;\n var newTemperature = temperature || minTemperature === 0 ? Math.min(maxTemperature, temperature + step) : minTemperature;\n ctx.api.setValue('temperature', newTemperature);\n ctx.api.callAction(event, 'updateTemperatureState', newTemperature, {\n error: () => {\n ctx.api.setValue('temperature', temperature);\n }\n });\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "value-box-background",
|
||||
"stateRenderFunction": "if (ctx.values.running) {\n var color = ctx.properties.valueBoxBackground;\n element.attr({fill: color});\n} else {\n var color = ctx.properties.stoppedColor;\n element.attr({fill: color});\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value-text",
|
||||
"stateRenderFunction": "var valueTextFont = ctx.properties.valueTextFont;\nvar valueTextColor = ctx.properties.valueTextColor;\nvar currentVolume = ctx.values.temperature;\nvar decimals = Math.floor(ctx.properties.temperatureStep) === ctx.properties.temperatureStep;\nvar valueText = ctx.api.formatValue(currentVolume, {units: ctx.properties.units, decimals: decimals ? 0 : 1, ignoreUnitSymbol: !ctx.properties.valueUnits});\nctx.api.font(element, valueTextFont, valueTextColor);\nctx.api.text(element, valueText);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "temperature",
|
||||
"name": "{i18n:scada.symbol.temperature}",
|
||||
"hint": "{i18n:scada.symbol.temperature-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "temperature"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "updateTemperatureState",
|
||||
"name": "{i18n:scada.symbol.update-temperature}",
|
||||
"hint": "{i18n:scada.symbol.update-temperature-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "ADD_TIME_SERIES",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "state"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "temperature"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "VALUE",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "minTemperature",
|
||||
"name": "{i18n:scada.symbol.temperature}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "Min",
|
||||
"rowClass": "column-xs",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "maxTemperature",
|
||||
"name": "{i18n:scada.symbol.temperature}",
|
||||
"type": "number",
|
||||
"default": 45,
|
||||
"required": true,
|
||||
"subLabel": "Max",
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "temperatureStep",
|
||||
"name": "{i18n:scada.symbol.temperature-step}",
|
||||
"type": "number",
|
||||
"default": 1,
|
||||
"required": true,
|
||||
"step": 0.5,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueTextColor",
|
||||
"name": "{i18n:scada.symbol.value-text}",
|
||||
"type": "color",
|
||||
"default": "#002878",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueTextFont",
|
||||
"name": "{i18n:scada.symbol.value-text}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 40,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueUnits",
|
||||
"name": "{i18n:scada.symbol.value-units}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "units",
|
||||
"name": "{i18n:scada.symbol.value-units}",
|
||||
"type": "units",
|
||||
"default": "°C",
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueBoxBackground",
|
||||
"name": "{i18n:scada.symbol.value-box-background}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" tb:tag="background">
|
||||
<rect x="250" y="571" width="300" height="29" rx="6.9964"/>
|
||||
<rect x="251" y="572" width="298" height="27" rx="5.9964" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<path d="m303 542h194l32 31h-258l32-31z"/>
|
||||
<path d="m273.47 572 29.936-29h193.19l29.936 29h-253.06z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<rect width="800" height="544" rx="32"/>
|
||||
<rect x="1" y="1" width="798" height="542" rx="31" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<rect x="80" y="72.001" width="180" height="128" rx="8"/>
|
||||
<rect x="81" y="73.001" width="178" height="126" rx="7" stroke="#000" stroke-opacity=".87" stroke-width="2" tb:tag="value-box-background"/>
|
||||
<text x="170.51953" y="139.75" dominant-baseline="middle" fill="#002878" font-family="Roboto, sans-serif" font-size="40px" font-weight="500" text-anchor="middle" tb:tag="value-text" xml:space="preserve"><tspan>27</tspan></text>
|
||||
<ellipse cx="542" cy="284" rx="180" ry="180" fill="#fff"/>
|
||||
<path d="m720.5 284c0 98.583-79.918 178.5-178.5 178.5s-178.5-79.918-178.5-178.5 79.918-178.5 178.5-178.5 178.5 79.918 178.5 178.5z" stroke="#000" stroke-opacity=".12" stroke-width="2.9985"/>
|
||||
<g clip-path="url(#clip1_3215_7169)">
|
||||
<path d="m536.11 171.46c-13.585-34.892-30.132-50.233-39.494-62.425l-51.598 1.357-36.438 43.78c2.989-3.245 18.831-0.165 58.282 38.122 39.45 38.287 53.558 73.174 55.681 85.832l27.713-18.525c0-27.204-0.561-53.25-14.146-88.141z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<path d="m643.04 226.16c24.624-28.208 30.551-49.979 37.016-63.926l-25.114-45.094-55.681-12.001c4.261 1.145 8.873 16.611-6.773 69.312s-40.023 81.37-50.256 89.117l29.258 15.973c24.107-12.607 46.927-25.174 71.55-53.381z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<path d="m660.17 341.98c37.249 3.809 58.446-3.928 73.565-6.705l22.307-46.547-22.363-52.386c1.526 4.14-8.436 16.837-60.494 34.504-52.059 17.666-89.542 14.325-101.78 10.446l-6.364 30.727c24.215 12.398 57.877 26.152 95.125 29.961z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<path d="m445.68 341.28c-26.207 26.744-42.114 48.43-49.371 61.981l22.476 46.466 54.898 15.186c-4.188-1.389-7.902-17.095 10.752-68.808 18.653-51.713 44.64-78.931 55.302-86.076l-22.551-16.939c-24.793 11.199-45.3 21.447-71.506 48.19z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<path d="m547.19 393.22c12.328 35.356 26.698 53.295 35.619 65.814l51.613 0.49 37.982-42.448c-3.104 3.137-25.248-0.317-63.303-39.991s-48.728-61.258-50.396-73.984l-21.661 6.423c-0.974 27.187-2.182 48.341 10.146 83.696z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<path d="m442.58 235.02c-36.583-7.982-58.516-2.683-73.851-1.627l-27.411 43.736 16.318 54.573c-1.05-4.286 10.279-15.78 63.997-27.467 53.718-11.688 97.403-14.454 109.12-9.221l-3.176-23.132c-22.664-15.048-48.417-28.88-84.999-36.862z" stroke="#727171" stroke-width="3.2645"/>
|
||||
<circle cx="542" cy="284" r="37.241" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<circle cx="542" cy="284" r="18.621" fill="#727171"/>
|
||||
</g>
|
||||
<mask id="path-29-inside-1_3215_7169" fill="white">
|
||||
<path d="m722 284c0 99.411-80.589 180-180 180s-180-80.589-180-180 80.589-180 180-180 180 80.589 180 180zm-331.96 0c0 83.926 68.035 151.96 151.96 151.96s151.96-68.035 151.96-151.96-68.035-151.96-151.96-151.96-151.96 68.035-151.96 151.96z"/>
|
||||
</mask>
|
||||
<path d="m722 284c0 99.411-80.589 180-180 180s-180-80.589-180-180 80.589-180 180-180 180 80.589 180 180zm-331.96 0c0 83.926 68.035 151.96 151.96 151.96s151.96-68.035 151.96-151.96-68.035-151.96-151.96-151.96-151.96 68.035-151.96 151.96z" fill="#DEDEDE" mask="url(#path-29-inside-1_3215_7169)" stroke="#000" stroke-opacity=".87" stroke-width="4" tb:tag="circle-background"/>
|
||||
</g><path d="m269.06 0s-269.06 0-269.06 100.5v492.54c0 3.9768 7.1636 6.9606 16 6.9606h768c8.836 0 16-2.9838 16-6.9606v-492.54c0-100.5-264.28-100.5-264.28-100.5h-135.72zm268.28 121.8c-5.1548 0-9.3332 1.8804-9.3332 4.2v450.6c0 2.3196 4.1788 4.2 9.3332 4.2h58.664c5.1548 0 9.3332-1.8804 9.3332-4.2v-450.6c0-2.3196-4.1788-4.2-9.3332-4.2z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g tb:tag="levelUpButton">
|
||||
<path d="m164 290.19c0 5.42-4.394 9.814-9.815 9.814h-68.371c-5.4203 0-9.8143-4.394-9.8143-9.814v-68.373c0-5.421 4.394-9.815 9.8143-9.815h68.371c5.421 0 9.815 4.394 9.815 9.815z"/>
|
||||
<path d="m163 290.19c0 4.868-3.947 8.814-8.815 8.814h-68.371c-4.868 0-8.8143-3.946-8.8143-8.814v-68.373c0-4.868 3.9463-8.815 8.8143-8.815h68.371c4.868 0 8.815 3.947 8.815 8.815z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<path d="m135.92 263.33c0.89 0 1.336-1.077 0.707-1.706l-15.921-15.921c-0.39-0.39-1.023-0.39-1.413 0l-15.921 15.921c-0.629 0.629-0.183 1.706 0.707 1.706z" fill="#000" fill-opacity=".87"/>
|
||||
</g><g tb:tag="levelDownButton">
|
||||
<path d="m264.96 221.82c0-5.42-4.394-9.814-9.814-9.814h-69.327c-5.42 0-9.814 4.394-9.814 9.814v68.372c0 5.42 4.394 9.814 9.814 9.814h69.327c5.42 0 9.814-4.394 9.814-9.814z"/>
|
||||
<path d="m263.96 221.82c0-4.868-3.946-8.814-8.814-8.814h-69.327c-4.868 0-8.814 3.946-8.814 8.814v68.372c0 4.868 3.946 8.814 8.814 8.814h69.327c4.868 0 8.814-3.946 8.814-8.814z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<path d="m236.58 248.67c0.893 0 1.338 1.082 0.703 1.711l-16.101 15.927c-0.389 0.386-1.016 0.386-1.406 0l-16.1-15.927c-0.635-0.629-0.191-1.711 0.703-1.711z" fill="#000" fill-opacity=".87"/>
|
||||
</g><g transform="translate(0,516)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0,516)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><defs>
|
||||
<clipPath id="clip1_3215_7169">
|
||||
<rect x="362" y="104" width="360" height="360" rx="180" fill="#fff"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,297 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="800" fill="none" version="1.1" viewBox="0 0 400 800"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP High voltage tower",
|
||||
"description": "High voltage tower with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 4,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.backgroundColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#999999",
|
||||
"divider": false
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#999" stroke="#1a1a1a" tb:tag="background">
|
||||
<path d="m140 300h120" stroke-width="2"/>
|
||||
<path d="m397 240v63" stroke-width="6"/>
|
||||
<path d="m312 100v50" stroke-width="2"/>
|
||||
<path d="m88 100v50" stroke-width="2"/>
|
||||
<path d="m3 240v63" stroke-width="6"/>
|
||||
<path d="m294 150h36" stroke-width="2"/>
|
||||
<path d="m70 150h36" stroke-width="2"/>
|
||||
<path d="m259.73 61 66.5 38h-252.47l66.5-38z" stroke-width="2"/>
|
||||
<path d="m399.62 239h-399.23l139.46-58h120.32z" stroke-width="2.0004"/>
|
||||
<path d="m259.02 299.7 99.599 497.5-158.17-79.085-0.447-0.224-0.447 0.224-158.17 79.085 99.599-497.5 0.019-0.097v-238.19l59-59.983 59 59.983v238.19z" stroke-width="2"/>
|
||||
<path d="m200.08 718.22-130.08-67.22" stroke-width="2.0033"/>
|
||||
<path d="m200.08 584-129.08 67.226" stroke-width="2.0006"/>
|
||||
<path d="m200 718.22 130.08-67.22" stroke-width="2.0033"/>
|
||||
<path d="m200 584 129.08 67.226" stroke-width="2.0006"/>
|
||||
<path d="m200 584.22 105.08-54.222" stroke-width="2.0009"/>
|
||||
<path d="m200 476 105.08 54.222" stroke-width="2.0009"/>
|
||||
<path d="m200 476.52 85.077-44.225" stroke-width="2.0013"/>
|
||||
<path d="m200 387.29 85.073 44.215" stroke-width="2.0113"/>
|
||||
<path d="m200 387.22 69.098-35.23" stroke-width="1.9864"/>
|
||||
<path d="m200.09 387.22-69.098-35.23" stroke-width="1.9864"/>
|
||||
<path d="m200.09 475.5-85.094-43.216" stroke-width="2.0007"/>
|
||||
<path d="m200.09 387.28-85.094 43.216" stroke-width="2.0007"/>
|
||||
<path d="m200.08 584.22-105.08-54.222" stroke-width="2.0009"/>
|
||||
<path d="m200.08 476-105.08 54.219" stroke-width="2.004"/>
|
||||
<path d="m141 300h118" stroke-width="2"/>
|
||||
<path d="m141 61h118" stroke-width="2"/>
|
||||
<path d="m141 181h118" stroke-width="2"/>
|
||||
<path d="m141 239h118" stroke-width="2"/>
|
||||
<path d="m141 99h118" stroke-width="2"/>
|
||||
<path d="m141 61h118" stroke-width="2"/>
|
||||
</g><path d="m134.53 0s-134.53 0-134.53 134v656.72c0 5.3024 3.5818 9.2806 8 9.2806h384c4.418 0 8-3.9784 8-9.2806v-656.72c0-134-132.14-134-132.14-134h-67.86zm134.14 162.4c-2.5774 0-4.6666 2.5072-4.6666 5.6v600.8c0 3.0928 2.0894 5.6 4.6666 5.6h29.332c2.5774 0 4.6666-2.5072 4.6666-5.6v-600.8c0-3.0928-2.0894-5.6-4.6666-5.6z" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,716)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 720.94)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1,293 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="400" fill="none" version="1.1" viewBox="0 0 200 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Hook",
|
||||
"description": "Hook with various states.",
|
||||
"searchTags": [
|
||||
"hook",
|
||||
"drilling"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "hook",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.hookColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "hookColor",
|
||||
"name": "{i18n:scada.symbol.hook-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "",
|
||||
"divider": false,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1a1a1a" stroke-width="2" tb:tag="hook">
|
||||
<path d="m83.979 279.78c2.3649-3.644 3.8966-6.715 4.6115-9.864 0.64089-2.823 0.61129-5.644 0.017-8.921h30.209c0.58999 3.566 0.85699 11.114-3.162 23.222-1.333 4.015-4.2859 7.854-8.1039 11.674-3.19 3.19-6.9109 6.3-10.681 9.45-0.74019 0.619-1.4823 1.239-2.2226 1.862-4.4846 3.772-8.8978 7.63-12.264 11.697-3.3665 4.066-5.7648 8.433-6.0848 13.232-0.61659 9.244 1.9776 15.781 5.8941 20.39 3.8938 4.582 9.0245 7.176 13.366 8.691 3.3656 1.175 10.24 1.992 16.594-0.225 3.199-1.116 6.2889-3.011 8.7169-6.037 2.429-3.028 4.149-7.131 4.6969-12.59 0.34899-3.477 0.60699-6.524 0.82999-9.148 0.119-1.403 0.22699-2.684 0.33399-3.846 0.311-3.382 0.60399-5.72 1.064-7.249 0.46099-1.528 0.96899-1.88 1.476-1.959 0.33699-0.054 0.81799-0.013 1.519 0.199 0.69499 0.211 1.536 0.57 2.566 1.084 11.321 5.643 15.547 14.835 16.45 23.832 0.90798 9.053-1.564 17.881-3.637 22.532-8.6369 19.376-26.348 31.189-48.797 31.189-13.468 0-23.767-2.387-32.055-6.711-8.2843-4.322-14.63-10.617-20.134-18.55-4.4111-6.357-8.8287-16.852-9.925-28.56-1.0945-11.689 1.1254-24.52 9.889-35.661 8.2183-10.447 16.325-15.531 23.129-19.132 1.2292-0.65 2.4347-1.261 3.5979-1.851 2.0264-1.027 3.9244-1.989 5.5955-2.981 2.6649-1.581 4.9275-3.332 6.5092-5.769z"/>
|
||||
<path d="m58.08 261.38c-1.9988-1.28-4.4082-3.607-7.1067-6.92-2.688-3.299-5.6227-7.526-8.6813-12.552-6.1167-10.053-12.701-23.261-18.777-38.55-12.154-30.585-22.24-69.418-22.511-107.89-0.43146-61.407 29.982-85.126 51.186-90.56 10.719-2.7467 30.395-3.9859 49.703-3.9086 19.316 0.07727 38.034 1.4712 46.85 3.9039 17.425 4.8087 50.257 32.066 50.257 90.571 0 32.108-9.83 70.081-22.104 101.85-6.133 15.874-12.866 30.17-19.264 41.38-6.423 11.254-12.436 19.266-17.095 22.714-1.119 0.828-3.04 1.62-5.682 2.327-2.615 0.701-5.841 1.294-9.494 1.775-7.304 0.96-16.24 1.459-25.255 1.477-9.0138 0.019-18.079-0.442-25.642-1.393-3.7817-0.476-7.1717-1.072-9.9838-1.787-2.8296-0.72-5.0029-1.542-6.4004-2.437z"/>
|
||||
</g><mask id="path-5-inside-1_4471_52357" fill="#ffffff">
|
||||
<path d="m172.8 99c0 39.765-32.236 72-72 72-39.765 0-72-32.235-72-72 0-39.764 32.236-72 72-72 39.764 0 72 32.236 72 72zm-132.78 0c0 33.57 27.214 60.784 60.784 60.784 33.57 0 60.784-27.214 60.784-60.784 0-33.57-27.214-60.784-60.784-60.784-33.57 0-60.784 27.214-60.784 60.784z"/>
|
||||
</mask><path d="m172.8 99c0 39.765-32.236 72-72 72-39.765 0-72-32.235-72-72 0-39.764 32.236-72 72-72 39.764 0 72 32.236 72 72zm-132.78 0c0 33.57 27.214 60.784 60.784 60.784 33.57 0 60.784-27.214 60.784-60.784 0-33.57-27.214-60.784-60.784-60.784-33.57 0-60.784 27.214-60.784 60.784z" fill="#dedede" mask="url(#path-5-inside-1_4471_52357)" stroke="#1a1a1a" stroke-width="4"/><path d="m67.264 0s-67.264 0-67.264 67v328.36c0 2.6512 1.7909 4.6404 4 4.6404h192c2.209 0 4-1.9892 4-4.6404v-328.36c0-67-66.07-67-66.07-67h-33.929zm67.07 81.2c-1.2887 0-2.3333 1.2536-2.3333 2.8v300.4c0 1.5464 1.0447 2.8 2.3333 2.8h14.666c1.2887 0 2.3333-1.2536 2.3333-2.8v-300.4c0-1.5464-1.0447-2.8-2.3333-2.8z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,271 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Horizontal ball valve",
|
||||
"description": "Horizontal ball valve with open/close animation and state colors.",
|
||||
"searchTags": [
|
||||
"valve",
|
||||
"ball"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var opened = ctx.values.opened;\nvar openAnimate = element.remember('openAnimate');\nvar color = opened ? ctx.properties.openedColor : ctx.properties.closedColor;\nif (!openAnimate) {\n element.attr({fill: color});\n} else {\n ctx.api.cssAnimate(element, 500).attr({fill: color});\n element.remember('openAnimate', false);\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": " ctx.tags.wheel.forEach(e => {\n e.remember('openAnimate', true);\n });\n ctx.tags.background.forEach(e => {\n e.remember('openAnimate', true);\n });\n\n\nvar opened = ctx.values.opened;\nvar action = opened ? 'close' : 'open';\n\nctx.api.callAction(event, action, undefined, {\n next: () => {\n ctx.api.setValue('opened', !opened);\n }\n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "wheel",
|
||||
"stateRenderFunction": "var opened = ctx.values.opened;\nvar openAnimate = element.remember('openAnimate');\nvar angle = opened ? ctx.properties.openedRotationAngle : ctx.properties.closedRotationAngle;\nif (!openAnimate) {\n element.transform({rotate: angle, originX: 100});\n} else {\n ctx.api.cssAnimate(element, 500).transform({rotate: angle, originX: 100});\n element.remember('openAnimate', false);\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "opened",
|
||||
"name": "{i18n:scada.symbol.opened}",
|
||||
"hint": "{i18n:scada.symbol.opened-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.opened}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "open",
|
||||
"name": "{i18n:scada.symbol.open}",
|
||||
"hint": "{i18n:scada.symbol.open-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "close",
|
||||
"name": "{i18n:scada.symbol.close}",
|
||||
"hint": "{i18n:scada.symbol.close-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "openedColor",
|
||||
"name": "{i18n:scada.symbol.opened-color}",
|
||||
"type": "color",
|
||||
"default": "#1C943E",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "closedColor",
|
||||
"name": "{i18n:scada.symbol.closed-color}",
|
||||
"type": "color",
|
||||
"default": "#696969",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "openedRotationAngle",
|
||||
"name": "{i18n:scada.symbol.opened-rotation-angle}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": -179,
|
||||
"max": 179,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "closedRotationAngle",
|
||||
"name": "{i18n:scada.symbol.closed-rotation-angle}",
|
||||
"type": "number",
|
||||
"default": 90,
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": -179,
|
||||
"max": 179,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1595_99338" x1="58.72" x2="58.3" y1="46.5" y2="153.51" gradientTransform="translate(-1.1e-6)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".18316"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".35085"/>
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset=".49829"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".64825"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".82318"/>
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="filter0_d_1595_99338" x="65" y="65" width="131" height="70" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset/>
|
||||
<feGaussianBlur stdDeviation="4"/>
|
||||
<feComposite in2="hardAlpha" operator="out"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
|
||||
<feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1595_99338"/>
|
||||
<feBlend in="SourceGraphic" in2="effect1_dropShadow_1595_99338" result="shape"/>
|
||||
</filter>
|
||||
<filter id="filter1_d_1595_99338" x="100" y="76.174" width="100" height="47.652" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset/>
|
||||
<feGaussianBlur stdDeviation="2"/>
|
||||
<feComposite in2="hardAlpha" operator="out"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
|
||||
<feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1595_99338"/>
|
||||
<feBlend in="SourceGraphic" in2="effect1_dropShadow_1595_99338" result="shape"/>
|
||||
</filter>
|
||||
<radialGradient id="paint1_radial_1595_99338" cx="0" cy="0" r="1" gradientTransform="matrix(0 10.846 -89.342 0 180.83 100.52)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" offset="0"/>
|
||||
<stop stop-color="#9B9B9B" offset="1"/>
|
||||
</radialGradient>
|
||||
<filter id="filter2_ii_1595_99338" x="69.875" y="69.875" width="60.25" height="60.25" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="3.12497" dy="-3.12497"/>
|
||||
<feGaussianBlur stdDeviation="3.12497"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/>
|
||||
<feBlend in2="shape" result="effect1_innerShadow_1595_99338"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="-3.12497" dy="3.12497"/>
|
||||
<feGaussianBlur stdDeviation="3.12497"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
|
||||
<feBlend in2="effect1_innerShadow_1595_99338" result="effect2_innerShadow_1595_99338"/>
|
||||
</filter>
|
||||
<filter id="filter3_i_1595_99338" x="72" y="77" width="51" height="51" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="-5" dy="5"/>
|
||||
<feGaussianBlur stdDeviation="4"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/>
|
||||
<feBlend in2="shape" result="effect1_innerShadow_1595_99338"/>
|
||||
</filter>
|
||||
</defs><rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><path d="m14 63.075s25.882-5.5691 43-8.8079c16.632-3.1469 26.182-3.767 43-3.767 16.818 0 26.368 0.6201 43 3.767 17.118 3.2388 43 8.8079 43 8.8079v73.833s-25.882 4.816-43 8.055c-16.632 3.147-26.182 4.374-43 4.52-16.807 0.147-26.377-0.639-43-3.767-17.177-3.231-43-8.808-43-8.808z" fill="#1c943e" tb:tag="background"/><path d="m14 63.075s25.882-5.5691 43-8.8079c16.632-3.1469 26.182-3.767 43-3.767 16.818 0 26.368 0.6201 43 3.767 17.118 3.2388 43 8.8079 43 8.8079v73.833s-25.882 4.816-43 8.055c-16.632 3.147-26.182 4.374-43 4.52-16.807 0.147-26.377-0.639-43-3.767-17.177-3.231-43-8.808-43-8.808z" fill="url(#paint0_linear_1595_99338)" style="fill:url(#paint0_linear_1595_99338)"/><path d="m181.38 63.621c1.321 0.281 2.384 0.5079 3.123 0.6661v71.375c-0.738 0.137-1.787 0.333-3.086 0.575-2.694 0.502-6.465 1.205-10.77 2.01-8.611 1.608-19.362 3.622-27.923 5.242-16.568 3.135-26.026 4.349-42.734 4.494-16.714 0.146-26.186-0.632-42.71-3.741-8.5733-1.613-19.311-3.812-27.912-5.61-4.299-0.898-8.0616-1.696-10.749-2.269-1.3186-0.281-2.3784-0.508-3.1159-0.666v-71.41c0.7391-0.1582 1.8016-0.3851 3.1235-0.6661 2.6925-0.5724 6.4608-1.3694 10.764-2.2675 8.6083-1.7967 19.347-3.9963 27.892-5.6129 16.521-3.1259 25.975-3.7409 42.721-3.7409 16.746 0 26.2 0.615 42.721 3.7409 8.545 1.6166 19.283 3.8162 27.892 5.6129 4.303 0.8981 8.071 1.6951 10.764 2.2675z" stroke="#000" stroke-opacity=".12" stroke-width="3"/><rect x="187.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><g tb:tag="wheel">
|
||||
<path d="m100 80.174s21.238 7.876 45.5 8c14.198 0.0726 28.327-1.0525 38.64-2.1526 8.35-0.8908 15.86 5.581 15.86 13.979 0 8.3981-7.51 14.869-15.86 13.979-10.313-1.1-24.442-2.226-38.64-2.153-24.262 0.124-45.5 8-45.5 8z" fill="url(#paint1_radial_1595_99338)" style="fill:url(#paint1_radial_1595_99338);filter:url(#filter1_d_1595_99338)"/>
|
||||
<path d="m100.5 119.12v-38.234c0.09 0.0315 0.19 0.0659 0.298 0.1029 0.632 0.217 1.561 0.5266 2.75 0.8983 2.38 0.7432 5.804 1.7348 9.988 2.7301 8.365 1.99 19.78 3.9978 31.961 4.06 14.224 0.0727 28.373-1.0542 38.696-2.1554 8.068-0.8607 15.307 5.3942 15.307 13.482 0 8.0871-7.239 14.342-15.307 13.481-10.323-1.101-24.472-2.228-38.696-2.155-12.181 0.062-23.596 2.07-31.961 4.06-4.184 0.995-7.608 1.987-9.988 2.73-1.189 0.372-2.118 0.681-2.75 0.898-0.108 0.037-0.208 0.072-0.298 0.103z" stroke="#000" stroke-opacity=".12" style="filter:url(#filter1_d_1595_99338)"/>
|
||||
</g><g filter="url(#filter2_ii_1595_99338)">
|
||||
<circle cx="100" cy="100" r="27" fill="#d9d9d9"/>
|
||||
</g><path d="m123 100c0 12.703-10.297 23-23 23-12.702 0-23-10.297-23-23 0-12.702 10.298-23 23-23 12.703 0 23 10.298 23 23z" fill="#000" fill-opacity=".05" style="filter:url(#filter0_d_1595_99338)"/><g filter="url(#filter3_i_1595_99338)">
|
||||
<path d="m123 100c0 12.703-10.297 23-23 23-12.702 0-23-10.297-23-23 0-12.702 10.298-23 23-23 12.703 0 23 10.298 23 23z" fill="#1c943e" tb:tag="background"/>
|
||||
</g><path d="m122 100c0 12.15-9.85 22-22 22-12.15 0-22-9.85-22-22 0-12.15 9.8497-22 22-22 12.15 0 22 9.8497 22 22z" stroke="#fff" stroke-width="2"/><path d="m97.283 90.614c0-0.647-0.6112-1.1214-1.2155-0.8901-4.133 1.5825-7.0677 5.5867-7.0677 10.276 0 6.0751 4.9249 11 11 11 6.075 0 11-4.925 11-11 0-4.5642-2.78-8.4791-6.739-10.144-0.609-0.2563-1.243 0.2209-1.243 0.882 0 0.4223 0.268 0.7938 0.655 0.9649 3.18 1.4098 5.398 4.5944 5.398 8.2973 0 5.0101-4.061 9.0711-9.071 9.0711-5.01 0-9.0714-4.061-9.0714-9.0711 0-3.8068 2.3447-7.0658 5.6688-8.4117 0.4019-0.1628 0.6858-0.541 0.6858-0.9746z" clip-rule="evenodd" fill="#fff" fill-rule="evenodd"/><path d="m99.514 87.637c0-0.3519 0.2852-0.6372 0.6373-0.6372 0.352 0 0.637 0.2853 0.637 0.6372v10.401c0 0.3519-0.285 0.6372-0.637 0.6372-0.3521 0-0.6373-0.2853-0.6373-0.6372z" fill="#fff"/><rect y="50" width="200" height="100" fill="#000" fill-opacity="0" stroke-width="0" tb:tag="clickArea"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,97 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Horizontal broken pipe",
|
||||
"description": "Horizontal broken pipe.",
|
||||
"searchTags": [
|
||||
"pipe",
|
||||
"horizontal pipe",
|
||||
"broken pipe"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "pipe-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.pipeColor;\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "pipeColor",
|
||||
"name": "{i18n:scada.symbol.pipe-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g tb:tag="clickArea">
|
||||
<path d="m14 64s53.5 0.2293 60.5 0 17-6.5 17-6.5l-14.5 21.5 14.5 6.5-10.5 9 14.5 11-18.5 6.5 10 6-2.5 11.5 7 14s-10-7.5-17-7.5h-60.5v-72z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m14 64s53.5 0.2293 60.5 0 17-6.5 17-6.5l-14.5 21.5 14.5 6.5-10.5 9 14.5 11-18.5 6.5 10 6-2.5 11.5 7 14s-10-7.5-17-7.5h-60.5v-72z" fill="url(#paint0_linear_2474_252376)"/>
|
||||
<path d="m86.266 62.02c0.1879-0.0889 0.3731-0.1777 0.5555-0.2661l-12.062 17.886 13.968 6.2614-8.7036 7.4602-1.4118 1.2101 13.759 10.438-15.869 5.576-3.0127 1.058 2.7382 1.643 9.0774 5.447-2.2715 10.448-0.1123 0.517 0.2365 0.473 4.5114 9.023c-0.4206-0.249-0.8606-0.502-1.3163-0.755-3.3898-1.883-7.9357-3.939-11.854-3.939h-59v-68.994l0.8066 0.0033c1.4767 0.0058 3.5942 0.0139 6.1569 0.0228 5.1255 0.0179 12.032 0.0394 19.158 0.0538 14.23 0.0286 29.393 0.0289 32.927-0.0868 3.8302-0.1255 8.3197-1.8722 11.717-3.4792z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<path d="m105.5 56.5s13.5 7.395 18.5 7.5 62 0 62 0v72s-54.5-0.086-62 0-18.5 4.5-18.5 4.5l6-13.5-15-14 16.5-5-7.5-6 6-13-18-13 19.5-4.5-7.5-15z" fill="#fff" tb:tag="pipe-background"/>
|
||||
<path d="m105.5 56.5s13.5 7.395 18.5 7.5 62 0 62 0v72s-54.5-0.086-62 0-18.5 4.5-18.5 4.5l6-13.5-15-14 16.5-5-7.5-6 6-13-18-13 19.5-4.5-7.5-15z" fill="url(#paint1_linear_2474_252376)"/>
|
||||
<path d="m184.5 65.503v68.995l-0.854-2e-3c-1.505-2e-3 -3.663-5e-3 -6.277-8e-3 -5.227-7e-3 -12.274-0.015-19.555-0.02-14.556-0.011-30.069-0.011-33.831 0.032-3.973 0.046-8.768 1.225-12.479 2.346-1.18 0.357-2.264 0.712-3.197 1.031l4.564-10.268 0.434-0.976-0.782-0.73-13.096-12.223 14.008-4.244 2.727-0.827-2.225-1.78-6.583-5.267 5.508-11.933 0.518-1.1215-1.002-0.7231-15.321-11.065 16.28-3.757 1.857-0.4284-0.852-1.704-5.435-10.87c1.009 0.5039 2.144 1.0566 3.335 1.611 2.02 0.9404 4.222 1.8953 6.25 2.6248 1.981 0.7123 3.962 1.2726 5.476 1.3044 2.522 0.0529 18.049 0.0528 32.908 0.0397 7.438-0.0066 14.72-0.0164 20.142-0.0246 2.711-0.0041 4.957-0.0078 6.526-0.0105l0.956-0.0017z" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<rect x="187.5" y="51.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3"/>
|
||||
<rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#D9D9D9" stroke="#727171" stroke-width="3"/>
|
||||
</g><defs>
|
||||
<linearGradient id="paint0_linear_2474_252376" x1="32.98" x2="32.532" y1="64" y2="136" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_2474_252376" x1="129.76" x2="129.33" y1="64" y2="136" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
|
|
@ -0,0 +1,268 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Horizontal connector",
|
||||
"description": "Horizontal connector with an optional directional arrow to visually indicate flow.",
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"stateRenderFunction": "const {\n flowAnimation,\n arrowDirection: flowDirection,\n flowAnimationSpeed\n} = ctx.values;\nconst {\n flowAnimationWidth: lineWidth,\n flowAnimationColor: lineColor,\n flowStyleDash: dashWidth,\n flowStyleGap: dashGap,\n flowDashCap: dashCap\n} = ctx.properties;\nconst line = ctx.tags.line[0].attr('d');\nconst lineReversed = 'M 200,100 H 0';\nconst animation = ctx.tags.animationGroup[0];\nconst duration = 1 / flowAnimationSpeed;\n\nlet animateFlow = ctx.api.connectorAnimation(animation);\n\nif (flowAnimation) {\n if (!animateFlow) {\n animateFlow = ctx.api.connectorAnimate(animation, line, lineReversed).flowAppearance(lineWidth, lineColor, dashCap, dashWidth, dashGap).duration(duration).direction(flowDirection).play();\n } else {\n animateFlow.duration(duration).direction(flowDirection).play();\n }\n} else {\n if (animateFlow) {\n animateFlow.finish();\n }\n}\n\n",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "arrow",
|
||||
"stateRenderFunction": "var arrow = ctx.values.arrow;\nif (arrow) {\n element.show();\n element.stroke(ctx.properties.lineColor).fill(ctx.properties.lineColor);\n var arrowDirection = ctx.values.arrowDirection;\n var direticon = element.remember('direticon');\n var angle = arrowDirection ? 0 : 180;\n if (!direticon) {\n element.transform({rotate: angle});\n } else {\n ctx.api.transform({rotate: angle, originY: 100});\n element.remember('direticon', false);\n }\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "line",
|
||||
"stateRenderFunction": "element.stroke(ctx.properties.lineColor);\nelement.attr({'stroke-width': ctx.properties.mainLineSize});",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "arrow",
|
||||
"name": "{i18n:scada.symbol.arrow-presence}",
|
||||
"hint": "{i18n:scada.symbol.arrow-presence-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.arrow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimation",
|
||||
"name": "{i18n:scada.symbol.flow-animation}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "arrowDirection",
|
||||
"name": "{i18n:scada.symbol.arrow-direction}",
|
||||
"hint": "{i18n:scada.symbol.arrow-direction-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "mainLineSize",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "number",
|
||||
"default": 6,
|
||||
"required": true,
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"max": 99,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "lineColor",
|
||||
"name": "{i18n:scada.symbol.line}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationWidth",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 4,
|
||||
"fieldSuffix": "px",
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationColor",
|
||||
"name": "{i18n:scada.symbol.flow-line}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleDash",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"required": true,
|
||||
"subLabel": "{i18n:scada.symbol.dash}",
|
||||
"divider": false,
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowStyleGap",
|
||||
"name": "{i18n:scada.symbol.flow-line-style}",
|
||||
"hint": "{i18n:scada.symbol.flow-style-hint}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "{i18n:scada.symbol.gap}",
|
||||
"fieldSuffix": "px",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "flowDashCap",
|
||||
"name": "{i18n:scada.symbol.flow-dash-cap}",
|
||||
"group": "{i18n:scada.symbol.flow}",
|
||||
"type": "select",
|
||||
"default": "butt",
|
||||
"items": [
|
||||
{
|
||||
"value": "butt",
|
||||
"label": "{i18n:scada.symbol.dash-cap-butt}"
|
||||
},
|
||||
{
|
||||
"value": "round",
|
||||
"label": "{i18n:scada.symbol.dash-cap-round}"
|
||||
},
|
||||
{
|
||||
"value": "square",
|
||||
"label": "{i18n:scada.symbol.dash-cap-square}"
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="M0 100H200" stroke="#1A1A1A" stroke-width="6" tb:tag="line"/><path d="M129 100L71 129V71L129 100Z" fill="#1A1A1A" tb:tag="arrow"/><g tb:tag="animationGroup"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.0 KiB |
|
|
@ -0,0 +1,439 @@
|
|||
<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": "HP Horizontal circuit breaker",
|
||||
"description": "Horizontal circuit breaker with various states.",
|
||||
"searchTags": [
|
||||
"energy",
|
||||
"power",
|
||||
"ev"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.backgroundColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "breaker",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "var initial = ctx.values.initialState;\nvar action = initial ? 'offUpdateState' : 'onUpdateState';\n\nctx.api.callAction(event, action, undefined, {\n next: () => {\n ctx.api.setValue('initialState', !initial);\n }\n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "breaker-trigger",
|
||||
"stateRenderFunction": "element.fill(ctx.properties.disabledColor);\nif (ctx.values.initialState) {\n element.transform({translateX: 0});\n} else {\n element.transform({translateX: -160});\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "if (ctx.properties.label) {\n element.show();\n var label = ctx.values.initialState ? ctx.properties.onLabel : ctx.properties.offLabel;\n ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, label);\n} else {\n element.hide();\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label-box",
|
||||
"stateRenderFunction": "var color = ctx.properties.disabledColor;\nif (ctx.values.initialState) {\n color = ctx.properties.enabledColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "initialState",
|
||||
"name": "{i18n:scada.symbol.on-off-state}",
|
||||
"hint": "{i18n:scada.symbol.on-off-state-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.on}",
|
||||
"falseLabel": "{i18n:scada.symbol.off}",
|
||||
"stateLabel": "",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "onUpdateState",
|
||||
"name": "{i18n:scada.symbol.on-update-state}",
|
||||
"hint": "{i18n:scada.symbol.on-update-state-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "EXECUTE_RPC",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "state"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "offUpdateState",
|
||||
"name": "{i18n:scada.symbol.off-update-state}",
|
||||
"hint": "{i18n:scada.symbol.off-update-state-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "EXECUTE_RPC",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"key": "state",
|
||||
"scope": "SERVER_SCOPE"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "onLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "ON",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "offLabel",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "OFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 42,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "400",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#1A1A1A",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "enabledColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.enabled}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "disabledColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.disabled}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="398" height="198" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><circle cx="49" cy="100" r="19" stroke="#1a1a1a" stroke-width="2"/><circle cx="351" cy="100" r="19" stroke="#1a1a1a" stroke-width="2"/><path d="m0 100h31" stroke="#1A1A1A" stroke-width="6"/><path d="m369 100h31" stroke="#1A1A1A" stroke-width="6"/><g tb:tag="breaker">
|
||||
<path d="m101 51h198v97c0 0.552-0.448 1-1 1h-196c-0.552 0-1-0.448-1-1v-97z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="label-box"/>
|
||||
<text x="200.83984" y="114.56055" fill="#000000" font-family="Roboto, sans-serif" font-size="40px" font-weight="400" text-anchor="middle" tb:tag="label" xml:space="preserve"><tspan dominant-baseline="start">ON</tspan></text>
|
||||
<rect x="261" y="25" width="38" height="150" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2" tb:tag="breaker-trigger"/>
|
||||
</g><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1,378 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="400" fill="none" version="1.1" viewBox="0 0 600 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Horizontal energy systems controller",
|
||||
"description": "Horizontal energy systems controller with various states.",
|
||||
"searchTags": [
|
||||
"energy",
|
||||
"power",
|
||||
"monitoring"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.disconnectedColor;\nif (ctx.values.connected) {\n color = ctx.properties.connectedColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "indicator",
|
||||
"stateRenderFunction": "var color = ctx.properties.disconnectedIndicatorColor;\nif (ctx.values.connected) {\n color = ctx.properties.connectedIndicatorColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "label",
|
||||
"stateRenderFunction": "ctx.api.font(element, ctx.properties.labelFont, ctx.properties.labelColor);\n ctx.api.text(element, ctx.properties.label);",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "connected",
|
||||
"name": "{i18n:scada.symbol.connected}",
|
||||
"hint": "{i18n:scada.symbol.connected-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.connected}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "connected"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "connectedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"subLabel": "{i18n:scada.symbol.connected}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "disconnectedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"subLabel": "{i18n:scada.symbol.disconnected}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "connectedIndicatorColor",
|
||||
"name": "{i18n:scada.symbol.indicator}",
|
||||
"type": "color",
|
||||
"default": "#198038",
|
||||
"subLabel": "{i18n:scada.symbol.connected}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "disconnectedIndicatorColor",
|
||||
"name": "{i18n:scada.symbol.indicator}",
|
||||
"type": "color",
|
||||
"default": "#DEDEDE",
|
||||
"subLabel": "{i18n:scada.symbol.disconnected}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "label",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "text",
|
||||
"default": "Connected",
|
||||
"fieldClass": "medium-width",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelFont",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 30,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "normal",
|
||||
"style": "normal"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "labelColor",
|
||||
"name": "{i18n:scada.symbol.label}",
|
||||
"type": "color",
|
||||
"default": "#000",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="17" width="598" height="366" rx="5" fill="#fff" stroke="#000" stroke-opacity=".87" stroke-width="2" tb:tag="background"/><rect x="26" y="1" width="148" height="16" rx="1" fill="#999" stroke="#000" stroke-opacity=".87" stroke-width="2"/><rect x="26" y="383" width="148" height="16" rx="1" fill="#999" stroke="#000" stroke-opacity=".87" stroke-width="2"/><rect x="426" y="383" width="148" height="16" rx="1" fill="#999" stroke="#000" stroke-opacity=".87" stroke-width="2"/><rect x="226" y="1" width="148" height="16" rx="1" fill="#999" stroke="#000" stroke-opacity=".87" stroke-width="2"/><rect x="426" y="1" width="148" height="16" rx="1" fill="#999" stroke="#000" stroke-opacity=".87" stroke-width="2"/><circle cx="66" cy="88" r="10" fill="#198038" tb:tag="indicator"/><text x="83.31543" y="91.589844" fill="#000000" font-family="Roboto, sans-serif" font-size="30px" font-weight="400" tb:tag="label" xml:space="preserve"><tspan dominant-baseline="middle">Connected</tspan></text><path d="m201.8 0s-201.8 0-201.8 67v328.36c0 2.6512 5.3727 4.6403 12 4.6403h576c6.627 0 12-1.9892 12-4.6403v-328.36c0-67-198.21-67-198.21-67h-101.79zm201.21 81.2c-3.8661 0-6.9999 1.2536-6.9999 2.8v300.4c0 1.5464 3.1341 2.8 6.9999 2.8h43.998c3.8661 0 6.9999-1.2536 6.9999-2.8v-300.4c0-1.5464-3.1341-2.8-6.9999-2.8z" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 320.94)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -0,0 +1,913 @@
|
|||
<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": "Horizontal inline flow meter",
|
||||
"description": "Horizontal inline flow meter component used to display flow related value and render various states. Includes pipe fluid and leak visualizations.",
|
||||
"searchTags": [
|
||||
"meter",
|
||||
"flow meter"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var value = ctx.values.value;\nvar colorProcessor = ctx.properties.backgroundColor;\ncolorProcessor.update(value);\nvar fill = colorProcessor.color;\nelement.attr({fill: fill});",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'displayClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "border",
|
||||
"stateRenderFunction": "var value = ctx.values.value;\nvar colorProcessor = ctx.properties.defaultBorderColor;\nif (ctx.values.critical) {\n colorProcessor = ctx.properties.criticalBorderColor;\n} else if (ctx.values.warning) {\n colorProcessor = ctx.properties.warningBorderColor;\n} else if (value) {\n colorProcessor = ctx.properties.activeBorderColor;\n}\ncolorProcessor.update(value);\nvar fill = colorProcessor.color;\nelement.attr({fill: fill});\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'displayClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "broken",
|
||||
"stateRenderFunction": "var broken = ctx.values.broken;\nif (broken) {\n element.show();\n} else {\n element.hide();\n}",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'displayClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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 = element.reference('fill').first();\n\nvar fluidAnimation = ctx.api.cssAnimation(liquidPattern);\n\n\nif (fluid) {\n element.show();\n if (flow !== elementFlow) {\n element.remember('flow', flow);\n if (flow) {\n if (elementFlowDirection !== flowDirection || !fluidAnimation) {\n element.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection);\n } else {\n fluidAnimation.play();\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n element.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection);\n }\n if (flow) {\n if (fluidAnimation) {\n fluidAnimation.speed(ctx.values.flowAnimationSpeed);\n }\n }\n} else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n element.hide();\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n ctx.api.resetCssAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n return ctx.api.cssAnimate(liquidPattern, 1000).relative(deltaX, 0).loop();\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
|
||||
},
|
||||
{
|
||||
"tag": "pipe-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.pipeColor;\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "value",
|
||||
"stateRenderFunction": "var value = ctx.api.formatValue(ctx.values.value, {units: ctx.properties.valueUnits, decimals: ctx.properties.valueDecimals, ignoreUnitSymbol: true});\nctx.api.text(element, value);\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'displayClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "valueUnits",
|
||||
"stateRenderFunction": "var units = ctx.api.unitSymbol(ctx.properties.valueUnits);\nctx.api.text(element, units || '');\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'displayClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "value",
|
||||
"name": "{i18n:scada.symbol.value}",
|
||||
"hint": "{i18n:scada.symbol.flow-meter-value-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": 0,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "flowRate"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning-state}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical-state}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-animation-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "broken",
|
||||
"name": "{i18n:scada.symbol.broken}",
|
||||
"hint": "{i18n:scada.symbol.broken-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.broken}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "displayClick",
|
||||
"name": "{i18n:scada.symbol.on-display-click}",
|
||||
"hint": "{i18n:scada.symbol.on-display-click-hint}",
|
||||
"group": "{i18n:scada.symbol.display}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"openInSeparateDialog": false,
|
||||
"openInPopover": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "fluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": "{i18n:scada.symbol.pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": "{i18n:scada.symbol.pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": "{i18n:scada.symbol.pipe}",
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leak",
|
||||
"name": "{i18n:scada.symbol.leak}",
|
||||
"hint": "{i18n:scada.symbol.leak-hint}",
|
||||
"group": "{i18n:scada.symbol.pipe}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.leak-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "valueUnits",
|
||||
"name": "{i18n:scada.symbol.units}",
|
||||
"type": "units",
|
||||
"default": "m³/hr",
|
||||
"fieldClass": "medium-width",
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "valueDecimals",
|
||||
"name": "{i18n:scada.symbol.decimals}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"fieldClass": "medium-width",
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "defaultBorderColor",
|
||||
"name": "{i18n:scada.symbol.default-border-color}",
|
||||
"type": "color_settings",
|
||||
"default": {
|
||||
"type": "constant",
|
||||
"color": "#4A4848",
|
||||
"gradient": {
|
||||
"advancedMode": false,
|
||||
"gradient": [
|
||||
"rgba(0, 255, 0, 1)",
|
||||
"rgba(255, 0, 0, 1)"
|
||||
],
|
||||
"gradientAdvanced": [
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(0, 255, 0, 1)"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(255, 0, 0, 1)"
|
||||
}
|
||||
],
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
"rangeList": {
|
||||
"advancedMode": false,
|
||||
"range": [],
|
||||
"rangeAdvanced": []
|
||||
},
|
||||
"colorFunction": "var temperature = value;\nif (typeof temperature !== undefined) {\n var percent = (temperature + 60)/120 * 100;\n return tinycolor.mix('blue', 'red', percent).toHexString();\n}\nreturn 'blue';"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "activeBorderColor",
|
||||
"name": "{i18n:scada.symbol.active-border-color}",
|
||||
"type": "color_settings",
|
||||
"default": {
|
||||
"type": "constant",
|
||||
"color": "#1C943E",
|
||||
"gradient": {
|
||||
"advancedMode": false,
|
||||
"gradient": [
|
||||
"rgba(0, 255, 0, 1)",
|
||||
"rgba(255, 0, 0, 1)"
|
||||
],
|
||||
"gradientAdvanced": [
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(0, 255, 0, 1)"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(255, 0, 0, 1)"
|
||||
}
|
||||
],
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
"rangeList": {
|
||||
"advancedMode": false,
|
||||
"range": [],
|
||||
"rangeAdvanced": []
|
||||
},
|
||||
"colorFunction": "var temperature = value;\nif (typeof temperature !== undefined) {\n var percent = (temperature + 60)/120 * 100;\n return tinycolor.mix('blue', 'red', percent).toHexString();\n}\nreturn 'blue';"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningBorderColor",
|
||||
"name": "{i18n:scada.symbol.warning-border-color}",
|
||||
"type": "color_settings",
|
||||
"default": {
|
||||
"type": "constant",
|
||||
"color": "#FAA405",
|
||||
"gradient": {
|
||||
"advancedMode": false,
|
||||
"gradient": [
|
||||
"rgba(0, 255, 0, 1)",
|
||||
"rgba(255, 0, 0, 1)"
|
||||
],
|
||||
"gradientAdvanced": [
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(0, 255, 0, 1)"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(255, 0, 0, 1)"
|
||||
}
|
||||
],
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
"rangeList": {
|
||||
"advancedMode": false,
|
||||
"range": [],
|
||||
"rangeAdvanced": []
|
||||
},
|
||||
"colorFunction": "var temperature = value;\nif (typeof temperature !== undefined) {\n var percent = (temperature + 60)/120 * 100;\n return tinycolor.mix('blue', 'red', percent).toHexString();\n}\nreturn 'blue';"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalBorderColor",
|
||||
"name": "{i18n:scada.symbol.critical-border-color}",
|
||||
"type": "color_settings",
|
||||
"default": {
|
||||
"type": "constant",
|
||||
"color": "#D12730",
|
||||
"gradient": {
|
||||
"advancedMode": false,
|
||||
"gradient": [
|
||||
"rgba(0, 255, 0, 1)",
|
||||
"rgba(255, 0, 0, 1)"
|
||||
],
|
||||
"gradientAdvanced": [
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(0, 255, 0, 1)"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(255, 0, 0, 1)"
|
||||
}
|
||||
],
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
"rangeList": {
|
||||
"advancedMode": false,
|
||||
"range": [],
|
||||
"rangeAdvanced": []
|
||||
},
|
||||
"colorFunction": "var temperature = value;\nif (typeof temperature !== undefined) {\n var percent = (temperature + 60)/120 * 100;\n return tinycolor.mix('blue', 'red', percent).toHexString();\n}\nreturn 'blue';"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color_settings",
|
||||
"default": {
|
||||
"type": "constant",
|
||||
"color": "#FFFFFF",
|
||||
"gradient": {
|
||||
"advancedMode": false,
|
||||
"gradient": [
|
||||
"rgba(0, 255, 0, 1)",
|
||||
"rgba(255, 0, 0, 1)"
|
||||
],
|
||||
"gradientAdvanced": [
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(0, 255, 0, 1)"
|
||||
},
|
||||
{
|
||||
"source": {
|
||||
"type": "constant"
|
||||
},
|
||||
"color": "rgba(255, 0, 0, 1)"
|
||||
}
|
||||
],
|
||||
"minValue": 0,
|
||||
"maxValue": 100
|
||||
},
|
||||
"rangeList": {
|
||||
"advancedMode": false,
|
||||
"range": [],
|
||||
"rangeAdvanced": []
|
||||
},
|
||||
"colorFunction": "var temperature = value;\nif (typeof temperature !== undefined) {\n var percent = (temperature + 60)/120 * 100;\n return tinycolor.mix('blue', 'red', percent).toHexString();\n}\nreturn 'blue';"
|
||||
},
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "fluidColor",
|
||||
"name": "{i18n:scada.symbol.fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "pipeColor",
|
||||
"name": "{i18n:scada.symbol.pipe-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<defs>
|
||||
<pattern id="baseLiquid" width="172" height="72" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse">
|
||||
<circle transform="rotate(-90)" cx="-15" cy="21" r="8" fill="url(#paint28_linear_1182_32781-5)"/>
|
||||
<circle transform="rotate(-90)" cx="-15" cy="150" r="8" fill="url(#paint29_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-16" cy="113" r="8" fill="url(#paint30_linear_1182_32781-7)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="34" r="8" fill="url(#paint31_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="155" r="8" fill="url(#paint32_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="33" r="5" fill="url(#paint33_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="162" r="5" fill="url(#paint34_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="5" r="5" fill="url(#paint35_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-8" cy="94" r="4" fill="url(#paint36_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-60" cy="72" r="4" fill="url(#paint37_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="112" r="5" fill="url(#paint38_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-39" cy="59" r="5" fill="url(#paint39_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-62" cy="115" r="5" fill="url(#paint40_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-42" cy="139" r="5" fill="url(#paint41_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-21" cy="76" r="5" fill="url(#paint42_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-50.5" cy="126.5" r="2.5" fill="url(#paint43_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-46.5" cy="169.5" r="2.5" fill="url(#paint44_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-9.5" cy="57.5" r="2.5" fill="url(#paint45_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-35.5" cy="96.5" r="2.5" fill="url(#paint46_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="91.5" r="2.5" fill="url(#paint47_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-40.5" cy="22.5" r="2.5" fill="url(#paint48_linear_1182_32781-88)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="124.5" r="2.5" fill="url(#paint49_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-47.5" cy="86.5" r="2.5" fill="url(#paint50_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-21.5" cy="51.5" r="2.5" fill="url(#paint51_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-51.5" cy="48.5" r="2.5" fill="url(#paint52_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="14" r="4" fill="url(#paint53_linear_1182_32781-83)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="135" r="4" fill="url(#paint54_linear_1182_32781-33)"/>
|
||||
<circle transform="rotate(-90)" cx="-58.5" cy="95.5" r="9.5" fill="url(#paint55_linear_1182_32781-8)"/>
|
||||
<path d="m0 0h172v72h-172z" fill="url(#paint84_linear_1182_32781-8)" stroke-width=".57735"/>
|
||||
</pattern>
|
||||
<pattern id="liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect width="688" height="72" x="-172" y="0" stroke-width="0" fill="url(#baseLiquid)"/></pattern>
|
||||
<linearGradient id="paint28_linear_1182_32781-5" x1="19.316" x2="21" y1="8.2632" y2="23" gradientTransform="translate(-36,6)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint29_linear_1182_32781-1" x1="148.32" x2="150" y1="8.2632" y2="23" gradientTransform="translate(-165,135)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint30_linear_1182_32781-7" x1="111.32" x2="113" y1="9.2632" y2="24" gradientTransform="translate(-129,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint31_linear_1182_32781-4" x1="32.316" x2="34" y1="51.263" y2="66" gradientTransform="translate(-92,-24)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint32_linear_1182_32781-3" x1="153.32" x2="155" y1="51.263" y2="66" gradientTransform="translate(-213,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint33_linear_1182_32781-1" x1="31.947" x2="33" y1="21.789" y2="31" gradientTransform="translate(-59,7)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint34_linear_1182_32781-4" x1="160.95" x2="162" y1="21.789" y2="31" gradientTransform="translate(-188,136)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint35_linear_1182_32781-6" x1="3.9474" x2="5" y1="32.79" y2="42" gradientTransform="translate(-42,-32)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint36_linear_1182_32781-9" x1="93.158" x2="94" y1="4.6316" y2="12" gradientTransform="translate(-102,86)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint37_linear_1182_32781-4" x1="71.158" x2="72" y1="56.632" y2="64" gradientTransform="translate(-132,12)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint38_linear_1182_32781-2" x1="110.95" x2="112" y1="32.79" y2="42" gradientTransform="translate(-149,75)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint39_linear_1182_32781-2" x1="57.947" x2="59" y1="34.79" y2="44" gradientTransform="translate(-98,20)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint40_linear_1182_32781-6" x1="113.95" x2="115" y1="57.79" y2="67" gradientTransform="translate(-177,53)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint41_linear_1182_32781-4" x1="137.95" x2="139" y1="37.79" y2="47" gradientTransform="translate(-181,97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint42_linear_1182_32781-1" x1="74.947" x2="76" y1="16.789" y2="26" gradientTransform="translate(-97,55)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint43_linear_1182_32781-2" x1="125.97" x2="126.5" y1="48.395" y2="53" gradientTransform="translate(-177,76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint44_linear_1182_32781-8" x1="168.97" x2="169.5" y1="44.395" y2="49" gradientTransform="translate(-216,123)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint45_linear_1182_32781-8" x1="56.974" x2="57.5" y1="7.3947" y2="12" gradientTransform="translate(-67,48)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint46_linear_1182_32781-9" x1="95.974" x2="96.5" y1="33.395" y2="38" gradientTransform="translate(-132,61)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint47_linear_1182_32781-2" x1="90.974" x2="91.5" y1="21.395" y2="26" gradientTransform="translate(-115,68)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint48_linear_1182_32781-88" x1="21.974" x2="22.5" y1="38.395" y2="43" gradientTransform="translate(-63,-18)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint49_linear_1182_32781-8" x1="123.97" x2="124.5" y1="21.395" y2="26" gradientTransform="translate(-148,101)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint50_linear_1182_32781-6" x1="85.974" x2="86.5" y1="45.395" y2="50" gradientTransform="translate(-134,39)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint51_linear_1182_32781-8" x1="50.974" x2="51.5" y1="19.395" y2="24" gradientTransform="translate(-73,30)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint52_linear_1182_32781-3" x1="47.974" x2="48.5" y1="49.395" y2="54" gradientTransform="translate(-100,-3)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint53_linear_1182_32781-83" x1="13.158" x2="14" y1="60.632" y2="68" gradientTransform="translate(-78,-50)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint54_linear_1182_32781-33" x1="134.16" x2="135" y1="60.632" y2="68" gradientTransform="translate(-199,71)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint55_linear_1182_32781-8" x1="93.5" x2="95.5" y1="50.5" y2="68" gradientTransform="translate(-154,37)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint84_linear_1182_32781-8" x1="248" x2="248" y1="1.8513e-7" y2="72" gradientTransform="scale(.33333 1)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" offset=".10895"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".11331"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".88736"/>
|
||||
<stop stop-color="#727171" offset=".89138"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<mask id="path-5-inside-1_1595_102361" fill="#ffffff">
|
||||
<path d="m300 100c0 55.228-44.772 100-100 100s-100-44.772-100-100c0-55.228 44.772-100 100-100s100 44.772 100 100zm-188 0c0 48.603 39.401 88.004 88.004 88.004s88.004-39.401 88.004-88.004c0-48.604-39.401-88.004-88.004-88.004s-88.004 39.401-88.004 88.004z"/>
|
||||
</mask>
|
||||
<linearGradient id="paint1_linear_1595_102361" x1="165.06" x2="182.56" y1="50.125" y2="69.188" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset="0"/>
|
||||
<stop stop-opacity=".3" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1595_102361" x1="218.06" x2="235.56" y1="50.125" y2="69.188" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset="0"/>
|
||||
<stop stop-opacity=".3" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint0_linear_1595_102361" x1="110.72" x2="110.63" y1="64" y2="136.01" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs><rect x="14" y="64" width="372" height="72" fill="#fff" tb:tag="pipe-background"/><rect x="14" y="64" width="372" height="72" fill="url(#paint0_linear_1595_102361)" style="fill:url(#paint0_linear_1595_102361)"/><rect x="15.5" y="65.5" width="369" height="69" stroke="#000" stroke-opacity=".12" stroke-width="3"/><rect x="387.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><rect x="1.5" y="51.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><rect x="14" y="64" width="372" height="72" fill="#1ec1f4" stroke-width="0" style="display: none;" tb:tag="fluid-background"/><rect x="14" y="64" width="372" height="72" fill="url(#liquid)" stroke-width="0" style="display: none;" tb:tag="fluid"/><path d="m300 100c0 55.228-44.772 100-100 100s-100-44.772-100-100c0-55.228 44.772-100 100-100s100 44.772 100 100zm-188 0c0 48.603 39.401 88.004 88.004 88.004s88.004-39.401 88.004-88.004c0-48.604-39.401-88.004-88.004-88.004s-88.004 39.401-88.004 88.004z" fill="#4a4848" mask="url(#path-5-inside-1_1595_102361)" stroke="#727171" stroke-width="6" tb:tag="border"/><circle cx="200" cy="100" r="88" fill="#fff" tb:tag="background"/><path d="m135.5 88.357c0-2.1302 1.727-3.8571 3.857-3.8571h121.29c2.13 0 3.857 1.7269 3.857 3.8571v23.286c0 2.13-1.727 3.857-3.857 3.857h-121.29c-2.13 0-3.857-1.727-3.857-3.857z" fill="#4a4848" fill-opacity=".06" tb:tag="border"/><path d="m139.36 83c-2.9408 0-5.3574 2.4165-5.3574 5.3574v23.285c0 2.9408 2.4166 5.3574 5.3574 5.3574h121.29c2.9408 0 5.3574-2.4166 5.3574-5.3574v-23.285c0-2.9409-2.4167-5.3574-5.3574-5.3574zm0 3h121.29c1.3192 0 2.3574 1.0379 2.3574 2.3574v23.285c0 1.3192-1.0382 2.3574-2.3574 2.3574h-121.29c-1.3192 0-2.3574-1.0382-2.3574-2.3574v-23.285c0-1.3195 1.0382-2.3574 2.3574-2.3574z" fill="#4a4848" tb:tag="border"/><circle cx="173.5" cy="59.5" r="12.5" fill="url(#paint1_linear_1595_102361)" style="fill:url(#paint1_linear_1595_102361)"/><circle cx="173.5" cy="59.5" r="12" stroke="#000" stroke-opacity=".12"/><circle cx="226.5" cy="59.5" r="12.5" fill="url(#paint2_linear_1595_102361)" style="fill:url(#paint2_linear_1595_102361)"/><circle cx="226.5" cy="59.5" r="12" stroke="#000" stroke-opacity=".12"/><text x="200.00586" y="102.19141" fill="#000000" fill-opacity=".87" style="font-family:Roboto;font-size:24px;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-weight:500" tb:tag="value" xml:space="preserve" text-anchor="middle"><tspan dominant-baseline="middle">0</tspan></text><text x="199.61719" y="138.77344" fill="#000000" fill-opacity=".87" style="font-family:Roboto;font-size:16px;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-weight:500" tb:tag="valueUnits" xml:space="preserve" text-anchor="middle"><tspan dominant-baseline="middle">m³/hr</tspan></text><g style="display: none;" tb:tag="broken">
|
||||
<circle cx="200" cy="100" r="88" fill="#000" fill-opacity=".24" style=""/>
|
||||
<path d="m253.92 84.931c-0.174 0.5228-0.309 1.1931-0.577 1.6622-0.577 1.6623-1.583 3.2037-2.991 4.1417-0.697 0.3484-1.488 0.6431-2.226 0.8439-1.971 0.6161-3.848 1.2858-5.725 1.9555-1.636 0.6832-3.513 1.3529-5.122 0.682 0.013-0.2414-0.027-0.3888-0.013-0.6302-2.977 0.4146-0.922 2.811-8.792 8.1516-11.067 2.815-27.05 6.112-29.128 6.044-0.724-0.041-1.408 0.066-2.038 0.08-1.113-0.014-2.172-0.122-3.218-0.471-0.764-0.188-1.515-0.617-2.225-0.899-2.038-0.792-4.183-1.396-6.448-1.571 0.603 0.47 1.206 0.939 1.809 1.409 0 0 0.121 0.442 0.081 0.295 0.201-0.134 0.482 0.027 0.616 0.228-0.751 0.442-1.502 0.884-2.199 1.232-3.647 2.024-7.389 3.993-11.304 5.614 3.875-0.897 7.683-2.33 11.411-4.058 0.845-0.389 1.595-0.831 2.574-1.018 2.306-0.549 4.666 0.551 6.824 1.785l0.094 0.054c0.187 0.107 0.469 0.268 0.455 0.509 0.081 0.295-0.228 0.617-0.483 0.845-1.368 1.085-2.642 2.225-3.916 3.364-1.582 1.461-2.883 3.082-4.56 4.489-1.475 1.274-3.084 2.346-4.64 3.324-0.75 0.442-1.408 0.938-2.239 1.085-0.885 0.241-1.756 0.241-2.668 0.093-1.153-0.161-2.212-0.269-3.311-0.524-6.314-1.37-17.674 5.248-23.787 2.873 2.44 1.395 5.027 2.75 7.466 4.145-3.66 0.522-7.133 2.022-10.7 3.469-0.992 0.428-1.984 0.857-3.111 1.085-0.884 0.241-1.903 0.281-2.775 0.28-1.743 0-3.526-0.148-4.973-1.101 0.831 0.724 1.769 1.261 2.667 1.65-0.255 0.228-0.563 0.55-0.818 0.778-2.146 2.01-4.198 4.074-6.29 5.99 1.14-0.469 2.199-1.232 3.165-2.05 1.274-1.139 2.226-2.587 3.768-3.324 1.743-0.87 3.808-0.561 5.806-0.789 3.164-0.307 6.154-1.834 9.131-3.12s5.228-3.036 10.264-4.758c3.63-1.241 9.543-3.131 12.411-2.486 0.912 0.148 1.864 0.443 2.762 0.832 0.617 0.228 1.18 0.55 1.836 0.926 0.751 0.429 1.408 0.805 2.212 1.14 0.469 0.268 0.992 0.443 1.475 0.47 0.576 0.08 1.22-0.174 1.716-0.388 1.783-0.724 3.567-1.447 5.35-2.17-0.295 0.08-0.737 0.2-1.032 0.281-2.36 0.642-4.666 1.191-6.972 0.869-0.483-0.027-1.006-0.202-1.327-0.51-0.094-0.054-0.188-0.107-0.134-0.201-0.362-0.456-0.214-1.368 0.322-1.435 0.282-0.71 1.046-1.394 1.556-1.849 4.157-3.351 8.408-6.647 12.606-9.85 0.456-0.362 0.912-0.724 1.555-0.978 0.644-0.255 1.18-0.322 1.81-0.335 4.572-0.374 19.939-3.129 23.095-4.335 5.049-1.929 5.348-0.685 7.45-3.208 0.335 0.067 7.054-8.7036 7.39-8.6365 2.252 0.4164 4.343 1.9858 6.099 3.4875 1.45 1.565-2.243 6.524-2.272 7.287-0.032 0.867-18.866 17.201-20.503 18.31-0.751 0.442-2.24 0.274-2.533 0.546-0.103 0.096-0.557 1.991 0.264 0.492-0.764-0.029-8.29 2.174-13.599 1.877-0.482-0.027-1.059-0.108-1.582-0.282-0.335-0.067-0.616-0.228-0.844-0.483-0.094-0.054-0.134-0.201-0.174-0.349-0.04-0.147 0.107-0.188 0.161-0.281 2.803-3.378 6.276-6.621 7.203-11.072-0.201 0.134-0.255 0.228-0.456 0.362-0.054 0.094-0.201 0.134-0.308 0.321-1.744 1.743-3.085 4.089-5.003 5.482-0.858 0.63-1.81 1.206-2.441 2.091-0.791 1.166-1.033 2.895-2.052 3.807-0.51 0.455-1.207 0.804-1.797 0.964-1.623 0.442-3.419 0.535-5.001 1.125-0.792 0.295-1.596 0.831-2.387 1.125-0.148 0.04-0.201 0.134-0.349 0.174-1.783 0.724-7.731 4.384-9.661 4.276 1.689 0.095 7.288-3.392 8.963-3.056-1.797 1.836-3.54 3.579-5.525 5.307 1.904-1.152 3.674-2.505 5.311-4.06 0.818-0.777 1.636-1.555 2.588-2.131 1.85-1.058 4.451-0.816 5.51 1.034 0.134 0.202 0.268 0.403 0.254 0.644 0.415 1.234 0.241 2.628 0.12 3.928-0.551 3.794-1.236 7.387-2.029 11.168-0.591 2.775-1.275 5.496-2.764 7.882-0.108 0.188-0.309 0.322-0.496 0.214 0.442 0.751 0.106 1.555-0.417 2.252-0.429 0.751-1.046 1.394-1.569 2.091-0.47 0.604-0.939 1.207-1.409 1.81-2.239 2.828-4.573 5.602-7.135 8.122 1.556-0.978 3.031-2.251 4.184-3.833 0.886-1.112 1.583-2.332 2.509-3.297 0.979-1.059 2.226-1.715 3.205-2.774 0.416-0.51 0.885-1.113 1.395-1.568 0.066 1.407 0.039 2.761 0.106 4.169 0.201-1.005 0.403-2.011 0.604-3.016 0.215-1.247 0.524-2.44 0.832-3.633 0.94-2.949 2.885-5.697 3.395-8.767 0.014-0.241 0.027-0.483 0.041-0.724-0.201 0.134-0.309 0.322-0.51 0.456-0.04-0.148 0.067-0.336 0.027-0.483 0.055-2.708 0.646-5.483 1.371-8.057 0.563-2.293 1.235-4.773 2.965-6.274 0.509-0.455 1.113-0.857 1.622-1.313 0.51-0.456 0.845-1.26 0.738-1.944 3.178 0.323 6.66 1.265 9.329-0.571 2.065-1.434 4.621-0.818 5.075-2.713-0.792 0.735 1.103 1.189 2.659 0.483s23.915-14.808 24.838-26.835c-0.911-1.8908-2.519-3.4332-4.316-4.2114-0.094-0.0537-0.094-0.0537-0.187-0.1073 2.923-1.1923 5.993-2.4246 8.796-4.0593 0.805-0.536 1.703-1.0184 2.28-1.8092 0.671-1.6086 0.832-3.633 0.94-5.5635z" fill="#5c5a5a" style=""/>
|
||||
<path d="m221.07 127.62c-1.005-0.202-1.526-0.498-2.558-0.217-2.065 0.562-2.591 1.325-4.575 2.183-2.226 0.844-3.364 0.839-5.79 0.946-1.261 0.026-2.467-0.041-3.62-0.203 0.187 0.979-1.8 2.31-2.564 2.993-0.764 0.684-1.717 1.26-2.106 2.158-0.442 0.992-0.309 2.065-0.416 3.124-0.162 1.153-0.658 2.238-1.061 3.378-0.711 2.332-0.605 4.759-0.351 7.146 0.054-0.094 0.054-0.094 0.108-0.188 0.054-2.708 0.645-5.483 1.37-8.057 0.564-2.293 1.235-4.773 2.965-6.274 0.51-0.455 1.113-0.857 1.623-1.313 0.509-0.456 2.054-1.666 1.946-2.349 3.178 0.322 5.388 1.065 8.056-0.771 2.066-1.434 2.736-1.244 5.15-1.98 0.402-0.268 1.14-0.469 1.823-0.576z" fill="#8b8b8b" style=""/>
|
||||
<path d="m210.29 116.29c-0.201 0.134-0.255 0.228-0.456 0.362-0.054 0.094-0.201 0.134-0.309 0.321-0.053 0.094-0.053 0.094-0.053 0.094-0.282 0.711-0.564 1.421-1.087 2.118-0.322 0.563-0.791 1.166-1.207 1.676-1.771 2.225-4.104 4.128-5.365 6.768 0.656 0.376 1.313 0.751 1.984 0.886-0.336-0.067-0.617-0.228-0.845-0.483-0.094-0.054-0.134-0.201-0.174-0.349-0.04-0.147 0.107-0.187 0.161-0.281 3.044-3.364 6.424-6.661 7.351-11.112z" fill="#8b8b8b" style=""/>
|
||||
<path d="m196.36 131.72c-0.751-0.429-1.756-0.631-2.682-0.537-0.925 0.094-1.917 0.522-2.896 0.71-0.147 0.04-0.201 0.134-0.348 0.174-1.784 0.723-7.024 3.988-8.955 3.88 1.69 0.094 6.581-2.996 8.257-2.66-1.797 1.836-3.782 3.616-5.766 5.345 1.904-1.152 3.915-2.544 5.551-4.099 0.818-0.777 1.636-1.554 2.588-2.131 1.851-1.058 4.452-0.816 5.51 1.035 0.134 0.201 0.268 0.402 0.255 0.643-0.067-0.536-0.188-0.978-0.456-1.381-0.174-0.348-0.589-0.711-1.058-0.979z" fill="#8b8b8b" style=""/>
|
||||
<path d="m198.9 148.65c-0.832 0.147-1.556 0.978-1.784 1.595-0.403 1.139-0.711 2.332-1.074 3.619-0.349 1.046-0.604 2.145-1.047 3.137-1.153 2.453-3.058 4.477-5.137 6.152 0 0-0.053 0.094-0.147 0.04-2.24 2.828-4.574 5.603-7.135 8.122 1.555-0.978 3.03-2.251 4.184-3.832 0.885-1.113 1.583-2.333 2.508-3.298 0.979-1.059 2.226-1.715 3.205-2.774 0.416-0.509 0.886-1.112 1.395-1.568 0.067 1.408 0.039 2.762 0.106 4.17 0.201-1.006 0.403-2.011 0.604-3.017 0.215-1.247 0.524-2.44 0.833-3.633 1.181-2.935 2.978-5.643 3.489-8.713z" fill="#8b8b8b" style=""/>
|
||||
<path d="m233.47 101.11c-0.266 0.482-0.521 1.116-0.87 1.529-0.381 0.952-0.775 1.751-1.557 2.506-0.92 0.92-2.089 1.63-3.2 2.105-2 0.856-4.12 1.185-6.24 1.514-0.984 0.158-1.955 0.468-2.584 1.211 0.152-0.013 0.152-0.013 0.305-0.026-0.083-0.069-0.083-0.069-0.165-0.139 3.091-0.64 6.335-1.291 9.389-2.388 0.888-0.38 1.86-0.691 2.571-1.363 1.365-1.11 1.893-3.071 2.351-4.949z" fill="#8b8b8b" style=""/>
|
||||
<path d="m211.4 113.38c-0.858-0.241-1.783-0.148-2.641-0.39-0.911-0.147-1.716-0.483-2.48-0.671-1.488-0.228-2.909 0.08-4.303-0.095-0.818-0.094-1.73-0.242-2.601-0.242-1.555 0.106-2.923 1.192-4.09 2.143-4.412 3.579-8.771 7.063-13.183 10.641-0.711 0.59-1.582 1.461-1.247 2.399 0.174 0.349 0.495 0.658 0.777 0.818-0.094-0.053-0.188-0.107-0.134-0.201-0.362-0.456-0.214-1.367 0.322-1.434 0.282-0.711 1.046-1.394 1.556-1.85 4.157-3.35 8.408-6.647 12.606-9.849 0.456-0.362 0.912-0.724 1.555-0.979 0.644-0.254 1.18-0.321 1.81-0.334 4.572-0.374 9.426-0.587 13.796 0.916 0.094 0.054 0.188 0.108 0.281 0.161 0 0-0.053 0.094-0.107 0.188 0.335 0.067 0.63-0.013 0.965 0.054-0.938-0.537-1.876-1.073-2.882-1.275z" fill="#8b8b8b" style=""/>
|
||||
<path d="m190.5 107.58c-1.474-0.47-3.097-0.028-4.665 0.32-0.148 0.04-0.148 0.04-0.295 0.08-3.648 2.023-7.389 3.993-11.304 5.614 3.875-0.897 7.683-2.33 11.41-4.059 0.845-0.388 1.596-0.83 2.575-1.018 2.306-0.549 4.665 0.552 6.823 1.786-0.321-0.309-0.884-0.631-1.072-0.738-0.563-0.322-1.032-0.59-1.595-0.912-0.55-0.563-1.113-0.885-1.877-1.073z" fill="#8b8b8b" style=""/>
|
||||
<path d="m190.69 127.59c-0.295 0.08-0.737 0.2-1.032 0.281-0.054 0.094-0.201 0.134-0.201 0.134-0.845 0.388-1.69 0.777-2.481 1.071-1.622 0.442-2.855 0.544-4.37-0.073-0.804-0.336-2.012-1.431-2.763-1.86-2.158-1.234-4.704-1.101-7.05-1.571-2.105-0.456-6.694 2.521-9.014 3.199-2.32 0.677-2.716 1.044-4.313 1.765-2.56 1.156-2.575 1.018-3.862 1.527-1.73 0.63-3.526 0.723-5.256 1.353-1.14 0.469-2.199 1.232-3.285 1.607-1.784 0.724-3.808 0.562-5.658 0.749-0.979 0.188-1.958 0.375-2.803 0.764-2.146 2.01-4.198 4.074-6.29 5.99 1.14-0.469 2.2-1.232 3.165-2.05 1.274-1.139 2.227-2.587 3.769-3.324 1.743-0.87 3.807-0.561 5.805-0.789 3.164-0.307 6.155-1.834 9.131-3.12 2.977-1.286 5.031-2.601 8.208-2.278 3.03 0.363 10.175-4.776 13.044-4.131 0.911 0.147 1.863 0.443 2.761 0.832 0.617 0.228 1.18 0.55 1.837 0.925 0.75 0.43 1.407 0.805 2.211 1.141 0.469 0.268 0.992 0.443 1.475 0.47 0.576 0.08 1.22-0.174 1.716-0.389 1.783-0.723 3.567-1.446 5.256-2.223z" fill="#8b8b8b" style=""/>
|
||||
<path d="m186.97 26.632c0.126 0.5365 0.199 1.2163 0.423 1.7079 0.424 1.7079 1.286 3.3344 2.603 4.3966 0.662 0.4103 1.423 0.7757 2.139 1.0428 1.907 0.7927 3.716 1.6304 5.524 2.468 1.567 0.8291 3.376 1.6668 5.039 1.1449 8e-3 -0.2415 0.062-0.3847 0.07-0.6263 2.927 0.6836 6.129 0.4094 9.061-0.4546 2.003-0.5582 4.023-1.5995 6.099-1.478 0.724 0.0255 1.395 0.1943 2.022 0.2647 1.109 0.0875 2.174 0.0766 3.247-0.1758 0.778-0.1177 1.564-0.4769 2.297-0.6929 2.102-0.6031 4.293-1.0096 6.565-0.9779-0.644 0.4126-1.287 0.8253-1.93 1.2379 0 0-0.161 0.4297-0.107 0.2865-0.188-0.1517-0.483-0.017-0.635 0.1711 0.708 0.5086 1.415 1.0173 2.078 1.4276 3.448 2.3465 6.995 4.6481 10.747 6.6183-3.778-1.2456-7.44-3.0192-10.995-5.0792-0.806-0.4638-1.513-0.9724-2.471-1.248-2.247-0.7563-4.696 0.1247-6.958 1.1575l-0.098 0.045c-0.197 0.0898-0.491 0.2245-0.5 0.466-0.107 0.2865 0.171 0.6348 0.404 0.8849 1.264 1.2054 2.429 2.4557 3.594 3.706 1.443 1.5987 2.591 3.3321 4.133 4.8858 1.353 1.4021 2.858 2.616 4.318 3.7316 0.708 0.5086 1.317 1.0621 2.132 1.2843 0.859 0.3205 1.727 0.3995 2.648 0.3352 1.163-0.0558 2.227-0.0666 3.345-0.2207 6.413-0.7898 17.124 6.8335 23.427 5.0242 1.601-0.343 3.48 0 1.601 2.1643-2.508 1.8804-2.507 2.5072-2.507 6.268 0.949 0.5172-2.508 4.3877-2.508 6.2681-0.626 1.2536 0.473 1.1803 1.34 1.2592 1.736 0.1579 3.525 0.1726 5.054-0.6442-0.894 0.6457-1.877 1.0948-2.807 1.4006 0.233 0.25 0.511 0.5984 0.744 0.8485 1.954 2.1971 3.81 4.4391 5.719 6.5379-1.092-0.5705-2.078-1.4276-2.965-2.3295-1.165-1.2503-1.982-2.7785-3.451-3.6525-1.656-1.0258-3.74-0.9058-5.709-1.3137-3.123-0.5938 4.377-8.5748 1.529-10.126-2.847-1.5514-4.93-3.4988-9.789-5.6716-3.502-1.5658-9.218-3.9854-12.133-3.6044-0.922 0.0642-1.896 0.2717-2.826 0.5776-0.635 0.1711-1.225 0.4405-1.913 0.7548-0.787 0.3593-1.475 0.6736-2.306 0.9345-0.492 0.2245-1.029 0.3507-1.512 0.3337-0.581 0.0279-1.199-0.2841-1.673-0.5427-1.711-0.8825-3.421-1.7651-5.131-2.6476 0.286 0.1068 0.716 0.2671 1.003 0.3739 2.291 0.8547 4.538 1.611 6.864 1.4995 0.483 0.017 1.019-0.1092 1.368-0.3871 0.098-0.0449 0.196-0.0898 0.151-0.1881 0.402-0.4212 0.338-1.3425-0.19-1.4578-0.216-0.7332-0.915-1.4834-1.381-1.9835-3.836-3.7145-7.77-7.3841-11.658-10.955-0.422-0.4018-0.843-0.8036-1.46-1.1156-0.618-0.3119-1.146-0.4273-1.773-0.4977-4.519-0.7881-9.332-1.4414-13.821-0.342-0.099 0.0449-0.197 0.0898-0.295 0.1347 0 0 0.045 0.0983 0.09 0.1967-0.34 0.0363-0.627-0.0705-0.967-0.0341-2.28 0.2099-4.505 1.5825-6.39 2.9188-1.588 1.4265-2.241 2.2161-2.282 2.9793-0.046 0.8664-0.208 3.8116 1.321 5.0646 0.707 0.5086 2.206 0.477 2.473 0.7741 0.094 0.1049 0.374 2.0333-0.308 0.4662 0.763 0.0407 8.058 2.9182 13.372 3.1055 0.483 0.017 1.065-0.0108 1.601-0.137 0.34-0.0364 0.635-0.1712 0.885-0.4042 0.098-0.0449 0.152-0.1881 0.205-0.3313 0.054-0.1433-0.09-0.1967-0.135-0.295-2.484-3.6185-5.648-7.1643-6.166-11.681 0.188 0.1518 0.233 0.2501 0.421 0.4018 0.045 0.0983 0.188 0.1518 0.278 0.3484 1.578 1.8936 2.7 4.3517 4.483 5.914 0.798 0.7052 1.694 1.3656 2.241 2.3039 0.682 1.2333 0.766 2.9775 1.698 3.9778 0.466 0.5001 1.129 0.9104 1.701 1.1241 1.576 0.5876 3.357 0.8438 4.879 1.5746 0.761 0.3654 1.513 0.9724 2.274 1.3378 0.143 0.0534 0.188 0.1517 0.332 0.2051 1.71 0.8826 7.3 5.0687 9.232 5.1368-1.691-0.0596-6.949-4.0406-8.649-3.8586 1.623 1.9919 3.201 3.8856 5.02 5.7877-1.791-1.3207-3.431-2.8296-4.919-4.5266-0.744-0.8485-1.488-1.697-2.384-2.3573-1.746-1.2224-4.358-1.2178-5.581 0.5288-0.152 0.1882-0.303 0.3763-0.312 0.6178-0.526 1.1908-0.478 2.5951-0.476 3.9012 0.204 3.8284 0.559 7.4686 1.004 11.306 0.336 2.8172 0.771 5.5896 2.037 8.1011 0.089 0.1966 0.278 0.3483 0.474 0.2585-0.508 0.7077-0.247 1.5391 0.21 2.2808 0.359 0.7866 0.915 1.4833 1.373 2.225 0.412 0.6433 0.825 1.2867 1.238 1.93 1.973 3.0201 4.045 5.9953 6.367 8.7374-1.46-1.1156-2.814-2.5176-3.819-4.1976-0.78-1.1883-1.364-2.4665-2.198-3.5117-0.878-1.1434-2.061-1.9106-2.939-3.0541-0.368-0.545-0.781-1.1884-1.247-1.6885-0.194 1.3959-0.29 2.7469-0.484 4.1427-0.109-1.0196-0.219-2.0392-0.328-3.0588-0.1-1.2611-0.299-2.4774-0.498-3.6936-0.668-3.0225-2.355-5.9357-2.584-9.0394 8e-3 -0.2416 0.017-0.4831 0.025-0.7247 0.189 0.1518 0.278 0.3484 0.467 0.5001 0.053-0.1432-0.037-0.3398 0.017-0.4831 0.192-2.7019-0.145-5.5192-0.632-8.1483-0.353-2.3342-0.796-4.865-2.383-6.5171-0.466-0.5001-1.03-0.9553-1.496-1.4554-0.466-0.5002-0.727-1.3316-0.558-2.0029-3.194 0.0326-6.748 0.6536-9.238-1.4173-1.927-1.6157-4.528-1.2346-4.808-3.163 0.723 0.8039-1.206 1.0837-2.692 0.2391-1.485-0.8447-2.114-7.5219-0.981-9.4652 1.079-1.8 2.821-3.1897 4.68-3.8013 0.099-0.0449 0.099-0.0449 0.197-0.0898-2.803-1.4531-5.748-2.9597-8.391-4.8424-0.752-0.607-1.603-1.169-2.106-2.009-0.521-1.663-0.498-3.6937-0.43-5.6261z" fill="#5c5a5a" style=""/>
|
||||
<path d="m194.49 52.611c1.02-0.1092 1.565-0.3571 2.568 0.0168 2.005 0.7478 2.459 1.5554 4.357 2.5897 2.14 1.0428 3.274 1.1419 5.681 1.4686 1.252 0.1409 2.46 0.1835 3.623 0.1277-0.276 0.9577 1.582 2.4634 2.281 3.2135 0.699 0.7502 1.595 1.4106 1.9 2.3404 0.351 1.0281 0.12 2.0841 0.131 3.1486 0.056 1.1628 0.452 2.2893 0.749 3.4606 0.496 2.3876 0.17 4.7946-0.3 7.1481-0.045-0.0983-0.045-0.0983-0.09-0.1966 0.192-2.7019-0.144-5.5192-0.632-8.1484-0.353-2.3341-0.796-4.8649-2.382-6.517-0.466-0.5002-1.031-0.9554-1.497-1.4555s-1.894-1.8455-1.725-2.5168c-3.193 0.0326-5.462 0.5706-7.952-1.5003-1.926-1.6157-2.612-1.4871-4.948-2.4401-0.376-0.3035-1.093-0.5706-1.764-0.7393z" fill="#8b8b8b" style=""/>
|
||||
<path d="m206.25 42.312c0.188 0.1518 0.233 0.2501 0.421 0.4018 0.045 0.0983 0.188 0.1518 0.278 0.3484 0.045 0.0983 0.045 0.0983 0.045 0.0983 0.216 0.7332 0.432 1.4663 0.889 2.208 0.27 0.5899 0.682 1.2333 1.05 1.7783 1.561 2.3767 3.712 4.484 4.728 7.2285-0.689 0.3144-1.377 0.6287-2.057 0.7015 0.34-0.0364 0.635-0.1711 0.885-0.4042 0.099-0.0449 0.152-0.1881 0.205-0.3313 0.054-0.1432-0.089-0.1967-0.134-0.295-2.726-3.627-5.792-7.2177-6.31-11.734z" fill="#8b8b8b" style=""/>
|
||||
<path d="m218.73 58.943c0.786-0.3592 1.806-0.4684 2.719-0.2911s1.862 0.6944 2.819 0.97c0.144 0.0534 0.189 0.1517 0.332 0.2051 1.71 0.8826 6.632 4.6101 8.564 4.6782-1.691-0.0596-6.281-3.5819-7.98-3.4 1.622 1.992 3.437 3.9459 5.256 5.8481-1.791-1.3208-3.668-2.8899-5.156-4.5869-0.744-0.8485-1.488-1.697-2.384-2.3574-1.746-1.2224-4.358-1.2177-5.581 0.5289-0.151 0.1881-0.303 0.3762-0.312 0.6178 0.116-0.528 0.276-0.9577 0.579-1.334 0.206-0.3313 0.652-0.6542 1.144-0.8787z" fill="#8b8b8b" style=""/>
|
||||
<path d="m214.65 75.569c0.814 0.2222 1.46 1.1156 1.631 1.7505 0.297 1.1713 0.496 2.3875 0.74 3.7021 0.252 1.073 0.407 2.191 0.757 3.2191 0.926 2.5478 2.639 4.7364 4.556 6.5937 0 0 0.045 0.0983 0.144 0.0534 1.973 3.0201 4.045 5.9953 6.367 8.7374-1.46-1.1156-2.814-2.5176-3.819-4.1976-0.78-1.1884-1.364-2.4665-2.198-3.5117-0.878-1.1434-2.061-1.9106-2.939-3.0541-0.368-0.545-0.781-1.1884-1.247-1.6885-0.194 1.3959-0.29 2.7468-0.484 4.1427-0.109-1.0196-0.219-2.0392-0.328-3.0588-0.1-1.2612-0.299-2.4774-0.498-3.6937-0.909-3.0309-2.453-5.8907-2.682-8.9945z" fill="#8b8b8b" style=""/>
|
||||
<path d="m186.97 26.632c0.126 0.5365 0.199 1.2162 0.424 1.7078 0.109 1.0196 0.272 1.896 0.819 2.8343 0.637 1.135 1.569 2.1352 2.51 2.8939 1.693 1.3657 3.645 2.2567 5.597 3.1478 0.904 0.4188 1.755 0.9808 2.159 1.8657-0.143-0.0534-0.143-0.0534-0.287-0.1068 0.099-0.0449 0.099-0.0449 0.197-0.0898-2.803-1.4531-5.748-2.9596-8.391-4.8424-0.752-0.607-1.603-1.169-2.106-2.009-1.013-1.4384-0.99-3.4691-0.922-5.4015z" fill="#8b8b8b" style=""/>
|
||||
<path d="m205.07 38.684c0.876-0.1626 1.789 0.0146 2.666-0.148 0.921-0.0642 1.752-0.3251 2.53-0.4428 1.503-0.0922 2.891 0.3437 4.295 0.2964 0.823-0.0194 1.744-0.0836 2.612-0.0047 1.539 0.2477 2.803 1.4531 3.878 2.5068 4.068 3.9645 8.092 7.8308 12.16 11.795 0.655 0.6519 1.443 1.5987 1.025 2.503-0.206 0.3313-0.554 0.6093-0.849 0.744 0.098-0.0449 0.197-0.0898 0.152-0.1881 0.402-0.4212 0.337-1.3425-0.191-1.4578-0.216-0.7332-0.915-1.4834-1.381-1.9835-3.835-3.7145-7.769-7.3841-11.658-10.955-0.421-0.4018-0.842-0.8036-1.46-1.1155-0.618-0.312-1.146-0.4274-1.772-0.4978-4.519-0.7881-9.333-1.4414-13.822-0.342-0.098 0.0449-0.196 0.0898-0.295 0.1347 0 0 0.045 0.0983 0.09 0.1967-0.34 0.0364-0.626-0.0705-0.966-0.0341 0.983-0.449 1.966-0.8981 2.986-1.0072z" fill="#8b8b8b" style=""/>
|
||||
<path d="m226.76 35.435c1.511-0.3337 3.086 0.2539 4.617 0.7431 0.143 0.0534 0.143 0.0534 0.286 0.1069 3.449 2.3465 6.995 4.6481 10.747 6.6183-3.777-1.2456-7.439-3.0192-10.994-5.0793-0.806-0.4637-1.514-0.9723-2.471-1.2479-2.247-0.7564-4.697 0.1247-6.958 1.1575 0.348-0.2779 0.938-0.5474 1.135-0.6372 0.59-0.2694 1.081-0.4939 1.671-0.7633 0.599-0.511 1.189-0.7804 1.967-0.8981z" fill="#8b8b8b" style=""/>
|
||||
<path d="m224.75 55.351c0.287 0.1068 0.716 0.2671 1.003 0.3739 0.045 0.0984 0.188 0.1518 0.188 0.1518 0.806 0.4637 1.612 0.9274 2.373 1.2928 1.575 0.5876 2.794 0.8009 4.358 0.3239 0.832-0.2609 2.135-1.2416 2.921-1.6008 2.262-1.0328 4.785-0.6681 7.164-0.9228 2.137-0.2633 6.436 3.1194 8.685 4.0047 2.249 0.8854 2.611 1.2874 4.136 2.1507 2.443 1.3835 2.471 1.248 3.706 1.8719 1.666 0.7843 2.494 0.8934 3.121 2.7738 0 2.5072-3.135 5.6324-3.135 8.1485 1.086 1.4326 1.873 0.6419 3.699 0.9965 0.957 0.2756 1.915 0.5512 2.721 1.0149 1.954 2.1971 3.81 4.4392 5.719 6.538-1.093-0.5706-2.078-1.4276-2.965-2.3295-1.165-1.2503-1.982-2.7786-3.451-3.6526-1.657-1.0258-3.741-0.9057-5.71-1.3137-3.123-0.5938 4.157-9.3207 1.31-10.872-2.848-1.5515-4.774-3.0474-7.967-3.0148-3.05 0.086-9.698-5.6815-12.614-5.3005-0.921 0.0643-1.896 0.2718-2.825 0.5776-0.635 0.1711-1.225 0.4405-1.913 0.7548-0.787 0.3593-1.475 0.6736-2.307 0.9345-0.491 0.2245-1.028 0.3508-1.511 0.3337-0.581 0.0279-1.199-0.2841-1.674-0.5426-1.71-0.8826-3.42-1.7651-5.032-2.6926z" fill="#8b8b8b" style=""/>
|
||||
</g><g transform="translate(4e-4,5e-4)" style="display: none;" tb:tag="leak">
|
||||
<path d="m47.912 134.05c0.428-0.101 0.9702-0.159 1.3624-0.338 1.3624-0.338 2.6599-1.025 3.5071-2.075 0.3273-0.529 0.6188-1.136 0.8319-1.707 0.6323-1.521 1.3005-2.964 1.9687-4.407 0.6614-1.25 1.3296-2.692 0.9133-4.019-0.1926-7e-3 -0.3069-0.049-0.4996-0.056 0.5453-2.335 0.3266-4.889-0.3626-7.228-0.4453-1.598-1.276-3.209-1.179-4.865 0.0203-0.578 0.155-1.113 0.2111-1.613 0.0698-0.885 0.0612-1.734-0.1402-2.59-0.0939-0.621-0.3804-1.248-0.5527-1.833-0.4812-1.676-0.8054-3.4236-0.7801-5.2362 0.3291 0.5132 0.6583 1.0264 0.9875 1.5396 0 0 0.3427 0.1278 0.2285 0.0852-0.121 0.1501-0.0136 0.3854 0.1365 0.5064 0.4057-0.5645 0.8115-1.1289 1.1388-1.6576 1.8718-2.7507 3.7078-5.5798 5.2794-8.5726-0.9936 3.0132-2.4084 5.9343-4.0517 8.7702-0.3699 0.6429-0.7756 1.2074-0.9955 1.971-0.6033 1.793 0.0995 3.746 0.9234 5.55l0.0358 0.079c0.0716 0.157 0.1791 0.392 0.3718 0.399 0.2285 0.085 0.5064-0.137 0.7058-0.323 0.9616-1.007 1.9589-1.937 2.9563-2.866 1.2753-1.152 2.658-2.067 3.8974-3.297 1.1184-1.0796 2.0868-2.2802 2.9767-3.4449 0.4057-0.5645 0.8472-1.0505 1.0245-1.7002 0.2556-0.6855 0.3186-1.3778 0.2674-2.1127-0.0445-0.9276-0.0532-1.7768-0.1761-2.6685-0.63-5.1154 5.4511-13.66 4.0078-18.688-0.2736-1.2766 0-2.776 1.7264-1.2765 1.5 2.0005 2.0001 1.9998 5.0001 1.9998 0.4125-0.7572 3.5 2 5 2 1 0.5 0.9415-0.3767 1.0045-1.069 0.1259-1.3846 0.1376-2.8118-0.5139-4.0309 0.5151 0.7127 0.8733 1.497 1.1172 2.2387 0.1995-0.1859 0.4774-0.4076 0.6769-0.5935 1.7526-1.5588 3.5411-3.0391 5.2153-4.5621-0.4552 0.8714-1.1388 1.6576-1.8583 2.3654-0.9973 0.9294-2.2164 1.581-2.9136 2.7525-0.8183 1.3216-0.7225 2.9841-1.048 4.5546-0.4736 2.4913-6.84-3.4917-8.0776-1.2202-1.2375 2.2714-2.791 3.9327-4.5242 7.8089-1.249 2.7934-3.1791 7.3531-2.8752 9.6789 0.0512 0.7349 0.2167 1.5124 0.4607 2.2541 0.1365 0.5064 0.3514 0.977 0.6022 1.526 0.2865 0.6274 0.5373 1.1765 0.7454 1.8397 0.1791 0.3922 0.2798 0.8202 0.2662 1.2055 0.0222 0.4638-0.2266 0.9571-0.4329 1.3351-0.704 1.364-1.408 2.729-2.112 4.093 0.0852-0.229 0.213-0.571 0.2982-0.8 0.6818-1.828 1.2851-3.62 1.1962-5.4754 0.0136-0.3853-0.0871-0.8133-0.3088-1.0912-0.0358-0.0784-0.0717-0.1569-0.1501-0.1211-0.336-0.3205-1.0709-0.2692-1.1629 0.152-0.5848 0.1723-1.1832 0.73-1.5822 1.1018-2.963 3.0599-5.8903 6.1969-8.739 9.2999-0.3206 0.336-0.6411 0.671-0.8899 1.164-0.2489 0.493-0.3409 0.914-0.3971 1.414-0.6286 3.605-1.1498 7.445-0.2728 11.025 0.0358 0.079 0.0716 0.157 0.1075 0.236l0.1568-0.072c0.029 0.271-0.0562 0.5-0.0271 0.771 0.1673 1.819 1.2623 3.594 2.3283 5.098 1.1378 1.266 1.7677 1.787 2.3765 1.82 0.6912 0.037 3.0405 0.166 4.04-1.054 0.4058-0.564 0.3806-1.76 0.6176-1.973 0.0837-0.075 1.622-0.298 0.3718 0.246 0.0325-0.609 2.3279-6.428 2.4773-10.667 0.0136-0.385-0.0086-0.849-0.1093-1.277-0.029-0.271-0.1365-0.506-0.3224-0.706-0.0358-0.078-0.1501-0.121-0.2643-0.164-0.1143-0.042-0.1569 0.072-0.2353 0.108-2.8865 1.982-5.7149 4.506-9.3178 4.919 0.121-0.15 0.1995-0.186 0.3205-0.336 0.0784-0.036 0.121-0.15 0.2779-0.222 1.5105-1.258 3.4713-2.154 4.7175-3.576 0.5626-0.636 1.0894-1.351 1.8379-1.787 0.9838-0.544 2.3752-0.611 3.1731-1.355 0.3989-0.372 0.7262-0.9 0.8966-1.357 0.4688-1.257 0.6732-2.677 1.2561-3.892 0.2915-0.607 0.7757-1.207 1.0672-1.814 0.0426-0.114 0.121-0.15 0.1636-0.264 0.704-1.364 4.0433-5.8235 4.0976-7.3649-0.0475 1.3487-3.2232 5.5439-3.078 6.8989 1.589-1.294 3.0995-2.553 4.6169-4.0043-1.0536 1.4293-2.2572 2.7373-3.6109 3.9243-0.6768 0.593-1.3537 1.187-1.8804 1.901-0.9752 1.394-0.9714 3.477 0.4218 4.452 0.1501 0.121 0.3002 0.242 0.4928 0.249 0.9499 0.42 2.0701 0.382 3.112 0.38 3.0539-0.162 5.9577-0.446 9.0184-0.801 2.2473-0.268 4.4588-0.615 6.4622-1.624 0.1568-0.072 0.2779-0.222 0.2062-0.379 0.5645 0.406 1.2278 0.198 1.8194-0.167 0.6274-0.287 1.1832-0.73 1.7749-1.095 0.5132-0.33 1.0264-0.659 1.5396-0.988 2.4095-1.574 4.7825-3.227 6.9695-5.079-0.89 1.165-2.008 2.244-3.348 3.046-0.948 0.622-1.968 1.088-2.801 1.753-0.9126 0.701-1.5246 1.644-2.4367 2.345-0.4348 0.294-0.948 0.623-1.3469 0.995 1.1135 0.155 2.1911 0.231 3.3046 0.386-0.8133 0.087-1.6267 0.174-2.44 0.261-1.006 0.081-1.9762 0.239-2.9464 0.398-2.411 0.533-4.7349 1.878-7.2107 2.061-0.1927-7e-3 -0.3854-0.013-0.5781-0.02 0.1211-0.15 0.2779-0.222 0.399-0.372-0.1143-0.043-0.2711 0.029-0.3854-0.014-2.1553-0.153-4.4026 0.115-6.4999 0.504-1.862 0.282-3.8808 0.635-5.1987 1.901-0.3989 0.372-0.762 0.822-1.161 1.194-0.3989 0.371-1.0622 0.579-1.5976 0.445 0.026 2.547 0.5213 5.382-1.1307 7.369-1.2888 1.537-0.9848 3.612-2.5231 3.835 0.6413-0.576 0.8645 0.962 0.1908 2.147-0.6738 1.185-6.0002 1.687-7.5504 0.783-1.4358-0.861-2.5444-2.25-3.0323-3.734l-0.0716-0.156c-1.1592 2.235-2.3609 4.585-3.8628 6.693-0.4842 0.6-0.9325 1.279-1.6026 1.68-1.3265 0.416-2.9464 0.397-4.4879 0.343z" fill="#5c5a5a" style=""/>
|
||||
<path d="m68.636 128.06c-0.0871-0.813-0.2849-1.248 0.0134-2.048 0.5965-1.599 1.2407-1.962 2.0658-3.476 0.8318-1.707 0.9109-2.611 1.1715-4.531 0.1124-0.999 0.1463-1.963 0.1019-2.89 0.7639 0.22 1.965-1.262 2.5634-1.82 0.5984-0.557 1.1252-1.272 1.8669-1.516 0.8201-0.28 1.6625-0.096 2.5116-0.104 0.9276-0.045 1.8262-0.36 2.7606-0.598 1.9045-0.395 3.8246-0.135 5.702 0.24-0.0784 0.036-0.0784 0.036-0.1569 0.072-2.1553-0.154-4.4026 0.115-6.4999 0.504-1.8619 0.281-3.8808 0.635-5.1986 1.9-0.399 0.372-0.7621 0.822-1.1611 1.194-0.3989 0.372-1.4722 1.51-2.0076 1.376 0.026 2.547 0.4552 4.357-1.1968 6.343-1.2888 1.537-1.1863 2.084-1.9465 3.947-0.2421 0.301-0.4551 0.872-0.5897 1.407z" fill="#8b8b8b" style=""/>
|
||||
<path d="m60.418 118.67c0.1211-0.15 0.1995-0.186 0.3206-0.336 0.0784-0.035 0.121-0.15 0.2779-0.221l0.0784-0.036c0.5848-0.173 1.1697-0.345 1.7613-0.71 0.4706-0.215 0.9838-0.544 1.4185-0.837 1.896-1.245 3.5769-2.961 5.7662-3.771 0.2508 0.549 0.5015 1.098 0.5596 1.64-0.0291-0.271-0.1365-0.506-0.3224-0.706-0.0358-0.078-0.1501-0.121-0.2643-0.164-0.1143-0.042-0.1569 0.072-0.2353 0.108-2.8933 2.174-5.7576 4.62-9.3605 5.033z" fill="#8b8b8b" style=""/>
|
||||
<path d="m73.687 108.72c-0.2865-0.628-0.3736-1.441-0.2322-2.169s0.5539-1.485 0.7738-2.249c0.0426-0.115 0.121-0.15 0.1636-0.265 0.704-1.364 3.6774-5.2898 3.7318-6.8313-0.0476 1.3488-2.8573 5.0103-2.7122 6.3663 1.589-1.295 3.1477-2.742 4.665-4.1933-1.0536 1.4293-2.3053 2.9253-3.659 4.1123-0.6768 0.594-1.3537 1.187-1.8804 1.902-0.9751 1.393-0.9714 3.477 0.4218 4.452 0.1501 0.121 0.3002 0.242 0.4929 0.249-0.4212-0.092-0.764-0.22-1.0641-0.462-0.2643-0.164-0.5219-0.52-0.701-0.912z" fill="#8b8b8b" style=""/>
|
||||
<path d="m86.95 111.97c0.1772-0.65 0.8899-1.165 1.3963-1.301 0.9344-0.237 1.9046-0.396 2.9532-0.591 0.856-0.201 1.7477-0.324 2.5679-0.604 2.0324-0.738 3.7782-2.105 5.2597-3.634 0 0 0.0785-0.036 0.0427-0.115 2.4093-1.574 4.7823-3.226 6.9693-5.079-0.889 1.165-2.008 2.245-3.348 3.046-0.948 0.623-1.968 1.089-2.8012 1.754-0.9122 0.701-1.5241 1.644-2.4363 2.345-0.4347 0.293-0.9479 0.622-1.3469 0.994 1.1135 0.155 2.1912 0.232 3.3046 0.387-0.8133 0.087-1.6266 0.174-2.44 0.261-1.006 0.08-1.9762 0.239-2.9464 0.398-2.4178 0.725-4.6991 1.956-7.1749 2.139z" fill="#8b8b8b" style=""/>
|
||||
<path d="m47.912 134.05c0.428-0.1 0.9702-0.158 1.3624-0.337 0.8133-0.088 1.5124-0.217 2.2609-0.654 0.9053-0.508 1.7032-1.252 2.3084-2.002 1.0894-1.351 1.8002-2.908 2.511-4.465 0.3341-0.721 0.7824-1.4 1.4883-1.722-0.0426 0.114-0.0426 0.114-0.0852 0.229-0.0358-0.079-0.0358-0.079-0.0717-0.157-1.1591 2.235-2.3609 4.585-3.8628 6.693-0.4841 0.6-0.9325 1.279-1.6025 1.68-1.1475 0.808-2.7673 0.79-4.3088 0.735z" fill="#8b8b8b" style=""/>
|
||||
<path d="m57.526 119.61c-0.1297-0.699 0.0117-1.427-0.118-2.126-0.0513-0.735-0.2594-1.398-0.3533-2.019-0.0735-1.199 0.2741-2.305 0.2365-3.426-0.0155-0.656-0.0668-1.391-0.0038-2.083 0.1976-1.228 1.1592-2.236 1.9997-3.094 3.1625-3.245 6.2466-6.455 9.4091-9.7 0.52-0.5219 1.2752-1.1512 1.9966-0.8171 0.2643 0.1637 0.486 0.4416 0.5935 0.6769-0.0358-0.0785-0.0717-0.1569-0.1501-0.1211-0.336-0.3205-1.0709-0.2692-1.1629 0.152-0.5848 0.1723-1.1832 0.7299-1.5822 1.1017-2.963 3.0596-5.8903 6.1976-8.7391 9.2996-0.3205 0.336-0.641 0.672-0.8899 1.165-0.2488 0.493-0.3408 0.914-0.397 1.413-0.6286 3.605-1.1498 7.445-0.2728 11.026 0.0358 0.078 0.0716 0.157 0.1074 0.235 0 0 0.0785-0.036 0.1569-0.072 0.029 0.272-0.0562 0.5-0.0271 0.771-0.3583-0.784-0.7165-1.568-0.8035-2.382z" fill="#8b8b8b" style=""/>
|
||||
<path d="m54.934 102.31c-0.2662-1.205 0.2026-2.4619 0.5928-3.6829 0.0426-0.1142 0.0426-0.1142 0.0853-0.2285 1.8718-2.7506 3.7078-5.5798 5.2794-8.5725-0.9936 3.0131-2.4084 5.9342-4.0517 8.7702-0.3699 0.6428-0.7757 1.2073-0.9955 1.9717-0.6033 1.792 0.0995 3.746 0.9234 5.55-0.2218-0.278-0.4367-0.749-0.5083-0.906-0.2149-0.47-0.394-0.862-0.609-1.333-0.4076-0.477-0.6225-0.948-0.7164-1.569z" fill="#8b8b8b" style=""/>
|
||||
<path d="m70.82 103.92c0.0852-0.229 0.2131-0.571 0.2983-0.8 0.0784-0.036 0.121-0.15 0.121-0.15 0.3699-0.643 0.7398-1.286 1.0313-1.893 0.4687-1.2566 0.6388-2.2284 0.2584-3.4765-0.2081-0.6633-0.9904-1.7028-1.277-2.3302-0.8238-1.8039-0.5329-3.8166-0.7361-5.7144-0.21-1.7051 2.4883-5.1345 3.1946-6.9285s1.0269-2.0821 1.7156-3.2985c1.1035-1.9491 0.9955-1.9713 1.4932-2.9569 0.6256-1.3285 0.7126-1.9891 2.2126-2.4891 2 0 4.493 2.5003 6.5 2.5003 1.1428-0.8664 0.5121-1.4939 0.795-2.9501 0.2198-0.7639 0.4397-1.5279 0.8096-2.1708 1.7526-1.5587 3.5411-3.0391 5.2153-4.562-0.4552 0.8714-1.1388 1.6575-1.8583 2.3653-0.9973 0.9294-2.2164 1.581-2.9136 2.7525-0.8183 1.3217-0.7225 2.9842-1.0479 4.5546-0.4737 2.4913-7.4351-3.3159-8.6727-1.0445-1.2376 2.2715-2.4309 3.8077-2.4049 6.3552 0.0686 2.4332-4.5321 7.736-4.2282 10.062 0.0513 0.7349 0.2168 1.5125 0.4608 2.2541 0.1364 0.5065 0.3514 0.977 0.6021 1.5261 0.2866 0.6274 0.5373 1.1764 0.7454 1.8397 0.1791 0.3921 0.2798 0.8201 0.2662 1.2055 0.0223 0.4638-0.2266 0.9566-0.4329 1.3352-0.704 1.3643-1.408 2.7283-2.1478 4.0143z" fill="#8b8b8b" style=""/>
|
||||
<path d="m303.34 75.498c0.097 0.4289 0.15 0.9717 0.325 1.3655 0.325 1.3655 1 2.6695 2.042 3.5267 0.526 0.3323 1.13 0.6295 1.699 0.8479 1.515 0.6467 2.952 1.3286 4.388 2.0104 1.244 0.6732 2.68 1.355 4.01 0.9513 9e-3 -0.1926 0.053-0.3065 0.061-0.4991 2.329 0.5674 4.886 0.3729 7.231-0.2942 1.602-0.4302 3.221-1.2455 4.876-1.1329 0.578 0.0258 1.112 0.1655 1.611 0.2264 0.884 0.0782 1.733 0.0775 2.591-0.1157 0.622-0.088 1.252-0.3686 1.838-0.5354 1.681-0.4652 3.432-0.7729 5.244-0.7305-0.517 0.3243-1.033 0.6486-1.549 0.9729 0 0-0.131 0.3416-0.087 0.2277-0.149-0.1224-0.386-0.0172-0.508 0.1317 0.56 0.4111 1.121 0.8221 1.647 1.1544 2.732 1.8978 5.544 3.7605 8.522 5.3604-3.004-1.0221-5.911-2.4645-8.732-4.1346-0.639-0.376-1.2-0.787-1.961-1.0141-1.787-0.6202-3.747 0.0641-5.559 0.8708l-0.079 0.0351c-0.157 0.0701-0.394 0.1754-0.402 0.368-0.088 0.2277 0.131 0.5077 0.315 0.7089 0.999 0.971 1.919 1.9771 2.839 2.9832 1.139 1.2861 2.042 2.6775 3.26 3.9285 1.069 1.1286 2.26 2.1082 3.416 3.0091 0.561 0.411 1.043 0.8572 1.691 1.0406 0.683 0.2621 1.374 0.3316 2.11 0.2873 0.928-0.0357 1.777-0.0363 2.67-0.1508 5.121-0.5816 13.607 5.5805 18.649 4.1845 1.279-0.261 2.776 0.026 1.26 1.738-2.015 1.481-2.019 1.981-2.047 4.981 0.753 0.42-2.033 3.481-2.047 4.981-0.51 0.995 0.367 0.945 1.059 1.015 1.383 0.139 2.81 0.164 4.036-0.476-0.718 0.508-1.506 0.859-2.25 1.096 0.184 0.201 0.404 0.481 0.588 0.682 1.542 1.768 3.005 3.57 4.512 5.259-0.867-0.464-1.647-1.155-2.348-1.881-0.92-1.006-1.56-2.231-2.724-2.939-1.314-0.831-2.978-0.751-4.545-1.091-2.487-0.498 3.556-6.807 1.297-8.066-2.26-1.259-3.906-2.828-7.766-4.598-2.782-1.275-7.323-3.2486-9.651-2.9668-0.736 0.0444-1.515 0.2025-2.259 0.4394-0.507 0.1317-0.98 0.3422-1.531 0.5877-0.63 0.2807-1.182 0.5257-1.847 0.7277-0.394 0.176-0.823 0.272-1.208 0.255-0.464 0.018-0.954-0.236-1.331-0.445-1.357-0.7173-2.715-1.4342-4.072-2.1511 0.227 0.0874 0.569 0.2185 0.796 0.3058 1.822 0.6991 3.608 1.3193 5.464 1.2479 0.385 0.0173 0.814-0.0793 1.094-0.2984 0.079-0.0351 0.158-0.0702 0.123-0.1489 0.323-0.3329 0.279-1.0683-0.141-1.1643-0.167-0.5864-0.719-1.1901-1.087-1.5925-3.031-2.9919-6.141-5.9487-9.216-8.8267-0.333-0.3237-0.666-0.6474-1.157-0.9009-0.49-0.2536-0.91-0.3495-1.409-0.4105-3.599-0.6627-7.434-1.2202-11.023-0.3771-0.078 0.0351-0.157 0.0702-0.236 0.1052 0 0 0.035 0.0788 0.07 0.1576-0.271 0.0264-0.499-0.0609-0.77-0.0345-1.821 0.1502-3.606 1.2283-5.12 2.28-1.277 1.1258-1.804 1.7507-1.843 2.3592-0.043 0.6908-0.194 3.0388 1.016 4.0498 0.56 0.4111 1.756 0.3972 1.967 0.6362 0.074 0.0844 0.283 1.6247-0.249 0.3695 0.608 0.0382 6.405 2.3886 10.643 2.5781 0.385 0.0173 0.849-6e-4 1.278-0.0972 0.271-0.0265 0.507-0.1317 0.709-0.3157 0.078-0.0351 0.122-0.1489 0.166-0.2628 0.043-0.1138-0.07-0.1575-0.106-0.2363-1.954-2.9051-4.451-5.7572-4.83-9.3639 0.149 0.1225 0.184 0.2012 0.333 0.3237 0.035 0.0787 0.149 0.1224 0.219 0.28 1.244 1.5224 2.121 3.4915 3.531 4.7512 0.631 0.5685 1.341 1.1021 1.77 1.8547 0.535 0.9888 0.588 2.3808 1.324 3.1857 0.368 0.4024 0.894 0.7347 1.349 0.9095 1.253 0.4807 2.671 0.6987 3.88 1.2927 0.604 0.297 1.2 0.787 1.804 1.084 0.114 0.044 0.149 0.123 0.263 0.167 1.357 0.716 5.784 4.098 7.325 4.167-1.348-0.061-5.513-3.276-6.869-3.144 1.279 1.602 2.523 3.124 3.96 4.655-1.419-1.067-2.715-2.283-3.89-3.648-0.587-0.682-1.174-1.365-1.883-1.898-1.384-0.988-3.468-1.004-4.456 0.38-0.123 0.148-0.245 0.297-0.254 0.49-0.428 0.946-0.401 2.066-0.409 3.108 0.134 3.055 0.39 5.962 0.716 9.026 0.247 2.25 0.572 4.464 1.563 6.477 0.07 0.158 0.219 0.28 0.377 0.21-0.411 0.56-0.21 1.226 0.15 1.821 0.28 0.63 0.719 1.19 1.078 1.785 0.324 0.516 0.649 1.032 0.973 1.549 1.551 2.424 3.181 4.812 5.013 7.017-1.157-0.901-2.226-2.029-3.014-3.377-0.614-0.954-1.07-1.978-1.727-2.817-0.692-0.919-1.63-1.54-2.322-2.459-0.289-0.437-0.614-0.954-0.981-1.356-0.166 1.112-0.253 2.189-0.418 3.301-0.08-0.814-0.159-1.629-0.238-2.443-0.071-1.006-0.221-1.978-0.37-2.95-0.51-2.416-1.834-4.752-1.993-7.23 9e-3 -0.192 0.017-0.385 0.026-0.577 0.149 0.122 0.219 0.28 0.368 0.402 0.044-0.114-0.027-0.271 0.017-0.385 0.174-2.154-0.073-4.404-0.442-6.505-0.264-1.864-0.599-3.886-1.851-5.216-0.368-0.402-0.815-0.77-1.183-1.172-0.368-0.403-0.57-1.068-0.43-1.6021-2.548 0.0019-5.387 0.4701-7.358-1.2003-1.525-1.3033-3.603-1.0189-3.811-2.5593 0.57 0.6467-0.97 0.8554-2.149 0.1704s-1.63-6.0159-0.712-7.5574c0.875-1.4276 2.274-2.523 3.762-2.9968l0.158-0.0702c-2.225-1.1802-4.563-2.4042-6.656-3.926-0.596-0.4898-1.271-0.9445-1.665-1.6183-0.404-1.3305-0.37-2.9501-0.301-4.491z" fill="#5c5a5a" style=""/>
|
||||
<path d="m309.14 96.278c0.814-0.0794 1.251-0.2731 2.048 0.0328 1.594 0.6116 1.95 1.2592 3.456 2.0986 1.699 0.8479 2.603 0.9356 4.52 1.2143 0.998 0.1219 1.961 0.1649 2.889 0.1292-0.227 0.7617 1.243 1.9767 1.795 2.5807s1.262 1.137 1.499 1.881c0.272 0.823 0.08 1.663 0.08 2.513 0.036 0.928 0.343 1.829 0.571 2.766 0.378 1.908 0.1 3.825-0.293 5.699-0.035-0.079-0.035-0.079-0.07-0.157 0.173-2.154-0.073-4.404-0.443-6.505-0.264-1.864-0.598-3.886-1.851-5.216-0.368-0.403-0.815-0.77-1.182-1.172-0.368-0.403-1.497-1.487-1.358-2.021-2.547 2e-3 -4.36 0.414-6.332-1.2568-1.524-1.3034-2.071-1.206-3.928-1.9838-0.298-0.2449-0.867-0.4634-1.401-0.603z" fill="#8b8b8b" style=""/>
|
||||
<path d="m318.6 88.15c0.149 0.1225 0.184 0.2012 0.333 0.3237 0.035 0.0788 0.149 0.1225 0.219 0.28 0.035 0.0788 0.035 0.0788 0.035 0.0788 0.167 0.5864 0.333 1.1728 0.693 1.7679 0.21 0.4726 0.535 0.9889 0.824 1.4264 1.227 1.9076 2.926 3.6048 3.716 5.8016-0.551 0.2455-1.103 0.4911-1.645 0.544 0.271-0.0265 0.507-0.1317 0.708-0.3157 0.079-0.0351 0.123-0.1489 0.167-0.2627 0.043-0.1139-0.071-0.1576-0.106-0.2363-2.147-2.9138-4.565-5.801-4.944-9.4077z" fill="#8b8b8b" style=""/>
|
||||
<path d="m328.43 101.51c0.63-0.281 1.444-0.36 2.171-0.212s1.48 0.568 2.242 0.795c0.114 0.044 0.149 0.122 0.263 0.166 1.357 0.717 5.255 3.727 6.796 3.796-1.348-0.06-4.983-2.904-6.34-2.772 1.279 1.601 2.712 3.173 4.148 4.704-1.419-1.067-2.903-2.332-4.078-3.697-0.587-0.683-1.174-1.365-1.883-1.899-1.384-0.988-3.468-1.004-4.456 0.38-0.122 0.149-0.245 0.298-0.254 0.49 0.096-0.42 0.228-0.761 0.472-1.059 0.167-0.263 0.525-0.517 0.919-0.692z" fill="#8b8b8b" style=""/>
|
||||
<path d="m325.05 114.74c0.648 0.184 1.157 0.901 1.288 1.409 0.229 0.936 0.378 1.908 0.563 2.958 0.193 0.858 0.307 1.751 0.579 2.574 0.72 2.039 2.069 3.798 3.585 5.294 0 0 0.035 0.079 0.114 0.043 1.551 2.424 3.181 4.813 5.013 7.018-1.157-0.901-2.226-2.029-3.014-3.377-0.614-0.954-1.07-1.978-1.727-2.818-0.692-0.919-1.63-1.539-2.322-2.458-0.289-0.438-0.613-0.954-0.981-1.356-0.166 1.112-0.253 2.188-0.418 3.3-0.08-0.814-0.159-1.628-0.238-2.442-0.071-1.007-0.221-1.978-0.37-2.95-0.702-2.425-1.912-4.717-2.072-7.195z" fill="#8b8b8b" style=""/>
|
||||
<path d="m303.34 75.498c0.097 0.4289 0.15 0.9717 0.325 1.3655 0.08 0.8141 0.203 1.5144 0.632 2.267 0.5 0.9101 1.236 1.715 1.981 2.3273 1.34 1.1021 2.89 1.8276 4.44 2.5531 0.718 0.3409 1.393 0.7956 1.708 1.5045-0.113-0.0437-0.113-0.0437-0.227-0.0874 0.078-0.035 0.078-0.035 0.157-0.0701-2.224-1.1803-4.563-2.4042-6.656-3.926-0.596-0.4898-1.27-0.9445-1.665-1.6184-0.797-1.155-0.763-2.7746-0.695-4.3155z" fill="#8b8b8b" style=""/>
|
||||
<path d="m317.69 85.248c0.701-0.123 1.427 0.0253 2.128-0.0978 0.735-0.0443 1.4-0.2462 2.022-0.3342 1.199-0.0621 2.302 0.296 3.423 0.2689 0.657-0.0092 1.392-0.0535 2.084 0.016 1.225 0.2092 2.224 1.1802 3.074 2.0288 3.215 3.1931 6.396 6.3074 9.611 9.5005 0.517 0.5249 1.139 1.2861 0.798 2.0043-0.166 0.2627-0.446 0.4818-0.682 0.587 0.078-0.0351 0.157-0.0701 0.122-0.1489 0.324-0.3329 0.279-1.0683-0.141-1.1643-0.167-0.5864-0.719-1.1901-1.087-1.5925-3.031-2.9919-6.141-5.9487-9.216-8.8267-0.333-0.3237-0.666-0.6474-1.156-0.9009-0.491-0.2535-0.911-0.3495-1.41-0.4104-3.599-0.6627-7.434-1.2202-11.023-0.3771-0.078 0.035-0.157 0.0701-0.236 0.1052 0 0 0.035 0.0787 0.07 0.1575-0.271 0.0265-0.499-0.0609-0.77-0.0344 0.788-0.3508 1.575-0.7016 2.389-0.781z" fill="#8b8b8b" style=""/>
|
||||
<path d="m335.01 82.82c1.208-0.2547 2.461 0.2259 3.678 0.6277 0.114 0.0437 0.114 0.0437 0.227 0.0874 2.733 1.8977 5.545 3.7604 8.523 5.3603-3.004-1.0221-5.912-2.4645-8.732-4.1345-0.639-0.376-1.2-0.7871-1.962-1.0141-1.786-0.6203-3.747 0.064-5.558 0.8708 0.28-0.2191 0.752-0.4296 0.91-0.4997 0.473-0.2105 0.866-0.3859 1.339-0.5963 0.481-0.4031 0.954-0.6136 1.575-0.7016z" fill="#8b8b8b" style=""/>
|
||||
<path d="m333.26 98.691c0.227 0.0874 0.569 0.2184 0.797 0.3058 0.035 0.0788 0.148 0.1225 0.148 0.1225 0.64 0.376 1.279 0.7519 1.884 1.0489 1.252 0.481 2.222 0.66 3.474 0.292 0.665-0.202 1.712-0.9747 2.342-1.2553 1.811-0.8068 3.821-0.4968 5.721-0.682 1.707-0.1939 5.111 2.5363 6.898 3.2603 1.787 0.723 2.072 1.046 3.282 1.746 1.939 1.122 1.962 1.014 2.943 1.522 1.322 0.638 1.982 0.731 2.468 2.236-0.019 2-2.543 4.469-2.562 6.476 0.855 1.151 1.489 0.526 2.942 0.822 0.762 0.228 1.524 0.455 2.163 0.831 1.543 1.767 3.006 3.569 4.513 5.258-0.867-0.464-1.647-1.155-2.348-1.881-0.92-1.006-1.56-2.231-2.725-2.939-1.313-0.831-2.977-0.751-4.544-1.091-2.487-0.497 3.386-7.404 1.126-8.663-2.259-1.259-3.784-2.466-6.332-2.465-2.433 0.046-7.692-4.6047-10.021-4.3228-0.735 0.0443-1.514 0.2025-2.258 0.4394-0.508 0.1317-0.981 0.3424-1.532 0.5874-0.63 0.281-1.181 0.526-1.847 0.728-0.393 0.176-0.822 0.272-1.208 0.255-0.464 0.018-0.954-0.236-1.331-0.445-1.357-0.717-2.715-1.4342-3.993-2.1862z" fill="#8b8b8b" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 76 KiB |
|
|
@ -0,0 +1,422 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Horizontal pipe",
|
||||
"description": "Horizontal pipe with fluid and leak visualizations.",
|
||||
"searchTags": [
|
||||
"pipe",
|
||||
"horizontal 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 = element.reference('fill').first();\n\nvar fluidAnimation = ctx.api.cssAnimation(liquidPattern);\n\n\nif (fluid) {\n element.show();\n if (flow !== elementFlow) {\n element.remember('flow', flow);\n if (flow) {\n if (elementFlowDirection !== flowDirection || !fluidAnimation) {\n element.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection);\n } else {\n fluidAnimation.play();\n }\n } else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n }\n } else if (flow && elementFlowDirection !== flowDirection) {\n element.remember('flowDirection', flowDirection);\n fluidAnimation = animateFlow(liquidPattern, flowDirection);\n }\n if (flow) {\n if (fluidAnimation) {\n fluidAnimation.speed(ctx.values.flowAnimationSpeed);\n }\n }\n} else {\n if (fluidAnimation) {\n fluidAnimation.pause();\n }\n element.hide();\n}\n\nfunction animateFlow(liquidPattern, forwardElseReverse) {\n ctx.api.resetCssAnimation(liquidPattern);\n var deltaX = forwardElseReverse ? 172 : -172;\n return ctx.api.cssAnimate(liquidPattern, 1000).relative(deltaX, 0).loop();\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
|
||||
},
|
||||
{
|
||||
"tag": "pipe-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.pipeColor;\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "fluid",
|
||||
"name": "{i18n:scada.symbol.fluid-presence}",
|
||||
"hint": "{i18n:scada.symbol.fluid-presence-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.fluid-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flow",
|
||||
"name": "{i18n:scada.symbol.flow-presence}",
|
||||
"hint": "{i18n:scada.symbol.flow-presence-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.present}",
|
||||
"falseLabel": "{i18n:scada.symbol.absent}",
|
||||
"stateLabel": "{i18n:scada.symbol.flow-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowDirection",
|
||||
"name": "{i18n:scada.symbol.flow-direction}",
|
||||
"hint": "{i18n:scada.symbol.flow-direction-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": "{i18n:scada.symbol.forward}",
|
||||
"falseLabel": "{i18n:scada.symbol.reverse}",
|
||||
"stateLabel": "{i18n:scada.symbol.forward}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": true,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "flowAnimationSpeed",
|
||||
"name": "{i18n:scada.symbol.flow-animation-speed}",
|
||||
"hint": "{i18n:scada.symbol.flow-animation-speed-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": 1,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "leak",
|
||||
"name": "{i18n:scada.symbol.leak}",
|
||||
"hint": "{i18n:scada.symbol.leak-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.leak-present}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "fluidColor",
|
||||
"name": "{i18n:scada.symbol.fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#1EC1F480",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "pipeColor",
|
||||
"name": "{i18n:scada.symbol.pipe-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m186 136h-172v-72h172z" fill="#fff" tb:tag="pipe-background"/><path d="m186 136h-172v-72h172z" fill="url(#paint0_linear_955_27716)"/><g stroke-width="3">
|
||||
<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><defs>
|
||||
<linearGradient id="paint0_linear_955_27716" x1="48.475" x2="48.475" y1="136" y2="64" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".26388"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".41759"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".49829"/>
|
||||
<stop stop-color="#727171" stop-opacity=".1" offset=".58094"/>
|
||||
<stop stop-color="#727171" stop-opacity=".35" offset=".71855"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<pattern id="baseLiquid" width="172" height="72" patternTransform="translate(14,-8)" patternUnits="userSpaceOnUse">
|
||||
<circle transform="rotate(-90)" cx="-15" cy="21" r="8" fill="url(#paint28_linear_1182_32781-5)"/>
|
||||
<circle transform="rotate(-90)" cx="-15" cy="150" r="8" fill="url(#paint29_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-16" cy="113" r="8" fill="url(#paint30_linear_1182_32781-7)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="34" r="8" fill="url(#paint31_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-58" cy="155" r="8" fill="url(#paint32_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="33" r="5" fill="url(#paint33_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-26" cy="162" r="5" fill="url(#paint34_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="5" r="5" fill="url(#paint35_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-8" cy="94" r="4" fill="url(#paint36_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-60" cy="72" r="4" fill="url(#paint37_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-37" cy="112" r="5" fill="url(#paint38_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-39" cy="59" r="5" fill="url(#paint39_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-62" cy="115" r="5" fill="url(#paint40_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-42" cy="139" r="5" fill="url(#paint41_linear_1182_32781-4)"/>
|
||||
<circle transform="rotate(-90)" cx="-21" cy="76" r="5" fill="url(#paint42_linear_1182_32781-1)"/>
|
||||
<circle transform="rotate(-90)" cx="-50.5" cy="126.5" r="2.5" fill="url(#paint43_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-46.5" cy="169.5" r="2.5" fill="url(#paint44_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-9.5" cy="57.5" r="2.5" fill="url(#paint45_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-35.5" cy="96.5" r="2.5" fill="url(#paint46_linear_1182_32781-9)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="91.5" r="2.5" fill="url(#paint47_linear_1182_32781-2)"/>
|
||||
<circle transform="rotate(-90)" cx="-40.5" cy="22.5" r="2.5" fill="url(#paint48_linear_1182_32781-88)"/>
|
||||
<circle transform="rotate(-90)" cx="-23.5" cy="124.5" r="2.5" fill="url(#paint49_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-47.5" cy="86.5" r="2.5" fill="url(#paint50_linear_1182_32781-6)"/>
|
||||
<circle transform="rotate(-90)" cx="-21.5" cy="51.5" r="2.5" fill="url(#paint51_linear_1182_32781-8)"/>
|
||||
<circle transform="rotate(-90)" cx="-51.5" cy="48.5" r="2.5" fill="url(#paint52_linear_1182_32781-3)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="14" r="4" fill="url(#paint53_linear_1182_32781-83)"/>
|
||||
<circle transform="rotate(-90)" cx="-64" cy="135" r="4" fill="url(#paint54_linear_1182_32781-33)"/>
|
||||
<circle transform="rotate(-90)" cx="-58.5" cy="95.5" r="9.5" fill="url(#paint55_linear_1182_32781-8)"/>
|
||||
<path d="m0 0h172v72h-172z" fill="url(#paint84_linear_1182_32781-8)" stroke-width=".57735"/>
|
||||
</pattern>
|
||||
<pattern id="liquid" width="172" height="72" patternUnits="userSpaceOnUse"><rect width="688" height="72" x="-172" y="0" stroke-width="0" fill="url(#baseLiquid)"/></pattern>
|
||||
<linearGradient id="paint28_linear_1182_32781-5" x1="19.316" x2="21" y1="8.2632" y2="23" gradientTransform="translate(-36 6)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint29_linear_1182_32781-1" x1="148.32" x2="150" y1="8.2632" y2="23" gradientTransform="translate(-165,135)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint30_linear_1182_32781-7" x1="111.32" x2="113" y1="9.2632" y2="24" gradientTransform="translate(-129 97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint31_linear_1182_32781-4" x1="32.316" x2="34" y1="51.263" y2="66" gradientTransform="translate(-92 -24)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint32_linear_1182_32781-3" x1="153.32" x2="155" y1="51.263" y2="66" gradientTransform="translate(-213 97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint33_linear_1182_32781-1" x1="31.947" x2="33" y1="21.789" y2="31" gradientTransform="translate(-59 7)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint34_linear_1182_32781-4" x1="160.95" x2="162" y1="21.789" y2="31" gradientTransform="translate(-188,136)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint35_linear_1182_32781-6" x1="3.9474" x2="5" y1="32.79" y2="42" gradientTransform="translate(-42 -32)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint36_linear_1182_32781-9" x1="93.158" x2="94" y1="4.6316" y2="12" gradientTransform="translate(-102,86)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint37_linear_1182_32781-4" x1="71.158" x2="72" y1="56.632" y2="64" gradientTransform="translate(-132 12)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint38_linear_1182_32781-2" x1="110.95" x2="112" y1="32.79" y2="42" gradientTransform="translate(-149 75)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint39_linear_1182_32781-2" x1="57.947" x2="59" y1="34.79" y2="44" gradientTransform="translate(-98 20)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint40_linear_1182_32781-6" x1="113.95" x2="115" y1="57.79" y2="67" gradientTransform="translate(-177 53)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint41_linear_1182_32781-4" x1="137.95" x2="139" y1="37.79" y2="47" gradientTransform="translate(-181 97)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint42_linear_1182_32781-1" x1="74.947" x2="76" y1="16.789" y2="26" gradientTransform="translate(-97 55)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint43_linear_1182_32781-2" x1="125.97" x2="126.5" y1="48.395" y2="53" gradientTransform="translate(-177 76)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint44_linear_1182_32781-8" x1="168.97" x2="169.5" y1="44.395" y2="49" gradientTransform="translate(-216,123)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint45_linear_1182_32781-8" x1="56.974" x2="57.5" y1="7.3947" y2="12" gradientTransform="translate(-67 48)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint46_linear_1182_32781-9" x1="95.974" x2="96.5" y1="33.395" y2="38" gradientTransform="translate(-132 61)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint47_linear_1182_32781-2" x1="90.974" x2="91.5" y1="21.395" y2="26" gradientTransform="translate(-115 68)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint48_linear_1182_32781-88" x1="21.974" x2="22.5" y1="38.395" y2="43" gradientTransform="translate(-63 -18)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint49_linear_1182_32781-8" x1="123.97" x2="124.5" y1="21.395" y2="26" gradientTransform="translate(-148,101)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint50_linear_1182_32781-6" x1="85.974" x2="86.5" y1="45.395" y2="50" gradientTransform="translate(-134 39)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint51_linear_1182_32781-8" x1="50.974" x2="51.5" y1="19.395" y2="24" gradientTransform="translate(-73 30)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint52_linear_1182_32781-3" x1="47.974" x2="48.5" y1="49.395" y2="54" gradientTransform="translate(-100 -3)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint53_linear_1182_32781-83" x1="13.158" x2="14" y1="60.632" y2="68" gradientTransform="translate(-78 -50)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint54_linear_1182_32781-33" x1="134.16" x2="135" y1="60.632" y2="68" gradientTransform="translate(-199 71)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint55_linear_1182_32781-8" x1="93.5" x2="95.5" y1="50.5" y2="68" gradientTransform="translate(-154 37)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#fff" stop-opacity=".4" offset="0"/>
|
||||
<stop stop-opacity=".15" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint84_linear_1182_32781-8" x1="248" x2="248" y1="1.8513e-7" y2="72" gradientTransform="scale(.33333 1)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" offset=".10895"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".11331"/>
|
||||
<stop stop-color="#fff" stop-opacity="0" offset=".88736"/>
|
||||
<stop stop-color="#727171" offset=".89138"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs><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="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>
|
||||
|
After Width: | Height: | Size: 31 KiB |
|
|
@ -0,0 +1,524 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="1e3" height="600" fill="none" version="1.1" viewBox="0 0 1e3 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Horizontal tank",
|
||||
"description": "Horizontal tank with level visualizations.",
|
||||
"searchTags": [
|
||||
"horizontal tank",
|
||||
"high performance"
|
||||
],
|
||||
"widgetSizeX": 5,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.tankColor});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "fluid-background",
|
||||
"stateRenderFunction": " var color = ctx.properties.fluidColor;\n element.attr({fill: color, 'fill-opacity': 1});\n \n var valueSet = element.remember('valueSet');\n if (!valueSet) {\n element.remember('valueSet', true);\n element.attr({height: 0});\n }\n \n var currentVolume = ctx.values.currentVolume; \n var tankCapacity = ctx.values.tankCapacity; \n\n var height = currentVolume / tankCapacity;\n height = Math.max(0, Math.min(1, height))*592; \n \n var elementHeight = element.remember('height');\n if (height !== elementHeight) {\n element.remember('height', height);\n element.attr({height: height});\n }",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "scale",
|
||||
"stateRenderFunction": "if (!ctx.properties.scale) {\n element.hide();\n} else {\n var scaleSet = element.remember('scaleSet');\n if (!scaleSet) {\n element.remember('scaleSet', true);\n element.clear();\n \n var majorIntervals = ctx.properties.majorIntervals;\n var minorIntervals = ctx.properties.minorIntervals;\n \n var start = 3;\n var majorIntervalLength = 592 / majorIntervals;\n var minorIntervalLength = majorIntervalLength / minorIntervals;\n var tankCapacity = ctx.properties.scaleDisplayFormat ? 100 : (ctx.values.tankCapacity || 100);\n for (var i = 0; i < majorIntervals + 1; i++) {\n var y = start + i * majorIntervalLength;\n var line = ctx.svg.line(208, y, 240, y).stroke({ width: 3 }).attr({class: 'majorTick'});\n element.add(line);\n var currentVolume = (tankCapacity - i * (tankCapacity/majorIntervals)).toFixed(0);\n var majorText = ctx.properties.scaleDisplayFormat ? currentVolume : ctx.api.formatValue(currentVolume, {units: ctx.properties.majorUnits, decimals: 0, ignoreUnitSymbol: !ctx.properties.enableUnitScale});\n var majorTickText = ctx.svg.text(majorText);\n if (i === 0) {\n majorTickText.attr({x: 198, y: y + 10, 'text-anchor': 'end', class: 'majorTickText'});\n } else if (i === majorIntervals) {\n majorTickText.attr({x: 198, y: y - 5, 'text-anchor': 'end', class: 'majorTickText'});\n } else {\n majorTickText.attr({x: 198, y: y + 2, 'text-anchor': 'end', class: 'majorTickText'});\n }\n majorTickText.first().attr({'dominant-baseline': 'middle'});\n element.add(majorTickText);\n if (i < majorIntervals) {\n drawMinorTicks(y, minorIntervals, minorIntervalLength);\n }\n }\n }\n \n var majorFont = ctx.properties.majorFont;\n var majorColor = ctx.properties.majorColor;\n var minorColor = ctx.properties.minorColor;\n \n var majorTicks = element.find('line.majorTick');\n majorTicks.forEach(t => t.attr({stroke: majorColor}));\n \n var majorTicksText = element.find('text.majorTickText');\n ctx.api.font(majorTicksText, majorFont, majorColor);\n \n var minorTicks = element.find('line.minorTick');\n minorTicks.forEach(t => t.attr({stroke: minorColor}));\n}\n\nfunction drawMinorTicks(start, minorIntervals, minorIntervalLength) {\n for (var i = 1; i < minorIntervals; i++) {\n var minorY = start + i * minorIntervalLength;\n var minorLine = ctx.svg.line(220, minorY, 240, minorY).stroke({ width: 3 }).attr({class: 'minorTick'});\n element.add(minorLine);\n }\n}",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "tankCapacity",
|
||||
"name": "{i18n:scada.symbol.tank-capacity}",
|
||||
"hint": "{i18n:scada.symbol.tank-capacity-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "tankCapacity"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "currentVolume",
|
||||
"name": "{i18n:scada.symbol.current-volume}",
|
||||
"hint": "{i18n:scada.symbol.current-volume-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "DOUBLE",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": null,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "liquidVolume"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "tankColor",
|
||||
"name": "{i18n:scada.symbol.tank-color}",
|
||||
"type": "color",
|
||||
"default": "#EBEBEB",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "fluidColor",
|
||||
"name": "{i18n:scada.symbol.fluid-color}",
|
||||
"type": "color",
|
||||
"default": "#C8DFF7",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "scale",
|
||||
"name": "{i18n:scada.symbol.scale}",
|
||||
"type": "switch",
|
||||
"default": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "scaleDisplayFormat",
|
||||
"name": "{i18n:scada.symbol.scale}",
|
||||
"type": "select",
|
||||
"default": true,
|
||||
"subLabel": "{i18n:scada.symbol.display-format}",
|
||||
"disableOnProperty": "scale",
|
||||
"items": [
|
||||
{
|
||||
"value": true,
|
||||
"label": "Percentage"
|
||||
},
|
||||
{
|
||||
"value": false,
|
||||
"label": "Absolute"
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "enableUnitScale",
|
||||
"name": "{i18n:scada.symbol.enable-units-scale}",
|
||||
"type": "switch",
|
||||
"default": false,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "majorUnits",
|
||||
"name": "{i18n:scada.symbol.enable-units-scale}",
|
||||
"type": "units",
|
||||
"subLabel": "{i18n:scada.symbol.units}",
|
||||
"divider": false,
|
||||
"supportsUnitConversion": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "majorIntervals",
|
||||
"name": "{i18n:scada.symbol.major-ticks}",
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"subLabel": "{i18n:scada.symbol.intervals}",
|
||||
"divider": false,
|
||||
"disableOnProperty": "scale",
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "majorFont",
|
||||
"name": "{i18n:scada.symbol.major-ticks}",
|
||||
"type": "font",
|
||||
"default": {
|
||||
"size": 24,
|
||||
"sizeUnit": "px",
|
||||
"family": "Roboto",
|
||||
"weight": "500",
|
||||
"style": "normal"
|
||||
},
|
||||
"disableOnProperty": "scale",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "majorColor",
|
||||
"name": "{i18n:scada.symbol.major-ticks}",
|
||||
"type": "color",
|
||||
"default": "#00000061",
|
||||
"disableOnProperty": "scale",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "minorIntervals",
|
||||
"name": "{i18n:scada.symbol.minor-ticks}",
|
||||
"type": "number",
|
||||
"default": 5,
|
||||
"subLabel": "{i18n:scada.symbol.intervals}",
|
||||
"disableOnProperty": "scale",
|
||||
"min": 1,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "minorColor",
|
||||
"name": "{i18n:scada.symbol.minor-ticks}",
|
||||
"type": "color",
|
||||
"default": "#0000001F",
|
||||
"disableOnProperty": "scale",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m174 600c-174 0-174-151.63-174-239 4.9551e-6 -1.386 9.6938e-6 -2.741 1.4223e-5 -4.065 1.18e-8 -4e-3 -1.4223e-5 -113.93-1.4223e-5 -113.94 0-87.373-8.3346e-7 -243 174-243h653.5c173 0 172.5 156.06 172.5 243v118c0 86.939 0 239-172.5 239h-653.5z" fill="#EBEBEB" tb:tag="background"/><path d="m174 599c-43.353 0-75.782-9.444-100.06-24.9-24.272-15.456-40.469-36.971-51.28-61.242-21.649-48.601-21.664-108.13-21.663-151.86l2e-5 -4.065-2e-5 -113.94c0-43.727 0.0143-104.26 21.666-153.86 10.814-24.774 27.013-46.788 51.286-62.616 24.274-15.828 56.7-25.52 100.05-25.52h653.5c43.097 0 75.302 9.7177 99.388 25.578 24.085 15.86 40.129 37.914 50.819 62.716 21.294 49.406 21.294 109.58 21.293 153.04v118.67c0 43.512-0.015 103.04-21.477 151.7-10.719 24.299-26.776 45.854-50.838 61.342-24.063 15.489-56.209 24.959-99.185 24.959h-653.5z" stroke="#000" stroke-opacity=".87" stroke-width="2"/><mask id="mask0_3610_178965" x="2" y="2" width="996" height="596" style="mask-type:alpha" maskUnits="userSpaceOnUse">
|
||||
<path d="m175.3 598c-173.3 0-173.3-150.62-173.3-237.41 1e-5 -1.377 1e-5 -2.723 1e-5 -4.038 1e-5 -3e-3 -1e-5 -113.17-1e-5 -113.18 0-86.79 0-241.38 173.3-241.38h650.89c172.31 0 171.81 155.02 171.81 241.38v117.21c0 86.36 0 237.41-171.81 237.41h-650.89z" fill="#EBEBEB"/>
|
||||
<path d="m175.3 597c-43.18 0-75.478-9.381-99.655-24.734-24.175-15.352-40.305-36.723-51.073-60.831-21.561-48.274-21.576-107.4-21.576-150.84l2e-5 -4.038-2e-5 -113.18c0-43.436 0.01436-103.56 21.579-152.84 10.77-24.608 26.904-46.474 51.079-62.196 24.176-15.722 56.471-25.349 99.646-25.349h650.89c42.925 0 75 9.653 98.989 25.407 23.988 15.754 39.967 37.659 50.614 62.295 21.208 49.075 21.208 108.84 21.207 152.01v117.88c0 43.222-0.015 102.35-21.391 150.68-10.675 24.136-26.667 45.547-50.631 60.931-23.967 15.385-55.984 24.792-98.788 24.792h-650.89z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
</mask><g mask="url(#mask0_3610_178965)">
|
||||
<rect transform="scale(1,-1)" x="2" y="-596" width="996" height="419" fill="#c8dff7" tb:tag="fluid-background"/>
|
||||
</g><g tb:tag="scale">
|
||||
<line x1="208" x2="240" y1="3.5" y2="3.5" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="15.359" y2="15.359" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="27.221" y2="27.221" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="39.08" y2="39.08" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="50.939" y2="50.939" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="62.801" y2="62.801" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="74.66" y2="74.66" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="86.52" y2="86.52" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="98.381" y2="98.381" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="110.24" y2="110.24" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="122.1" y2="122.1" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="133.96" y2="133.96" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="145.82" y2="145.82" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="157.68" y2="157.68" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="169.54" y2="169.54" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="181.4" y2="181.4" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="193.26" y2="193.26" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="205.12" y2="205.12" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="216.98" y2="216.98" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="228.84" y2="228.84" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="240.7" y2="240.7" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="252.56" y2="252.56" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="264.42" y2="264.42" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="276.28" y2="276.28" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="288.14" y2="288.14" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="300" y2="300" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="311.86" y2="311.86" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="323.72" y2="323.72" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="335.58" y2="335.58" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="347.44" y2="347.44" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="359.3" y2="359.3" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="371.16" y2="371.16" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="383.02" y2="383.02" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="394.88" y2="394.88" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="406.74" y2="406.74" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="418.6" y2="418.6" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="430.46" y2="430.46" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="442.32" y2="442.32" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="454.18" y2="454.18" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="466.04" y2="466.04" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="477.9" y2="477.9" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="489.76" y2="489.76" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="501.62" y2="501.62" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="513.48" y2="513.48" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="525.34" y2="525.34" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="537.2" y2="537.2" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="549.06" y2="549.06" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="560.92" y2="560.92" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="572.78" y2="572.78" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="220" x2="240" y1="584.64" y2="584.64" stroke="#000" stroke-opacity=".12" stroke-width="3"/>
|
||||
<line x1="208" x2="240" y1="596.5" y2="596.5" stroke="#000" stroke-opacity=".38" stroke-width="3"/>
|
||||
<path d="m167.58 4.8789v17.121h-2.824v-13.77l-4.184 1.418v-2.332l6.668-2.4375zm17.301 7.1602v2.789c0 1.336-0.133 2.4766-0.399 3.4219-0.257 0.9375-0.632 1.6992-1.125 2.2852-0.492 0.5859-1.082 1.0156-1.769 1.289-0.68 0.2735-1.441 0.4102-2.285 0.4102-0.672 0-1.297-0.086-1.875-0.2578-0.571-0.1719-1.086-0.4414-1.547-0.8086s-0.856-0.8399-1.184-1.418c-0.32-0.5859-0.57-1.2852-0.75-2.0977-0.172-0.8125-0.257-1.7539-0.257-2.8242v-2.789c0-1.3438 0.132-2.4766 0.398-3.3985 0.266-0.92968 0.644-1.6836 1.137-2.2617 0.492-0.58594 1.078-1.0117 1.757-1.2774 0.688-0.26562 1.454-0.39844 2.297-0.39844 0.68 0 1.305 0.08594 1.875 0.25782 0.578 0.16406 1.094 0.42578 1.547 0.78515 0.461 0.35938 0.852 0.82813 1.172 1.4062 0.328 0.57032 0.578 1.2617 0.75 2.0742 0.172 0.80464 0.258 1.7422 0.258 2.8125zm-2.824 3.1875v-3.6094c0-0.6797-0.039-1.2774-0.117-1.793-0.079-0.52344-0.196-0.96484-0.352-1.3242-0.148-0.36719-0.336-0.66406-0.563-0.89062-0.226-0.23438-0.484-0.40235-0.773-0.50391-0.289-0.10938-0.613-0.16406-0.973-0.16406-0.437 0-0.828 0.08593-1.172 0.25781-0.343 0.16406-0.632 0.42969-0.867 0.79687-0.234 0.36719-0.414 0.85157-0.539 1.4531-0.117 0.59378-0.176 1.3164-0.176 2.168v3.6094c0 0.6875 0.039 1.2929 0.118 1.8164 0.078 0.5234 0.195 0.9726 0.351 1.3476 0.156 0.3672 0.344 0.6719 0.563 0.9141 0.226 0.2344 0.484 0.4062 0.773 0.5156 0.297 0.1094 0.621 0.1641 0.973 0.1641 0.445 0 0.84-0.086 1.183-0.2578 0.344-0.1719 0.633-0.4454 0.868-0.8204 0.234-0.3828 0.41-0.8789 0.527-1.4882 0.117-0.6094 0.176-1.3399 0.176-2.1914zm16.715-3.1875v2.789c0 1.336-0.133 2.4766-0.399 3.4219-0.258 0.9375-0.633 1.6992-1.125 2.2852-0.492 0.5859-1.082 1.0156-1.769 1.289-0.68 0.2735-1.442 0.4102-2.286 0.4102-0.671 0-1.296-0.086-1.875-0.2578-0.57-0.1719-1.086-0.4414-1.546-0.8086-0.461-0.3672-0.856-0.8399-1.184-1.418-0.32-0.5859-0.57-1.2852-0.75-2.0977-0.172-0.8125-0.258-1.7539-0.258-2.8242v-2.789c0-1.3438 0.133-2.4766 0.399-3.3985 0.265-0.92968 0.644-1.6836 1.136-2.2617 0.492-0.58594 1.078-1.0117 1.758-1.2774 0.688-0.26562 1.453-0.39844 2.297-0.39844 0.68 0 1.305 0.08594 1.875 0.25782 0.578 0.16406 1.094 0.42578 1.547 0.78515 0.461 0.35938 0.851 0.82813 1.172 1.4062 0.328 0.57032 0.578 1.2617 0.75 2.0742 0.172 0.80464 0.258 1.7422 0.258 2.8125zm-2.825 3.1875v-3.6094c0-0.6797-0.039-1.2774-0.117-1.793-0.078-0.52344-0.195-0.96484-0.351-1.3242-0.149-0.36719-0.336-0.66406-0.563-0.89062-0.226-0.23438-0.484-0.40235-0.773-0.50391-0.289-0.10938-0.614-0.16406-0.973-0.16406-0.438 0-0.828 0.08593-1.172 0.25781-0.344 0.16406-0.633 0.42969-0.867 0.79687-0.234 0.36719-0.414 0.85157-0.539 1.4531-0.117 0.59378-0.176 1.3164-0.176 2.168v3.6094c0 0.6875 0.039 1.2929 0.117 1.8164 0.078 0.5234 0.196 0.9726 0.352 1.3476 0.156 0.3672 0.344 0.6719 0.562 0.9141 0.227 0.2344 0.485 0.4062 0.774 0.5156 0.297 0.1094 0.621 0.1641 0.972 0.1641 0.446 0 0.84-0.086 1.184-0.2578 0.344-0.1719 0.633-0.4454 0.867-0.8204 0.235-0.3828 0.41-0.8789 0.528-1.4882 0.117-0.6094 0.175-1.3399 0.175-2.1914z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m176.03 77.174h0.235c1.078 0 1.976-0.1406 2.695-0.4218 0.727-0.2891 1.305-0.6875 1.734-1.1954 0.43-0.5078 0.739-1.1054 0.926-1.7929 0.188-0.6875 0.281-1.4336 0.281-2.2383v-2.9414c0-0.6953-0.074-1.3047-0.222-1.8281-0.141-0.5313-0.344-0.9727-0.61-1.3243-0.258-0.3593-0.558-0.6289-0.902-0.8086-0.336-0.1796-0.699-0.2695-1.09-0.2695-0.43 0-0.816 0.0977-1.16 0.293-0.336 0.1875-0.621 0.4492-0.856 0.7851-0.226 0.3282-0.402 0.7149-0.527 1.1602-0.117 0.4375-0.176 0.9062-0.176 1.4062 0 0.4688 0.055 0.9219 0.164 1.3594 0.118 0.4297 0.289 0.8125 0.516 1.1485 0.227 0.3359 0.512 0.6015 0.856 0.7968 0.343 0.1953 0.746 0.293 1.207 0.293 0.437 0 0.839-0.082 1.207-0.2461 0.367-0.1719 0.687-0.4023 0.961-0.6914 0.273-0.2891 0.488-0.6133 0.644-0.9727 0.156-0.3593 0.242-0.7265 0.258-1.1015l1.078 0.3281c0 0.5938-0.125 1.1797-0.375 1.7578-0.242 0.5703-0.582 1.0938-1.02 1.5703-0.429 0.4688-0.933 0.8438-1.511 1.125-0.571 0.2813-1.192 0.4219-1.864 0.4219-0.812 0-1.531-0.1523-2.156-0.457-0.617-0.3125-1.133-0.7344-1.547-1.2656-0.406-0.5313-0.711-1.1407-0.914-1.8282s-0.304-1.4101-0.304-2.1679c0-0.8204 0.125-1.5899 0.375-2.3086 0.25-0.7188 0.613-1.3516 1.089-1.8985 0.477-0.5547 1.055-0.9843 1.735-1.289 0.687-0.3125 1.465-0.4688 2.332-0.4688 0.922 0 1.73 0.1797 2.426 0.5391 0.695 0.3594 1.281 0.8554 1.757 1.4883 0.477 0.6328 0.836 1.3671 1.079 2.2031 0.242 0.8359 0.363 1.7344 0.363 2.6953v0.9961c0 1.0078-0.09 1.9805-0.27 2.918-0.179 0.9296-0.472 1.7929-0.879 2.5898-0.398 0.7891-0.925 1.4844-1.582 2.0859-0.648 0.5938-1.445 1.0586-2.39 1.3946-0.938 0.3281-2.039 0.4922-3.305 0.4922h-0.258zm22.739-7.7343v2.789c0 1.336-0.133 2.4766-0.399 3.4219-0.258 0.9375-0.633 1.6992-1.125 2.2851-0.492 0.586-1.082 1.0157-1.769 1.2891-0.68 0.2734-1.442 0.4102-2.286 0.4102-0.671 0-1.296-0.086-1.875-0.2578-0.57-0.1719-1.086-0.4415-1.546-0.8086-0.461-0.3672-0.856-0.8399-1.184-1.418-0.32-0.5859-0.57-1.2852-0.75-2.0977-0.172-0.8125-0.258-1.7539-0.258-2.8242v-2.789c0-1.3438 0.133-2.4766 0.399-3.3985 0.265-0.9297 0.644-1.6836 1.136-2.2617 0.492-0.5859 1.078-1.0117 1.758-1.2773 0.688-0.2657 1.453-0.3985 2.297-0.3985 0.68 0 1.305 0.086 1.875 0.2578 0.578 0.1641 1.094 0.4258 1.547 0.7852 0.461 0.3594 0.851 0.8281 1.172 1.4062 0.328 0.5703 0.578 1.2618 0.75 2.0743 0.172 0.8046 0.258 1.7421 0.258 2.8125zm-2.825 3.1875v-3.6094c0-0.6797-0.039-1.2774-0.117-1.793-0.078-0.5234-0.195-0.9648-0.351-1.3242-0.149-0.3672-0.336-0.6641-0.563-0.8906-0.226-0.2344-0.484-0.4024-0.773-0.5039-0.289-0.1094-0.614-0.1641-0.973-0.1641-0.438 0-0.828 0.0859-1.172 0.2578-0.344 0.1641-0.633 0.4297-0.867 0.7969s-0.414 0.8515-0.539 1.4531c-0.117 0.5938-0.176 1.3164-0.176 2.168v3.6094c0 0.6875 0.039 1.2929 0.117 1.8164 0.078 0.5234 0.196 0.9726 0.352 1.3476 0.156 0.3672 0.344 0.6719 0.562 0.9141 0.227 0.2344 0.485 0.4062 0.774 0.5156 0.297 0.1094 0.621 0.1641 0.972 0.1641 0.446 0 0.84-0.086 1.184-0.2578 0.344-0.1719 0.633-0.4454 0.867-0.8204 0.235-0.3828 0.41-0.8789 0.528-1.4882 0.117-0.6094 0.175-1.3399 0.175-2.1914z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m184.91 132.15c0 1.063-0.246 1.957-0.738 2.684s-1.164 1.277-2.016 1.652c-0.844 0.368-1.797 0.551-2.859 0.551-1.063 0-2.02-0.183-2.871-0.551-0.852-0.375-1.524-0.925-2.016-1.652s-0.738-1.621-0.738-2.684c0-0.703 0.136-1.339 0.41-1.91 0.273-0.578 0.66-1.074 1.16-1.488 0.508-0.422 1.102-0.746 1.781-0.973 0.688-0.226 1.438-0.339 2.25-0.339 1.078 0 2.043 0.199 2.895 0.597 0.851 0.399 1.519 0.949 2.004 1.653 0.492 0.703 0.738 1.523 0.738 2.46zm-2.836-0.14c0-0.57-0.117-1.07-0.351-1.5-0.235-0.43-0.563-0.762-0.985-0.996-0.422-0.235-0.91-0.352-1.465-0.352-0.562 0-1.05 0.117-1.465 0.352-0.414 0.234-0.738 0.566-0.972 0.996-0.227 0.43-0.34 0.93-0.34 1.5 0 0.578 0.113 1.078 0.34 1.5 0.226 0.414 0.551 0.73 0.972 0.949 0.422 0.219 0.918 0.328 1.489 0.328 0.57 0 1.062-0.109 1.476-0.328s0.735-0.535 0.961-0.949c0.227-0.422 0.34-0.922 0.34-1.5zm2.449-7.781c0 0.851-0.226 1.609-0.679 2.273-0.446 0.664-1.063 1.188-1.852 1.57-0.789 0.375-1.687 0.563-2.695 0.563-1.016 0-1.922-0.188-2.719-0.563-0.789-0.382-1.41-0.906-1.863-1.57-0.446-0.664-0.668-1.422-0.668-2.273 0-1.016 0.222-1.872 0.668-2.567 0.453-0.703 1.074-1.238 1.863-1.605s1.691-0.551 2.707-0.551 1.918 0.184 2.707 0.551 1.406 0.902 1.852 1.605c0.453 0.695 0.679 1.551 0.679 2.567zm-2.824 0.093c0-0.508-0.101-0.953-0.305-1.336-0.195-0.39-0.472-0.695-0.832-0.914-0.359-0.218-0.785-0.328-1.277-0.328s-0.918 0.106-1.277 0.317c-0.36 0.211-0.637 0.507-0.832 0.89-0.196 0.383-0.293 0.84-0.293 1.371 0 0.524 0.097 0.981 0.293 1.371 0.195 0.383 0.472 0.684 0.832 0.903 0.367 0.218 0.797 0.328 1.289 0.328s0.918-0.11 1.277-0.328c0.36-0.219 0.637-0.52 0.832-0.903 0.195-0.39 0.293-0.847 0.293-1.371zm17.067 2.52v2.789c0 1.336-0.133 2.476-0.399 3.422-0.258 0.937-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.273-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.441-1.546-0.808-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.098-0.172-0.812-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.399 0.265-0.929 0.644-1.683 1.136-2.261 0.492-0.586 1.078-1.012 1.758-1.278 0.688-0.265 1.453-0.398 2.297-0.398 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.57 0.578 1.262 0.75 2.074 0.172 0.805 0.258 1.743 0.258 2.813zm-2.825 3.187v-3.609c0-0.68-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.965-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.851-0.539 1.453c-0.117 0.594-0.176 1.316-0.176 2.168v3.609c0 0.688 0.039 1.293 0.117 1.817 0.078 0.523 0.196 0.972 0.352 1.347 0.156 0.368 0.344 0.672 0.562 0.914 0.227 0.235 0.485 0.407 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.445 0.867-0.82c0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.61 0.175-1.34 0.175-2.192z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m185.09 177.14v1.547l-6.82 15.515h-2.977l6.809-14.812h-8.836v-2.25zm13.68 7.101v2.789c0 1.336-0.133 2.477-0.399 3.422-0.258 0.938-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.274-1.442 0.411-2.286 0.411-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.442-1.546-0.809-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.097-0.172-0.813-0.258-1.754-0.258-2.825v-2.789c0-1.343 0.133-2.476 0.399-3.398 0.265-0.93 0.644-1.684 1.136-2.262 0.492-0.586 1.078-1.012 1.758-1.277 0.688-0.266 1.453-0.399 2.297-0.399 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.36 0.851 0.828 1.172 1.407 0.328 0.57 0.578 1.261 0.75 2.074 0.172 0.804 0.258 1.742 0.258 2.812zm-2.825 3.188v-3.61c0-0.679-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.964-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.89-0.226-0.235-0.484-0.403-0.773-0.504-0.289-0.11-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.257-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.852-0.539 1.453c-0.117 0.594-0.176 1.317-0.176 2.168v3.61c0 0.687 0.039 1.293 0.117 1.816 0.078 0.524 0.196 0.973 0.352 1.348 0.156 0.367 0.344 0.672 0.562 0.914 0.227 0.234 0.485 0.406 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.446 0.867-0.821c0.235-0.382 0.41-0.878 0.528-1.488 0.117-0.609 0.175-1.34 0.175-2.191z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m182.29 234.43h0.352v2.308h-0.2c-1.007 0-1.879 0.156-2.613 0.469-0.726 0.312-1.324 0.742-1.793 1.289s-0.82 1.188-1.055 1.922c-0.226 0.726-0.339 1.5-0.339 2.32v2.684c0 0.68 0.074 1.281 0.222 1.805 0.149 0.515 0.356 0.949 0.621 1.3 0.274 0.344 0.586 0.606 0.938 0.785 0.351 0.18 0.73 0.27 1.137 0.27 0.421 0 0.804-0.086 1.148-0.258 0.344-0.18 0.637-0.426 0.879-0.738 0.242-0.313 0.426-0.684 0.551-1.113 0.125-0.43 0.187-0.899 0.187-1.407 0-0.484-0.062-0.937-0.187-1.359-0.117-0.43-0.293-0.805-0.528-1.125-0.234-0.328-0.527-0.582-0.879-0.762-0.343-0.187-0.742-0.281-1.195-0.281-0.562 0-1.074 0.133-1.535 0.398-0.453 0.266-0.82 0.614-1.102 1.043-0.273 0.422-0.421 0.872-0.445 1.348l-1.078-0.351c0.063-0.727 0.223-1.379 0.48-1.958 0.266-0.578 0.614-1.07 1.043-1.476 0.43-0.406 0.926-0.715 1.489-0.926 0.57-0.219 1.195-0.328 1.875-0.328 0.828 0 1.547 0.156 2.156 0.469 0.609 0.312 1.113 0.738 1.512 1.277 0.406 0.531 0.707 1.141 0.902 1.828 0.203 0.68 0.305 1.391 0.305 2.133 0 0.82-0.125 1.586-0.375 2.297-0.25 0.703-0.617 1.32-1.102 1.851-0.476 0.532-1.058 0.946-1.746 1.243-0.68 0.297-1.453 0.445-2.32 0.445-0.914 0-1.731-0.176-2.449-0.527-0.711-0.352-1.317-0.836-1.817-1.453-0.492-0.618-0.867-1.329-1.125-2.133-0.258-0.805-0.387-1.657-0.387-2.555v-1.172c0-1.297 0.164-2.519 0.493-3.668 0.328-1.156 0.832-2.176 1.511-3.058 0.688-0.883 1.567-1.575 2.637-2.075 1.07-0.507 2.348-0.761 3.832-0.761zm16.481 7.207v2.789c0 1.336-0.133 2.476-0.399 3.422-0.258 0.937-0.633 1.699-1.125 2.285s-1.082 1.015-1.769 1.289c-0.68 0.273-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.441-1.546-0.808-0.461-0.368-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.286-0.75-2.098-0.172-0.813-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.399 0.265-0.929 0.644-1.683 1.136-2.261 0.492-0.586 1.078-1.012 1.758-1.278 0.688-0.265 1.453-0.398 2.297-0.398 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.425 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.57 0.578 1.262 0.75 2.074 0.172 0.805 0.258 1.742 0.258 2.813zm-2.825 3.187v-3.609c0-0.68-0.039-1.278-0.117-1.793-0.078-0.524-0.195-0.965-0.351-1.324-0.149-0.368-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.851-0.539 1.453c-0.117 0.594-0.176 1.316-0.176 2.168v3.609c0 0.688 0.039 1.293 0.117 1.817 0.078 0.523 0.196 0.972 0.352 1.347 0.156 0.367 0.344 0.672 0.562 0.914 0.227 0.235 0.485 0.407 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.445 0.867-0.82c0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.61 0.175-1.34 0.175-2.192z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m176.72 301.07-2.25-0.55 0.925-8.578h9.2v2.39h-6.856l-0.469 4.184c0.266-0.157 0.633-0.309 1.102-0.457 0.469-0.157 1.004-0.235 1.605-0.235 0.805 0 1.524 0.133 2.157 0.399 0.64 0.258 1.183 0.636 1.629 1.136 0.445 0.493 0.785 1.094 1.019 1.805 0.235 0.703 0.352 1.496 0.352 2.379 0 0.789-0.117 1.527-0.352 2.215-0.226 0.687-0.57 1.293-1.031 1.816-0.461 0.524-1.043 0.934-1.746 1.231-0.696 0.289-1.52 0.433-2.473 0.433-0.711 0-1.394-0.101-2.051-0.304-0.648-0.211-1.23-0.52-1.746-0.926-0.515-0.414-0.929-0.922-1.242-1.524-0.312-0.609-0.492-1.308-0.539-2.097h2.766c0.07 0.555 0.222 1.027 0.457 1.418 0.242 0.383 0.562 0.676 0.961 0.879 0.398 0.203 0.859 0.304 1.382 0.304 0.477 0 0.887-0.082 1.231-0.246 0.344-0.172 0.629-0.414 0.855-0.726 0.235-0.321 0.407-0.696 0.516-1.125 0.117-0.43 0.176-0.907 0.176-1.43 0-0.5-0.067-0.957-0.199-1.371-0.125-0.414-0.317-0.774-0.575-1.078-0.25-0.305-0.566-0.539-0.949-0.703-0.383-0.172-0.824-0.258-1.324-0.258-0.672 0-1.188 0.098-1.547 0.293-0.352 0.195-0.68 0.437-0.984 0.726zm22.047-2.027v2.789c0 1.336-0.133 2.477-0.399 3.422-0.258 0.938-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.274-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.257-0.57-0.172-1.086-0.442-1.546-0.809-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.098-0.172-0.812-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.398 0.265-0.93 0.644-1.684 1.136-2.262 0.492-0.586 1.078-1.012 1.758-1.277 0.688-0.266 1.453-0.399 2.297-0.399 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.571 0.578 1.262 0.75 2.075 0.172 0.804 0.258 1.742 0.258 2.812zm-2.825 3.188v-3.61c0-0.679-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.965-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.852-0.539 1.453c-0.117 0.594-0.176 1.317-0.176 2.168v3.61c0 0.687 0.039 1.293 0.117 1.816s0.196 0.973 0.352 1.348c0.156 0.367 0.344 0.671 0.562 0.914 0.227 0.234 0.485 0.406 0.774 0.515 0.297 0.11 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.257 0.344-0.172 0.633-0.446 0.867-0.821 0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.609 0.175-1.34 0.175-2.191z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m185.51 360.32v2.25h-12.305l-0.094-1.699 7.36-11.531h2.261l-2.449 4.195-4.23 6.785zm-2.133-10.98v17.062h-2.824v-17.062zm15.391 7.101v2.79c0 1.335-0.133 2.476-0.399 3.421-0.258 0.938-0.633 1.7-1.125 2.286-0.492 0.585-1.082 1.015-1.769 1.289-0.68 0.273-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.441-1.546-0.809-0.461-0.367-0.856-0.839-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.097-0.172-0.813-0.258-1.754-0.258-2.824v-2.79c0-1.343 0.133-2.476 0.399-3.398 0.265-0.93 0.644-1.684 1.136-2.262 0.492-0.586 1.078-1.011 1.758-1.277 0.688-0.266 1.453-0.398 2.297-0.398 0.68 0 1.305 0.085 1.875 0.257 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.36 0.851 0.829 1.172 1.407 0.328 0.57 0.578 1.261 0.75 2.074 0.172 0.805 0.258 1.742 0.258 2.812zm-2.825 3.188v-3.609c0-0.68-0.039-1.278-0.117-1.793-0.078-0.524-0.195-0.965-0.351-1.325-0.149-0.367-0.336-0.664-0.563-0.89-0.226-0.235-0.484-0.403-0.773-0.504-0.289-0.11-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.429-0.867 0.796-0.234 0.368-0.414 0.852-0.539 1.454-0.117 0.593-0.176 1.316-0.176 2.168v3.609c0 0.687 0.039 1.293 0.117 1.816 0.078 0.524 0.196 0.973 0.352 1.348 0.156 0.367 0.344 0.672 0.562 0.914 0.227 0.234 0.485 0.406 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.445 0.867-0.82c0.235-0.383 0.41-0.879 0.528-1.489 0.117-0.609 0.175-1.339 0.175-2.191z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m177.07 413.99h1.688c0.656 0 1.199-0.113 1.629-0.34 0.437-0.226 0.761-0.539 0.972-0.937 0.211-0.399 0.317-0.856 0.317-1.371 0-0.539-0.098-1-0.293-1.383-0.188-0.391-0.477-0.691-0.867-0.902-0.383-0.211-0.872-0.317-1.465-0.317-0.5 0-0.953 0.102-1.36 0.305-0.398 0.195-0.715 0.476-0.949 0.844-0.234 0.359-0.351 0.789-0.351 1.289h-2.836c0-0.907 0.238-1.711 0.714-2.414 0.477-0.704 1.125-1.254 1.946-1.653 0.828-0.406 1.758-0.609 2.789-0.609 1.101 0 2.062 0.184 2.883 0.551 0.828 0.359 1.472 0.898 1.933 1.617s0.692 1.609 0.692 2.672c0 0.484-0.114 0.976-0.34 1.476-0.227 0.5-0.563 0.957-1.008 1.371-0.445 0.407-1 0.739-1.664 0.997-0.664 0.25-1.434 0.374-2.309 0.374h-2.121zm0 2.203v-1.547h2.121c1 0 1.852 0.118 2.555 0.352 0.711 0.234 1.289 0.559 1.734 0.973 0.446 0.406 0.77 0.871 0.973 1.394 0.211 0.524 0.316 1.078 0.316 1.664 0 0.797-0.144 1.508-0.433 2.133-0.281 0.617-0.684 1.141-1.207 1.57-0.524 0.43-1.137 0.754-1.84 0.973-0.695 0.219-1.453 0.328-2.273 0.328-0.735 0-1.438-0.101-2.11-0.305-0.672-0.203-1.273-0.503-1.805-0.902-0.531-0.406-0.953-0.91-1.265-1.512-0.305-0.609-0.457-1.312-0.457-2.109h2.824c0 0.508 0.117 0.957 0.352 1.348 0.242 0.383 0.578 0.683 1.007 0.902 0.438 0.219 0.938 0.328 1.5 0.328 0.594 0 1.106-0.105 1.536-0.316 0.429-0.211 0.757-0.524 0.984-0.938 0.234-0.414 0.352-0.914 0.352-1.5 0-0.664-0.129-1.203-0.387-1.617s-0.625-0.719-1.102-0.914c-0.476-0.203-1.039-0.305-1.687-0.305zm21.696-2.355v2.789c0 1.336-0.133 2.476-0.399 3.422-0.258 0.937-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.273-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.441-1.546-0.808-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.098-0.172-0.812-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.399 0.265-0.929 0.644-1.683 1.136-2.261 0.492-0.586 1.078-1.012 1.758-1.278 0.688-0.265 1.453-0.398 2.297-0.398 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.57 0.578 1.262 0.75 2.074 0.172 0.805 0.258 1.743 0.258 2.813zm-2.825 3.187v-3.609c0-0.68-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.965-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.851-0.539 1.453c-0.117 0.594-0.176 1.316-0.176 2.168v3.609c0 0.688 0.039 1.293 0.117 1.817 0.078 0.523 0.196 0.972 0.352 1.347 0.156 0.368 0.344 0.672 0.562 0.914 0.227 0.235 0.485 0.407 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.445 0.867-0.82c0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.61 0.175-1.34 0.175-2.192z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m185.2 478.95v2.25h-11.437v-1.933l5.554-6.059c0.61-0.687 1.09-1.281 1.442-1.781 0.351-0.5 0.598-0.949 0.738-1.348 0.149-0.406 0.223-0.801 0.223-1.183 0-0.54-0.102-1.012-0.305-1.418-0.195-0.415-0.484-0.739-0.867-0.973-0.383-0.242-0.848-0.363-1.395-0.363-0.632 0-1.164 0.136-1.593 0.41-0.43 0.273-0.754 0.652-0.973 1.137-0.219 0.476-0.328 1.023-0.328 1.64h-2.824c0-0.992 0.226-1.898 0.679-2.719 0.453-0.828 1.11-1.484 1.969-1.968 0.86-0.493 1.895-0.739 3.106-0.739 1.14 0 2.109 0.192 2.906 0.575 0.797 0.382 1.402 0.925 1.816 1.628 0.422 0.704 0.633 1.536 0.633 2.497 0 0.531-0.086 1.058-0.258 1.582-0.172 0.523-0.418 1.046-0.738 1.57-0.313 0.516-0.684 1.035-1.113 1.558-0.43 0.516-0.903 1.04-1.418 1.571l-3.692 4.066zm13.575-7.711v2.789c0 1.336-0.133 2.477-0.399 3.422-0.258 0.938-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.274-1.442 0.411-2.286 0.411-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.442-1.546-0.809-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.097-0.172-0.813-0.258-1.754-0.258-2.825v-2.789c0-1.343 0.133-2.476 0.399-3.398 0.265-0.93 0.644-1.684 1.136-2.262 0.492-0.586 1.078-1.012 1.758-1.277 0.688-0.266 1.453-0.399 2.297-0.399 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.36 0.851 0.828 1.172 1.407 0.328 0.57 0.578 1.261 0.75 2.074 0.172 0.804 0.258 1.742 0.258 2.812zm-2.825 3.188v-3.61c0-0.679-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.964-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.89-0.226-0.235-0.484-0.403-0.773-0.504-0.289-0.11-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.257-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.852-0.539 1.453c-0.117 0.594-0.176 1.317-0.176 2.168v3.61c0 0.687 0.039 1.293 0.117 1.816 0.078 0.524 0.196 0.973 0.352 1.348 0.156 0.367 0.344 0.672 0.562 0.914 0.227 0.234 0.485 0.406 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.446 0.867-0.821c0.235-0.382 0.41-0.878 0.528-1.488 0.117-0.609 0.175-1.34 0.175-2.191z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m181.47 521.48v17.121h-2.824v-13.77l-4.184 1.418v-2.332l6.668-2.437zm17.301 7.16v2.789c0 1.336-0.133 2.476-0.399 3.422-0.258 0.937-0.633 1.699-1.125 2.285s-1.082 1.015-1.769 1.289c-0.68 0.273-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.258-0.57-0.172-1.086-0.441-1.546-0.808-0.461-0.368-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.286-0.75-2.098-0.172-0.813-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.399 0.265-0.929 0.644-1.683 1.136-2.261 0.492-0.586 1.078-1.012 1.758-1.278 0.688-0.265 1.453-0.398 2.297-0.398 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.425 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.57 0.578 1.262 0.75 2.074 0.172 0.805 0.258 1.742 0.258 2.813zm-2.825 3.187v-3.609c0-0.68-0.039-1.278-0.117-1.793-0.078-0.524-0.195-0.965-0.351-1.324-0.149-0.368-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.851-0.539 1.453c-0.117 0.594-0.176 1.316-0.176 2.168v3.609c0 0.688 0.039 1.293 0.117 1.817 0.078 0.523 0.196 0.972 0.352 1.347 0.156 0.367 0.344 0.672 0.562 0.914 0.227 0.235 0.485 0.407 0.774 0.516 0.297 0.109 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.258s0.633-0.445 0.867-0.82c0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.61 0.175-1.34 0.175-2.192z" fill="#000" fill-opacity=".38"/>
|
||||
<path d="m198.77 586.04v2.789c0 1.336-0.133 2.477-0.399 3.422-0.258 0.938-0.633 1.699-1.125 2.285s-1.082 1.016-1.769 1.289c-0.68 0.274-1.442 0.41-2.286 0.41-0.671 0-1.296-0.086-1.875-0.257-0.57-0.172-1.086-0.442-1.546-0.809-0.461-0.367-0.856-0.84-1.184-1.418-0.32-0.586-0.57-1.285-0.75-2.098-0.172-0.812-0.258-1.754-0.258-2.824v-2.789c0-1.344 0.133-2.477 0.399-3.398 0.265-0.93 0.644-1.684 1.136-2.262 0.492-0.586 1.078-1.012 1.758-1.277 0.688-0.266 1.453-0.399 2.297-0.399 0.68 0 1.305 0.086 1.875 0.258 0.578 0.164 1.094 0.426 1.547 0.785 0.461 0.359 0.851 0.828 1.172 1.406 0.328 0.571 0.578 1.262 0.75 2.075 0.172 0.804 0.258 1.742 0.258 2.812zm-2.825 3.188v-3.61c0-0.679-0.039-1.277-0.117-1.793-0.078-0.523-0.195-0.965-0.351-1.324-0.149-0.367-0.336-0.664-0.563-0.891-0.226-0.234-0.484-0.402-0.773-0.504-0.289-0.109-0.614-0.164-0.973-0.164-0.438 0-0.828 0.086-1.172 0.258-0.344 0.164-0.633 0.43-0.867 0.797s-0.414 0.852-0.539 1.453c-0.117 0.594-0.176 1.317-0.176 2.168v3.61c0 0.687 0.039 1.293 0.117 1.816s0.196 0.973 0.352 1.348c0.156 0.367 0.344 0.671 0.562 0.914 0.227 0.234 0.485 0.406 0.774 0.515 0.297 0.11 0.621 0.164 0.972 0.164 0.446 0 0.84-0.086 1.184-0.257 0.344-0.172 0.633-0.446 0.867-0.821 0.235-0.383 0.41-0.879 0.528-1.488 0.117-0.609 0.175-1.34 0.175-2.191z" fill="#000" fill-opacity=".38"/>
|
||||
</g><path d="m336.32 0s-336.32 0-336.32 100.5v492.54c0 3.9768 8.9546 6.9606 20 6.9606h960c11.045 0 20-2.9838 20-6.9606v-492.54c0-100.5-330.35-100.5-330.35-100.5h-169.65zm335.35 121.8c-6.4433 0-11.667 1.8804-11.667 4.2v450.6c0 2.3196 5.2233 4.2 11.667 4.2h73.329c6.4433 0 11.667-1.8804 11.667-4.2v-450.6c0-2.3196-5.2233-4.2-11.667-4.2z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0,-4.9442)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
|
@ -0,0 +1,392 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="200" height="200" fill="none" version="1.1" viewBox="0 0 200 200"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Horizontal valve",
|
||||
"description": "Horizontal valve with various states.",
|
||||
"searchTags": [
|
||||
"valve",
|
||||
"high performance"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.closedColor;\nif (ctx.values.opened) {\n color = ctx.properties.openedColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "var opened = ctx.values.opened;\nvar action = opened ? 'close' : 'open';\n\nctx.api.callAction(event, action, undefined, {\n next: () => {\n ctx.api.setValue('opened', !opened);\n }\n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "opened",
|
||||
"name": "{i18n:scada.symbol.opened}",
|
||||
"hint": "{i18n:scada.symbol.opened-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.opened}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SERVER_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "open",
|
||||
"name": "{i18n:scada.symbol.open}",
|
||||
"hint": "{i18n:scada.symbol.open-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "close",
|
||||
"name": "{i18n:scada.symbol.close}",
|
||||
"hint": "{i18n:scada.symbol.close-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "openedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.opened}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "closedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.closed-mode}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": false,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="M100 100V47" stroke="#000" stroke-opacity=".87" stroke-width="2"/><g fill="#fff" tb:tag="background">
|
||||
<path d="m101 100-101-58v116l101-58z"/>
|
||||
<path d="m0.99999 156.27 97.992-56.273-97.992-56.273v112.55z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
<path d="M99 100L200 42V158L99 100Z"/>
|
||||
<path d="M199 156.273L101.008 100L199 43.7274V156.273Z" stroke="#000" stroke-opacity=".87" stroke-width="2"/>
|
||||
</g><rect transform="rotate(-90 52 48)" x="52" y="48" width="48" height="96"/><rect transform="rotate(-90 53 47)" x="53" y="47" width="46" height="94" stroke="#000" stroke-opacity=".87" stroke-width="2"/><path d="m67.264 0s-67.264 0-67.264 33.5v164.18c0 1.3256 1.7909 2.3202 4 2.3202h192c2.209 0 4-0.99459 4-2.3202v-164.18c0-33.5-66.07-33.5-66.07-33.5h-33.929zm67.07 40.6c-1.2887 0-2.3333 0.6268-2.3333 1.4v150.2c0 0.7732 1.0447 1.4 2.3333 1.4h14.666c1.2887 0 2.3333-0.6268 2.3333-1.4v-150.2c0-0.7732-1.0447-1.4-2.3333-1.4z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,116)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0,116)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -0,0 +1,300 @@
|
|||
<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": "Horizontal wheel valve",
|
||||
"description": "Horizontal wheel valve with open/close animation and state colors.",
|
||||
"searchTags": [
|
||||
"valve",
|
||||
"wheel"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var opened = ctx.values.opened;\nvar openAnimate = element.remember('openAnimate');\nvar color = opened ? ctx.properties.openedColor : ctx.properties.closedColor;\nif (!openAnimate) {\n element.attr({fill: color});\n} else {\n ctx.api.cssAnimate(element, 500).attr({fill: color});\n element.remember('openAnimate', false);\n}\n",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": " ctx.tags.wheel.forEach(e => {\n e.remember('openAnimate', true);\n });\n ctx.tags.background.forEach(e => {\n e.remember('openAnimate', true);\n });\n\n\nvar opened = ctx.values.opened;\nvar action = opened ? 'close' : 'open';\n\nctx.api.callAction(event, action, undefined, {\n next: () => {\n ctx.api.setValue('opened', !opened);\n }\n});"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "wheel",
|
||||
"stateRenderFunction": "var opened = ctx.values.opened;\nvar openAnimate = element.remember('openAnimate');\nvar angle = opened ? ctx.properties.openedRotationAngle : ctx.properties.closedRotationAngle;\nif (!openAnimate) {\n element.transform({rotate: angle});\n} else {\n ctx.api.cssAnimate(element, 500).transform({rotate: angle});\n element.remember('openAnimate', false);\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "opened",
|
||||
"name": "{i18n:scada.symbol.opened}",
|
||||
"hint": "{i18n:scada.symbol.opened-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.opened}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "open",
|
||||
"name": "{i18n:scada.symbol.open}",
|
||||
"hint": "{i18n:scada.symbol.open-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": true,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "close",
|
||||
"name": "{i18n:scada.symbol.close}",
|
||||
"hint": "{i18n:scada.symbol.close-hint}",
|
||||
"group": null,
|
||||
"type": "action",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": {
|
||||
"action": "SET_ATTRIBUTE",
|
||||
"executeRpc": {
|
||||
"method": "setState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"setAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "open"
|
||||
},
|
||||
"putTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"valueToData": {
|
||||
"type": "CONSTANT",
|
||||
"constantValue": false,
|
||||
"valueToDataFunction": "/* Convert input boolean value to RPC parameters or attribute/time-series value */\nreturn value;"
|
||||
}
|
||||
},
|
||||
"defaultWidgetActionSettings": null
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "openedColor",
|
||||
"name": "{i18n:scada.symbol.opened-color}",
|
||||
"type": "color",
|
||||
"default": "#1C943E",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "closedColor",
|
||||
"name": "{i18n:scada.symbol.closed-color}",
|
||||
"type": "color",
|
||||
"default": "#696969",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "openedRotationAngle",
|
||||
"name": "{i18n:scada.symbol.opened-rotation-angle}",
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": -179,
|
||||
"max": 179,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "closedRotationAngle",
|
||||
"name": "{i18n:scada.symbol.closed-rotation-angle}",
|
||||
"type": "number",
|
||||
"default": 90,
|
||||
"required": true,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": -179,
|
||||
"max": 179,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m200 29.489c-28.161 0-44.15 0.82311-72 5-28.662 4.2988-72 17-72 17v-13.99c0-4.4182-3.5817-8-8-8h-26c-4.4183 0-8 3.5818-8 8v126c0 4.418 3.5817 8 8 8h26c4.4183 0 8-3.582 8-8v-14.01s43.238 12.711 72 17c27.834 4.151 43.859 5.195 72 5 28.16-0.19499 44.15-1.823 72-6 28.663-4.299 72-16 72-16v14.01c0 4.418 3.582 8 8 8h26c4.418 0 8-3.582 8-8v-126c0-4.4182-3.582-8-8-8h-26c-4.418 0-8 3.5818-8 8v13.99s-43.337-12.701-72-17c-27.85-4.1769-43.839-5-72-5z" fill="#1c943e" tb:tag="background"/><rect x="1.5" y="52.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><rect x="14" y="30" width="42" height="142" rx="8" fill="url(#paint0_linear_1343_53957)" style="fill:url(#paint0_linear_1343_53957)"/><rect x="15.5" y="31.5" width="39" height="139" rx="6.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><path d="m56 51.988s43.338-12.701 72-17c27.85-4.1769 43.839-5 72-5s44.15 0.8231 72 5c28.663 4.2988 72 17 72 17v98s-43.337 11.701-72 16c-27.85 4.177-43.84 5.806-72 6-28.141 0.195-44.166-0.849-72-5-28.762-4.289-72-17-72-17z" fill="url(#paint1_linear_1343_53957)" style="fill:url(#paint1_linear_1343_53957)"/><path d="m341.67 52.876c0.314 0.09 0.591 0.1699 0.831 0.239v95.722c-0.233 0.062-0.501 0.133-0.802 0.212-1.238 0.328-3.04 0.801-5.292 1.382-4.505 1.163-10.809 2.758-18.008 4.487-14.409 3.46-32.357 7.448-46.62 9.587-27.798 4.169-43.715 5.789-71.788 5.983-28.068 0.194-44.015-0.844-71.769-4.983-14.3-2.133-32.237-6.366-46.632-10.078-7.1905-1.854-13.484-3.574-17.98-4.83-2.2476-0.629-4.0454-1.141-5.2807-1.496-0.3128-0.09-0.5896-0.17-0.8284-0.239v-95.747c0.2396-0.0691 0.5174-0.149 0.8314-0.239 1.2379-0.3548 3.0393-0.8668 5.2909-1.4947 4.5034-1.2558 10.806-2.9751 18.003-4.8284 14.408-3.7103 32.345-7.9439 46.596-10.081 27.761-4.1635 43.674-4.9834 71.778-4.9834s44.017 0.8199 71.778 4.9834c14.251 2.1374 32.189 6.371 46.596 10.081 7.197 1.8533 13.5 3.5726 18.004 4.8284 2.251 0.6279 4.053 1.1399 5.291 1.4947z" stroke="#000" stroke-opacity=".12" stroke-width="3"/><rect x="344" y="30" width="42" height="142" rx="8" fill="url(#paint2_linear_1343_53957)" style="fill:url(#paint2_linear_1343_53957)"/><rect x="345.5" y="31.5" width="39" height="139" rx="6.5" stroke="#000" stroke-opacity=".12" stroke-width="3"/><rect x="387.5" y="52.5" width="11" height="97" rx="5.5" fill="#d9d9d9" stroke="#727171" stroke-width="3"/><g tb:tag="wheel">
|
||||
<path d="m300 100c0 55.229-44.772 100-100 100s-100-44.771-100-100c0-55.228 44.772-100 100-100s100 44.772 100 100zm-175.01 0c0 41.428 33.584 75.012 75.012 75.012s75.012-33.584 75.012-75.012-33.584-75.012-75.012-75.012-75.012 33.584-75.012 75.012z" fill="url(#paint3_radial_1343_53957)" style="fill:url(#paint3_radial_1343_53957)"/>
|
||||
<path d="m194.12 74.998c-1.726 0-3.125-1.3991-3.125-3.125v-46.625c0-3.4517 2.798-6.2499 6.25-6.2499h5.5c3.452 0 6.25 2.7982 6.25 6.2499v46.625c0 1.7259-1.399 3.125-3.125 3.125z" fill="url(#paint4_linear_1343_53957)" style="fill:url(#paint4_linear_1343_53957)"/>
|
||||
<path d="m222.98 88.918c-0.612-1.6137 0.2-3.418 1.814-4.0301l43.595-16.534c3.227-1.2241 6.836 0.3999 8.06 3.6273l2.217 5.8439c1.224 3.2274-0.4 6.8361-3.628 8.0602l-43.595 16.535c-1.613 0.612-3.418-0.2-4.03-1.814l-4.433-11.688z" fill="url(#paint5_linear_1343_53957)" style="fill:url(#paint5_linear_1343_53957)"/>
|
||||
<path d="m190.37 125.55c1.37 1.05 1.63 3.012 0.58 4.382l-28.362 37.006c-2.1 2.74-6.023 3.259-8.762 1.159l-4.961-3.802c-2.74-2.099-3.259-6.022-1.159-8.762l28.362-37.007c1.05-1.37 3.011-1.629 4.381-0.579z" fill="url(#paint6_linear_1343_53957)" style="fill:url(#paint6_linear_1343_53957)"/>
|
||||
<path d="m211.85 125.55c-1.37 1.05-1.63 3.012-0.58 4.382l28.362 37.006c2.1 2.74 6.023 3.259 8.762 1.159l4.961-3.802c2.74-2.099 3.259-6.022 1.159-8.762l-28.362-37.007c-1.05-1.37-3.011-1.629-4.381-0.579z" fill="url(#paint7_linear_1343_53957)" style="fill:url(#paint7_linear_1343_53957)"/>
|
||||
<path d="m173.44 97.473c-0.506 1.6506-2.253 2.5776-3.903 2.0716l-44.578-13.664c-3.3-1.0116-5.156-4.507-4.144-7.8072l1.832-5.9756c1.011-3.3002 4.507-5.1555 7.807-4.1439l44.578 13.664c1.65 0.5058 2.577 2.2535 2.072 3.9036l-3.664 11.951z" fill="url(#paint8_linear_1343_53957)" style="fill:url(#paint8_linear_1343_53957)"/>
|
||||
</g><g filter="url(#filter0_ii_1343_53957)">
|
||||
<circle cx="200" cy="100.99" r="30" fill="#d9d9d9"/>
|
||||
</g><path d="m223 100.99c0 12.703-10.297 23-23 23s-23-10.297-23-23c0-12.702 10.297-23 23-23s23 10.297 23 23z" fill="#000" fill-opacity=".05"/><g filter="url(#filter1_i_1343_53957)">
|
||||
<path d="m223 101c0 12.703-10.297 23-23 23s-23-10.297-23-23c0-12.702 10.297-23 23-23s23 10.298 23 23z" fill="#1c943e" tb:tag="background"/>
|
||||
</g><path d="m222 101c0 12.15-9.85 22-22 22s-22-9.85-22-22 9.85-22 22-22 22 9.8497 22 22z" stroke="#fff" stroke-width="2"/><path d="m197.28 91.614c0-0.647-0.611-1.1214-1.216-0.8901-4.132 1.5826-7.067 5.5867-7.067 10.276 0 6.075 4.925 11 11 11s11-4.925 11-11c0-4.5645-2.78-8.4795-6.739-10.144-0.609-0.2563-1.244 0.2209-1.244 0.882 0 0.4223 0.269 0.7938 0.655 0.9649 3.181 1.4097 5.399 4.5944 5.399 8.2976 0 5.01-4.061 9.071-9.071 9.071s-9.071-4.061-9.071-9.071c0-3.8069 2.344-7.0659 5.668-8.4119 0.402-0.1627 0.686-0.5409 0.686-0.9745z" clip-rule="evenodd" fill="#fff" fill-rule="evenodd"/><path d="m199.51 88.637c0-0.3519 0.285-0.6372 0.637-0.6372s0.637 0.2853 0.637 0.6372v10.401c0 0.3519-0.285 0.6372-0.637 0.6372s-0.637-0.2853-0.637-0.6372z" fill="#fff"/><defs>
|
||||
<filter id="filter0_ii_1343_53957" x="166.88" y="67.863" width="66.25" height="66.25" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="3.12497" dy="-3.12497"/>
|
||||
<feGaussianBlur stdDeviation="3.12497"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/>
|
||||
<feBlend in2="shape" result="effect1_innerShadow_1343_53957"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="-3.12497" dy="3.12497"/>
|
||||
<feGaussianBlur stdDeviation="3.12497"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
|
||||
<feBlend in2="effect1_innerShadow_1343_53957" result="effect2_innerShadow_1343_53957"/>
|
||||
</filter>
|
||||
<filter id="filter1_i_1343_53957" x="172" y="78" width="51" height="51" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||
<feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
||||
<feOffset dx="-5" dy="5"/>
|
||||
<feGaussianBlur stdDeviation="4"/>
|
||||
<feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/>
|
||||
<feBlend in2="shape" result="effect1_innerShadow_1343_53957"/>
|
||||
</filter>
|
||||
<linearGradient id="paint0_linear_1343_53957" x1="24.92" x2="21.891" y1="30" y2="171.95" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".18316"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".35085"/>
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset=".49829"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".64825"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".82318"/>
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1343_53957" x1="130.88" x2="130.44" y1="29.988" y2="172.02" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".18316"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".35085"/>
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset=".49829"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".64825"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".82318"/>
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1343_53957" x1="354.92" x2="351.89" y1="30" y2="171.95" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".18316"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".35085"/>
|
||||
<stop stop-color="#fff" stop-opacity=".25" offset=".49829"/>
|
||||
<stop stop-color="#fff" stop-opacity=".08" offset=".64825"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".82318"/>
|
||||
<stop stop-color="#020202" stop-opacity=".35" offset="1"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="paint3_radial_1343_53957" cx="0" cy="0" r="1" gradientTransform="matrix(0,100,-100,0,200,100)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#727171" offset=".75112"/>
|
||||
<stop stop-color="#fff" offset=".87301"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="paint4_linear_1343_53957" x1="191" x2="209" y1="44.877" y2="44.877" gradientTransform="translate(0 -.99)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_1343_53957" x1="250.96" x2="257.61" y1="75.954" y2="93.485" gradientTransform="translate(0 -.99)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_1343_53957" x1="173.92" x2="159.04" y1="153.14" y2="141.73" gradientTransform="translate(0 -.99)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_1343_53957" x1="228.3" x2="243.18" y1="153.14" y2="141.73" gradientTransform="translate(0 -.99)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_1343_53957" x1="142.78" x2="148.28" y1="92.333" y2="74.407" gradientTransform="translate(0 -.99)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#727171" offset="0"/>
|
||||
<stop stop-color="#fff" offset=".49829"/>
|
||||
<stop stop-color="#727171" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs><rect x="100" width="200" height="200" fill="#000" fill-opacity="0" stroke-width="0" tb:tag="clickArea"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1,349 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="400" height="400" fill="none" version="1.1" viewBox="0 0 400 400"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP House",
|
||||
"description": "House with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy",
|
||||
"consumer"
|
||||
],
|
||||
"widgetSizeX": 2,
|
||||
"widgetSizeY": 2,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<g fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background">
|
||||
<path d="m370 377h-340c-2.7614 0-5-2.239-5-5v-185.42c0-1.372 0.5635-2.683 1.5584-3.627l170-161.31c1.93-1.8306 4.954-1.8306 6.884 0l170 161.31c0.995 0.944 1.558 2.255 1.558 3.627v185.42c0 2.761-2.239 5-5 5z"/>
|
||||
<path d="m287 60c0-2.7614 2.239-5 5-5h54.5c2.761 0 5 2.2386 5 5v86.08c0 4.322-5.113 6.609-8.334 3.727l-54.5-48.763c-1.06-0.949-1.666-2.3042-1.666-3.7267v-37.317z"/>
|
||||
<rect x="1" y="377" width="398" height="22" rx="5"/>
|
||||
<path d="m29.655 185h-24.568c-0.9085 0-1.3463-1.114-0.68102-1.732l193.55-180c1.151-1.0709 2.935-1.0709 4.086 0l193.55 180c0.665 0.618 0.227 1.732-0.681 1.732h-24.568c-1.256 0-2.467-0.473-3.39-1.325l-164.92-152.16c-1.149-1.0601-2.919-1.0601-4.068 0l-164.92 152.16c-0.9235 0.852-2.1339 1.325-3.3904 1.325z"/>
|
||||
</g><rect x="89" y="187" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="221" y="187" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="221" y="286" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="89" y="286" width="64" height="91" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="123" y="187" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="255" y="187" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="255" y="286" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="289" y="187" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><rect x="289" y="286" width="30" height="63" rx="1" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m200.7 104.07 27.061 26.216c0.645 0.625 0.203 1.718-0.696 1.718h-54.122c-0.899 0-1.341-1.093-0.696-1.718l27.061-26.216c0.388-0.375 1.004-0.375 1.392 0z" fill="#999" stroke="#1A1A1A" stroke-width="2"/><path d="m134.53 0s-134.53 0-134.53 67v328.36c0 2.6512 3.5818 4.6403 8 4.6403h384c4.418 0 8-1.9892 8-4.6403v-328.36c0-67-132.14-67-132.14-67h-67.86zm134.14 81.2c-2.5774 0-4.6666 1.2536-4.6666 2.8v300.4c0 1.5464 2.0894 2.8 4.6666 2.8h29.332c2.5774 0 4.6666-1.2536 4.6666-2.8v-300.4c0-1.5464-2.0894-2.8-4.6666-2.8z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,316)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 320.94)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,358 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="1000" height="600" fill="none" version="1.1" viewBox="0 0 1000 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Industrial fuel generator",
|
||||
"description": "Industrial fuel generator with various states.",
|
||||
"searchTags": [
|
||||
"power",
|
||||
"energy",
|
||||
"fuel",
|
||||
"generation"
|
||||
],
|
||||
"widgetSizeX": 5,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "sub-background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = '#999999';\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="998" height="598" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><rect x="1" y="1" width="998" height="28" stroke="#1A1A1A" stroke-width="2"/><line x1="858" x2="952" y1="361" y2="361" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="393" y2="393" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="425" y2="425" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="457" y2="457" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="67" y2="67" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="99" y2="99" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="131" y2="131" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><line x1="858" x2="952" y1="163" y2="163" stroke="#1A1A1A" stroke-linecap="round" stroke-width="6"/><rect x="79" y="96" width="278" height="338" rx="3" stroke="#1A1A1A" stroke-width="2"/><rect x="479" y="96" width="278" height="338" rx="3" stroke="#1A1A1A" stroke-width="2"/><circle cx="418" cy="278" r="19" stroke="#1A1A1A" stroke-width="2"/><circle cx="418" cy="278" r="7" fill="#1A1A1A"/><rect x="1" y="501" width="998" height="98" fill="#999" stroke="#1A1A1A" stroke-width="2" tb:tag="sub-background"/><path d="m336.32 0s-336.32 0-336.32 100.5v492.54c0 3.9768 8.9545 6.9604 20 6.9604h960c11.045 0 20-2.9838 20-6.9604v-492.54c0-100.5-330.35-100.5-330.35-100.5h-169.65zm335.35 121.8c-6.4435 0-11.666 1.8804-11.666 4.2v450.6c0 2.3196 5.2235 4.2 11.666 4.2h73.33c6.4435 0 11.666-1.8804 11.666-4.2v-450.6c0-2.3196-5.2235-4.2-11.666-4.2z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m35.955 2.2112c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m37.72 3.1061c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m42.092 32.618-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
|
@ -0,0 +1,342 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="1000" height="600" fill="none" version="1.1" viewBox="0 0 1000 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Large horizontal separator with connector",
|
||||
"description": "Large horizontal separator with connector with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 5,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="81" width="898" height="518" rx="159" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m1e3 300h-8c-16.569 0-30-13.431-30-30v-237c0-16.568-13.431-30-30-30h-240c-16.569 0-30 13.432-30 30v47" stroke="#1A1A1A" stroke-width="6"/><path d="m336.71-0.31324s-336.32 0-336.32 100.5v492.54c0 3.9768 8.9545 6.9605 20 6.9605h960c11.045 0 20-2.9838 20-6.9605v-492.54c0-100.5-330.35-100.5-330.35-100.5h-169.65zm335.35 121.8c-6.4435 0-11.666 1.8804-11.666 4.2v450.6c0 2.3196 5.2235 4.2 11.666 4.2h73.33c6.4435 0 11.666-1.8804 11.666-4.2v-450.6c0-2.3196-5.2235-4.2-11.666-4.2z" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,516)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0,516)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,350 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="1000" height="600" fill="none" version="1.1" viewBox="0 0 1000 600"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Large horizontal separator",
|
||||
"description": "Large horizontal separator with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 5,
|
||||
"widgetSizeY": 3,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="998" height="598" rx="159" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m336.32 0s-336.32 0-336.32 100.5v492.54c0 3.9768 8.9545 6.9605 20 6.9605h960c11.045 0 20-2.9838 20-6.9605v-492.54c0-100.5-330.35-100.5-330.35-100.5h-169.65zm335.35 121.8c-6.4435 0-11.666 1.8804-11.666 4.2v450.6c0 2.3196 5.2235 4.2 11.666 4.2h73.33c6.4435 0 11.666-1.8804 11.666-4.2v-450.6c0-2.3196-5.2235-4.2-11.666-4.2z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,516)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 516)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
|
@ -0,0 +1,350 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="1000" fill="none" version="1.1" viewBox="0 0 600 1000"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Large vertical separator with connector",
|
||||
"description": "Large vertical separator with connector with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 5,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<path d="m1 744c0 44.821 7.8e-4 78.376 2.1766 105.01 2.1748 26.619 6.5177 46.23 15.153 63.178 15.244 29.918 39.568 54.242 69.486 69.486 16.948 8.636 36.56 12.979 63.178 15.153 26.63 2.176 60.185 2.177 105.01 2.177h8c44.821 0 78.376-1e-3 105.01-2.177 26.619-2.174 46.23-6.517 63.178-15.153 29.918-15.244 54.242-39.568 69.486-69.486 8.636-16.948 12.979-36.559 15.153-63.178 2.176-26.63 2.177-60.185 2.177-105.01v-388c0-44.821-1e-3 -78.376-2.177-105.01-2.174-26.619-6.517-46.23-15.153-63.179-15.244-29.917-39.568-54.241-69.486-69.485-16.948-8.636-36.559-12.979-63.178-15.153-26.63-2.176-60.185-2.177-105.01-2.177h-8c-44.821 0-78.376 1e-3 -105.01 2.177-26.619 2.174-46.23 6.517-63.178 15.153-29.918 15.244-54.242 39.568-69.486 69.485-8.6357 16.949-12.979 36.56-15.153 63.179-2.1758 26.63-2.1766 60.185-2.1766 105.01v388z" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m600 700h-10c-16.569 0-30-13.431-30-30v-637c0-16.569-13.431-30-30-30h-240c-16.569 0-30 13.432-30 30v67" stroke="#1A1A1A" stroke-width="6"/><path d="m201.92 0s-201.79 0-201.79 167.5v820.9c0 6.628 5.3727 11.601 12 11.601h576c6.627 0 12-4.973 12-11.601v-820.9c0-167.5-198.21-167.5-198.21-167.5h-101.79zm201.21 203c-3.8661 0-6.9996 3.134-6.9996 7v751c0 3.866 3.1341 7 6.9996 7h43.998c3.8661 0 6.9996-3.134 6.9996-7v-751c0-3.866-3.1341-7-6.9996-7z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><g transform="translate(0,916)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 916)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,350 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="600" height="1000" fill="none" version="1.1" viewBox="0 0 600 1000"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "HP Large vertical separator",
|
||||
"description": "Large vertical separator with various states.",
|
||||
"searchTags": [
|
||||
"extraction"
|
||||
],
|
||||
"widgetSizeX": 3,
|
||||
"widgetSizeY": 5,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var color = ctx.properties.stoppedColor;\nif (ctx.values.running) {\n color = ctx.properties.runningColor;\n}\nelement.attr({fill: color});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "critical",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.criticalColor});\nif (ctx.values.critical) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = ctx.values.critical && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'criticalClick');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "warning",
|
||||
"stateRenderFunction": "element.attr({fill: ctx.properties.warningColor});\nvar warning = ctx.values.warning && !(ctx.values.warning && ctx.values.critical)\nif (warning) {\n element.show();\n} else {\n element.hide();\n}\n\nvar elementCriticalAnimation = element.remember('criticalAnimation');\nvar criticalAnimation = warning && ctx.values.criticalAnimation;\n\nif (elementCriticalAnimation !== criticalAnimation) {\n element.remember('criticalAnimation', criticalAnimation);\n if (criticalAnimation) {\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n } else {\n ctx.api.resetCssAnimation(element);\n }\n}\n",
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'warningClick');"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "running",
|
||||
"name": "{i18n:scada.symbol.running}",
|
||||
"hint": "{i18n:scada.symbol.running-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.running}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ATTRIBUTE",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": "SHARED_SCOPE",
|
||||
"key": "running"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": null,
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warning",
|
||||
"name": "{i18n:scada.symbol.warning}",
|
||||
"hint": "{i18n:scada.symbol.warning-state-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.warning}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"MAJOR",
|
||||
"MINOR",
|
||||
"WARNING",
|
||||
"INDETERMINATE"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "warningClick",
|
||||
"name": "{i18n:scada.symbol.warning-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.warning-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "critical",
|
||||
"name": "{i18n:scada.symbol.critical}",
|
||||
"hint": "{i18n:scada.symbol.critical-state-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.critical}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_ALARM_STATUS",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"getAlarmStatus": {
|
||||
"severityList": [
|
||||
"CRITICAL"
|
||||
],
|
||||
"typeList": null
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "criticalClick",
|
||||
"name": "{i18n:scada.symbol.critical-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": "{i18n:scada.symbol.critical-state}",
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "criticalAnimation",
|
||||
"name": "{i18n:scada.symbol.warning-critical-state-animation}",
|
||||
"hint": "{i18n:scada.symbol.warning-critical-state-animation-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": "{i18n:scada.symbol.animation}",
|
||||
"defaultGetValueSettings": {
|
||||
"action": "DO_NOTHING",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"key": "state",
|
||||
"scope": null
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "state"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"compareToValue": true,
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;"
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "runningColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.running}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "stoppedColor",
|
||||
"name": "{i18n:scada.symbol.colors}",
|
||||
"type": "color",
|
||||
"default": "#666666",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.stopped}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "warningColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#FAA405",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.warning}",
|
||||
"divider": true,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "criticalColor",
|
||||
"name": "{i18n:scada.symbol.alarm-colors}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": "{i18n:scada.symbol.critical}",
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null,
|
||||
"disabled": false,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x="1" y="1" width="598" height="998" rx="159" fill="#fff" stroke="#1A1A1A" stroke-width="2" tb:tag="background"/><path d="m201.79 0s-201.79 0-201.79 167.5v820.9c0 6.628 5.3727 11.601 12 11.601h576c6.627 0 12-4.973 12-11.601v-820.9c0-167.5-198.21-167.5-198.21-167.5h-101.79zm201.21 203c-3.8661 0-6.9996 3.134-6.9996 7v751c0 3.866 3.1341 7 6.9996 7h43.998c3.8661 0 6.9996-3.134 6.9996-7v-751c0-3.866-3.1341-7-6.9996-7z" fill-opacity="0" fill="#000" tb:tag="clickArea"/><g transform="translate(0,916)" fill="#d12730" style="display: none;" tb:tag="critical">
|
||||
<rect width="84" height="84" rx="4" fill="#fff" style=""/>
|
||||
<rect width="84" height="84" rx="4" style=""/>
|
||||
<rect x="2" y="2" width="80" height="80" rx="2" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 27.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g><g transform="translate(0 916)" fill="#faa405" style="display: none;" tb:tag="warning">
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" fill="#fff" style=""/>
|
||||
<path d="m38.422 7.1554c1.4741-2.9482 5.6813-2.9482 7.1554 0l35.528 71.056c1.3298 2.6596-0.6042 5.7889-3.5777 5.7889h-71.056c-2.9735 0-4.9075-3.1292-3.5777-5.7889z" style=""/>
|
||||
<path d="m40.211 8.0498c0.7371-1.4741 2.8407-1.4741 3.5778-1e-5l35.528 71.056c0.6649 1.3298-0.3021 2.8944-1.7888 2.8944h-71.056c-1.4868 0-2.4538-1.5646-1.7889-2.8944z" stroke="#000" stroke-opacity=".87" stroke-width="4" style=""/>
|
||||
<path d="m44.559 37.562-0.4688 20.059h-4.0234l-0.4883-20.059zm-5.1172 26.211c0-0.7161 0.2344-1.3151 0.7031-1.7968 0.4818-0.4948 1.1459-0.7422 1.9922-0.7422 0.8334 0 1.4909 0.2474 1.9727 0.7422 0.4817 0.4817 0.7226 1.0807 0.7226 1.7968 0 0.6901-0.2409 1.2826-0.7226 1.7774-0.4818 0.4818-1.1393 0.7226-1.9727 0.7226-0.8463 0-1.5104-0.2408-1.9922-0.7226-0.4687-0.4948-0.7031-1.0873-0.7031-1.7774z" fill="#000" fill-opacity=".87" style=""/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
|
@ -0,0 +1,158 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:tb="https://thingsboard.io/svg" width="100" height="100" fill="none" version="1.1" viewBox="0 0 100 100"><tb:metadata xmlns=""><![CDATA[{
|
||||
"title": "Leak sensor",
|
||||
"description": "Leak sensor for real-time detection and warning of fluid leakage.",
|
||||
"searchTags": [
|
||||
"leak"
|
||||
],
|
||||
"widgetSizeX": 1,
|
||||
"widgetSizeY": 1,
|
||||
"tags": [
|
||||
{
|
||||
"tag": "background",
|
||||
"stateRenderFunction": "var fill = ctx.properties.backgroundColor;\nelement.attr({fill: fill});",
|
||||
"actions": null
|
||||
},
|
||||
{
|
||||
"tag": "clickArea",
|
||||
"stateRenderFunction": null,
|
||||
"actions": {
|
||||
"click": {
|
||||
"actionFunction": "ctx.api.callAction(event, 'click');"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "icon",
|
||||
"stateRenderFunction": "var leak = ctx.values.leak;\nif (leak) {\n element.attr({stroke: ctx.properties.leakColor});\n ctx.api.cssAnimate(element, 500).attr({opacity: 0.15}).loop(0, true);\n} else {\n element.attr({stroke: ctx.properties.defaultColor});\n ctx.api.finishCssAnimation(element);\n}\n",
|
||||
"actions": null
|
||||
}
|
||||
],
|
||||
"behavior": [
|
||||
{
|
||||
"id": "leak",
|
||||
"name": "{i18n:scada.symbol.leak}",
|
||||
"hint": "{i18n:scada.symbol.water-leak-hint}",
|
||||
"group": null,
|
||||
"type": "value",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": {
|
||||
"action": "GET_TIME_SERIES",
|
||||
"defaultValue": false,
|
||||
"executeRpc": {
|
||||
"method": "getState",
|
||||
"requestTimeout": 5000,
|
||||
"requestPersistent": false,
|
||||
"persistentPollingInterval": 1000
|
||||
},
|
||||
"getAttribute": {
|
||||
"scope": null,
|
||||
"key": "state"
|
||||
},
|
||||
"getTimeSeries": {
|
||||
"key": "leak"
|
||||
},
|
||||
"dataToValue": {
|
||||
"type": "NONE",
|
||||
"dataToValueFunction": "/* Should return boolean value */\nreturn data;",
|
||||
"compareToValue": true
|
||||
}
|
||||
},
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": null
|
||||
},
|
||||
{
|
||||
"id": "click",
|
||||
"name": "{i18n:scada.symbol.on-click}",
|
||||
"hint": "{i18n:scada.symbol.on-click-hint}",
|
||||
"group": null,
|
||||
"type": "widgetAction",
|
||||
"valueType": "BOOLEAN",
|
||||
"trueLabel": null,
|
||||
"falseLabel": null,
|
||||
"stateLabel": null,
|
||||
"defaultGetValueSettings": null,
|
||||
"defaultSetValueSettings": null,
|
||||
"defaultWidgetActionSettings": {
|
||||
"type": "doNothing",
|
||||
"targetDashboardStateId": null,
|
||||
"openRightLayout": false,
|
||||
"setEntityId": false,
|
||||
"stateEntityParamName": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": "backgroundColor",
|
||||
"name": "{i18n:scada.symbol.background-color}",
|
||||
"type": "color",
|
||||
"default": "#FFFFFF",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "defaultColor",
|
||||
"name": "{i18n:scada.symbol.default-color}",
|
||||
"type": "color",
|
||||
"default": "#1C943E",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"id": "leakColor",
|
||||
"name": "{i18n:scada.symbol.leak-color}",
|
||||
"type": "color",
|
||||
"default": "#D12730",
|
||||
"required": null,
|
||||
"subLabel": null,
|
||||
"divider": null,
|
||||
"fieldSuffix": null,
|
||||
"disableOnProperty": null,
|
||||
"rowClass": "",
|
||||
"fieldClass": "",
|
||||
"min": null,
|
||||
"max": null,
|
||||
"step": null
|
||||
}
|
||||
]
|
||||
}]]></tb:metadata>
|
||||
<rect x=".5" y=".5" width="99" height="99" rx="23.5" fill="#fff" tb:tag="background"/><rect x=".5" y=".5" width="99" height="99" rx="23.5" fill="url(#paint0_linear_2089_217648)"/><rect x=".5" y=".5" width="99" height="99" rx="23.5" fill="url(#paint1_linear_2089_217648)"/><rect x=".5" y=".5" width="99" height="99" rx="23.5" stroke="#fff"/><path d="m56.668 52.309c0 2.04-0.7902 3.9966-2.1967 5.4391-0.7985 0.819-1.7586 1.4347-2.8035 1.8135m10-6.7401c0-10.962-11.667-19.487-11.667-19.487s-11.667 8.5256-11.667 19.487c0 3.2301 1.2292 6.3283 3.4171 8.6125 2.1879 2.284 5.1556 3.5659 8.2497 3.5659 3.0942 0 6.0615-1.2826 8.2493-3.5666 2.188-2.2842 3.4172-5.3817 3.4172-8.6118z" stroke="#1C943E" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" tb:tag="icon"/><path d="m33.631 0s-33.631 0-33.631 16.75v82.09c0 0.6628 0.89543 1.1601 2 1.1601h96c1.1045 0 2-0.4973 2-1.1601v-82.09c0-16.75-33.035-16.75-33.035-16.75h-16.965zm33.535 20.3c-0.64434 0-1.1666 0.3134-1.1666 0.7v75.1c0 0.3866 0.52234 0.7 1.1666 0.7h7.3336c0.64434 0 1.1666-0.3134 1.1666-0.7v-75.1c0-0.3866-0.52233-0.7-1.1666-0.7z" fill="#000" fill-opacity="0" tb:tag="clickArea"/><defs>
|
||||
<linearGradient id="paint0_linear_2089_217648" x1="100" x2="1.5002" y1="50.119" y2="49.881" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".2" offset="0"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".05"/>
|
||||
<stop stop-color="#fff" stop-opacity=".12" offset=".15"/>
|
||||
<stop stop-color="#fff" stop-opacity=".2" offset=".51114"/>
|
||||
<stop stop-color="#fff" stop-opacity=".12" offset=".85"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".95"/>
|
||||
<stop stop-color="#020202" stop-opacity=".2" offset=".99341"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_2089_217648" x1="50" x2="50" y2="100" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#020202" stop-opacity=".2" offset=".01"/>
|
||||
<stop stop-color="#020202" stop-opacity=".12" offset=".05"/>
|
||||
<stop stop-color="#fff" stop-opacity=".12" offset=".15343"/>
|
||||
<stop stop-color="#fff" stop-opacity=".2" offset=".5"/>
|
||||
<stop stop-color="#fff" stop-opacity=".12" offset=".85"/>
|
||||
<stop stop-opacity=".12" offset=".95"/>
|
||||
<stop stop-opacity=".2" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 57 KiB |