thingsboard-cli 4.3.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2532) hide show
  1. thingsboard_cli/__init__.py +8 -0
  2. thingsboard_cli/commands/__init__.py +0 -0
  3. thingsboard_cli/commands/_pagination.py +93 -0
  4. thingsboard_cli/commands/alarm.py +297 -0
  5. thingsboard_cli/commands/alarm_rule.py +288 -0
  6. thingsboard_cli/commands/asset.py +262 -0
  7. thingsboard_cli/commands/asset_profile.py +179 -0
  8. thingsboard_cli/commands/attributes.py +276 -0
  9. thingsboard_cli/commands/calculated_field.py +276 -0
  10. thingsboard_cli/commands/config.py +494 -0
  11. thingsboard_cli/commands/customer.py +232 -0
  12. thingsboard_cli/commands/dashboard.py +282 -0
  13. thingsboard_cli/commands/device.py +301 -0
  14. thingsboard_cli/commands/device_profile.py +192 -0
  15. thingsboard_cli/commands/emulator.py +230 -0
  16. thingsboard_cli/commands/entity_group.py +461 -0
  17. thingsboard_cli/commands/extension.py +1364 -0
  18. thingsboard_cli/commands/project.py +1018 -0
  19. thingsboard_cli/commands/pull.py +841 -0
  20. thingsboard_cli/commands/relation.py +287 -0
  21. thingsboard_cli/commands/role.py +181 -0
  22. thingsboard_cli/commands/rule_chain.py +258 -0
  23. thingsboard_cli/commands/solution.py +194 -0
  24. thingsboard_cli/commands/telemetry.py +402 -0
  25. thingsboard_cli/commands/user.py +247 -0
  26. thingsboard_cli/common/__init__.py +0 -0
  27. thingsboard_cli/common/options.py +97 -0
  28. thingsboard_cli/common/utils.py +81 -0
  29. thingsboard_cli/config/__init__.py +0 -0
  30. thingsboard_cli/config/manager.py +100 -0
  31. thingsboard_cli/config/models.py +46 -0
  32. thingsboard_cli/config/resolver.py +75 -0
  33. thingsboard_cli/core/__init__.py +0 -0
  34. thingsboard_cli/core/analytics.py +341 -0
  35. thingsboard_cli/core/assembler.py +93 -0
  36. thingsboard_cli/core/client.py +115 -0
  37. thingsboard_cli/core/debug.py +143 -0
  38. thingsboard_cli/core/decomposer.py +431 -0
  39. thingsboard_cli/core/emulator/__init__.py +12 -0
  40. thingsboard_cli/core/emulator/generators.py +400 -0
  41. thingsboard_cli/core/emulator/models.py +173 -0
  42. thingsboard_cli/core/emulator/runtime.py +45 -0
  43. thingsboard_cli/core/exceptions.py +35 -0
  44. thingsboard_cli/core/extension_manifest.py +613 -0
  45. thingsboard_cli/core/extension_starter_unpacker.py +493 -0
  46. thingsboard_cli/core/git_dirty.py +118 -0
  47. thingsboard_cli/core/interactive_pull/__init__.py +41 -0
  48. thingsboard_cli/core/interactive_pull/app.py +1028 -0
  49. thingsboard_cli/core/interactive_pull/confirm.py +168 -0
  50. thingsboard_cli/core/interactive_pull/formatting.py +130 -0
  51. thingsboard_cli/core/interactive_pull/listing.py +140 -0
  52. thingsboard_cli/core/interactive_pull/loader.py +185 -0
  53. thingsboard_cli/core/interactive_pull/owner.py +150 -0
  54. thingsboard_cli/core/interactive_pull/picker.tcss +176 -0
  55. thingsboard_cli/core/interactive_pull/rows.py +66 -0
  56. thingsboard_cli/core/interactive_pull/search.py +120 -0
  57. thingsboard_cli/core/interactive_pull/sections.py +40 -0
  58. thingsboard_cli/core/interactive_pull/state.py +111 -0
  59. thingsboard_cli/core/interactive_pull/theme.py +41 -0
  60. thingsboard_cli/core/local.py +1080 -0
  61. thingsboard_cli/core/maven_runner.py +59 -0
  62. thingsboard_cli/core/output.py +265 -0
  63. thingsboard_cli/core/payload.py +59 -0
  64. thingsboard_cli/core/resolver.py +110 -0
  65. thingsboard_cli/core/resources.py +96 -0
  66. thingsboard_cli/core/scaffold.py +224 -0
  67. thingsboard_cli/core/update.py +253 -0
  68. thingsboard_cli/extension-starter/.env.example +22 -0
  69. thingsboard_cli/extension-starter/.gitignore +6 -0
  70. thingsboard_cli/extension-starter/.license-header +13 -0
  71. thingsboard_cli/extension-starter/.snapshot.json +5 -0
  72. thingsboard_cli/extension-starter/Dockerfile +28 -0
  73. thingsboard_cli/extension-starter/LICENSE +201 -0
  74. thingsboard_cli/extension-starter/README.md +526 -0
  75. thingsboard_cli/extension-starter/compose.yaml +40 -0
  76. thingsboard_cli/extension-starter/deploy/.env.example +21 -0
  77. thingsboard_cli/extension-starter/deploy/docker-compose.yml +43 -0
  78. thingsboard_cli/extension-starter/deploy/haproxy-extension.cfg.snippet +23 -0
  79. thingsboard_cli/extension-starter/docs/tb-message-types.md +674 -0
  80. thingsboard_cli/extension-starter/examples/pom.xml +73 -0
  81. thingsboard_cli/extension-starter/examples/src/main/java/org/thingsboard/extension/examples/BillingController.java +68 -0
  82. thingsboard_cli/extension-starter/examples/src/main/java/org/thingsboard/extension/examples/DeviceHealthCheckTask.java +70 -0
  83. thingsboard_cli/extension-starter/examples/src/main/java/org/thingsboard/extension/examples/TelemetryUnitConversionController.java +87 -0
  84. thingsboard_cli/extension-starter/examples/src/main/java/org/thingsboard/extension/examples/TenantReportController.java +72 -0
  85. thingsboard_cli/extension-starter/examples/src/test/java/org/thingsboard/extension/examples/BillingControllerTest.java +57 -0
  86. thingsboard_cli/extension-starter/examples/src/test/java/org/thingsboard/extension/examples/DeviceHealthCheckTaskTest.java +52 -0
  87. thingsboard_cli/extension-starter/examples/src/test/java/org/thingsboard/extension/examples/ExampleTestUtils.java +45 -0
  88. thingsboard_cli/extension-starter/examples/src/test/java/org/thingsboard/extension/examples/TelemetryUnitConversionControllerTest.java +80 -0
  89. thingsboard_cli/extension-starter/examples/src/test/java/org/thingsboard/extension/examples/TenantReportControllerTest.java +56 -0
  90. thingsboard_cli/extension-starter/examples/target/classes/org/thingsboard/extension/examples/BillingController.class +0 -0
  91. thingsboard_cli/extension-starter/examples/target/classes/org/thingsboard/extension/examples/DeviceHealthCheckTask.class +0 -0
  92. thingsboard_cli/extension-starter/examples/target/classes/org/thingsboard/extension/examples/TelemetryUnitConversionController$Rule.class +0 -0
  93. thingsboard_cli/extension-starter/examples/target/classes/org/thingsboard/extension/examples/TelemetryUnitConversionController.class +0 -0
  94. thingsboard_cli/extension-starter/examples/target/classes/org/thingsboard/extension/examples/TenantReportController.class +0 -0
  95. thingsboard_cli/extension-starter/examples/target/maven-archiver/pom.properties +3 -0
  96. thingsboard_cli/extension-starter/examples/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +5 -0
  97. thingsboard_cli/extension-starter/examples/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +4 -0
  98. thingsboard_cli/extension-starter/examples/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +6 -0
  99. thingsboard_cli/extension-starter/examples/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +5 -0
  100. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/BillingControllerTest.class +0 -0
  101. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/DeviceHealthCheckTaskTest.class +0 -0
  102. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/ExampleTestUtils$1.class +0 -0
  103. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/ExampleTestUtils.class +0 -0
  104. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/TelemetryUnitConversionControllerTest.class +0 -0
  105. thingsboard_cli/extension-starter/examples/target/test-classes/org/thingsboard/extension/examples/TenantReportControllerTest.class +0 -0
  106. thingsboard_cli/extension-starter/examples/target/thingsboard-extension-examples-1.0.0-SNAPSHOT.jar +0 -0
  107. thingsboard_cli/extension-starter/examples/widgets/cloud-button.js +68 -0
  108. thingsboard_cli/extension-starter/examples/widgets/on-premise-button.js +42 -0
  109. thingsboard_cli/extension-starter/extension/pom.xml +166 -0
  110. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/ThingsboardExtensionApplication.java +31 -0
  111. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/GlobalExceptionHandler.java +86 -0
  112. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/HealthController.java +31 -0
  113. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/OpenApiConfig.java +56 -0
  114. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/RequestLoggingFilter.java +103 -0
  115. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/SchedulingConfig.java +47 -0
  116. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/SecurityConfig.java +78 -0
  117. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/TbAuthentication.java +64 -0
  118. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/TbSecurity.java +54 -0
  119. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/TbSecurityFilter.java +66 -0
  120. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/TbSecurityUser.java +64 -0
  121. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/ThingsboardAuthConfig.java +79 -0
  122. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/ThingsboardClientProvider.java +165 -0
  123. thingsboard_cli/extension-starter/extension/src/main/java/org/thingsboard/extension/config/WebConfig.java +38 -0
  124. thingsboard_cli/extension-starter/extension/src/main/resources/application.yml +51 -0
  125. thingsboard_cli/extension-starter/extension/src/main/resources/docker/start-extension.sh +33 -0
  126. thingsboard_cli/extension-starter/extension/src/main/resources/logback.xml +35 -0
  127. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/ApplicationIntegrationTest.java +79 -0
  128. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/PreAuthorizeIntegrationTest.java +155 -0
  129. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/TestUtils.java +45 -0
  130. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/GlobalExceptionHandlerTest.java +116 -0
  131. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/RequestLoggingFilterTest.java +108 -0
  132. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/TbAuthenticationTest.java +91 -0
  133. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/TbSecurityFilterTest.java +93 -0
  134. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/TbSecurityUserTest.java +79 -0
  135. thingsboard_cli/extension-starter/extension/src/test/java/org/thingsboard/extension/config/ThingsboardClientProviderTest.java +55 -0
  136. thingsboard_cli/extension-starter/extension/target/antrun/build-main.xml +7 -0
  137. thingsboard_cli/extension-starter/extension/target/api-docs/AccountTwoFaSettings.md +53 -0
  138. thingsboard_cli/extension-starter/extension/target/api-docs/AcmeCertificateId.md +22 -0
  139. thingsboard_cli/extension-starter/extension/target/api-docs/Action.md +23 -0
  140. thingsboard_cli/extension-starter/extension/target/api-docs/ActionStatus.md +23 -0
  141. thingsboard_cli/extension-starter/extension/target/api-docs/ActionType.md +113 -0
  142. thingsboard_cli/extension-starter/extension/target/api-docs/ActivateUserRequest.md +25 -0
  143. thingsboard_cli/extension-starter/extension/target/api-docs/AdminControllerApi.md +525 -0
  144. thingsboard_cli/extension-starter/extension/target/api-docs/AdminSettings.md +35 -0
  145. thingsboard_cli/extension-starter/extension/target/api-docs/AdminSettingsId.md +30 -0
  146. thingsboard_cli/extension-starter/extension/target/api-docs/AffectedTenantAdministratorsFilter.md +30 -0
  147. thingsboard_cli/extension-starter/extension/target/api-docs/AffectedUserFilter.md +30 -0
  148. thingsboard_cli/extension-starter/extension/target/api-docs/AggFunction.md +31 -0
  149. thingsboard_cli/extension-starter/extension/target/api-docs/AggFunctionInput.md +31 -0
  150. thingsboard_cli/extension-starter/extension/target/api-docs/AggInput.md +34 -0
  151. thingsboard_cli/extension-starter/extension/target/api-docs/AggInterval.md +73 -0
  152. thingsboard_cli/extension-starter/extension/target/api-docs/AggKeyInput.md +31 -0
  153. thingsboard_cli/extension-starter/extension/target/api-docs/AggMetric.md +45 -0
  154. thingsboard_cli/extension-starter/extension/target/api-docs/Aggregation.md +31 -0
  155. thingsboard_cli/extension-starter/extension/target/api-docs/AggregationConfiguration.md +28 -0
  156. thingsboard_cli/extension-starter/extension/target/api-docs/AggregationParams.md +33 -0
  157. thingsboard_cli/extension-starter/extension/target/api-docs/AiChatControllerApi.md +148 -0
  158. thingsboard_cli/extension-starter/extension/target/api-docs/AiChatModelConfig.md +27 -0
  159. thingsboard_cli/extension-starter/extension/target/api-docs/AiModel.md +240 -0
  160. thingsboard_cli/extension-starter/extension/target/api-docs/AiModelConfig.md +229 -0
  161. thingsboard_cli/extension-starter/extension/target/api-docs/AiModelControllerApi.md +136 -0
  162. thingsboard_cli/extension-starter/extension/target/api-docs/AiModelExportData.md +539 -0
  163. thingsboard_cli/extension-starter/extension/target/api-docs/AiModelId.md +30 -0
  164. thingsboard_cli/extension-starter/extension/target/api-docs/AiModelType.md +21 -0
  165. thingsboard_cli/extension-starter/extension/target/api-docs/AiSolutionControllerApi.md +230 -0
  166. thingsboard_cli/extension-starter/extension/target/api-docs/AiToolControllerApi.md +30 -0
  167. thingsboard_cli/extension-starter/extension/target/api-docs/Alarm.md +57 -0
  168. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmAction.md +27 -0
  169. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmAssignee.md +32 -0
  170. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmAssignmentNotificationRuleTriggerConfig.md +46 -0
  171. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmAssignmentRecipientsConfig.md +34 -0
  172. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCalculatedFieldConfiguration.md +314 -0
  173. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmComment.md +43 -0
  174. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentControllerApi.md +88 -0
  175. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentId.md +22 -0
  176. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentInfo.md +46 -0
  177. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentNotificationRuleTriggerConfig.md +44 -0
  178. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentRecipientsConfig.md +34 -0
  179. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCommentType.md +23 -0
  180. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCondition.md +186 -0
  181. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionExpression.md +123 -0
  182. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionFilter.md +105 -0
  183. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueAlarmSchedule.md +55 -0
  184. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueBoolean.md +23 -0
  185. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueDouble.md +23 -0
  186. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueInteger.md +23 -0
  187. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueLong.md +23 -0
  188. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmConditionValueString.md +23 -0
  189. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmControllerApi.md +409 -0
  190. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmCountQuery.md +347 -0
  191. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmData.md +78 -0
  192. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmDataPageLink.md +65 -0
  193. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmDataQuery.md +369 -0
  194. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmFilterConfig.md +39 -0
  195. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmId.md +30 -0
  196. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmInfo.md +69 -0
  197. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmNotificationRuleTriggerConfig.md +51 -0
  198. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRule.md +196 -0
  199. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleBooleanFilterPredicate.md +41 -0
  200. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleBooleanOperation.md +23 -0
  201. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleComplexFilterPredicate.md +35 -0
  202. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleComplexOperation.md +23 -0
  203. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleControllerApi.md +222 -0
  204. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleDefinition.md +488 -0
  205. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleDefinitionInfo.md +489 -0
  206. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleKeyFilterPredicate.md +98 -0
  207. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleNumericFilterPredicate.md +41 -0
  208. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleNumericOperation.md +31 -0
  209. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleStringFilterPredicate.md +42 -0
  210. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmRuleStringOperation.md +35 -0
  211. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmSchedule.md +51 -0
  212. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmSearchStatus.md +29 -0
  213. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmSeverity.md +29 -0
  214. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmStatus.md +27 -0
  215. thingsboard_cli/extension-starter/extension/target/api-docs/AlarmTableComponent.md +299 -0
  216. thingsboard_cli/extension-starter/extension/target/api-docs/AliasEntityId.md +32 -0
  217. thingsboard_cli/extension-starter/extension/target/api-docs/AliasEntityType.md +27 -0
  218. thingsboard_cli/extension-starter/extension/target/api-docs/AllUsersFilter.md +30 -0
  219. thingsboard_cli/extension-starter/extension/target/api-docs/AllowCreateNewDevicesDeviceProfileProvisionConfiguration.md +31 -0
  220. thingsboard_cli/extension-starter/extension/target/api-docs/AllowedPermissionsInfo.md +63 -0
  221. thingsboard_cli/extension-starter/extension/target/api-docs/AmazonBedrockChatModelConfig.md +48 -0
  222. thingsboard_cli/extension-starter/extension/target/api-docs/AmazonBedrockProviderConfig.md +24 -0
  223. thingsboard_cli/extension-starter/extension/target/api-docs/AnthropicChatModelConfig.md +47 -0
  224. thingsboard_cli/extension-starter/extension/target/api-docs/AnthropicProviderConfig.md +22 -0
  225. thingsboard_cli/extension-starter/extension/target/api-docs/AnyTimeSchedule.md +30 -0
  226. thingsboard_cli/extension-starter/extension/target/api-docs/ApiFeature.md +39 -0
  227. thingsboard_cli/extension-starter/extension/target/api-docs/ApiKey.md +37 -0
  228. thingsboard_cli/extension-starter/extension/target/api-docs/ApiKeyControllerApi.md +139 -0
  229. thingsboard_cli/extension-starter/extension/target/api-docs/ApiKeyId.md +30 -0
  230. thingsboard_cli/extension-starter/extension/target/api-docs/ApiKeyInfo.md +38 -0
  231. thingsboard_cli/extension-starter/extension/target/api-docs/ApiUsageLimitNotificationRuleTriggerConfig.md +41 -0
  232. thingsboard_cli/extension-starter/extension/target/api-docs/ApiUsageLimitRecipientsConfig.md +34 -0
  233. thingsboard_cli/extension-starter/extension/target/api-docs/ApiUsageStateFilter.md +36 -0
  234. thingsboard_cli/extension-starter/extension/target/api-docs/ApiUsageStateId.md +30 -0
  235. thingsboard_cli/extension-starter/extension/target/api-docs/ApiUsageStateValue.md +25 -0
  236. thingsboard_cli/extension-starter/extension/target/api-docs/Argument.md +69 -0
  237. thingsboard_cli/extension-starter/extension/target/api-docs/ArgumentType.md +25 -0
  238. thingsboard_cli/extension-starter/extension/target/api-docs/Asset.md +39 -0
  239. thingsboard_cli/extension-starter/extension/target/api-docs/AssetControllerApi.md +415 -0
  240. thingsboard_cli/extension-starter/extension/target/api-docs/AssetExportData.md +539 -0
  241. thingsboard_cli/extension-starter/extension/target/api-docs/AssetId.md +30 -0
  242. thingsboard_cli/extension-starter/extension/target/api-docs/AssetInfo.md +47 -0
  243. thingsboard_cli/extension-starter/extension/target/api-docs/AssetProfile.md +42 -0
  244. thingsboard_cli/extension-starter/extension/target/api-docs/AssetProfileControllerApi.md +259 -0
  245. thingsboard_cli/extension-starter/extension/target/api-docs/AssetProfileExportData.md +539 -0
  246. thingsboard_cli/extension-starter/extension/target/api-docs/AssetProfileId.md +30 -0
  247. thingsboard_cli/extension-starter/extension/target/api-docs/AssetProfileInfo.md +33 -0
  248. thingsboard_cli/extension-starter/extension/target/api-docs/AssetSearchQuery.md +45 -0
  249. thingsboard_cli/extension-starter/extension/target/api-docs/AssetSearchQueryFilter.md +54 -0
  250. thingsboard_cli/extension-starter/extension/target/api-docs/AssetTypeFilter.md +33 -0
  251. thingsboard_cli/extension-starter/extension/target/api-docs/AttributeData.md +24 -0
  252. thingsboard_cli/extension-starter/extension/target/api-docs/AttributeExportData.md +28 -0
  253. thingsboard_cli/extension-starter/extension/target/api-docs/AttributeScope.md +25 -0
  254. thingsboard_cli/extension-starter/extension/target/api-docs/AttributesEntityView.md +24 -0
  255. thingsboard_cli/extension-starter/extension/target/api-docs/AttributesImmediateOutputStrategy.md +35 -0
  256. thingsboard_cli/extension-starter/extension/target/api-docs/AttributesOutput.md +55 -0
  257. thingsboard_cli/extension-starter/extension/target/api-docs/AttributesOutputStrategy.md +36 -0
  258. thingsboard_cli/extension-starter/extension/target/api-docs/AttributesRuleChainOutputStrategy.md +30 -0
  259. thingsboard_cli/extension-starter/extension/target/api-docs/AuditLog.md +51 -0
  260. thingsboard_cli/extension-starter/extension/target/api-docs/AuditLogControllerApi.md +139 -0
  261. thingsboard_cli/extension-starter/extension/target/api-docs/AuditLogId.md +22 -0
  262. thingsboard_cli/extension-starter/extension/target/api-docs/AuthControllerApi.md +212 -0
  263. thingsboard_cli/extension-starter/extension/target/api-docs/AuthenticationProtocol.md +31 -0
  264. thingsboard_cli/extension-starter/extension/target/api-docs/Authority.md +35 -0
  265. thingsboard_cli/extension-starter/extension/target/api-docs/AutoVersionCreateConfig.md +28 -0
  266. thingsboard_cli/extension-starter/extension/target/api-docs/AvailableEntityKeys.md +31 -0
  267. thingsboard_cli/extension-starter/extension/target/api-docs/AvailableEntityKeysV2.md +44 -0
  268. thingsboard_cli/extension-starter/extension/target/api-docs/AwsSnsSmsProviderConfiguration.md +33 -0
  269. thingsboard_cli/extension-starter/extension/target/api-docs/AxisPosition.md +27 -0
  270. thingsboard_cli/extension-starter/extension/target/api-docs/AzureOpenAiChatModelConfig.md +50 -0
  271. thingsboard_cli/extension-starter/extension/target/api-docs/AzureOpenAiProviderConfig.md +24 -0
  272. thingsboard_cli/extension-starter/extension/target/api-docs/BackupCodeTwoFaAccountConfig.md +33 -0
  273. thingsboard_cli/extension-starter/extension/target/api-docs/BackupCodeTwoFaProviderConfig.md +31 -0
  274. thingsboard_cli/extension-starter/extension/target/api-docs/BadgePosition.md +23 -0
  275. thingsboard_cli/extension-starter/extension/target/api-docs/BarSeriesSettings.md +67 -0
  276. thingsboard_cli/extension-starter/extension/target/api-docs/BaseReadTsKvQuery.md +46 -0
  277. thingsboard_cli/extension-starter/extension/target/api-docs/Basic.md +32 -0
  278. thingsboard_cli/extension-starter/extension/target/api-docs/BillingCustomerId.md +30 -0
  279. thingsboard_cli/extension-starter/extension/target/api-docs/BillingEndpointControllerApi.md +239 -0
  280. thingsboard_cli/extension-starter/extension/target/api-docs/BlobEntityControllerApi.md +139 -0
  281. thingsboard_cli/extension-starter/extension/target/api-docs/BlobEntityId.md +30 -0
  282. thingsboard_cli/extension-starter/extension/target/api-docs/BlobEntityInfo.md +46 -0
  283. thingsboard_cli/extension-starter/extension/target/api-docs/BlobEntityWithCustomerInfo.md +48 -0
  284. thingsboard_cli/extension-starter/extension/target/api-docs/BooleanFilterPredicate.md +53 -0
  285. thingsboard_cli/extension-starter/extension/target/api-docs/BooleanOperation.md +23 -0
  286. thingsboard_cli/extension-starter/extension/target/api-docs/BorderLength.md +23 -0
  287. thingsboard_cli/extension-starter/extension/target/api-docs/BorderType.md +25 -0
  288. thingsboard_cli/extension-starter/extension/target/api-docs/BranchInfo.md +23 -0
  289. thingsboard_cli/extension-starter/extension/target/api-docs/BulkImportColumnType.md +83 -0
  290. thingsboard_cli/extension-starter/extension/target/api-docs/BulkImportRequest.md +49 -0
  291. thingsboard_cli/extension-starter/extension/target/api-docs/BulkImportResultAsset.md +25 -0
  292. thingsboard_cli/extension-starter/extension/target/api-docs/BulkImportResultDevice.md +25 -0
  293. thingsboard_cli/extension-starter/extension/target/api-docs/BulkImportResultEdge.md +25 -0
  294. thingsboard_cli/extension-starter/extension/target/api-docs/Button.md +33 -0
  295. thingsboard_cli/extension-starter/extension/target/api-docs/CMAssigneeType.md +29 -0
  296. thingsboard_cli/extension-starter/extension/target/api-docs/CMItemLinkType.md +23 -0
  297. thingsboard_cli/extension-starter/extension/target/api-docs/CMItemType.md +23 -0
  298. thingsboard_cli/extension-starter/extension/target/api-docs/CMScope.md +25 -0
  299. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedField.md +492 -0
  300. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldConfiguration.md +468 -0
  301. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldControllerApi.md +328 -0
  302. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldDebugEventFilter.md +58 -0
  303. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldId.md +30 -0
  304. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldInfo.md +493 -0
  305. thingsboard_cli/extension-starter/extension/target/api-docs/CalculatedFieldType.md +33 -0
  306. thingsboard_cli/extension-starter/extension/target/api-docs/CaptchaClientParams.md +24 -0
  307. thingsboard_cli/extension-starter/extension/target/api-docs/CaptchaParams.md +48 -0
  308. thingsboard_cli/extension-starter/extension/target/api-docs/CellSettings.md +48 -0
  309. thingsboard_cli/extension-starter/extension/target/api-docs/CertificateInfo.md +39 -0
  310. thingsboard_cli/extension-starter/extension/target/api-docs/CertificateStatus.md +35 -0
  311. thingsboard_cli/extension-starter/extension/target/api-docs/CfArgumentDynamicSourceConfiguration.md +43 -0
  312. thingsboard_cli/extension-starter/extension/target/api-docs/CfReprocessingJobConfiguration.md +51 -0
  313. thingsboard_cli/extension-starter/extension/target/api-docs/CfReprocessingJobResult.md +49 -0
  314. thingsboard_cli/extension-starter/extension/target/api-docs/CfReprocessingTaskFailure.md +36 -0
  315. thingsboard_cli/extension-starter/extension/target/api-docs/CfReprocessingTaskResult.md +53 -0
  316. thingsboard_cli/extension-starter/extension/target/api-docs/CfReprocessingValidationResult.md +29 -0
  317. thingsboard_cli/extension-starter/extension/target/api-docs/ChangePasswordRequest.md +25 -0
  318. thingsboard_cli/extension-starter/extension/target/api-docs/ChartFillSettings.md +35 -0
  319. thingsboard_cli/extension-starter/extension/target/api-docs/ChartFillSettingsGradient.md +23 -0
  320. thingsboard_cli/extension-starter/extension/target/api-docs/ChartFillType.md +25 -0
  321. thingsboard_cli/extension-starter/extension/target/api-docs/ChartLabelPosition.md +23 -0
  322. thingsboard_cli/extension-starter/extension/target/api-docs/ChartLineType.md +25 -0
  323. thingsboard_cli/extension-starter/extension/target/api-docs/ChartShape.md +37 -0
  324. thingsboard_cli/extension-starter/extension/target/api-docs/ChatType.md +23 -0
  325. thingsboard_cli/extension-starter/extension/target/api-docs/CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration.md +31 -0
  326. thingsboard_cli/extension-starter/extension/target/api-docs/ChecksumAlgorithm.md +33 -0
  327. thingsboard_cli/extension-starter/extension/target/api-docs/ClaimRequest.md +24 -0
  328. thingsboard_cli/extension-starter/extension/target/api-docs/ClearRule.md +27 -0
  329. thingsboard_cli/extension-starter/extension/target/api-docs/ClientAttributesQueryingSnmpCommunicationConfig.md +45 -0
  330. thingsboard_cli/extension-starter/extension/target/api-docs/CloudDomainId.md +22 -0
  331. thingsboard_cli/extension-starter/extension/target/api-docs/CloudDomainInfo.md +60 -0
  332. thingsboard_cli/extension-starter/extension/target/api-docs/CloudEndpointControllerApi.md +87 -0
  333. thingsboard_cli/extension-starter/extension/target/api-docs/CoapDeviceProfileTransportConfiguration.md +74 -0
  334. thingsboard_cli/extension-starter/extension/target/api-docs/CoapDeviceTransportConfiguration.md +37 -0
  335. thingsboard_cli/extension-starter/extension/target/api-docs/CoapDeviceTypeConfiguration.md +54 -0
  336. thingsboard_cli/extension-starter/extension/target/api-docs/ColorRange.md +24 -0
  337. thingsboard_cli/extension-starter/extension/target/api-docs/ColumnMapping.md +28 -0
  338. thingsboard_cli/extension-starter/extension/target/api-docs/ColumnSettings.md +59 -0
  339. thingsboard_cli/extension-starter/extension/target/api-docs/ComparisonDuration.md +31 -0
  340. thingsboard_cli/extension-starter/extension/target/api-docs/ComparisonTsValue.md +32 -0
  341. thingsboard_cli/extension-starter/extension/target/api-docs/ComplexFilterPredicate.md +35 -0
  342. thingsboard_cli/extension-starter/extension/target/api-docs/ComplexOperation.md +23 -0
  343. thingsboard_cli/extension-starter/extension/target/api-docs/ComplexVersionCreateRequest.md +53 -0
  344. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentClusteringMode.md +25 -0
  345. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentDescriptor.md +49 -0
  346. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentDescriptorControllerApi.md +84 -0
  347. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentDescriptorId.md +22 -0
  348. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentLifecycleEvent.md +41 -0
  349. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentScope.md +23 -0
  350. thingsboard_cli/extension-starter/extension/target/api-docs/ComponentType.md +33 -0
  351. thingsboard_cli/extension-starter/extension/target/api-docs/ContactBasedObject.md +33 -0
  352. thingsboard_cli/extension-starter/extension/target/api-docs/Converter.md +54 -0
  353. thingsboard_cli/extension-starter/extension/target/api-docs/ConverterControllerApi.md +245 -0
  354. thingsboard_cli/extension-starter/extension/target/api-docs/ConverterExportData.md +539 -0
  355. thingsboard_cli/extension-starter/extension/target/api-docs/ConverterId.md +30 -0
  356. thingsboard_cli/extension-starter/extension/target/api-docs/ConverterLibraryControllerApi.md +228 -0
  357. thingsboard_cli/extension-starter/extension/target/api-docs/ConverterType.md +23 -0
  358. thingsboard_cli/extension-starter/extension/target/api-docs/ConvertersInfo.md +24 -0
  359. thingsboard_cli/extension-starter/extension/target/api-docs/CouponDuration.md +25 -0
  360. thingsboard_cli/extension-starter/extension/target/api-docs/CouponId.md +30 -0
  361. thingsboard_cli/extension-starter/extension/target/api-docs/CreateReportRequest.md +23 -0
  362. thingsboard_cli/extension-starter/extension/target/api-docs/CsvReportTemplateConfig.md +1055 -0
  363. thingsboard_cli/extension-starter/extension/target/api-docs/CurrentOwnerDynamicSourceConfiguration.md +30 -0
  364. thingsboard_cli/extension-starter/extension/target/api-docs/CustomInterval.md +33 -0
  365. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenu.md +105 -0
  366. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuConfig.md +76 -0
  367. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuControllerApi.md +271 -0
  368. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuDeleteResult.md +40 -0
  369. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuId.md +22 -0
  370. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuInfo.md +49 -0
  371. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMenuItem.md +50 -0
  372. thingsboard_cli/extension-starter/extension/target/api-docs/CustomMobilePage.md +37 -0
  373. thingsboard_cli/extension-starter/extension/target/api-docs/CustomTimeSchedule.md +40 -0
  374. thingsboard_cli/extension-starter/extension/target/api-docs/CustomTimeScheduleItem.md +25 -0
  375. thingsboard_cli/extension-starter/extension/target/api-docs/CustomTranslationControllerApi.md +186 -0
  376. thingsboard_cli/extension-starter/extension/target/api-docs/Customer.md +52 -0
  377. thingsboard_cli/extension-starter/extension/target/api-docs/CustomerControllerApi.md +361 -0
  378. thingsboard_cli/extension-starter/extension/target/api-docs/CustomerExportData.md +539 -0
  379. thingsboard_cli/extension-starter/extension/target/api-docs/CustomerId.md +30 -0
  380. thingsboard_cli/extension-starter/extension/target/api-docs/CustomerInfo.md +60 -0
  381. thingsboard_cli/extension-starter/extension/target/api-docs/CustomerUsersFilter.md +31 -0
  382. thingsboard_cli/extension-starter/extension/target/api-docs/Dashboard.md +70 -0
  383. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardComponent.md +300 -0
  384. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardControllerApi.md +539 -0
  385. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardExportData.md +539 -0
  386. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardId.md +30 -0
  387. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardInfo.md +78 -0
  388. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardPage.md +37 -0
  389. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardReportConfig.md +31 -0
  390. thingsboard_cli/extension-starter/extension/target/api-docs/DashboardReportControllerApi.md +59 -0
  391. thingsboard_cli/extension-starter/extension/target/api-docs/DataKey.md +209 -0
  392. thingsboard_cli/extension-starter/extension/target/api-docs/DataKeyComparisonSettings.md +24 -0
  393. thingsboard_cli/extension-starter/extension/target/api-docs/DataKeySettings.md +153 -0
  394. thingsboard_cli/extension-starter/extension/target/api-docs/DataKeySettingsType.md +25 -0
  395. thingsboard_cli/extension-starter/extension/target/api-docs/DataSource.md +243 -0
  396. thingsboard_cli/extension-starter/extension/target/api-docs/DataSourceType.md +27 -0
  397. thingsboard_cli/extension-starter/extension/target/api-docs/DataType.md +29 -0
  398. thingsboard_cli/extension-starter/extension/target/api-docs/DayInterval.md +32 -0
  399. thingsboard_cli/extension-starter/extension/target/api-docs/DebugConverterEventFilter.md +49 -0
  400. thingsboard_cli/extension-starter/extension/target/api-docs/DebugIntegrationEventFilter.md +48 -0
  401. thingsboard_cli/extension-starter/extension/target/api-docs/DebugSettings.md +24 -0
  402. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultCoapDeviceTypeConfiguration.md +49 -0
  403. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDashboardParams.md +23 -0
  404. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDataKeySettings.md +33 -0
  405. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDeviceConfiguration.md +35 -0
  406. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDeviceProfileConfiguration.md +32 -0
  407. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDeviceProfileTransportConfiguration.md +30 -0
  408. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultDeviceTransportConfiguration.md +30 -0
  409. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultMenuItem.md +39 -0
  410. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultMobilePage.md +40 -0
  411. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultPageId.md +37 -0
  412. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultRuleChainCreateRequest.md +24 -0
  413. thingsboard_cli/extension-starter/extension/target/api-docs/DefaultTenantProfileConfiguration.md +122 -0
  414. thingsboard_cli/extension-starter/extension/target/api-docs/DeleteTenantRequest.md +23 -0
  415. thingsboard_cli/extension-starter/extension/target/api-docs/DeliveryMethodNotificationTemplate.md +74 -0
  416. thingsboard_cli/extension-starter/extension/target/api-docs/Device.md +114 -0
  417. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceActivityNotificationRuleTriggerConfig.md +39 -0
  418. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceActivityRecipientsConfig.md +34 -0
  419. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceConfiguration.md +34 -0
  420. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceConnectivityControllerApi.md +82 -0
  421. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceControllerApi.md +628 -0
  422. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceCredentials.md +45 -0
  423. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceCredentialsId.md +22 -0
  424. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceCredentialsType.md +27 -0
  425. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceData.md +91 -0
  426. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceEvent.md +23 -0
  427. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceExportData.md +559 -0
  428. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceGroupOtaPackage.md +36 -0
  429. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceGroupOtaPackageControllerApi.md +77 -0
  430. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceId.md +30 -0
  431. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceInfo.md +123 -0
  432. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfile.md +276 -0
  433. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileConfiguration.md +29 -0
  434. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileControllerApi.md +310 -0
  435. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileData.md +237 -0
  436. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileExportData.md +539 -0
  437. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileId.md +30 -0
  438. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileInfo.md +41 -0
  439. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileProvisionConfiguration.md +42 -0
  440. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileProvisionType.md +27 -0
  441. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileTransportConfiguration.md +205 -0
  442. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceProfileType.md +21 -0
  443. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceSearchQuery.md +47 -0
  444. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceSearchQueryFilter.md +54 -0
  445. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceTransportConfiguration.md +78 -0
  446. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceTransportType.md +29 -0
  447. thingsboard_cli/extension-starter/extension/target/api-docs/DeviceTypeFilter.md +33 -0
  448. thingsboard_cli/extension-starter/extension/target/api-docs/Direction.md +23 -0
  449. thingsboard_cli/extension-starter/extension/target/api-docs/DisabledDeviceProfileProvisionConfiguration.md +31 -0
  450. thingsboard_cli/extension-starter/extension/target/api-docs/Discount.md +40 -0
  451. thingsboard_cli/extension-starter/extension/target/api-docs/DividerComponent.md +61 -0
  452. thingsboard_cli/extension-starter/extension/target/api-docs/Domain.md +38 -0
  453. thingsboard_cli/extension-starter/extension/target/api-docs/DomainControllerApi.md +163 -0
  454. thingsboard_cli/extension-starter/extension/target/api-docs/DomainId.md +30 -0
  455. thingsboard_cli/extension-starter/extension/target/api-docs/DomainInfo.md +50 -0
  456. thingsboard_cli/extension-starter/extension/target/api-docs/DoughnutLayout.md +23 -0
  457. thingsboard_cli/extension-starter/extension/target/api-docs/DummyJobConfiguration.md +53 -0
  458. thingsboard_cli/extension-starter/extension/target/api-docs/DummyJobResult.md +49 -0
  459. thingsboard_cli/extension-starter/extension/target/api-docs/DummyTaskFailure.md +24 -0
  460. thingsboard_cli/extension-starter/extension/target/api-docs/DummyTaskResult.md +43 -0
  461. thingsboard_cli/extension-starter/extension/target/api-docs/DurationAlarmCondition.md +172 -0
  462. thingsboard_cli/extension-starter/extension/target/api-docs/DynamicValueBoolean.md +30 -0
  463. thingsboard_cli/extension-starter/extension/target/api-docs/DynamicValueDouble.md +30 -0
  464. thingsboard_cli/extension-starter/extension/target/api-docs/DynamicValueSourceType.md +27 -0
  465. thingsboard_cli/extension-starter/extension/target/api-docs/DynamicValueString.md +30 -0
  466. thingsboard_cli/extension-starter/extension/target/api-docs/Edge.md +49 -0
  467. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeCommunicationFailureNotificationRuleTriggerConfig.md +34 -0
  468. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeCommunicationFailureRecipientsConfig.md +34 -0
  469. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeConnectionNotificationRuleTriggerConfig.md +38 -0
  470. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeConnectionRecipientsConfig.md +34 -0
  471. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeConnectivityEvent.md +23 -0
  472. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeControllerApi.md +662 -0
  473. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeEvent.md +50 -0
  474. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeEventActionType.md +71 -0
  475. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeEventControllerApi.md +39 -0
  476. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeEventId.md +22 -0
  477. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeEventType.md +109 -0
  478. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeId.md +30 -0
  479. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeInfo.md +55 -0
  480. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeInstructions.md +22 -0
  481. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeLicenseType.md +23 -0
  482. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeSearchQuery.md +45 -0
  483. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeSearchQueryFilter.md +54 -0
  484. thingsboard_cli/extension-starter/extension/target/api-docs/EdgeTypeFilter.md +33 -0
  485. thingsboard_cli/extension-starter/extension/target/api-docs/EdqsApiMode.md +27 -0
  486. thingsboard_cli/extension-starter/extension/target/api-docs/EdqsState.md +32 -0
  487. thingsboard_cli/extension-starter/extension/target/api-docs/EdqsSyncRequest.md +27 -0
  488. thingsboard_cli/extension-starter/extension/target/api-docs/EdqsSyncStatus.md +27 -0
  489. thingsboard_cli/extension-starter/extension/target/api-docs/EfentoCoapDeviceTypeConfiguration.md +30 -0
  490. thingsboard_cli/extension-starter/extension/target/api-docs/EmailDeliveryMethodNotificationTemplate.md +33 -0
  491. thingsboard_cli/extension-starter/extension/target/api-docs/EmailTwoFaAccountConfig.md +32 -0
  492. thingsboard_cli/extension-starter/extension/target/api-docs/EmailTwoFaProviderConfig.md +31 -0
  493. thingsboard_cli/extension-starter/extension/target/api-docs/EnterpriseCaptchaParams.md +36 -0
  494. thingsboard_cli/extension-starter/extension/target/api-docs/EntitiesByGroupNameFilter.md +40 -0
  495. thingsboard_cli/extension-starter/extension/target/api-docs/EntitiesLimitNotificationRuleTriggerConfig.md +38 -0
  496. thingsboard_cli/extension-starter/extension/target/api-docs/EntitiesLimitRecipientsConfig.md +34 -0
  497. thingsboard_cli/extension-starter/extension/target/api-docs/EntitiesVersionControlControllerApi.md +325 -0
  498. thingsboard_cli/extension-starter/extension/target/api-docs/Entity.md +24 -0
  499. thingsboard_cli/extension-starter/extension/target/api-docs/EntityActionNotificationRuleTriggerConfig.md +40 -0
  500. thingsboard_cli/extension-starter/extension/target/api-docs/EntityActionRecipientsConfig.md +34 -0
  501. thingsboard_cli/extension-starter/extension/target/api-docs/EntityAggregationCalculatedFieldConfiguration.md +224 -0
  502. thingsboard_cli/extension-starter/extension/target/api-docs/EntityAlias.md +223 -0
  503. thingsboard_cli/extension-starter/extension/target/api-docs/EntityCoordinates.md +23 -0
  504. thingsboard_cli/extension-starter/extension/target/api-docs/EntityCountQuery.md +333 -0
  505. thingsboard_cli/extension-starter/extension/target/api-docs/EntityData.md +47 -0
  506. thingsboard_cli/extension-starter/extension/target/api-docs/EntityDataDiff.md +703 -0
  507. thingsboard_cli/extension-starter/extension/target/api-docs/EntityDataInfo.md +27 -0
  508. thingsboard_cli/extension-starter/extension/target/api-docs/EntityDataPageLink.md +46 -0
  509. thingsboard_cli/extension-starter/extension/target/api-docs/EntityDataQuery.md +354 -0
  510. thingsboard_cli/extension-starter/extension/target/api-docs/EntityDataSortOrder.md +37 -0
  511. thingsboard_cli/extension-starter/extension/target/api-docs/EntityExportData.md +701 -0
  512. thingsboard_cli/extension-starter/extension/target/api-docs/EntityExportSettings.md +27 -0
  513. thingsboard_cli/extension-starter/extension/target/api-docs/EntityFilter.md +220 -0
  514. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroup.md +99 -0
  515. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupControllerApi.md +972 -0
  516. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupExportData.md +568 -0
  517. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupFilter.md +38 -0
  518. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupId.md +30 -0
  519. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupInfo.md +98 -0
  520. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupListFilter.md +35 -0
  521. thingsboard_cli/extension-starter/extension/target/api-docs/EntityGroupNameFilter.md +35 -0
  522. thingsboard_cli/extension-starter/extension/target/api-docs/EntityId.md +186 -0
  523. thingsboard_cli/extension-starter/extension/target/api-docs/EntityInfo.md +30 -0
  524. thingsboard_cli/extension-starter/extension/target/api-docs/EntityKey.md +28 -0
  525. thingsboard_cli/extension-starter/extension/target/api-docs/EntityKeyType.md +33 -0
  526. thingsboard_cli/extension-starter/extension/target/api-docs/EntityKeyValueType.md +27 -0
  527. thingsboard_cli/extension-starter/extension/target/api-docs/EntityListFilter.md +35 -0
  528. thingsboard_cli/extension-starter/extension/target/api-docs/EntityLoadError.md +32 -0
  529. thingsboard_cli/extension-starter/extension/target/api-docs/EntityNameFilter.md +35 -0
  530. thingsboard_cli/extension-starter/extension/target/api-docs/EntityQueryControllerApi.md +203 -0
  531. thingsboard_cli/extension-starter/extension/target/api-docs/EntityRelation.md +39 -0
  532. thingsboard_cli/extension-starter/extension/target/api-docs/EntityRelationControllerApi.md +332 -0
  533. thingsboard_cli/extension-starter/extension/target/api-docs/EntityRelationInfo.md +39 -0
  534. thingsboard_cli/extension-starter/extension/target/api-docs/EntityRelationsQuery.md +53 -0
  535. thingsboard_cli/extension-starter/extension/target/api-docs/EntitySearchDirection.md +23 -0
  536. thingsboard_cli/extension-starter/extension/target/api-docs/EntitySubtype.md +31 -0
  537. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTableComponent.md +298 -0
  538. thingsboard_cli/extension-starter/extension/target/api-docs/EntityType.md +123 -0
  539. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTypeFilter.md +34 -0
  540. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTypeLoadResult.md +33 -0
  541. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTypeVersionCreateConfig.md +35 -0
  542. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTypeVersionLoadConfig.md +30 -0
  543. thingsboard_cli/extension-starter/extension/target/api-docs/EntityTypeVersionLoadRequest.md +49 -0
  544. thingsboard_cli/extension-starter/extension/target/api-docs/EntityVersion.md +25 -0
  545. thingsboard_cli/extension-starter/extension/target/api-docs/EntityView.md +56 -0
  546. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewControllerApi.md +389 -0
  547. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewExportData.md +539 -0
  548. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewId.md +30 -0
  549. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewInfo.md +62 -0
  550. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewSearchQuery.md +47 -0
  551. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewSearchQueryFilter.md +54 -0
  552. thingsboard_cli/extension-starter/extension/target/api-docs/EntityViewTypeFilter.md +33 -0
  553. thingsboard_cli/extension-starter/extension/target/api-docs/ErrorComponent.md +67 -0
  554. thingsboard_cli/extension-starter/extension/target/api-docs/ErrorComponentAllOfException.md +47 -0
  555. thingsboard_cli/extension-starter/extension/target/api-docs/ErrorComponentAllOfExceptionCause.md +38 -0
  556. thingsboard_cli/extension-starter/extension/target/api-docs/ErrorComponentAllOfExceptionCauseStackTrace.md +29 -0
  557. thingsboard_cli/extension-starter/extension/target/api-docs/ErrorEventFilter.md +37 -0
  558. thingsboard_cli/extension-starter/extension/target/api-docs/EscalatedNotificationRuleRecipientsConfig.md +36 -0
  559. thingsboard_cli/extension-starter/extension/target/api-docs/EventControllerApi.md +106 -0
  560. thingsboard_cli/extension-starter/extension/target/api-docs/EventFilter.md +121 -0
  561. thingsboard_cli/extension-starter/extension/target/api-docs/EventId.md +22 -0
  562. thingsboard_cli/extension-starter/extension/target/api-docs/EventInfo.md +40 -0
  563. thingsboard_cli/extension-starter/extension/target/api-docs/EventType.md +37 -0
  564. thingsboard_cli/extension-starter/extension/target/api-docs/ExportableEntity.md +32 -0
  565. thingsboard_cli/extension-starter/extension/target/api-docs/Failure.md +31 -0
  566. thingsboard_cli/extension-starter/extension/target/api-docs/Favicon.md +22 -0
  567. thingsboard_cli/extension-starter/extension/target/api-docs/FeaturesInfo.md +27 -0
  568. thingsboard_cli/extension-starter/extension/target/api-docs/Filter.md +135 -0
  569. thingsboard_cli/extension-starter/extension/target/api-docs/FilterPredicateValueBoolean.md +37 -0
  570. thingsboard_cli/extension-starter/extension/target/api-docs/FilterPredicateValueDouble.md +37 -0
  571. thingsboard_cli/extension-starter/extension/target/api-docs/FilterPredicateValueString.md +37 -0
  572. thingsboard_cli/extension-starter/extension/target/api-docs/FixedTimeWindow.md +23 -0
  573. thingsboard_cli/extension-starter/extension/target/api-docs/Font.md +33 -0
  574. thingsboard_cli/extension-starter/extension/target/api-docs/FontStyle.md +23 -0
  575. thingsboard_cli/extension-starter/extension/target/api-docs/FontWeight.md +25 -0
  576. thingsboard_cli/extension-starter/extension/target/api-docs/GeofencingCalculatedFieldConfiguration.md +138 -0
  577. thingsboard_cli/extension-starter/extension/target/api-docs/GeofencingReportStrategy.md +25 -0
  578. thingsboard_cli/extension-starter/extension/target/api-docs/GitHubModelsChatModelConfig.md +48 -0
  579. thingsboard_cli/extension-starter/extension/target/api-docs/GitHubModelsProviderConfig.md +22 -0
  580. thingsboard_cli/extension-starter/extension/target/api-docs/GoogleAiGeminiChatModelConfig.md +49 -0
  581. thingsboard_cli/extension-starter/extension/target/api-docs/GoogleAiGeminiProviderConfig.md +22 -0
  582. thingsboard_cli/extension-starter/extension/target/api-docs/GoogleVertexAiGeminiChatModelConfig.md +52 -0
  583. thingsboard_cli/extension-starter/extension/target/api-docs/GoogleVertexAiGeminiProviderConfig.md +25 -0
  584. thingsboard_cli/extension-starter/extension/target/api-docs/GroupPermission.md +40 -0
  585. thingsboard_cli/extension-starter/extension/target/api-docs/GroupPermissionControllerApi.md +183 -0
  586. thingsboard_cli/extension-starter/extension/target/api-docs/GroupPermissionId.md +30 -0
  587. thingsboard_cli/extension-starter/extension/target/api-docs/GroupPermissionInfo.md +63 -0
  588. thingsboard_cli/extension-starter/extension/target/api-docs/HasIdObject.md +22 -0
  589. thingsboard_cli/extension-starter/extension/target/api-docs/HeaderFooter.md +728 -0
  590. thingsboard_cli/extension-starter/extension/target/api-docs/Heading.md +49 -0
  591. thingsboard_cli/extension-starter/extension/target/api-docs/HeadingComponent.md +282 -0
  592. thingsboard_cli/extension-starter/extension/target/api-docs/History.md +46 -0
  593. thingsboard_cli/extension-starter/extension/target/api-docs/HomeDashboard.md +71 -0
  594. thingsboard_cli/extension-starter/extension/target/api-docs/HomeDashboardInfo.md +32 -0
  595. thingsboard_cli/extension-starter/extension/target/api-docs/HomeDashboardParams.md +23 -0
  596. thingsboard_cli/extension-starter/extension/target/api-docs/HomeMenuItem.md +53 -0
  597. thingsboard_cli/extension-starter/extension/target/api-docs/HomeMenuItemType.md +23 -0
  598. thingsboard_cli/extension-starter/extension/target/api-docs/HourInterval.md +32 -0
  599. thingsboard_cli/extension-starter/extension/target/api-docs/ImageAlignment.md +25 -0
  600. thingsboard_cli/extension-starter/extension/target/api-docs/ImageComponent.md +290 -0
  601. thingsboard_cli/extension-starter/extension/target/api-docs/ImageControllerApi.md +361 -0
  602. thingsboard_cli/extension-starter/extension/target/api-docs/ImageSourceType.md +23 -0
  603. thingsboard_cli/extension-starter/extension/target/api-docs/ImageWidthType.md +25 -0
  604. thingsboard_cli/extension-starter/extension/target/api-docs/Insets.md +25 -0
  605. thingsboard_cli/extension-starter/extension/target/api-docs/Integration.md +58 -0
  606. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationControllerApi.md +398 -0
  607. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationConvertersInfo.md +32 -0
  608. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationExportData.md +539 -0
  609. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationId.md +30 -0
  610. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationInfo.md +52 -0
  611. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationLifecycleEventNotificationRuleTriggerConfig.md +43 -0
  612. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationLifecycleEventRecipientsConfig.md +34 -0
  613. thingsboard_cli/extension-starter/extension/target/api-docs/IntegrationType.md +77 -0
  614. thingsboard_cli/extension-starter/extension/target/api-docs/Interval.md +28 -0
  615. thingsboard_cli/extension-starter/extension/target/api-docs/IntervalType.md +29 -0
  616. thingsboard_cli/extension-starter/extension/target/api-docs/Job.md +282 -0
  617. thingsboard_cli/extension-starter/extension/target/api-docs/JobConfiguration.md +223 -0
  618. thingsboard_cli/extension-starter/extension/target/api-docs/JobControllerApi.md +139 -0
  619. thingsboard_cli/extension-starter/extension/target/api-docs/JobId.md +30 -0
  620. thingsboard_cli/extension-starter/extension/target/api-docs/JobResult.md +79 -0
  621. thingsboard_cli/extension-starter/extension/target/api-docs/JobStatus.md +31 -0
  622. thingsboard_cli/extension-starter/extension/target/api-docs/JobType.md +25 -0
  623. thingsboard_cli/extension-starter/extension/target/api-docs/JsonTransportPayloadConfiguration.md +30 -0
  624. thingsboard_cli/extension-starter/extension/target/api-docs/JwtPair.md +31 -0
  625. thingsboard_cli/extension-starter/extension/target/api-docs/JwtSettings.md +27 -0
  626. thingsboard_cli/extension-starter/extension/target/api-docs/KeyFilter.md +128 -0
  627. thingsboard_cli/extension-starter/extension/target/api-docs/KeyFilterPredicate.md +113 -0
  628. thingsboard_cli/extension-starter/extension/target/api-docs/KeyInfo.md +33 -0
  629. thingsboard_cli/extension-starter/extension/target/api-docs/KeySample.md +25 -0
  630. thingsboard_cli/extension-starter/extension/target/api-docs/LastVisitedDashboardInfo.md +25 -0
  631. thingsboard_cli/extension-starter/extension/target/api-docs/LatestChartComponent.md +311 -0
  632. thingsboard_cli/extension-starter/extension/target/api-docs/LegendConfig.md +33 -0
  633. thingsboard_cli/extension-starter/extension/target/api-docs/LegendPosition.md +27 -0
  634. thingsboard_cli/extension-starter/extension/target/api-docs/LicenseUsageInfo.md +30 -0
  635. thingsboard_cli/extension-starter/extension/target/api-docs/LifeCycleEventFilter.md +46 -0
  636. thingsboard_cli/extension-starter/extension/target/api-docs/LimitedApi.md +91 -0
  637. thingsboard_cli/extension-starter/extension/target/api-docs/LineSeriesSettings.md +81 -0
  638. thingsboard_cli/extension-starter/extension/target/api-docs/LineSeriesStepType.md +25 -0
  639. thingsboard_cli/extension-starter/extension/target/api-docs/LinkType.md +23 -0
  640. thingsboard_cli/extension-starter/extension/target/api-docs/LoginEndpointApi.md +57 -0
  641. thingsboard_cli/extension-starter/extension/target/api-docs/LoginMobileInfo.md +97 -0
  642. thingsboard_cli/extension-starter/extension/target/api-docs/LoginRequest.md +23 -0
  643. thingsboard_cli/extension-starter/extension/target/api-docs/LoginResponse.md +23 -0
  644. thingsboard_cli/extension-starter/extension/target/api-docs/LoginWhiteLabelingParams.md +71 -0
  645. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2MBootstrapServerCredential.md +22 -0
  646. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2MServerSecurityConfigDefault.md +35 -0
  647. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2mInstance.md +35 -0
  648. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2mObject.md +45 -0
  649. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2mResourceObserve.md +27 -0
  650. thingsboard_cli/extension-starter/extension/target/api-docs/LwM2mVersion.md +22 -0
  651. thingsboard_cli/extension-starter/extension/target/api-docs/Lwm2mControllerApi.md +58 -0
  652. thingsboard_cli/extension-starter/extension/target/api-docs/Lwm2mDeviceProfileTransportConfiguration.md +92 -0
  653. thingsboard_cli/extension-starter/extension/target/api-docs/Lwm2mDeviceTransportConfiguration.md +37 -0
  654. thingsboard_cli/extension-starter/extension/target/api-docs/MailConfigTemplateControllerApi.md +25 -0
  655. thingsboard_cli/extension-starter/extension/target/api-docs/MapperType.md +27 -0
  656. thingsboard_cli/extension-starter/extension/target/api-docs/Mapping.md +36 -0
  657. thingsboard_cli/extension-starter/extension/target/api-docs/MenuItem.md +73 -0
  658. thingsboard_cli/extension-starter/extension/target/api-docs/MenuItemType.md +25 -0
  659. thingsboard_cli/extension-starter/extension/target/api-docs/MergedGroupPermissionInfo.md +31 -0
  660. thingsboard_cli/extension-starter/extension/target/api-docs/MergedGroupTypePermissionInfo.md +30 -0
  661. thingsboard_cli/extension-starter/extension/target/api-docs/MergedUserPermissions.md +49 -0
  662. thingsboard_cli/extension-starter/extension/target/api-docs/MicrosoftTeamsDeliveryMethodNotificationTemplate.md +49 -0
  663. thingsboard_cli/extension-starter/extension/target/api-docs/MicrosoftTeamsNotificationTargetConfig.md +39 -0
  664. thingsboard_cli/extension-starter/extension/target/api-docs/MistralAiChatModelConfig.md +48 -0
  665. thingsboard_cli/extension-starter/extension/target/api-docs/MistralAiProviderConfig.md +22 -0
  666. thingsboard_cli/extension-starter/extension/target/api-docs/MobileApp.md +62 -0
  667. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppBundle.md +197 -0
  668. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppBundleControllerApi.md +138 -0
  669. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppBundleId.md +30 -0
  670. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppBundleInfo.md +212 -0
  671. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppControllerApi.md +162 -0
  672. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppDeliveryMethodNotificationTemplate.md +34 -0
  673. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppId.md +30 -0
  674. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppNotificationDeliveryMethodConfig.md +33 -0
  675. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppStatus.md +27 -0
  676. thingsboard_cli/extension-starter/extension/target/api-docs/MobileAppVersionInfo.md +25 -0
  677. thingsboard_cli/extension-starter/extension/target/api-docs/MobileLayoutConfig.md +64 -0
  678. thingsboard_cli/extension-starter/extension/target/api-docs/MobilePage.md +63 -0
  679. thingsboard_cli/extension-starter/extension/target/api-docs/MobilePageType.md +27 -0
  680. thingsboard_cli/extension-starter/extension/target/api-docs/MobileRedirectParams.md +23 -0
  681. thingsboard_cli/extension-starter/extension/target/api-docs/MobileSelfRegistrationParams.md +130 -0
  682. thingsboard_cli/extension-starter/extension/target/api-docs/MobileSessionInfo.md +22 -0
  683. thingsboard_cli/extension-starter/extension/target/api-docs/Model.md +24 -0
  684. thingsboard_cli/extension-starter/extension/target/api-docs/MonthInterval.md +32 -0
  685. thingsboard_cli/extension-starter/extension/target/api-docs/MqttDeviceProfileTransportConfiguration.md +55 -0
  686. thingsboard_cli/extension-starter/extension/target/api-docs/MqttDeviceTransportConfiguration.md +30 -0
  687. thingsboard_cli/extension-starter/extension/target/api-docs/NameConflictPolicy.md +23 -0
  688. thingsboard_cli/extension-starter/extension/target/api-docs/NewPlatformVersionNotificationRuleTriggerConfig.md +33 -0
  689. thingsboard_cli/extension-starter/extension/target/api-docs/NewPlatformVersionRecipientsConfig.md +34 -0
  690. thingsboard_cli/extension-starter/extension/target/api-docs/NoDataFilterPredicate.md +41 -0
  691. thingsboard_cli/extension-starter/extension/target/api-docs/NoSecLwM2MBootstrapServerCredential.md +42 -0
  692. thingsboard_cli/extension-starter/extension/target/api-docs/NodeConnectionInfo.md +24 -0
  693. thingsboard_cli/extension-starter/extension/target/api-docs/None.md +30 -0
  694. thingsboard_cli/extension-starter/extension/target/api-docs/Notification.md +55 -0
  695. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationControllerApi.md +468 -0
  696. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationDeliveryMethod.md +31 -0
  697. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationDeliveryMethodConfig.md +36 -0
  698. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationId.md +30 -0
  699. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationInfo.md +31 -0
  700. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationPref.md +23 -0
  701. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequest.md +138 -0
  702. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestConfig.md +30 -0
  703. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestId.md +30 -0
  704. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestInfo.md +143 -0
  705. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestPreview.md +78 -0
  706. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestStats.md +28 -0
  707. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRequestStatus.md +25 -0
  708. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRule.md +268 -0
  709. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleConfig.md +22 -0
  710. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleControllerApi.md +111 -0
  711. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleExportData.md +539 -0
  712. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleId.md +30 -0
  713. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleInfo.md +273 -0
  714. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleRecipientsConfig.md +104 -0
  715. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleTriggerConfig.md +171 -0
  716. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationRuleTriggerType.md +49 -0
  717. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationSettings.md +41 -0
  718. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationStatus.md +23 -0
  719. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTarget.md +121 -0
  720. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTargetConfig.md +109 -0
  721. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTargetControllerApi.md +193 -0
  722. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTargetExportData.md +539 -0
  723. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTargetId.md +30 -0
  724. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTemplate.md +97 -0
  725. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTemplateConfig.md +84 -0
  726. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTemplateControllerApi.md +138 -0
  727. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTemplateExportData.md +539 -0
  728. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationTemplateId.md +30 -0
  729. thingsboard_cli/extension-starter/extension/target/api-docs/NotificationType.md +67 -0
  730. thingsboard_cli/extension-starter/extension/target/api-docs/NumericFilterPredicate.md +53 -0
  731. thingsboard_cli/extension-starter/extension/target/api-docs/NumericOperation.md +31 -0
  732. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2BasicMapperConfig.md +36 -0
  733. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2Client.md +89 -0
  734. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ClientId.md +30 -0
  735. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ClientInfo.md +37 -0
  736. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ClientLoginInfo.md +24 -0
  737. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ClientRegistrationTemplate.md +82 -0
  738. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ClientRegistrationTemplateId.md +22 -0
  739. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ConfigTemplateControllerApi.md +75 -0
  740. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2ControllerApi.md +180 -0
  741. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2CustomMapperConfig.md +25 -0
  742. thingsboard_cli/extension-starter/extension/target/api-docs/OAuth2MapperConfig.md +56 -0
  743. thingsboard_cli/extension-starter/extension/target/api-docs/ObjectAttributes.md +40 -0
  744. thingsboard_cli/extension-starter/extension/target/api-docs/ObjectType.md +117 -0
  745. thingsboard_cli/extension-starter/extension/target/api-docs/OllamaAuth.md +40 -0
  746. thingsboard_cli/extension-starter/extension/target/api-docs/OllamaChatModelConfig.md +68 -0
  747. thingsboard_cli/extension-starter/extension/target/api-docs/OllamaProviderConfig.md +44 -0
  748. thingsboard_cli/extension-starter/extension/target/api-docs/OpenAiChatModelConfig.md +49 -0
  749. thingsboard_cli/extension-starter/extension/target/api-docs/OpenAiProviderConfig.md +23 -0
  750. thingsboard_cli/extension-starter/extension/target/api-docs/Operation.md +61 -0
  751. thingsboard_cli/extension-starter/extension/target/api-docs/OriginatorEntityOwnerUsersFilter.md +30 -0
  752. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackage.md +52 -0
  753. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackageControllerApi.md +251 -0
  754. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackageExportData.md +539 -0
  755. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackageId.md +30 -0
  756. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackageInfo.md +51 -0
  757. thingsboard_cli/extension-starter/extension/target/api-docs/OtaPackageType.md +23 -0
  758. thingsboard_cli/extension-starter/extension/target/api-docs/OtherConfiguration.md +37 -0
  759. thingsboard_cli/extension-starter/extension/target/api-docs/Output.md +77 -0
  760. thingsboard_cli/extension-starter/extension/target/api-docs/OwnerControllerApi.md +63 -0
  761. thingsboard_cli/extension-starter/extension/target/api-docs/PSKLwM2MBootstrapServerCredential.md +42 -0
  762. thingsboard_cli/extension-starter/extension/target/api-docs/PageBreakComponent.md +37 -0
  763. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAiModel.md +248 -0
  764. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAlarmCommentInfo.md +54 -0
  765. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAlarmData.md +86 -0
  766. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAlarmInfo.md +77 -0
  767. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAlarmRuleDefinition.md +496 -0
  768. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAlarmRuleDefinitionInfo.md +497 -0
  769. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataApiKeyInfo.md +44 -0
  770. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAsset.md +47 -0
  771. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAssetInfo.md +55 -0
  772. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAssetProfile.md +48 -0
  773. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAssetProfileInfo.md +41 -0
  774. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataAuditLog.md +59 -0
  775. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataBlobEntityWithCustomerInfo.md +47 -0
  776. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataCalculatedField.md +500 -0
  777. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataCalculatedFieldInfo.md +501 -0
  778. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataContactBasedObject.md +43 -0
  779. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataConverter.md +62 -0
  780. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataCustomMenuInfo.md +55 -0
  781. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataCustomer.md +60 -0
  782. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataCustomerInfo.md +68 -0
  783. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDashboardInfo.md +86 -0
  784. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDevice.md +122 -0
  785. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDeviceInfo.md +131 -0
  786. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDeviceProfile.md +282 -0
  787. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDeviceProfileInfo.md +49 -0
  788. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataDomainInfo.md +58 -0
  789. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEdge.md +55 -0
  790. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEdgeEvent.md +58 -0
  791. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEdgeInfo.md +63 -0
  792. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityData.md +55 -0
  793. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityGroupInfo.md +48 -0
  794. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityInfo.md +38 -0
  795. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntitySubtype.md +39 -0
  796. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityVersion.md +35 -0
  797. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityView.md +62 -0
  798. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEntityViewInfo.md +70 -0
  799. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataEventInfo.md +48 -0
  800. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataIntegration.md +64 -0
  801. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataIntegrationInfo.md +60 -0
  802. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataJob.md +290 -0
  803. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataMobileApp.md +68 -0
  804. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataMobileAppBundleInfo.md +220 -0
  805. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataNotification.md +63 -0
  806. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataNotificationRequestInfo.md +151 -0
  807. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataNotificationRuleInfo.md +281 -0
  808. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataNotificationTarget.md +129 -0
  809. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataNotificationTemplate.md +105 -0
  810. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataOAuth2ClientInfo.md +45 -0
  811. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataOtaPackageInfo.md +59 -0
  812. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataQueue.md +69 -0
  813. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataQueueStats.md +41 -0
  814. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataReport.md +48 -0
  815. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataReportInfo.md +57 -0
  816. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataReportTemplateInfo.md +53 -0
  817. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataRole.md +50 -0
  818. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataRuleChain.md +50 -0
  819. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataScheduledReportInfo.md +57 -0
  820. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataSchedulerEventInfo.md +48 -0
  821. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataSchedulerEventWithCustomerInfo.md +51 -0
  822. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataSecretInfo.md +45 -0
  823. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataShortEntityView.md +38 -0
  824. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataString.md +25 -0
  825. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataTbResourceInfo.md +58 -0
  826. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataTenant.md +82 -0
  827. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataTenantInfo.md +83 -0
  828. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataTenantProfile.md +184 -0
  829. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataTrendzViewConfigLite.md +33 -0
  830. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataUser.md +58 -0
  831. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataUserEmailInfo.md +40 -0
  832. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataUserInfo.md +66 -0
  833. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataWidgetTypeInfo.md +55 -0
  834. thingsboard_cli/extension-starter/extension/target/api-docs/PageDataWidgetsBundle.md +47 -0
  835. thingsboard_cli/extension-starter/extension/target/api-docs/PageOrientation.md +23 -0
  836. thingsboard_cli/extension-starter/extension/target/api-docs/PageSize.md +31 -0
  837. thingsboard_cli/extension-starter/extension/target/api-docs/Palette.md +24 -0
  838. thingsboard_cli/extension-starter/extension/target/api-docs/PaletteSettings.md +32 -0
  839. thingsboard_cli/extension-starter/extension/target/api-docs/PdfReportTemplateConfig.md +1074 -0
  840. thingsboard_cli/extension-starter/extension/target/api-docs/PieChartLabelPosition.md +23 -0
  841. thingsboard_cli/extension-starter/extension/target/api-docs/PlatformTwoFaSettings.md +59 -0
  842. thingsboard_cli/extension-starter/extension/target/api-docs/PlatformType.md +25 -0
  843. thingsboard_cli/extension-starter/extension/target/api-docs/PlatformUsersNotificationTargetConfig.md +78 -0
  844. thingsboard_cli/extension-starter/extension/target/api-docs/PowerMode.md +25 -0
  845. thingsboard_cli/extension-starter/extension/target/api-docs/PowerSavingConfiguration.md +30 -0
  846. thingsboard_cli/extension-starter/extension/target/api-docs/PrivacyProtocol.md +27 -0
  847. thingsboard_cli/extension-starter/extension/target/api-docs/ProcessingStrategy.md +31 -0
  848. thingsboard_cli/extension-starter/extension/target/api-docs/ProcessingStrategyType.md +31 -0
  849. thingsboard_cli/extension-starter/extension/target/api-docs/ProductId.md +30 -0
  850. thingsboard_cli/extension-starter/extension/target/api-docs/PropagationCalculatedFieldConfiguration.md +138 -0
  851. thingsboard_cli/extension-starter/extension/target/api-docs/ProtoTransportPayloadConfiguration.md +36 -0
  852. thingsboard_cli/extension-starter/extension/target/api-docs/QRCodeConfig.md +31 -0
  853. thingsboard_cli/extension-starter/extension/target/api-docs/QrCodeSettings.md +58 -0
  854. thingsboard_cli/extension-starter/extension/target/api-docs/QrCodeSettingsControllerApi.md +134 -0
  855. thingsboard_cli/extension-starter/extension/target/api-docs/QrCodeSettingsId.md +22 -0
  856. thingsboard_cli/extension-starter/extension/target/api-docs/QuarterInterval.md +32 -0
  857. thingsboard_cli/extension-starter/extension/target/api-docs/Queue.md +63 -0
  858. thingsboard_cli/extension-starter/extension/target/api-docs/QueueControllerApi.md +138 -0
  859. thingsboard_cli/extension-starter/extension/target/api-docs/QueueId.md +30 -0
  860. thingsboard_cli/extension-starter/extension/target/api-docs/QueueStats.md +33 -0
  861. thingsboard_cli/extension-starter/extension/target/api-docs/QueueStatsControllerApi.md +86 -0
  862. thingsboard_cli/extension-starter/extension/target/api-docs/QueueStatsId.md +30 -0
  863. thingsboard_cli/extension-starter/extension/target/api-docs/QuickTimeInterval.md +67 -0
  864. thingsboard_cli/extension-starter/extension/target/api-docs/RPKLwM2MBootstrapServerCredential.md +42 -0
  865. thingsboard_cli/extension-starter/extension/target/api-docs/RateLimitsNotificationRuleTriggerConfig.md +37 -0
  866. thingsboard_cli/extension-starter/extension/target/api-docs/RateLimitsRecipientsConfig.md +34 -0
  867. thingsboard_cli/extension-starter/extension/target/api-docs/RawDataEventFilter.md +38 -0
  868. thingsboard_cli/extension-starter/extension/target/api-docs/ReadTsKvQueryResult.md +44 -0
  869. thingsboard_cli/extension-starter/extension/target/api-docs/ReferencedEntityKey.md +32 -0
  870. thingsboard_cli/extension-starter/extension/target/api-docs/RefreshTokenRequest.md +22 -0
  871. thingsboard_cli/extension-starter/extension/target/api-docs/RelatedEntitiesAggregationCalculatedFieldConfiguration.md +167 -0
  872. thingsboard_cli/extension-starter/extension/target/api-docs/RelationEntityTypeFilter.md +29 -0
  873. thingsboard_cli/extension-starter/extension/target/api-docs/RelationPathLevel.md +28 -0
  874. thingsboard_cli/extension-starter/extension/target/api-docs/RelationPathQueryDynamicSourceConfiguration.md +40 -0
  875. thingsboard_cli/extension-starter/extension/target/api-docs/RelationTypeGroup.md +33 -0
  876. thingsboard_cli/extension-starter/extension/target/api-docs/RelationsQueryFilter.md +64 -0
  877. thingsboard_cli/extension-starter/extension/target/api-docs/RelationsSearchParameters.md +38 -0
  878. thingsboard_cli/extension-starter/extension/target/api-docs/RepeatingAlarmCondition.md +177 -0
  879. thingsboard_cli/extension-starter/extension/target/api-docs/Report.md +40 -0
  880. thingsboard_cli/extension-starter/extension/target/api-docs/ReportBarChartSettings.md +99 -0
  881. thingsboard_cli/extension-starter/extension/target/api-docs/ReportBarChartWithLabelsSettings.md +244 -0
  882. thingsboard_cli/extension-starter/extension/target/api-docs/ReportComponent.md +723 -0
  883. thingsboard_cli/extension-starter/extension/target/api-docs/ReportComponentSubType.md +41 -0
  884. thingsboard_cli/extension-starter/extension/target/api-docs/ReportComponentType.md +47 -0
  885. thingsboard_cli/extension-starter/extension/target/api-docs/ReportControllerApi.md +231 -0
  886. thingsboard_cli/extension-starter/extension/target/api-docs/ReportDoughnutChartSettings.md +67 -0
  887. thingsboard_cli/extension-starter/extension/target/api-docs/ReportId.md +30 -0
  888. thingsboard_cli/extension-starter/extension/target/api-docs/ReportInfo.md +49 -0
  889. thingsboard_cli/extension-starter/extension/target/api-docs/ReportJobConfiguration.md +202 -0
  890. thingsboard_cli/extension-starter/extension/target/api-docs/ReportJobResult.md +71 -0
  891. thingsboard_cli/extension-starter/extension/target/api-docs/ReportLatestChartSettings.md +60 -0
  892. thingsboard_cli/extension-starter/extension/target/api-docs/ReportPieChartSettings.md +71 -0
  893. thingsboard_cli/extension-starter/extension/target/api-docs/ReportRangeChartSettings.md +274 -0
  894. thingsboard_cli/extension-starter/extension/target/api-docs/ReportRequest.md +1086 -0
  895. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTaskResult.md +57 -0
  896. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplate.md +1095 -0
  897. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateConfig.md +1077 -0
  898. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateControllerApi.md +164 -0
  899. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateExportData.md +539 -0
  900. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateId.md +30 -0
  901. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateInfo.md +45 -0
  902. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTemplateType.md +23 -0
  903. thingsboard_cli/extension-starter/extension/target/api-docs/ReportTimeSeriesChartSettings.md +216 -0
  904. thingsboard_cli/extension-starter/extension/target/api-docs/RepositoryAuthMethod.md +23 -0
  905. thingsboard_cli/extension-starter/extension/target/api-docs/RepositorySettings.md +39 -0
  906. thingsboard_cli/extension-starter/extension/target/api-docs/RepositorySettingsInfo.md +23 -0
  907. thingsboard_cli/extension-starter/extension/target/api-docs/ResetPasswordEmailRequest.md +24 -0
  908. thingsboard_cli/extension-starter/extension/target/api-docs/ResetPasswordRequest.md +25 -0
  909. thingsboard_cli/extension-starter/extension/target/api-docs/Resource.md +129 -0
  910. thingsboard_cli/extension-starter/extension/target/api-docs/ResourceExportData.md +40 -0
  911. thingsboard_cli/extension-starter/extension/target/api-docs/ResourceShortageRecipientsConfig.md +34 -0
  912. thingsboard_cli/extension-starter/extension/target/api-docs/ResourceSubType.md +27 -0
  913. thingsboard_cli/extension-starter/extension/target/api-docs/ResourceType.md +33 -0
  914. thingsboard_cli/extension-starter/extension/target/api-docs/ResourcesShortageNotificationRuleTriggerConfig.md +36 -0
  915. thingsboard_cli/extension-starter/extension/target/api-docs/RichTextComponent.md +277 -0
  916. thingsboard_cli/extension-starter/extension/target/api-docs/Role.md +44 -0
  917. thingsboard_cli/extension-starter/extension/target/api-docs/RoleControllerApi.md +137 -0
  918. thingsboard_cli/extension-starter/extension/target/api-docs/RoleExportData.md +539 -0
  919. thingsboard_cli/extension-starter/extension/target/api-docs/RoleId.md +30 -0
  920. thingsboard_cli/extension-starter/extension/target/api-docs/RoleType.md +23 -0
  921. thingsboard_cli/extension-starter/extension/target/api-docs/Rpc.md +40 -0
  922. thingsboard_cli/extension-starter/extension/target/api-docs/RpcId.md +30 -0
  923. thingsboard_cli/extension-starter/extension/target/api-docs/RpcStatus.md +35 -0
  924. thingsboard_cli/extension-starter/extension/target/api-docs/RpcV1ControllerApi.md +59 -0
  925. thingsboard_cli/extension-starter/extension/target/api-docs/RpcV2ControllerApi.md +140 -0
  926. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChain.md +44 -0
  927. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainConnectionInfo.md +32 -0
  928. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainControllerApi.md +583 -0
  929. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainData.md +99 -0
  930. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainDebugEventFilter.md +46 -0
  931. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainExportData.md +582 -0
  932. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainId.md +30 -0
  933. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainImportResult.md +32 -0
  934. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainMetaData.md +75 -0
  935. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainOutputLabelsUsage.md +33 -0
  936. thingsboard_cli/extension-starter/extension/target/api-docs/RuleChainType.md +23 -0
  937. thingsboard_cli/extension-starter/extension/target/api-docs/RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig.md +42 -0
  938. thingsboard_cli/extension-starter/extension/target/api-docs/RuleEngineComponentLifecycleEventRecipientsConfig.md +34 -0
  939. thingsboard_cli/extension-starter/extension/target/api-docs/RuleEngineControllerApi.md +116 -0
  940. thingsboard_cli/extension-starter/extension/target/api-docs/RuleNode.md +48 -0
  941. thingsboard_cli/extension-starter/extension/target/api-docs/RuleNodeDebugEventFilter.md +68 -0
  942. thingsboard_cli/extension-starter/extension/target/api-docs/RuleNodeId.md +30 -0
  943. thingsboard_cli/extension-starter/extension/target/api-docs/SaveDeviceWithCredentialsRequest.md +141 -0
  944. thingsboard_cli/extension-starter/extension/target/api-docs/SaveOtaPackageInfoRequest.md +54 -0
  945. thingsboard_cli/extension-starter/extension/target/api-docs/ScheduledReportInfo.md +49 -0
  946. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEvent.md +43 -0
  947. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventControllerApi.md +382 -0
  948. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventExportData.md +539 -0
  949. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventFilter.md +47 -0
  950. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventId.md +30 -0
  951. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventInfo.md +40 -0
  952. thingsboard_cli/extension-starter/extension/target/api-docs/SchedulerEventWithCustomerInfo.md +43 -0
  953. thingsboard_cli/extension-starter/extension/target/api-docs/ScriptCalculatedFieldConfiguration.md +136 -0
  954. thingsboard_cli/extension-starter/extension/target/api-docs/ScriptLanguage.md +23 -0
  955. thingsboard_cli/extension-starter/extension/target/api-docs/Secret.md +41 -0
  956. thingsboard_cli/extension-starter/extension/target/api-docs/SecretControllerApi.md +206 -0
  957. thingsboard_cli/extension-starter/extension/target/api-docs/SecretId.md +30 -0
  958. thingsboard_cli/extension-starter/extension/target/api-docs/SecretInfo.md +37 -0
  959. thingsboard_cli/extension-starter/extension/target/api-docs/SecretType.md +23 -0
  960. thingsboard_cli/extension-starter/extension/target/api-docs/SecuritySettings.md +45 -0
  961. thingsboard_cli/extension-starter/extension/target/api-docs/SelfRegistrationControllerApi.md +144 -0
  962. thingsboard_cli/extension-starter/extension/target/api-docs/SelfRegistrationParams.md +137 -0
  963. thingsboard_cli/extension-starter/extension/target/api-docs/SelfRegistrationType.md +23 -0
  964. thingsboard_cli/extension-starter/extension/target/api-docs/ShareGroupRequest.md +35 -0
  965. thingsboard_cli/extension-starter/extension/target/api-docs/SharedAttributesSettingSnmpCommunicationConfig.md +44 -0
  966. thingsboard_cli/extension-starter/extension/target/api-docs/ShortCustomerInfo.md +31 -0
  967. thingsboard_cli/extension-starter/extension/target/api-docs/ShortEntityView.md +30 -0
  968. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpControllerApi.md +399 -0
  969. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpField.md +29 -0
  970. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpFieldId.md +43 -0
  971. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpRequest.md +33 -0
  972. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpResult.md +23 -0
  973. thingsboard_cli/extension-starter/extension/target/api-docs/SignUpSelfRegistrationParams.md +67 -0
  974. thingsboard_cli/extension-starter/extension/target/api-docs/SimpleAlarmCondition.md +170 -0
  975. thingsboard_cli/extension-starter/extension/target/api-docs/SimpleAlarmConditionExpression.md +118 -0
  976. thingsboard_cli/extension-starter/extension/target/api-docs/SimpleCalculatedFieldConfiguration.md +137 -0
  977. thingsboard_cli/extension-starter/extension/target/api-docs/SimpleEntity.md +23 -0
  978. thingsboard_cli/extension-starter/extension/target/api-docs/SingleEntityFilter.md +44 -0
  979. thingsboard_cli/extension-starter/extension/target/api-docs/SingleEntityVersionCreateRequest.md +52 -0
  980. thingsboard_cli/extension-starter/extension/target/api-docs/SingleEntityVersionLoadRequest.md +53 -0
  981. thingsboard_cli/extension-starter/extension/target/api-docs/SlackConversation.md +32 -0
  982. thingsboard_cli/extension-starter/extension/target/api-docs/SlackConversationType.md +25 -0
  983. thingsboard_cli/extension-starter/extension/target/api-docs/SlackDeliveryMethodNotificationTemplate.md +32 -0
  984. thingsboard_cli/extension-starter/extension/target/api-docs/SlackNotificationDeliveryMethodConfig.md +31 -0
  985. thingsboard_cli/extension-starter/extension/target/api-docs/SlackNotificationTargetConfig.md +46 -0
  986. thingsboard_cli/extension-starter/extension/target/api-docs/SmppBindType.md +25 -0
  987. thingsboard_cli/extension-starter/extension/target/api-docs/SmppSmsProviderConfiguration.md +55 -0
  988. thingsboard_cli/extension-starter/extension/target/api-docs/SmsDeliveryMethodNotificationTemplate.md +32 -0
  989. thingsboard_cli/extension-starter/extension/target/api-docs/SmsProviderConfiguration.md +64 -0
  990. thingsboard_cli/extension-starter/extension/target/api-docs/SmsTwoFaAccountConfig.md +32 -0
  991. thingsboard_cli/extension-starter/extension/target/api-docs/SmsTwoFaProviderConfig.md +32 -0
  992. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpCommunicationConfig.md +68 -0
  993. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpCommunicationSpec.md +29 -0
  994. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpDeviceProfileTransportConfiguration.md +78 -0
  995. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpDeviceTransportConfiguration.md +51 -0
  996. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpMapping.md +29 -0
  997. thingsboard_cli/extension-starter/extension/target/api-docs/SnmpProtocolVersion.md +25 -0
  998. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionControllerApi.md +125 -0
  999. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionData.md +704 -0
  1000. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionExportImportControllerApi.md +82 -0
  1001. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionExportRequest.md +42 -0
  1002. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionExportResponse.md +710 -0
  1003. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionImportResult.md +26 -0
  1004. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionInstallResponse.md +34 -0
  1005. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionStep.md +23 -0
  1006. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionTemplateLevel.md +25 -0
  1007. thingsboard_cli/extension-starter/extension/target/api-docs/SolutionValidationResult.md +27 -0
  1008. thingsboard_cli/extension-starter/extension/target/api-docs/SpecificTimeSchedule.md +34 -0
  1009. thingsboard_cli/extension-starter/extension/target/api-docs/SplitViewComponent.md +60 -0
  1010. thingsboard_cli/extension-starter/extension/target/api-docs/StarredDashboardInfo.md +24 -0
  1011. thingsboard_cli/extension-starter/extension/target/api-docs/StateEntityFilter.md +44 -0
  1012. thingsboard_cli/extension-starter/extension/target/api-docs/StateEntityOwnerFilter.md +45 -0
  1013. thingsboard_cli/extension-starter/extension/target/api-docs/StatisticsEventFilter.md +39 -0
  1014. thingsboard_cli/extension-starter/extension/target/api-docs/StoreInfo.md +24 -0
  1015. thingsboard_cli/extension-starter/extension/target/api-docs/StringFilterPredicate.md +54 -0
  1016. thingsboard_cli/extension-starter/extension/target/api-docs/StringOperation.md +35 -0
  1017. thingsboard_cli/extension-starter/extension/target/api-docs/SubReportComponent.md +264 -0
  1018. thingsboard_cli/extension-starter/extension/target/api-docs/SubmitStrategy.md +28 -0
  1019. thingsboard_cli/extension-starter/extension/target/api-docs/SubmitStrategyType.md +29 -0
  1020. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionAddonId.md +30 -0
  1021. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionControllerApi.md +94 -0
  1022. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionDetails.md +90 -0
  1023. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionEntry.md +47 -0
  1024. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionExceptionErrorCode.md +35 -0
  1025. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionId.md +30 -0
  1026. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionItems.md +36 -0
  1027. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionPlanId.md +30 -0
  1028. thingsboard_cli/extension-starter/extension/target/api-docs/SubscriptionUsage.md +41 -0
  1029. thingsboard_cli/extension-starter/extension/target/api-docs/Success.md +31 -0
  1030. thingsboard_cli/extension-starter/extension/target/api-docs/SyncStrategy.md +23 -0
  1031. thingsboard_cli/extension-starter/extension/target/api-docs/SystemAdministratorsFilter.md +30 -0
  1032. thingsboard_cli/extension-starter/extension/target/api-docs/SystemInfo.md +37 -0
  1033. thingsboard_cli/extension-starter/extension/target/api-docs/SystemInfoData.md +29 -0
  1034. thingsboard_cli/extension-starter/extension/target/api-docs/TableSortDirection.md +23 -0
  1035. thingsboard_cli/extension-starter/extension/target/api-docs/TableSortOrder.md +28 -0
  1036. thingsboard_cli/extension-starter/extension/target/api-docs/TaskProcessingFailureNotificationRuleTriggerConfig.md +33 -0
  1037. thingsboard_cli/extension-starter/extension/target/api-docs/TaskProcessingFailureRecipientsConfig.md +34 -0
  1038. thingsboard_cli/extension-starter/extension/target/api-docs/TaskResult.md +27 -0
  1039. thingsboard_cli/extension-starter/extension/target/api-docs/TbChatRequest.md +247 -0
  1040. thingsboard_cli/extension-starter/extension/target/api-docs/TbChatResponse.md +36 -0
  1041. thingsboard_cli/extension-starter/extension/target/api-docs/TbContent.md +29 -0
  1042. thingsboard_cli/extension-starter/extension/target/api-docs/TbImageDeleteResult.md +49 -0
  1043. thingsboard_cli/extension-starter/extension/target/api-docs/TbReportFormat.md +23 -0
  1044. thingsboard_cli/extension-starter/extension/target/api-docs/TbResource.md +54 -0
  1045. thingsboard_cli/extension-starter/extension/target/api-docs/TbResourceControllerApi.md +508 -0
  1046. thingsboard_cli/extension-starter/extension/target/api-docs/TbResourceDeleteResult.md +36 -0
  1047. thingsboard_cli/extension-starter/extension/target/api-docs/TbResourceExportData.md +539 -0
  1048. thingsboard_cli/extension-starter/extension/target/api-docs/TbResourceId.md +30 -0
  1049. thingsboard_cli/extension-starter/extension/target/api-docs/TbResourceInfo.md +52 -0
  1050. thingsboard_cli/extension-starter/extension/target/api-docs/TbSecretDeleteResult.md +36 -0
  1051. thingsboard_cli/extension-starter/extension/target/api-docs/TbTextContent.md +33 -0
  1052. thingsboard_cli/extension-starter/extension/target/api-docs/TbUserMessage.md +34 -0
  1053. thingsboard_cli/extension-starter/extension/target/api-docs/TbelAlarmConditionExpression.md +31 -0
  1054. thingsboard_cli/extension-starter/extension/target/api-docs/TelemetryControllerApi.md +466 -0
  1055. thingsboard_cli/extension-starter/extension/target/api-docs/TelemetryEntityView.md +32 -0
  1056. thingsboard_cli/extension-starter/extension/target/api-docs/TelemetryMappingConfiguration.md +54 -0
  1057. thingsboard_cli/extension-starter/extension/target/api-docs/TelemetryObserveStrategy.md +25 -0
  1058. thingsboard_cli/extension-starter/extension/target/api-docs/TelemetryQueryingSnmpCommunicationConfig.md +45 -0
  1059. thingsboard_cli/extension-starter/extension/target/api-docs/Tenant.md +76 -0
  1060. thingsboard_cli/extension-starter/extension/target/api-docs/TenantAddonData.md +42 -0
  1061. thingsboard_cli/extension-starter/extension/target/api-docs/TenantAdministratorsFilter.md +32 -0
  1062. thingsboard_cli/extension-starter/extension/target/api-docs/TenantControllerApi.md +190 -0
  1063. thingsboard_cli/extension-starter/extension/target/api-docs/TenantId.md +30 -0
  1064. thingsboard_cli/extension-starter/extension/target/api-docs/TenantInfo.md +75 -0
  1065. thingsboard_cli/extension-starter/extension/target/api-docs/TenantNameStrategyType.md +25 -0
  1066. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfile.md +178 -0
  1067. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfileConfiguration.md +120 -0
  1068. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfileControllerApi.md +231 -0
  1069. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfileData.md +160 -0
  1070. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfileId.md +30 -0
  1071. thingsboard_cli/extension-starter/extension/target/api-docs/TenantProfileQueueConfiguration.md +53 -0
  1072. thingsboard_cli/extension-starter/extension/target/api-docs/TenantSolutionTemplateDetails.md +36 -0
  1073. thingsboard_cli/extension-starter/extension/target/api-docs/TenantSolutionTemplateInfo.md +37 -0
  1074. thingsboard_cli/extension-starter/extension/target/api-docs/TenantSolutionTemplateInstructions.md +33 -0
  1075. thingsboard_cli/extension-starter/extension/target/api-docs/TestSmsRequest.md +69 -0
  1076. thingsboard_cli/extension-starter/extension/target/api-docs/TextAlignment.md +27 -0
  1077. thingsboard_cli/extension-starter/extension/target/api-docs/ThingsboardClient.java +405 -0
  1078. thingsboard_cli/extension-starter/extension/target/api-docs/ThingsboardCredentialsExpiredResponse.md +40 -0
  1079. thingsboard_cli/extension-starter/extension/target/api-docs/ThingsboardErrorCode.md +53 -0
  1080. thingsboard_cli/extension-starter/extension/target/api-docs/ThingsboardErrorResponse.md +39 -0
  1081. thingsboard_cli/extension-starter/extension/target/api-docs/ThresholdLabelPosition.md +43 -0
  1082. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartBarWidth.md +24 -0
  1083. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartBarWidthSettings.md +23 -0
  1084. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartGridSettings.md +25 -0
  1085. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartKeySettings.md +127 -0
  1086. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartNoAggregationBarWidthSettings.md +36 -0
  1087. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartNoAggregationBarWidthStrategy.md +23 -0
  1088. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartSeriesType.md +23 -0
  1089. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartStateSettings.md +32 -0
  1090. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartStateSourceType.md +23 -0
  1091. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartThreshold.md +73 -0
  1092. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartXAxisSettings.md +55 -0
  1093. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesChartYAxisSettings.md +62 -0
  1094. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesImmediateOutputStrategy.md +35 -0
  1095. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesOutput.md +55 -0
  1096. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesOutputStrategy.md +36 -0
  1097. thingsboard_cli/extension-starter/extension/target/api-docs/TimeSeriesRuleChainOutputStrategy.md +30 -0
  1098. thingsboard_cli/extension-starter/extension/target/api-docs/TimeUnit.md +33 -0
  1099. thingsboard_cli/extension-starter/extension/target/api-docs/TimeWindowConfiguration.md +62 -0
  1100. thingsboard_cli/extension-starter/extension/target/api-docs/TimeseriesChartComponent.md +462 -0
  1101. thingsboard_cli/extension-starter/extension/target/api-docs/TimeseriesTableComponent.md +303 -0
  1102. thingsboard_cli/extension-starter/extension/target/api-docs/ToCoreEdqsRequest.md +33 -0
  1103. thingsboard_cli/extension-starter/extension/target/api-docs/ToDeviceRpcRequestSnmpCommunicationConfig.md +44 -0
  1104. thingsboard_cli/extension-starter/extension/target/api-docs/ToServerRpcRequestSnmpCommunicationConfig.md +44 -0
  1105. thingsboard_cli/extension-starter/extension/target/api-docs/Token.md +31 -0
  1106. thingsboard_cli/extension-starter/extension/target/api-docs/TotpTwoFaAccountConfig.md +32 -0
  1107. thingsboard_cli/extension-starter/extension/target/api-docs/TotpTwoFaProviderConfig.md +31 -0
  1108. thingsboard_cli/extension-starter/extension/target/api-docs/TranslationControllerApi.md +165 -0
  1109. thingsboard_cli/extension-starter/extension/target/api-docs/TranslationInfo.md +26 -0
  1110. thingsboard_cli/extension-starter/extension/target/api-docs/TransportPayloadTypeConfiguration.md +39 -0
  1111. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzApiControllerApi.md +97 -0
  1112. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzConfiguration.md +23 -0
  1113. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzControllerApi.md +122 -0
  1114. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzHealthcheckResult.md +33 -0
  1115. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzSummary.md +27 -0
  1116. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzSynchronizationResult.md +33 -0
  1117. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzSynchronizationResultType.md +39 -0
  1118. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzSynchronizationStatus.md +25 -0
  1119. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzUsage.md +43 -0
  1120. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzViewConfig.md +24 -0
  1121. thingsboard_cli/extension-starter/extension/target/api-docs/TrendzViewConfigLite.md +23 -0
  1122. thingsboard_cli/extension-starter/extension/target/api-docs/TsData.md +23 -0
  1123. thingsboard_cli/extension-starter/extension/target/api-docs/TsKvEntry.md +37 -0
  1124. thingsboard_cli/extension-starter/extension/target/api-docs/TsValue.md +24 -0
  1125. thingsboard_cli/extension-starter/extension/target/api-docs/TwilioSmsProviderConfiguration.md +33 -0
  1126. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFaAccountConfig.md +48 -0
  1127. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFaAccountConfigUpdateRequest.md +22 -0
  1128. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFaProviderConfig.md +47 -0
  1129. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFaProviderInfo.md +30 -0
  1130. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFaProviderType.md +27 -0
  1131. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFactorAuthConfigControllerApi.md +213 -0
  1132. thingsboard_cli/extension-starter/extension/target/api-docs/TwoFactorAuthControllerApi.md +94 -0
  1133. thingsboard_cli/extension-starter/extension/target/api-docs/UiSettingsControllerApi.md +25 -0
  1134. thingsboard_cli/extension-starter/extension/target/api-docs/UniquifyStrategy.md +23 -0
  1135. thingsboard_cli/extension-starter/extension/target/api-docs/UpdateMessage.md +27 -0
  1136. thingsboard_cli/extension-starter/extension/target/api-docs/UsageInfo.md +50 -0
  1137. thingsboard_cli/extension-starter/extension/target/api-docs/UsageInfoControllerApi.md +23 -0
  1138. thingsboard_cli/extension-starter/extension/target/api-docs/User.md +52 -0
  1139. thingsboard_cli/extension-starter/extension/target/api-docs/UserActivationLink.md +23 -0
  1140. thingsboard_cli/extension-starter/extension/target/api-docs/UserControllerApi.md +831 -0
  1141. thingsboard_cli/extension-starter/extension/target/api-docs/UserDashboardsInfo.md +40 -0
  1142. thingsboard_cli/extension-starter/extension/target/api-docs/UserEmailInfo.md +32 -0
  1143. thingsboard_cli/extension-starter/extension/target/api-docs/UserGroupListFilter.md +31 -0
  1144. thingsboard_cli/extension-starter/extension/target/api-docs/UserId.md +30 -0
  1145. thingsboard_cli/extension-starter/extension/target/api-docs/UserInfo.md +58 -0
  1146. thingsboard_cli/extension-starter/extension/target/api-docs/UserListFilter.md +31 -0
  1147. thingsboard_cli/extension-starter/extension/target/api-docs/UserMobileInfo.md +80 -0
  1148. thingsboard_cli/extension-starter/extension/target/api-docs/UserNotificationSettings.md +30 -0
  1149. thingsboard_cli/extension-starter/extension/target/api-docs/UserPasswordPolicy.md +31 -0
  1150. thingsboard_cli/extension-starter/extension/target/api-docs/UserPermissionsControllerApi.md +52 -0
  1151. thingsboard_cli/extension-starter/extension/target/api-docs/UserRoleFilter.md +31 -0
  1152. thingsboard_cli/extension-starter/extension/target/api-docs/UsersFilter.md +65 -0
  1153. thingsboard_cli/extension-starter/extension/target/api-docs/V2CaptchaParams.md +33 -0
  1154. thingsboard_cli/extension-starter/extension/target/api-docs/V3CaptchaParams.md +33 -0
  1155. thingsboard_cli/extension-starter/extension/target/api-docs/ValueSourceType.md +25 -0
  1156. thingsboard_cli/extension-starter/extension/target/api-docs/Vendor.md +23 -0
  1157. thingsboard_cli/extension-starter/extension/target/api-docs/VersionCreateConfig.md +27 -0
  1158. thingsboard_cli/extension-starter/extension/target/api-docs/VersionCreateRequest.md +76 -0
  1159. thingsboard_cli/extension-starter/extension/target/api-docs/VersionCreateRequestType.md +23 -0
  1160. thingsboard_cli/extension-starter/extension/target/api-docs/VersionCreationResult.md +37 -0
  1161. thingsboard_cli/extension-starter/extension/target/api-docs/VersionLoadConfig.md +28 -0
  1162. thingsboard_cli/extension-starter/extension/target/api-docs/VersionLoadRequest.md +74 -0
  1163. thingsboard_cli/extension-starter/extension/target/api-docs/VersionLoadRequestType.md +23 -0
  1164. thingsboard_cli/extension-starter/extension/target/api-docs/VersionLoadResult.md +50 -0
  1165. thingsboard_cli/extension-starter/extension/target/api-docs/VersionedEntityInfo.md +30 -0
  1166. thingsboard_cli/extension-starter/extension/target/api-docs/VerticalAlignment.md +25 -0
  1167. thingsboard_cli/extension-starter/extension/target/api-docs/Watermark.md +22 -0
  1168. thingsboard_cli/extension-starter/extension/target/api-docs/WebDeliveryMethodNotificationTemplate.md +34 -0
  1169. thingsboard_cli/extension-starter/extension/target/api-docs/WebSelfRegistrationParams.md +124 -0
  1170. thingsboard_cli/extension-starter/extension/target/api-docs/WebViewPage.md +37 -0
  1171. thingsboard_cli/extension-starter/extension/target/api-docs/WeekInterval.md +32 -0
  1172. thingsboard_cli/extension-starter/extension/target/api-docs/WeekSunSatInterval.md +32 -0
  1173. thingsboard_cli/extension-starter/extension/target/api-docs/WhiteLabeling.md +37 -0
  1174. thingsboard_cli/extension-starter/extension/target/api-docs/WhiteLabelingControllerApi.md +322 -0
  1175. thingsboard_cli/extension-starter/extension/target/api-docs/WhiteLabelingParams.md +59 -0
  1176. thingsboard_cli/extension-starter/extension/target/api-docs/WhiteLabelingType.md +31 -0
  1177. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetBundleInfo.md +30 -0
  1178. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetType.md +37 -0
  1179. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetTypeControllerApi.md +277 -0
  1180. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetTypeDetails.md +64 -0
  1181. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetTypeExportData.md +539 -0
  1182. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetTypeId.md +30 -0
  1183. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetTypeInfo.md +47 -0
  1184. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetsBundle.md +41 -0
  1185. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetsBundleControllerApi.md +210 -0
  1186. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetsBundleExportData.md +541 -0
  1187. thingsboard_cli/extension-starter/extension/target/api-docs/WidgetsBundleId.md +30 -0
  1188. thingsboard_cli/extension-starter/extension/target/api-docs/X509CertificateChainProvisionConfiguration.md +33 -0
  1189. thingsboard_cli/extension-starter/extension/target/api-docs/X509LwM2MBootstrapServerCredential.md +42 -0
  1190. thingsboard_cli/extension-starter/extension/target/api-docs/YearInterval.md +32 -0
  1191. thingsboard_cli/extension-starter/extension/target/api-docs/ZoneGroupConfiguration.md +60 -0
  1192. thingsboard_cli/extension-starter/extension/target/api-docs/tb-examples.md +396 -0
  1193. thingsboard_cli/extension-starter/extension/target/classes/application.yml +51 -0
  1194. thingsboard_cli/extension-starter/extension/target/classes/docker/start-extension.sh +33 -0
  1195. thingsboard_cli/extension-starter/extension/target/classes/logback.xml +35 -0
  1196. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/ThingsboardExtensionApplication.class +0 -0
  1197. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/GlobalExceptionHandler.class +0 -0
  1198. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/HealthController.class +0 -0
  1199. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/OpenApiConfig.class +0 -0
  1200. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/RequestLoggingFilter.class +0 -0
  1201. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/SchedulingConfig.class +0 -0
  1202. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/SecurityConfig.class +0 -0
  1203. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/TbAuthentication.class +0 -0
  1204. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/TbSecurity.class +0 -0
  1205. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/TbSecurityFilter.class +0 -0
  1206. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/TbSecurityUser.class +0 -0
  1207. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/ThingsboardAuthConfig.class +0 -0
  1208. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/ThingsboardClientProvider.class +0 -0
  1209. thingsboard_cli/extension-starter/extension/target/classes/org/thingsboard/extension/config/WebConfig.class +0 -0
  1210. thingsboard_cli/extension-starter/extension/target/dependency-maven-plugin-markers/org.thingsboard.client-thingsboard-paas-client-jar-4.3.1.2-898578207 +0 -0
  1211. thingsboard_cli/extension-starter/extension/target/dependency-maven-plugin-markers/org.thingsboard.client-thingsboard-paas-client-jar-sources-4.3.1.21164361615 +0 -0
  1212. thingsboard_cli/extension-starter/extension/target/maven-archiver/pom.properties +3 -0
  1213. thingsboard_cli/extension-starter/extension/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +14 -0
  1214. thingsboard_cli/extension-starter/extension/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +14 -0
  1215. thingsboard_cli/extension-starter/extension/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +11 -0
  1216. thingsboard_cli/extension-starter/extension/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +9 -0
  1217. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/ApplicationIntegrationTest.class +0 -0
  1218. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/PreAuthorizeIntegrationTest.class +0 -0
  1219. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/TestUtils$1.class +0 -0
  1220. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/TestUtils.class +0 -0
  1221. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/GlobalExceptionHandlerTest.class +0 -0
  1222. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/RequestLoggingFilterTest.class +0 -0
  1223. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/TbAuthenticationTest.class +0 -0
  1224. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/TbSecurityFilterTest$1.class +0 -0
  1225. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/TbSecurityFilterTest.class +0 -0
  1226. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/TbSecurityUserTest.class +0 -0
  1227. thingsboard_cli/extension-starter/extension/target/test-classes/org/thingsboard/extension/config/ThingsboardClientProviderTest.class +0 -0
  1228. thingsboard_cli/extension-starter/extension/target/thingsboard-extension-1.0.0-SNAPSHOT.jar +0 -0
  1229. thingsboard_cli/extension-starter/extension/target/thingsboard-extension-1.0.0-SNAPSHOT.jar.original +0 -0
  1230. thingsboard_cli/extension-starter/pom.xml +121 -0
  1231. thingsboard_cli/help/__init__.py +318 -0
  1232. thingsboard_cli/help/_generated/__init__.py +0 -0
  1233. thingsboard_cli/help/_generated/commands/__init__.py +0 -0
  1234. thingsboard_cli/help/_generated/commands/admin.py +288 -0
  1235. thingsboard_cli/help/_generated/commands/ai_chat.py +68 -0
  1236. thingsboard_cli/help/_generated/commands/ai_device_dashboard.py +16 -0
  1237. thingsboard_cli/help/_generated/commands/ai_model.py +78 -0
  1238. thingsboard_cli/help/_generated/commands/ai_solution.py +103 -0
  1239. thingsboard_cli/help/_generated/commands/ai_tool.py +14 -0
  1240. thingsboard_cli/help/_generated/commands/alarm.py +252 -0
  1241. thingsboard_cli/help/_generated/commands/alarm_comment.py +52 -0
  1242. thingsboard_cli/help/_generated/commands/alarm_rule.py +131 -0
  1243. thingsboard_cli/help/_generated/commands/api_key.py +81 -0
  1244. thingsboard_cli/help/_generated/commands/asset.py +250 -0
  1245. thingsboard_cli/help/_generated/commands/asset_profile.py +149 -0
  1246. thingsboard_cli/help/_generated/commands/audit_log.py +92 -0
  1247. thingsboard_cli/help/_generated/commands/auth.py +119 -0
  1248. thingsboard_cli/help/_generated/commands/blob_entity.py +81 -0
  1249. thingsboard_cli/help/_generated/commands/calculated_field.py +191 -0
  1250. thingsboard_cli/help/_generated/commands/component_descriptor.py +48 -0
  1251. thingsboard_cli/help/_generated/commands/converter.py +143 -0
  1252. thingsboard_cli/help/_generated/commands/converter_library.py +137 -0
  1253. thingsboard_cli/help/_generated/commands/custom_menu.py +158 -0
  1254. thingsboard_cli/help/_generated/commands/custom_translation.py +106 -0
  1255. thingsboard_cli/help/_generated/commands/customer.py +215 -0
  1256. thingsboard_cli/help/_generated/commands/dashboard.py +320 -0
  1257. thingsboard_cli/help/_generated/commands/dashboard_report.py +34 -0
  1258. thingsboard_cli/help/_generated/commands/device.py +375 -0
  1259. thingsboard_cli/help/_generated/commands/device_connectivity.py +46 -0
  1260. thingsboard_cli/help/_generated/commands/device_group_ota_package.py +35 -0
  1261. thingsboard_cli/help/_generated/commands/device_profile.py +178 -0
  1262. thingsboard_cli/help/_generated/commands/domain.py +80 -0
  1263. thingsboard_cli/help/_generated/commands/edge.py +390 -0
  1264. thingsboard_cli/help/_generated/commands/edge_event.py +25 -0
  1265. thingsboard_cli/help/_generated/commands/entities_version_control.py +193 -0
  1266. thingsboard_cli/help/_generated/commands/entity_group.py +584 -0
  1267. thingsboard_cli/help/_generated/commands/entity_query.py +111 -0
  1268. thingsboard_cli/help/_generated/commands/entity_relation.py +197 -0
  1269. thingsboard_cli/help/_generated/commands/entity_view.py +235 -0
  1270. thingsboard_cli/help/_generated/commands/event.py +70 -0
  1271. thingsboard_cli/help/_generated/commands/group_permission.py +103 -0
  1272. thingsboard_cli/help/_generated/commands/image.py +176 -0
  1273. thingsboard_cli/help/_generated/commands/integration.py +233 -0
  1274. thingsboard_cli/help/_generated/commands/job.py +79 -0
  1275. thingsboard_cli/help/_generated/commands/lwm2m.py +33 -0
  1276. thingsboard_cli/help/_generated/commands/mail_config_template.py +14 -0
  1277. thingsboard_cli/help/_generated/commands/mobile_app.py +91 -0
  1278. thingsboard_cli/help/_generated/commands/mobile_app_bundle.py +80 -0
  1279. thingsboard_cli/help/_generated/commands/notification.py +233 -0
  1280. thingsboard_cli/help/_generated/commands/notification_rule.py +64 -0
  1281. thingsboard_cli/help/_generated/commands/notification_target.py +113 -0
  1282. thingsboard_cli/help/_generated/commands/notification_template.py +80 -0
  1283. thingsboard_cli/help/_generated/commands/oauth2.py +103 -0
  1284. thingsboard_cli/help/_generated/commands/oauth2_config_template.py +42 -0
  1285. thingsboard_cli/help/_generated/commands/ota_package.py +149 -0
  1286. thingsboard_cli/help/_generated/commands/owner.py +38 -0
  1287. thingsboard_cli/help/_generated/commands/qr_code_settings.py +72 -0
  1288. thingsboard_cli/help/_generated/commands/queue.py +80 -0
  1289. thingsboard_cli/help/_generated/commands/queue_stats.py +50 -0
  1290. thingsboard_cli/help/_generated/commands/report.py +117 -0
  1291. thingsboard_cli/help/_generated/commands/report_template.py +95 -0
  1292. thingsboard_cli/help/_generated/commands/role.py +79 -0
  1293. thingsboard_cli/help/_generated/commands/rpc_v1.py +34 -0
  1294. thingsboard_cli/help/_generated/commands/rpc_v2.py +82 -0
  1295. thingsboard_cli/help/_generated/commands/rule_chain.py +333 -0
  1296. thingsboard_cli/help/_generated/commands/rule_engine.py +69 -0
  1297. thingsboard_cli/help/_generated/commands/scheduler_event.py +225 -0
  1298. thingsboard_cli/help/_generated/commands/secret.py +118 -0
  1299. thingsboard_cli/help/_generated/commands/self_registration.py +79 -0
  1300. thingsboard_cli/help/_generated/commands/sign_up.py +121 -0
  1301. thingsboard_cli/help/_generated/commands/solution.py +70 -0
  1302. thingsboard_cli/help/_generated/commands/solution_export_import.py +46 -0
  1303. thingsboard_cli/help/_generated/commands/tb_resource.py +290 -0
  1304. thingsboard_cli/help/_generated/commands/telemetry.py +287 -0
  1305. thingsboard_cli/help/_generated/commands/tenant.py +110 -0
  1306. thingsboard_cli/help/_generated/commands/tenant_profile.py +130 -0
  1307. thingsboard_cli/help/_generated/commands/translation.py +94 -0
  1308. thingsboard_cli/help/_generated/commands/trendz.py +68 -0
  1309. thingsboard_cli/help/_generated/commands/trendz_api.py +56 -0
  1310. thingsboard_cli/help/_generated/commands/two_factor_auth.py +53 -0
  1311. thingsboard_cli/help/_generated/commands/two_factor_auth_config.py +120 -0
  1312. thingsboard_cli/help/_generated/commands/ui_settings.py +14 -0
  1313. thingsboard_cli/help/_generated/commands/usage_info.py +10 -0
  1314. thingsboard_cli/help/_generated/commands/user.py +479 -0
  1315. thingsboard_cli/help/_generated/commands/user_permissions.py +30 -0
  1316. thingsboard_cli/help/_generated/commands/white_labeling.py +172 -0
  1317. thingsboard_cli/help/_generated/commands/widget_type.py +164 -0
  1318. thingsboard_cli/help/_generated/commands/widgets_bundle.py +122 -0
  1319. thingsboard_cli/help/_generated/models/__init__.py +0 -0
  1320. thingsboard_cli/help/_generated/models/account_two_fa_settings.py +39 -0
  1321. thingsboard_cli/help/_generated/models/action.py +8 -0
  1322. thingsboard_cli/help/_generated/models/action_status.py +8 -0
  1323. thingsboard_cli/help/_generated/models/action_type.py +8 -0
  1324. thingsboard_cli/help/_generated/models/activate_user_request.py +13 -0
  1325. thingsboard_cli/help/_generated/models/admin_settings.py +21 -0
  1326. thingsboard_cli/help/_generated/models/admin_settings_id.py +16 -0
  1327. thingsboard_cli/help/_generated/models/affected_tenant_administrators_filter.py +16 -0
  1328. thingsboard_cli/help/_generated/models/affected_user_filter.py +16 -0
  1329. thingsboard_cli/help/_generated/models/agg_function.py +8 -0
  1330. thingsboard_cli/help/_generated/models/agg_function_input.py +17 -0
  1331. thingsboard_cli/help/_generated/models/agg_input.py +26 -0
  1332. thingsboard_cli/help/_generated/models/agg_interval.py +65 -0
  1333. thingsboard_cli/help/_generated/models/agg_key_input.py +17 -0
  1334. thingsboard_cli/help/_generated/models/agg_metric.py +33 -0
  1335. thingsboard_cli/help/_generated/models/aggregation.py +8 -0
  1336. thingsboard_cli/help/_generated/models/aggregation_configuration.py +16 -0
  1337. thingsboard_cli/help/_generated/models/aggregation_params.py +21 -0
  1338. thingsboard_cli/help/_generated/models/ai_chat_model_config.py +15 -0
  1339. thingsboard_cli/help/_generated/models/ai_chat_model_config_object.py +15 -0
  1340. thingsboard_cli/help/_generated/models/ai_model.py +228 -0
  1341. thingsboard_cli/help/_generated/models/ai_model_config.py +217 -0
  1342. thingsboard_cli/help/_generated/models/ai_model_export_data.py +525 -0
  1343. thingsboard_cli/help/_generated/models/ai_model_id.py +16 -0
  1344. thingsboard_cli/help/_generated/models/ai_model_type.py +8 -0
  1345. thingsboard_cli/help/_generated/models/alarm.py +45 -0
  1346. thingsboard_cli/help/_generated/models/alarm_action.py +8 -0
  1347. thingsboard_cli/help/_generated/models/alarm_assignee.py +20 -0
  1348. thingsboard_cli/help/_generated/models/alarm_assignment_notification_rule_trigger_config.py +32 -0
  1349. thingsboard_cli/help/_generated/models/alarm_assignment_recipients_config.py +20 -0
  1350. thingsboard_cli/help/_generated/models/alarm_calculated_field_configuration.py +300 -0
  1351. thingsboard_cli/help/_generated/models/alarm_comment.py +31 -0
  1352. thingsboard_cli/help/_generated/models/alarm_comment_id.py +12 -0
  1353. thingsboard_cli/help/_generated/models/alarm_comment_info.py +34 -0
  1354. thingsboard_cli/help/_generated/models/alarm_comment_notification_rule_trigger_config.py +30 -0
  1355. thingsboard_cli/help/_generated/models/alarm_comment_recipients_config.py +20 -0
  1356. thingsboard_cli/help/_generated/models/alarm_comment_type.py +8 -0
  1357. thingsboard_cli/help/_generated/models/alarm_condition.py +176 -0
  1358. thingsboard_cli/help/_generated/models/alarm_condition_expression.py +113 -0
  1359. thingsboard_cli/help/_generated/models/alarm_condition_filter.py +93 -0
  1360. thingsboard_cli/help/_generated/models/alarm_condition_filter_key.py +16 -0
  1361. thingsboard_cli/help/_generated/models/alarm_condition_key_type.py +8 -0
  1362. thingsboard_cli/help/_generated/models/alarm_condition_spec.py +66 -0
  1363. thingsboard_cli/help/_generated/models/alarm_condition_value_alarm_rule_schedule.py +43 -0
  1364. thingsboard_cli/help/_generated/models/alarm_condition_value_alarm_schedule.py +43 -0
  1365. thingsboard_cli/help/_generated/models/alarm_condition_value_boolean.py +13 -0
  1366. thingsboard_cli/help/_generated/models/alarm_condition_value_double.py +13 -0
  1367. thingsboard_cli/help/_generated/models/alarm_condition_value_integer.py +13 -0
  1368. thingsboard_cli/help/_generated/models/alarm_condition_value_long.py +13 -0
  1369. thingsboard_cli/help/_generated/models/alarm_condition_value_string.py +13 -0
  1370. thingsboard_cli/help/_generated/models/alarm_count_query.py +333 -0
  1371. thingsboard_cli/help/_generated/models/alarm_data.py +66 -0
  1372. thingsboard_cli/help/_generated/models/alarm_data_page_link.py +53 -0
  1373. thingsboard_cli/help/_generated/models/alarm_data_query.py +355 -0
  1374. thingsboard_cli/help/_generated/models/alarm_filter_config.py +27 -0
  1375. thingsboard_cli/help/_generated/models/alarm_id.py +16 -0
  1376. thingsboard_cli/help/_generated/models/alarm_info.py +57 -0
  1377. thingsboard_cli/help/_generated/models/alarm_notification_rule_trigger_config.py +37 -0
  1378. thingsboard_cli/help/_generated/models/alarm_rule.py +184 -0
  1379. thingsboard_cli/help/_generated/models/alarm_rule_any_time_schedule.py +16 -0
  1380. thingsboard_cli/help/_generated/models/alarm_rule_boolean_filter_predicate.py +27 -0
  1381. thingsboard_cli/help/_generated/models/alarm_rule_boolean_operation.py +8 -0
  1382. thingsboard_cli/help/_generated/models/alarm_rule_complex_filter_predicate.py +21 -0
  1383. thingsboard_cli/help/_generated/models/alarm_rule_complex_operation.py +8 -0
  1384. thingsboard_cli/help/_generated/models/alarm_rule_condition.py +176 -0
  1385. thingsboard_cli/help/_generated/models/alarm_rule_custom_time_schedule_item.py +15 -0
  1386. thingsboard_cli/help/_generated/models/alarm_rule_definition.py +476 -0
  1387. thingsboard_cli/help/_generated/models/alarm_rule_definition_info.py +477 -0
  1388. thingsboard_cli/help/_generated/models/alarm_rule_duration_condition.py +158 -0
  1389. thingsboard_cli/help/_generated/models/alarm_rule_key_filter_predicate.py +86 -0
  1390. thingsboard_cli/help/_generated/models/alarm_rule_no_data_filter_predicate.py +27 -0
  1391. thingsboard_cli/help/_generated/models/alarm_rule_numeric_filter_predicate.py +27 -0
  1392. thingsboard_cli/help/_generated/models/alarm_rule_numeric_operation.py +8 -0
  1393. thingsboard_cli/help/_generated/models/alarm_rule_repeating_condition.py +163 -0
  1394. thingsboard_cli/help/_generated/models/alarm_rule_schedule.py +41 -0
  1395. thingsboard_cli/help/_generated/models/alarm_rule_simple_condition.py +156 -0
  1396. thingsboard_cli/help/_generated/models/alarm_rule_string_filter_predicate.py +28 -0
  1397. thingsboard_cli/help/_generated/models/alarm_rule_string_operation.py +8 -0
  1398. thingsboard_cli/help/_generated/models/alarm_schedule.py +41 -0
  1399. thingsboard_cli/help/_generated/models/alarm_schedule_type.py +8 -0
  1400. thingsboard_cli/help/_generated/models/alarm_search_status.py +8 -0
  1401. thingsboard_cli/help/_generated/models/alarm_severity.py +8 -0
  1402. thingsboard_cli/help/_generated/models/alarm_status.py +8 -0
  1403. thingsboard_cli/help/_generated/models/alarm_table_component.py +285 -0
  1404. thingsboard_cli/help/_generated/models/alias_entity_id.py +20 -0
  1405. thingsboard_cli/help/_generated/models/alias_entity_type.py +8 -0
  1406. thingsboard_cli/help/_generated/models/all_users_filter.py +16 -0
  1407. thingsboard_cli/help/_generated/models/allow_create_new_devices_device_profile_provision_configuration.py +17 -0
  1408. thingsboard_cli/help/_generated/models/allowed_permissions_info.py +51 -0
  1409. thingsboard_cli/help/_generated/models/amazon_bedrock_chat_model_config.py +34 -0
  1410. thingsboard_cli/help/_generated/models/amazon_bedrock_provider_config.py +14 -0
  1411. thingsboard_cli/help/_generated/models/anthropic_chat_model_config.py +33 -0
  1412. thingsboard_cli/help/_generated/models/anthropic_provider_config.py +12 -0
  1413. thingsboard_cli/help/_generated/models/any_time_schedule.py +16 -0
  1414. thingsboard_cli/help/_generated/models/api_feature.py +8 -0
  1415. thingsboard_cli/help/_generated/models/api_key.py +25 -0
  1416. thingsboard_cli/help/_generated/models/api_key_id.py +16 -0
  1417. thingsboard_cli/help/_generated/models/api_key_info.py +24 -0
  1418. thingsboard_cli/help/_generated/models/api_usage_limit_notification_rule_trigger_config.py +27 -0
  1419. thingsboard_cli/help/_generated/models/api_usage_limit_recipients_config.py +20 -0
  1420. thingsboard_cli/help/_generated/models/api_usage_state_filter.py +22 -0
  1421. thingsboard_cli/help/_generated/models/api_usage_state_id.py +16 -0
  1422. thingsboard_cli/help/_generated/models/api_usage_state_value.py +8 -0
  1423. thingsboard_cli/help/_generated/models/argument.py +57 -0
  1424. thingsboard_cli/help/_generated/models/argument_type.py +8 -0
  1425. thingsboard_cli/help/_generated/models/asset.py +27 -0
  1426. thingsboard_cli/help/_generated/models/asset_export_data.py +525 -0
  1427. thingsboard_cli/help/_generated/models/asset_id.py +16 -0
  1428. thingsboard_cli/help/_generated/models/asset_info.py +35 -0
  1429. thingsboard_cli/help/_generated/models/asset_profile.py +28 -0
  1430. thingsboard_cli/help/_generated/models/asset_profile_export_data.py +525 -0
  1431. thingsboard_cli/help/_generated/models/asset_profile_id.py +16 -0
  1432. thingsboard_cli/help/_generated/models/asset_profile_info.py +21 -0
  1433. thingsboard_cli/help/_generated/models/asset_search_query.py +33 -0
  1434. thingsboard_cli/help/_generated/models/asset_search_query_filter.py +40 -0
  1435. thingsboard_cli/help/_generated/models/asset_type_filter.py +19 -0
  1436. thingsboard_cli/help/_generated/models/attribute_data.py +14 -0
  1437. thingsboard_cli/help/_generated/models/attribute_export_data.py +18 -0
  1438. thingsboard_cli/help/_generated/models/attribute_scope.py +8 -0
  1439. thingsboard_cli/help/_generated/models/attributes_entity_view.py +14 -0
  1440. thingsboard_cli/help/_generated/models/attributes_immediate_output_strategy.py +21 -0
  1441. thingsboard_cli/help/_generated/models/attributes_output.py +41 -0
  1442. thingsboard_cli/help/_generated/models/attributes_output_strategy.py +28 -0
  1443. thingsboard_cli/help/_generated/models/attributes_rule_chain_output_strategy.py +16 -0
  1444. thingsboard_cli/help/_generated/models/audit_log.py +39 -0
  1445. thingsboard_cli/help/_generated/models/audit_log_id.py +12 -0
  1446. thingsboard_cli/help/_generated/models/authentication_protocol.py +8 -0
  1447. thingsboard_cli/help/_generated/models/authority.py +8 -0
  1448. thingsboard_cli/help/_generated/models/auto_version_create_config.py +18 -0
  1449. thingsboard_cli/help/_generated/models/available_entity_keys.py +17 -0
  1450. thingsboard_cli/help/_generated/models/available_entity_keys_v2.py +30 -0
  1451. thingsboard_cli/help/_generated/models/aws_sns_sms_provider_configuration.py +19 -0
  1452. thingsboard_cli/help/_generated/models/axis_position.py +8 -0
  1453. thingsboard_cli/help/_generated/models/azure_open_ai_chat_model_config.py +36 -0
  1454. thingsboard_cli/help/_generated/models/azure_open_ai_provider_config.py +14 -0
  1455. thingsboard_cli/help/_generated/models/backup_code_two_fa_account_config.py +19 -0
  1456. thingsboard_cli/help/_generated/models/backup_code_two_fa_provider_config.py +17 -0
  1457. thingsboard_cli/help/_generated/models/badge_position.py +8 -0
  1458. thingsboard_cli/help/_generated/models/bar_series_settings.py +55 -0
  1459. thingsboard_cli/help/_generated/models/base_read_ts_kv_query.py +34 -0
  1460. thingsboard_cli/help/_generated/models/basic.py +18 -0
  1461. thingsboard_cli/help/_generated/models/blob_entity_id.py +16 -0
  1462. thingsboard_cli/help/_generated/models/blob_entity_info.py +34 -0
  1463. thingsboard_cli/help/_generated/models/blob_entity_with_customer_info.py +36 -0
  1464. thingsboard_cli/help/_generated/models/boolean_filter_predicate.py +39 -0
  1465. thingsboard_cli/help/_generated/models/boolean_operation.py +8 -0
  1466. thingsboard_cli/help/_generated/models/border_length.py +8 -0
  1467. thingsboard_cli/help/_generated/models/border_type.py +8 -0
  1468. thingsboard_cli/help/_generated/models/branch_info.py +13 -0
  1469. thingsboard_cli/help/_generated/models/bulk_import_column_type.py +8 -0
  1470. thingsboard_cli/help/_generated/models/bulk_import_request.py +37 -0
  1471. thingsboard_cli/help/_generated/models/bulk_import_result_asset.py +15 -0
  1472. thingsboard_cli/help/_generated/models/bulk_import_result_device.py +15 -0
  1473. thingsboard_cli/help/_generated/models/bulk_import_result_edge.py +15 -0
  1474. thingsboard_cli/help/_generated/models/button.py +21 -0
  1475. thingsboard_cli/help/_generated/models/calculated_field.py +480 -0
  1476. thingsboard_cli/help/_generated/models/calculated_field_configuration.py +458 -0
  1477. thingsboard_cli/help/_generated/models/calculated_field_debug_event_filter.py +44 -0
  1478. thingsboard_cli/help/_generated/models/calculated_field_id.py +16 -0
  1479. thingsboard_cli/help/_generated/models/calculated_field_info.py +481 -0
  1480. thingsboard_cli/help/_generated/models/calculated_field_type.py +8 -0
  1481. thingsboard_cli/help/_generated/models/captcha_params.py +40 -0
  1482. thingsboard_cli/help/_generated/models/cell_settings.py +36 -0
  1483. thingsboard_cli/help/_generated/models/cf_argument_dynamic_source_configuration.py +33 -0
  1484. thingsboard_cli/help/_generated/models/cf_reprocessing_job_configuration.py +37 -0
  1485. thingsboard_cli/help/_generated/models/cf_reprocessing_job_result.py +35 -0
  1486. thingsboard_cli/help/_generated/models/cf_reprocessing_task_failure.py +24 -0
  1487. thingsboard_cli/help/_generated/models/cf_reprocessing_task_result.py +39 -0
  1488. thingsboard_cli/help/_generated/models/cf_reprocessing_validation_result.py +17 -0
  1489. thingsboard_cli/help/_generated/models/change_password_request.py +13 -0
  1490. thingsboard_cli/help/_generated/models/chart_fill_settings.py +23 -0
  1491. thingsboard_cli/help/_generated/models/chart_fill_settings_gradient.py +13 -0
  1492. thingsboard_cli/help/_generated/models/chart_fill_type.py +8 -0
  1493. thingsboard_cli/help/_generated/models/chart_label_position.py +8 -0
  1494. thingsboard_cli/help/_generated/models/chart_line_type.py +8 -0
  1495. thingsboard_cli/help/_generated/models/chart_shape.py +8 -0
  1496. thingsboard_cli/help/_generated/models/chat_type.py +8 -0
  1497. thingsboard_cli/help/_generated/models/check_pre_provisioned_devices_device_profile_provision_configuration.py +17 -0
  1498. thingsboard_cli/help/_generated/models/checksum_algorithm.py +8 -0
  1499. thingsboard_cli/help/_generated/models/claim_request.py +12 -0
  1500. thingsboard_cli/help/_generated/models/clear_rule.py +15 -0
  1501. thingsboard_cli/help/_generated/models/client_attributes_querying_snmp_communication_config.py +31 -0
  1502. thingsboard_cli/help/_generated/models/cmassignee_type.py +8 -0
  1503. thingsboard_cli/help/_generated/models/cmitem_link_type.py +8 -0
  1504. thingsboard_cli/help/_generated/models/cmitem_type.py +8 -0
  1505. thingsboard_cli/help/_generated/models/cmscope.py +8 -0
  1506. thingsboard_cli/help/_generated/models/coap_device_profile_transport_configuration.py +60 -0
  1507. thingsboard_cli/help/_generated/models/coap_device_transport_configuration.py +23 -0
  1508. thingsboard_cli/help/_generated/models/coap_device_type_configuration.py +42 -0
  1509. thingsboard_cli/help/_generated/models/color_range.py +14 -0
  1510. thingsboard_cli/help/_generated/models/column_mapping.py +16 -0
  1511. thingsboard_cli/help/_generated/models/column_settings.py +47 -0
  1512. thingsboard_cli/help/_generated/models/comparison_duration.py +8 -0
  1513. thingsboard_cli/help/_generated/models/comparison_ts_value.py +20 -0
  1514. thingsboard_cli/help/_generated/models/complex_filter_predicate.py +21 -0
  1515. thingsboard_cli/help/_generated/models/complex_operation.py +8 -0
  1516. thingsboard_cli/help/_generated/models/complex_version_create_request.py +39 -0
  1517. thingsboard_cli/help/_generated/models/component_clustering_mode.py +8 -0
  1518. thingsboard_cli/help/_generated/models/component_descriptor.py +37 -0
  1519. thingsboard_cli/help/_generated/models/component_descriptor_id.py +12 -0
  1520. thingsboard_cli/help/_generated/models/component_lifecycle_event.py +8 -0
  1521. thingsboard_cli/help/_generated/models/component_scope.py +8 -0
  1522. thingsboard_cli/help/_generated/models/component_type.py +8 -0
  1523. thingsboard_cli/help/_generated/models/contact_based_object.py +23 -0
  1524. thingsboard_cli/help/_generated/models/converter.py +42 -0
  1525. thingsboard_cli/help/_generated/models/converter_export_data.py +525 -0
  1526. thingsboard_cli/help/_generated/models/converter_id.py +16 -0
  1527. thingsboard_cli/help/_generated/models/converter_type.py +8 -0
  1528. thingsboard_cli/help/_generated/models/converters_info.py +14 -0
  1529. thingsboard_cli/help/_generated/models/create_report_request.py +13 -0
  1530. thingsboard_cli/help/_generated/models/csv_report_template_config.py +1041 -0
  1531. thingsboard_cli/help/_generated/models/current_owner_dynamic_source_configuration.py +16 -0
  1532. thingsboard_cli/help/_generated/models/custom_interval.py +19 -0
  1533. thingsboard_cli/help/_generated/models/custom_menu.py +93 -0
  1534. thingsboard_cli/help/_generated/models/custom_menu_config.py +64 -0
  1535. thingsboard_cli/help/_generated/models/custom_menu_delete_result.py +28 -0
  1536. thingsboard_cli/help/_generated/models/custom_menu_id.py +12 -0
  1537. thingsboard_cli/help/_generated/models/custom_menu_info.py +35 -0
  1538. thingsboard_cli/help/_generated/models/custom_menu_item.py +36 -0
  1539. thingsboard_cli/help/_generated/models/custom_mobile_page.py +23 -0
  1540. thingsboard_cli/help/_generated/models/custom_time_schedule.py +26 -0
  1541. thingsboard_cli/help/_generated/models/custom_time_schedule_item.py +15 -0
  1542. thingsboard_cli/help/_generated/models/customer.py +40 -0
  1543. thingsboard_cli/help/_generated/models/customer_export_data.py +525 -0
  1544. thingsboard_cli/help/_generated/models/customer_id.py +16 -0
  1545. thingsboard_cli/help/_generated/models/customer_info.py +48 -0
  1546. thingsboard_cli/help/_generated/models/customer_users_filter.py +17 -0
  1547. thingsboard_cli/help/_generated/models/dashboard.py +58 -0
  1548. thingsboard_cli/help/_generated/models/dashboard_component.py +286 -0
  1549. thingsboard_cli/help/_generated/models/dashboard_export_data.py +525 -0
  1550. thingsboard_cli/help/_generated/models/dashboard_id.py +16 -0
  1551. thingsboard_cli/help/_generated/models/dashboard_info.py +66 -0
  1552. thingsboard_cli/help/_generated/models/dashboard_page.py +23 -0
  1553. thingsboard_cli/help/_generated/models/dashboard_report_config.py +21 -0
  1554. thingsboard_cli/help/_generated/models/data_key.py +197 -0
  1555. thingsboard_cli/help/_generated/models/data_key_comparison_settings.py +14 -0
  1556. thingsboard_cli/help/_generated/models/data_key_settings.py +143 -0
  1557. thingsboard_cli/help/_generated/models/data_key_settings_type.py +8 -0
  1558. thingsboard_cli/help/_generated/models/data_source.py +231 -0
  1559. thingsboard_cli/help/_generated/models/data_source_type.py +8 -0
  1560. thingsboard_cli/help/_generated/models/data_type.py +8 -0
  1561. thingsboard_cli/help/_generated/models/day_interval.py +18 -0
  1562. thingsboard_cli/help/_generated/models/debug_converter_event_filter.py +35 -0
  1563. thingsboard_cli/help/_generated/models/debug_integration_event_filter.py +34 -0
  1564. thingsboard_cli/help/_generated/models/debug_settings.py +14 -0
  1565. thingsboard_cli/help/_generated/models/default_coap_device_type_configuration.py +35 -0
  1566. thingsboard_cli/help/_generated/models/default_dashboard_params.py +13 -0
  1567. thingsboard_cli/help/_generated/models/default_data_key_settings.py +19 -0
  1568. thingsboard_cli/help/_generated/models/default_device_configuration.py +19 -0
  1569. thingsboard_cli/help/_generated/models/default_device_profile_configuration.py +16 -0
  1570. thingsboard_cli/help/_generated/models/default_device_profile_transport_configuration.py +16 -0
  1571. thingsboard_cli/help/_generated/models/default_device_transport_configuration.py +16 -0
  1572. thingsboard_cli/help/_generated/models/default_menu_item.py +25 -0
  1573. thingsboard_cli/help/_generated/models/default_mobile_page.py +26 -0
  1574. thingsboard_cli/help/_generated/models/default_page_id.py +8 -0
  1575. thingsboard_cli/help/_generated/models/default_rule_chain_create_request.py +12 -0
  1576. thingsboard_cli/help/_generated/models/default_tenant_profile_configuration.py +105 -0
  1577. thingsboard_cli/help/_generated/models/delivery_method_notification_template.py +62 -0
  1578. thingsboard_cli/help/_generated/models/device.py +102 -0
  1579. thingsboard_cli/help/_generated/models/device_activity_notification_rule_trigger_config.py +25 -0
  1580. thingsboard_cli/help/_generated/models/device_activity_recipients_config.py +20 -0
  1581. thingsboard_cli/help/_generated/models/device_configuration.py +22 -0
  1582. thingsboard_cli/help/_generated/models/device_credentials.py +31 -0
  1583. thingsboard_cli/help/_generated/models/device_credentials_id.py +12 -0
  1584. thingsboard_cli/help/_generated/models/device_credentials_type.py +8 -0
  1585. thingsboard_cli/help/_generated/models/device_data.py +79 -0
  1586. thingsboard_cli/help/_generated/models/device_event.py +8 -0
  1587. thingsboard_cli/help/_generated/models/device_export_data.py +545 -0
  1588. thingsboard_cli/help/_generated/models/device_group_ota_package.py +24 -0
  1589. thingsboard_cli/help/_generated/models/device_id.py +16 -0
  1590. thingsboard_cli/help/_generated/models/device_info.py +111 -0
  1591. thingsboard_cli/help/_generated/models/device_profile.py +262 -0
  1592. thingsboard_cli/help/_generated/models/device_profile_configuration.py +19 -0
  1593. thingsboard_cli/help/_generated/models/device_profile_data.py +225 -0
  1594. thingsboard_cli/help/_generated/models/device_profile_export_data.py +525 -0
  1595. thingsboard_cli/help/_generated/models/device_profile_id.py +16 -0
  1596. thingsboard_cli/help/_generated/models/device_profile_info.py +29 -0
  1597. thingsboard_cli/help/_generated/models/device_profile_provision_configuration.py +32 -0
  1598. thingsboard_cli/help/_generated/models/device_profile_provision_type.py +8 -0
  1599. thingsboard_cli/help/_generated/models/device_profile_transport_configuration.py +193 -0
  1600. thingsboard_cli/help/_generated/models/device_profile_type.py +8 -0
  1601. thingsboard_cli/help/_generated/models/device_search_query.py +33 -0
  1602. thingsboard_cli/help/_generated/models/device_search_query_filter.py +40 -0
  1603. thingsboard_cli/help/_generated/models/device_transport_configuration.py +66 -0
  1604. thingsboard_cli/help/_generated/models/device_transport_type.py +8 -0
  1605. thingsboard_cli/help/_generated/models/device_type_filter.py +19 -0
  1606. thingsboard_cli/help/_generated/models/direction.py +8 -0
  1607. thingsboard_cli/help/_generated/models/disabled_device_profile_provision_configuration.py +17 -0
  1608. thingsboard_cli/help/_generated/models/divider_component.py +47 -0
  1609. thingsboard_cli/help/_generated/models/domain.py +24 -0
  1610. thingsboard_cli/help/_generated/models/domain_id.py +16 -0
  1611. thingsboard_cli/help/_generated/models/domain_info.py +38 -0
  1612. thingsboard_cli/help/_generated/models/doughnut_layout.py +8 -0
  1613. thingsboard_cli/help/_generated/models/dummy_job_configuration.py +37 -0
  1614. thingsboard_cli/help/_generated/models/dummy_job_result.py +35 -0
  1615. thingsboard_cli/help/_generated/models/dummy_task_failure.py +14 -0
  1616. thingsboard_cli/help/_generated/models/dummy_task_result.py +29 -0
  1617. thingsboard_cli/help/_generated/models/duration_alarm_condition.py +158 -0
  1618. thingsboard_cli/help/_generated/models/duration_alarm_condition_spec.py +62 -0
  1619. thingsboard_cli/help/_generated/models/dynamic_value_boolean.py +18 -0
  1620. thingsboard_cli/help/_generated/models/dynamic_value_double.py +18 -0
  1621. thingsboard_cli/help/_generated/models/dynamic_value_integer.py +18 -0
  1622. thingsboard_cli/help/_generated/models/dynamic_value_long.py +18 -0
  1623. thingsboard_cli/help/_generated/models/dynamic_value_source_type.py +8 -0
  1624. thingsboard_cli/help/_generated/models/dynamic_value_string.py +18 -0
  1625. thingsboard_cli/help/_generated/models/edge.py +31 -0
  1626. thingsboard_cli/help/_generated/models/edge_communication_failure_notification_rule_trigger_config.py +20 -0
  1627. thingsboard_cli/help/_generated/models/edge_communication_failure_recipients_config.py +20 -0
  1628. thingsboard_cli/help/_generated/models/edge_connection_notification_rule_trigger_config.py +24 -0
  1629. thingsboard_cli/help/_generated/models/edge_connection_recipients_config.py +20 -0
  1630. thingsboard_cli/help/_generated/models/edge_connectivity_event.py +8 -0
  1631. thingsboard_cli/help/_generated/models/edge_event.py +38 -0
  1632. thingsboard_cli/help/_generated/models/edge_event_action_type.py +8 -0
  1633. thingsboard_cli/help/_generated/models/edge_event_id.py +12 -0
  1634. thingsboard_cli/help/_generated/models/edge_event_type.py +8 -0
  1635. thingsboard_cli/help/_generated/models/edge_id.py +16 -0
  1636. thingsboard_cli/help/_generated/models/edge_info.py +39 -0
  1637. thingsboard_cli/help/_generated/models/edge_instructions.py +12 -0
  1638. thingsboard_cli/help/_generated/models/edge_search_query.py +33 -0
  1639. thingsboard_cli/help/_generated/models/edge_search_query_filter.py +40 -0
  1640. thingsboard_cli/help/_generated/models/edge_type_filter.py +19 -0
  1641. thingsboard_cli/help/_generated/models/edqs_api_mode.py +8 -0
  1642. thingsboard_cli/help/_generated/models/edqs_state.py +20 -0
  1643. thingsboard_cli/help/_generated/models/edqs_sync_request.py +15 -0
  1644. thingsboard_cli/help/_generated/models/edqs_sync_status.py +8 -0
  1645. thingsboard_cli/help/_generated/models/efento_coap_device_type_configuration.py +16 -0
  1646. thingsboard_cli/help/_generated/models/email_delivery_method_notification_template.py +19 -0
  1647. thingsboard_cli/help/_generated/models/email_two_fa_account_config.py +18 -0
  1648. thingsboard_cli/help/_generated/models/email_two_fa_provider_config.py +17 -0
  1649. thingsboard_cli/help/_generated/models/enterprise_captcha_params.py +22 -0
  1650. thingsboard_cli/help/_generated/models/entities_by_group_name_filter.py +26 -0
  1651. thingsboard_cli/help/_generated/models/entities_limit_notification_rule_trigger_config.py +24 -0
  1652. thingsboard_cli/help/_generated/models/entities_limit_recipients_config.py +20 -0
  1653. thingsboard_cli/help/_generated/models/entity.py +14 -0
  1654. thingsboard_cli/help/_generated/models/entity_action_notification_rule_trigger_config.py +26 -0
  1655. thingsboard_cli/help/_generated/models/entity_action_recipients_config.py +20 -0
  1656. thingsboard_cli/help/_generated/models/entity_aggregation_calculated_field_configuration.py +210 -0
  1657. thingsboard_cli/help/_generated/models/entity_alias.py +211 -0
  1658. thingsboard_cli/help/_generated/models/entity_coordinates.py +13 -0
  1659. thingsboard_cli/help/_generated/models/entity_count_query.py +319 -0
  1660. thingsboard_cli/help/_generated/models/entity_data.py +35 -0
  1661. thingsboard_cli/help/_generated/models/entity_data_diff.py +695 -0
  1662. thingsboard_cli/help/_generated/models/entity_data_info.py +17 -0
  1663. thingsboard_cli/help/_generated/models/entity_data_page_link.py +34 -0
  1664. thingsboard_cli/help/_generated/models/entity_data_query.py +340 -0
  1665. thingsboard_cli/help/_generated/models/entity_data_sort_order.py +25 -0
  1666. thingsboard_cli/help/_generated/models/entity_export_data.py +693 -0
  1667. thingsboard_cli/help/_generated/models/entity_export_settings.py +18 -0
  1668. thingsboard_cli/help/_generated/models/entity_filter.py +208 -0
  1669. thingsboard_cli/help/_generated/models/entity_group.py +79 -0
  1670. thingsboard_cli/help/_generated/models/entity_group_export_data.py +555 -0
  1671. thingsboard_cli/help/_generated/models/entity_group_filter.py +24 -0
  1672. thingsboard_cli/help/_generated/models/entity_group_id.py +16 -0
  1673. thingsboard_cli/help/_generated/models/entity_group_info.py +80 -0
  1674. thingsboard_cli/help/_generated/models/entity_group_info_owner_ids_inner.py +16 -0
  1675. thingsboard_cli/help/_generated/models/entity_group_list_filter.py +21 -0
  1676. thingsboard_cli/help/_generated/models/entity_group_name_filter.py +21 -0
  1677. thingsboard_cli/help/_generated/models/entity_id.py +158 -0
  1678. thingsboard_cli/help/_generated/models/entity_info.py +18 -0
  1679. thingsboard_cli/help/_generated/models/entity_key.py +16 -0
  1680. thingsboard_cli/help/_generated/models/entity_key_type.py +8 -0
  1681. thingsboard_cli/help/_generated/models/entity_key_value_type.py +8 -0
  1682. thingsboard_cli/help/_generated/models/entity_list_filter.py +21 -0
  1683. thingsboard_cli/help/_generated/models/entity_load_error.py +20 -0
  1684. thingsboard_cli/help/_generated/models/entity_name_filter.py +21 -0
  1685. thingsboard_cli/help/_generated/models/entity_relation.py +25 -0
  1686. thingsboard_cli/help/_generated/models/entity_relation_info.py +27 -0
  1687. thingsboard_cli/help/_generated/models/entity_relations_query.py +39 -0
  1688. thingsboard_cli/help/_generated/models/entity_search_direction.py +8 -0
  1689. thingsboard_cli/help/_generated/models/entity_subtype.py +19 -0
  1690. thingsboard_cli/help/_generated/models/entity_table_component.py +284 -0
  1691. thingsboard_cli/help/_generated/models/entity_type.py +8 -0
  1692. thingsboard_cli/help/_generated/models/entity_type_filter.py +20 -0
  1693. thingsboard_cli/help/_generated/models/entity_type_load_result.py +21 -0
  1694. thingsboard_cli/help/_generated/models/entity_type_version_create_config.py +23 -0
  1695. thingsboard_cli/help/_generated/models/entity_type_version_load_config.py +20 -0
  1696. thingsboard_cli/help/_generated/models/entity_type_version_load_request.py +35 -0
  1697. thingsboard_cli/help/_generated/models/entity_version.py +15 -0
  1698. thingsboard_cli/help/_generated/models/entity_view.py +42 -0
  1699. thingsboard_cli/help/_generated/models/entity_view_export_data.py +525 -0
  1700. thingsboard_cli/help/_generated/models/entity_view_id.py +16 -0
  1701. thingsboard_cli/help/_generated/models/entity_view_info.py +50 -0
  1702. thingsboard_cli/help/_generated/models/entity_view_search_query.py +33 -0
  1703. thingsboard_cli/help/_generated/models/entity_view_search_query_filter.py +40 -0
  1704. thingsboard_cli/help/_generated/models/entity_view_type_filter.py +19 -0
  1705. thingsboard_cli/help/_generated/models/error_component.py +53 -0
  1706. thingsboard_cli/help/_generated/models/error_component_all_of_exception.py +35 -0
  1707. thingsboard_cli/help/_generated/models/error_component_all_of_exception_cause.py +26 -0
  1708. thingsboard_cli/help/_generated/models/error_component_all_of_exception_cause_stack_trace.py +19 -0
  1709. thingsboard_cli/help/_generated/models/error_event_filter.py +23 -0
  1710. thingsboard_cli/help/_generated/models/escalated_notification_rule_recipients_config.py +20 -0
  1711. thingsboard_cli/help/_generated/models/event_filter.py +109 -0
  1712. thingsboard_cli/help/_generated/models/event_id.py +12 -0
  1713. thingsboard_cli/help/_generated/models/event_info.py +28 -0
  1714. thingsboard_cli/help/_generated/models/event_type.py +8 -0
  1715. thingsboard_cli/help/_generated/models/exportable_entity.py +20 -0
  1716. thingsboard_cli/help/_generated/models/failure.py +17 -0
  1717. thingsboard_cli/help/_generated/models/favicon.py +12 -0
  1718. thingsboard_cli/help/_generated/models/features_info.py +17 -0
  1719. thingsboard_cli/help/_generated/models/filter.py +123 -0
  1720. thingsboard_cli/help/_generated/models/filter_predicate_value_boolean.py +25 -0
  1721. thingsboard_cli/help/_generated/models/filter_predicate_value_double.py +25 -0
  1722. thingsboard_cli/help/_generated/models/filter_predicate_value_integer.py +25 -0
  1723. thingsboard_cli/help/_generated/models/filter_predicate_value_long.py +25 -0
  1724. thingsboard_cli/help/_generated/models/filter_predicate_value_string.py +25 -0
  1725. thingsboard_cli/help/_generated/models/fixed_time_window.py +13 -0
  1726. thingsboard_cli/help/_generated/models/font.py +21 -0
  1727. thingsboard_cli/help/_generated/models/font_style.py +8 -0
  1728. thingsboard_cli/help/_generated/models/font_weight.py +8 -0
  1729. thingsboard_cli/help/_generated/models/geofencing_calculated_field_configuration.py +124 -0
  1730. thingsboard_cli/help/_generated/models/geofencing_report_strategy.py +8 -0
  1731. thingsboard_cli/help/_generated/models/git_hub_models_chat_model_config.py +34 -0
  1732. thingsboard_cli/help/_generated/models/git_hub_models_provider_config.py +12 -0
  1733. thingsboard_cli/help/_generated/models/google_ai_gemini_chat_model_config.py +35 -0
  1734. thingsboard_cli/help/_generated/models/google_ai_gemini_provider_config.py +12 -0
  1735. thingsboard_cli/help/_generated/models/google_vertex_ai_gemini_chat_model_config.py +38 -0
  1736. thingsboard_cli/help/_generated/models/google_vertex_ai_gemini_provider_config.py +15 -0
  1737. thingsboard_cli/help/_generated/models/group_permission.py +26 -0
  1738. thingsboard_cli/help/_generated/models/group_permission_id.py +16 -0
  1739. thingsboard_cli/help/_generated/models/group_permission_info.py +51 -0
  1740. thingsboard_cli/help/_generated/models/has_id_object.py +12 -0
  1741. thingsboard_cli/help/_generated/models/header_footer.py +716 -0
  1742. thingsboard_cli/help/_generated/models/heading.py +37 -0
  1743. thingsboard_cli/help/_generated/models/heading_component.py +268 -0
  1744. thingsboard_cli/help/_generated/models/history.py +34 -0
  1745. thingsboard_cli/help/_generated/models/home_dashboard.py +59 -0
  1746. thingsboard_cli/help/_generated/models/home_dashboard_info.py +18 -0
  1747. thingsboard_cli/help/_generated/models/home_dashboard_params.py +13 -0
  1748. thingsboard_cli/help/_generated/models/home_menu_item.py +39 -0
  1749. thingsboard_cli/help/_generated/models/home_menu_item_type.py +8 -0
  1750. thingsboard_cli/help/_generated/models/hour_interval.py +18 -0
  1751. thingsboard_cli/help/_generated/models/image_alignment.py +8 -0
  1752. thingsboard_cli/help/_generated/models/image_component.py +276 -0
  1753. thingsboard_cli/help/_generated/models/image_source_type.py +8 -0
  1754. thingsboard_cli/help/_generated/models/image_width_type.py +8 -0
  1755. thingsboard_cli/help/_generated/models/insets.py +15 -0
  1756. thingsboard_cli/help/_generated/models/integration.py +44 -0
  1757. thingsboard_cli/help/_generated/models/integration_converters_info.py +20 -0
  1758. thingsboard_cli/help/_generated/models/integration_export_data.py +525 -0
  1759. thingsboard_cli/help/_generated/models/integration_id.py +16 -0
  1760. thingsboard_cli/help/_generated/models/integration_info.py +40 -0
  1761. thingsboard_cli/help/_generated/models/integration_lifecycle_event_notification_rule_trigger_config.py +29 -0
  1762. thingsboard_cli/help/_generated/models/integration_lifecycle_event_recipients_config.py +20 -0
  1763. thingsboard_cli/help/_generated/models/integration_type.py +8 -0
  1764. thingsboard_cli/help/_generated/models/interval.py +16 -0
  1765. thingsboard_cli/help/_generated/models/interval_type.py +8 -0
  1766. thingsboard_cli/help/_generated/models/job.py +270 -0
  1767. thingsboard_cli/help/_generated/models/job_configuration.py +213 -0
  1768. thingsboard_cli/help/_generated/models/job_id.py +16 -0
  1769. thingsboard_cli/help/_generated/models/job_result.py +67 -0
  1770. thingsboard_cli/help/_generated/models/job_status.py +8 -0
  1771. thingsboard_cli/help/_generated/models/job_type.py +8 -0
  1772. thingsboard_cli/help/_generated/models/json_transport_payload_configuration.py +16 -0
  1773. thingsboard_cli/help/_generated/models/jwt_pair.py +17 -0
  1774. thingsboard_cli/help/_generated/models/jwt_settings.py +15 -0
  1775. thingsboard_cli/help/_generated/models/key_filter.py +116 -0
  1776. thingsboard_cli/help/_generated/models/key_filter_predicate.py +101 -0
  1777. thingsboard_cli/help/_generated/models/key_info.py +19 -0
  1778. thingsboard_cli/help/_generated/models/key_sample.py +13 -0
  1779. thingsboard_cli/help/_generated/models/last_visited_dashboard_info.py +15 -0
  1780. thingsboard_cli/help/_generated/models/latest_chart_component.py +297 -0
  1781. thingsboard_cli/help/_generated/models/legend_config.py +21 -0
  1782. thingsboard_cli/help/_generated/models/legend_position.py +8 -0
  1783. thingsboard_cli/help/_generated/models/license_usage_info.py +20 -0
  1784. thingsboard_cli/help/_generated/models/life_cycle_event_filter.py +32 -0
  1785. thingsboard_cli/help/_generated/models/limited_api.py +8 -0
  1786. thingsboard_cli/help/_generated/models/line_series_settings.py +69 -0
  1787. thingsboard_cli/help/_generated/models/line_series_step_type.py +8 -0
  1788. thingsboard_cli/help/_generated/models/link_type.py +8 -0
  1789. thingsboard_cli/help/_generated/models/login401_response.py +19 -0
  1790. thingsboard_cli/help/_generated/models/login_endpoint_api.py +8 -0
  1791. thingsboard_cli/help/_generated/models/login_mobile_info.py +85 -0
  1792. thingsboard_cli/help/_generated/models/login_request.py +13 -0
  1793. thingsboard_cli/help/_generated/models/login_response.py +13 -0
  1794. thingsboard_cli/help/_generated/models/login_white_labeling_params.py +56 -0
  1795. thingsboard_cli/help/_generated/models/lw_m2_mbootstrap_server_credential.py +12 -0
  1796. thingsboard_cli/help/_generated/models/lw_m2_mserver_security_config_default.py +25 -0
  1797. thingsboard_cli/help/_generated/models/lw_m2m_instance.py +23 -0
  1798. thingsboard_cli/help/_generated/models/lw_m2m_object.py +33 -0
  1799. thingsboard_cli/help/_generated/models/lw_m2m_resource_observe.py +17 -0
  1800. thingsboard_cli/help/_generated/models/lw_m2m_version.py +12 -0
  1801. thingsboard_cli/help/_generated/models/lwm2m_device_profile_transport_configuration.py +78 -0
  1802. thingsboard_cli/help/_generated/models/lwm2m_device_transport_configuration.py +23 -0
  1803. thingsboard_cli/help/_generated/models/mapper_type.py +8 -0
  1804. thingsboard_cli/help/_generated/models/mapping.py +24 -0
  1805. thingsboard_cli/help/_generated/models/menu_item.py +63 -0
  1806. thingsboard_cli/help/_generated/models/menu_item_type.py +8 -0
  1807. thingsboard_cli/help/_generated/models/merged_group_permission_info.py +19 -0
  1808. thingsboard_cli/help/_generated/models/merged_group_type_permission_info.py +18 -0
  1809. thingsboard_cli/help/_generated/models/merged_user_permissions.py +37 -0
  1810. thingsboard_cli/help/_generated/models/microsoft_teams_delivery_method_notification_template.py +35 -0
  1811. thingsboard_cli/help/_generated/models/microsoft_teams_notification_target_config.py +25 -0
  1812. thingsboard_cli/help/_generated/models/mistral_ai_chat_model_config.py +34 -0
  1813. thingsboard_cli/help/_generated/models/mistral_ai_provider_config.py +12 -0
  1814. thingsboard_cli/help/_generated/models/mobile_app.py +48 -0
  1815. thingsboard_cli/help/_generated/models/mobile_app_bundle.py +183 -0
  1816. thingsboard_cli/help/_generated/models/mobile_app_bundle_id.py +16 -0
  1817. thingsboard_cli/help/_generated/models/mobile_app_bundle_info.py +200 -0
  1818. thingsboard_cli/help/_generated/models/mobile_app_delivery_method_notification_template.py +20 -0
  1819. thingsboard_cli/help/_generated/models/mobile_app_id.py +16 -0
  1820. thingsboard_cli/help/_generated/models/mobile_app_notification_delivery_method_config.py +19 -0
  1821. thingsboard_cli/help/_generated/models/mobile_app_status.py +8 -0
  1822. thingsboard_cli/help/_generated/models/mobile_app_version_info.py +15 -0
  1823. thingsboard_cli/help/_generated/models/mobile_layout_config.py +52 -0
  1824. thingsboard_cli/help/_generated/models/mobile_page.py +51 -0
  1825. thingsboard_cli/help/_generated/models/mobile_page_type.py +8 -0
  1826. thingsboard_cli/help/_generated/models/mobile_redirect_params.py +13 -0
  1827. thingsboard_cli/help/_generated/models/mobile_self_registration_params.py +116 -0
  1828. thingsboard_cli/help/_generated/models/mobile_session_info.py +12 -0
  1829. thingsboard_cli/help/_generated/models/model.py +14 -0
  1830. thingsboard_cli/help/_generated/models/model_none.py +33 -0
  1831. thingsboard_cli/help/_generated/models/month_interval.py +18 -0
  1832. thingsboard_cli/help/_generated/models/mqtt_device_profile_transport_configuration.py +41 -0
  1833. thingsboard_cli/help/_generated/models/mqtt_device_transport_configuration.py +16 -0
  1834. thingsboard_cli/help/_generated/models/name_conflict_policy.py +8 -0
  1835. thingsboard_cli/help/_generated/models/new_platform_version_notification_rule_trigger_config.py +19 -0
  1836. thingsboard_cli/help/_generated/models/new_platform_version_recipients_config.py +20 -0
  1837. thingsboard_cli/help/_generated/models/no_data_filter_predicate.py +27 -0
  1838. thingsboard_cli/help/_generated/models/no_sec_lw_m2_mbootstrap_server_credential.py +28 -0
  1839. thingsboard_cli/help/_generated/models/node_connection_info.py +14 -0
  1840. thingsboard_cli/help/_generated/models/none.py +16 -0
  1841. thingsboard_cli/help/_generated/models/notification.py +43 -0
  1842. thingsboard_cli/help/_generated/models/notification_delivery_method.py +8 -0
  1843. thingsboard_cli/help/_generated/models/notification_delivery_method_config.py +28 -0
  1844. thingsboard_cli/help/_generated/models/notification_id.py +16 -0
  1845. thingsboard_cli/help/_generated/models/notification_info.py +19 -0
  1846. thingsboard_cli/help/_generated/models/notification_pref.py +13 -0
  1847. thingsboard_cli/help/_generated/models/notification_request.py +126 -0
  1848. thingsboard_cli/help/_generated/models/notification_request_config.py +18 -0
  1849. thingsboard_cli/help/_generated/models/notification_request_id.py +16 -0
  1850. thingsboard_cli/help/_generated/models/notification_request_info.py +131 -0
  1851. thingsboard_cli/help/_generated/models/notification_request_preview.py +66 -0
  1852. thingsboard_cli/help/_generated/models/notification_request_stats.py +16 -0
  1853. thingsboard_cli/help/_generated/models/notification_request_status.py +8 -0
  1854. thingsboard_cli/help/_generated/models/notification_rule.py +256 -0
  1855. thingsboard_cli/help/_generated/models/notification_rule_config.py +12 -0
  1856. thingsboard_cli/help/_generated/models/notification_rule_export_data.py +525 -0
  1857. thingsboard_cli/help/_generated/models/notification_rule_id.py +16 -0
  1858. thingsboard_cli/help/_generated/models/notification_rule_info.py +261 -0
  1859. thingsboard_cli/help/_generated/models/notification_rule_recipients_config.py +94 -0
  1860. thingsboard_cli/help/_generated/models/notification_rule_trigger_config.py +159 -0
  1861. thingsboard_cli/help/_generated/models/notification_rule_trigger_type.py +8 -0
  1862. thingsboard_cli/help/_generated/models/notification_settings.py +29 -0
  1863. thingsboard_cli/help/_generated/models/notification_status.py +8 -0
  1864. thingsboard_cli/help/_generated/models/notification_target.py +109 -0
  1865. thingsboard_cli/help/_generated/models/notification_target_config.py +99 -0
  1866. thingsboard_cli/help/_generated/models/notification_target_export_data.py +525 -0
  1867. thingsboard_cli/help/_generated/models/notification_target_id.py +16 -0
  1868. thingsboard_cli/help/_generated/models/notification_template.py +85 -0
  1869. thingsboard_cli/help/_generated/models/notification_template_config.py +72 -0
  1870. thingsboard_cli/help/_generated/models/notification_template_export_data.py +525 -0
  1871. thingsboard_cli/help/_generated/models/notification_template_id.py +16 -0
  1872. thingsboard_cli/help/_generated/models/notification_type.py +8 -0
  1873. thingsboard_cli/help/_generated/models/numeric_filter_predicate.py +39 -0
  1874. thingsboard_cli/help/_generated/models/numeric_operation.py +8 -0
  1875. thingsboard_cli/help/_generated/models/oauth2_basic_mapper_config.py +24 -0
  1876. thingsboard_cli/help/_generated/models/oauth2_client.py +77 -0
  1877. thingsboard_cli/help/_generated/models/oauth2_client_id.py +16 -0
  1878. thingsboard_cli/help/_generated/models/oauth2_client_info.py +25 -0
  1879. thingsboard_cli/help/_generated/models/oauth2_client_login_info.py +14 -0
  1880. thingsboard_cli/help/_generated/models/oauth2_client_registration_template.py +70 -0
  1881. thingsboard_cli/help/_generated/models/oauth2_client_registration_template_id.py +12 -0
  1882. thingsboard_cli/help/_generated/models/oauth2_custom_mapper_config.py +15 -0
  1883. thingsboard_cli/help/_generated/models/oauth2_mapper_config.py +44 -0
  1884. thingsboard_cli/help/_generated/models/object_attributes.py +28 -0
  1885. thingsboard_cli/help/_generated/models/object_type.py +8 -0
  1886. thingsboard_cli/help/_generated/models/ollama_auth.py +30 -0
  1887. thingsboard_cli/help/_generated/models/ollama_chat_model_config.py +54 -0
  1888. thingsboard_cli/help/_generated/models/ollama_provider_config.py +32 -0
  1889. thingsboard_cli/help/_generated/models/open_ai_chat_model_config.py +35 -0
  1890. thingsboard_cli/help/_generated/models/open_ai_provider_config.py +13 -0
  1891. thingsboard_cli/help/_generated/models/operation.py +8 -0
  1892. thingsboard_cli/help/_generated/models/originator_entity_owner_users_filter.py +16 -0
  1893. thingsboard_cli/help/_generated/models/ota_package.py +40 -0
  1894. thingsboard_cli/help/_generated/models/ota_package_export_data.py +525 -0
  1895. thingsboard_cli/help/_generated/models/ota_package_id.py +16 -0
  1896. thingsboard_cli/help/_generated/models/ota_package_info.py +39 -0
  1897. thingsboard_cli/help/_generated/models/ota_package_type.py +8 -0
  1898. thingsboard_cli/help/_generated/models/other_configuration.py +25 -0
  1899. thingsboard_cli/help/_generated/models/output.py +67 -0
  1900. thingsboard_cli/help/_generated/models/page_break_component.py +23 -0
  1901. thingsboard_cli/help/_generated/models/page_data_ai_model.py +236 -0
  1902. thingsboard_cli/help/_generated/models/page_data_alarm_comment_info.py +42 -0
  1903. thingsboard_cli/help/_generated/models/page_data_alarm_data.py +74 -0
  1904. thingsboard_cli/help/_generated/models/page_data_alarm_info.py +65 -0
  1905. thingsboard_cli/help/_generated/models/page_data_alarm_rule_definition.py +484 -0
  1906. thingsboard_cli/help/_generated/models/page_data_alarm_rule_definition_info.py +485 -0
  1907. thingsboard_cli/help/_generated/models/page_data_api_key_info.py +32 -0
  1908. thingsboard_cli/help/_generated/models/page_data_asset.py +35 -0
  1909. thingsboard_cli/help/_generated/models/page_data_asset_info.py +43 -0
  1910. thingsboard_cli/help/_generated/models/page_data_asset_profile.py +36 -0
  1911. thingsboard_cli/help/_generated/models/page_data_asset_profile_info.py +29 -0
  1912. thingsboard_cli/help/_generated/models/page_data_audit_log.py +47 -0
  1913. thingsboard_cli/help/_generated/models/page_data_blob_entity_with_customer_info.py +35 -0
  1914. thingsboard_cli/help/_generated/models/page_data_calculated_field.py +488 -0
  1915. thingsboard_cli/help/_generated/models/page_data_calculated_field_info.py +489 -0
  1916. thingsboard_cli/help/_generated/models/page_data_contact_based_object.py +31 -0
  1917. thingsboard_cli/help/_generated/models/page_data_converter.py +50 -0
  1918. thingsboard_cli/help/_generated/models/page_data_custom_menu_info.py +43 -0
  1919. thingsboard_cli/help/_generated/models/page_data_customer.py +48 -0
  1920. thingsboard_cli/help/_generated/models/page_data_customer_info.py +56 -0
  1921. thingsboard_cli/help/_generated/models/page_data_dashboard_info.py +74 -0
  1922. thingsboard_cli/help/_generated/models/page_data_device.py +110 -0
  1923. thingsboard_cli/help/_generated/models/page_data_device_info.py +119 -0
  1924. thingsboard_cli/help/_generated/models/page_data_device_profile.py +270 -0
  1925. thingsboard_cli/help/_generated/models/page_data_device_profile_info.py +37 -0
  1926. thingsboard_cli/help/_generated/models/page_data_domain_info.py +46 -0
  1927. thingsboard_cli/help/_generated/models/page_data_edge.py +39 -0
  1928. thingsboard_cli/help/_generated/models/page_data_edge_event.py +46 -0
  1929. thingsboard_cli/help/_generated/models/page_data_edge_info.py +47 -0
  1930. thingsboard_cli/help/_generated/models/page_data_entity_data.py +43 -0
  1931. thingsboard_cli/help/_generated/models/page_data_entity_group_info.py +36 -0
  1932. thingsboard_cli/help/_generated/models/page_data_entity_info.py +26 -0
  1933. thingsboard_cli/help/_generated/models/page_data_entity_subtype.py +27 -0
  1934. thingsboard_cli/help/_generated/models/page_data_entity_version.py +23 -0
  1935. thingsboard_cli/help/_generated/models/page_data_entity_view.py +50 -0
  1936. thingsboard_cli/help/_generated/models/page_data_entity_view_info.py +58 -0
  1937. thingsboard_cli/help/_generated/models/page_data_event_info.py +36 -0
  1938. thingsboard_cli/help/_generated/models/page_data_integration.py +52 -0
  1939. thingsboard_cli/help/_generated/models/page_data_integration_info.py +48 -0
  1940. thingsboard_cli/help/_generated/models/page_data_job.py +278 -0
  1941. thingsboard_cli/help/_generated/models/page_data_mobile_app.py +56 -0
  1942. thingsboard_cli/help/_generated/models/page_data_mobile_app_bundle_info.py +208 -0
  1943. thingsboard_cli/help/_generated/models/page_data_notification.py +51 -0
  1944. thingsboard_cli/help/_generated/models/page_data_notification_request_info.py +139 -0
  1945. thingsboard_cli/help/_generated/models/page_data_notification_rule_info.py +269 -0
  1946. thingsboard_cli/help/_generated/models/page_data_notification_target.py +117 -0
  1947. thingsboard_cli/help/_generated/models/page_data_notification_template.py +93 -0
  1948. thingsboard_cli/help/_generated/models/page_data_oauth2_client_info.py +33 -0
  1949. thingsboard_cli/help/_generated/models/page_data_ota_package_info.py +47 -0
  1950. thingsboard_cli/help/_generated/models/page_data_queue.py +57 -0
  1951. thingsboard_cli/help/_generated/models/page_data_queue_stats.py +29 -0
  1952. thingsboard_cli/help/_generated/models/page_data_report.py +36 -0
  1953. thingsboard_cli/help/_generated/models/page_data_report_info.py +45 -0
  1954. thingsboard_cli/help/_generated/models/page_data_report_template_info.py +41 -0
  1955. thingsboard_cli/help/_generated/models/page_data_role.py +38 -0
  1956. thingsboard_cli/help/_generated/models/page_data_rule_chain.py +38 -0
  1957. thingsboard_cli/help/_generated/models/page_data_scheduled_report_info.py +45 -0
  1958. thingsboard_cli/help/_generated/models/page_data_scheduler_event_info.py +36 -0
  1959. thingsboard_cli/help/_generated/models/page_data_scheduler_event_with_customer_info.py +39 -0
  1960. thingsboard_cli/help/_generated/models/page_data_secret_info.py +33 -0
  1961. thingsboard_cli/help/_generated/models/page_data_short_entity_view.py +26 -0
  1962. thingsboard_cli/help/_generated/models/page_data_string.py +15 -0
  1963. thingsboard_cli/help/_generated/models/page_data_tb_resource_info.py +46 -0
  1964. thingsboard_cli/help/_generated/models/page_data_tenant.py +40 -0
  1965. thingsboard_cli/help/_generated/models/page_data_tenant_info.py +41 -0
  1966. thingsboard_cli/help/_generated/models/page_data_tenant_profile.py +169 -0
  1967. thingsboard_cli/help/_generated/models/page_data_trendz_view_config_lite.py +21 -0
  1968. thingsboard_cli/help/_generated/models/page_data_user.py +46 -0
  1969. thingsboard_cli/help/_generated/models/page_data_user_email_info.py +28 -0
  1970. thingsboard_cli/help/_generated/models/page_data_user_info.py +54 -0
  1971. thingsboard_cli/help/_generated/models/page_data_widget_type_info.py +43 -0
  1972. thingsboard_cli/help/_generated/models/page_data_widgets_bundle.py +35 -0
  1973. thingsboard_cli/help/_generated/models/page_orientation.py +8 -0
  1974. thingsboard_cli/help/_generated/models/page_size.py +8 -0
  1975. thingsboard_cli/help/_generated/models/palette.py +14 -0
  1976. thingsboard_cli/help/_generated/models/palette_settings.py +20 -0
  1977. thingsboard_cli/help/_generated/models/pdf_report_template_config.py +1060 -0
  1978. thingsboard_cli/help/_generated/models/pie_chart_label_position.py +8 -0
  1979. thingsboard_cli/help/_generated/models/platform_two_fa_settings.py +45 -0
  1980. thingsboard_cli/help/_generated/models/platform_type.py +8 -0
  1981. thingsboard_cli/help/_generated/models/platform_users_notification_target_config.py +64 -0
  1982. thingsboard_cli/help/_generated/models/power_mode.py +8 -0
  1983. thingsboard_cli/help/_generated/models/power_saving_configuration.py +18 -0
  1984. thingsboard_cli/help/_generated/models/privacy_protocol.py +8 -0
  1985. thingsboard_cli/help/_generated/models/processing_strategy.py +19 -0
  1986. thingsboard_cli/help/_generated/models/processing_strategy_type.py +8 -0
  1987. thingsboard_cli/help/_generated/models/propagation_calculated_field_configuration.py +124 -0
  1988. thingsboard_cli/help/_generated/models/proto_transport_payload_configuration.py +22 -0
  1989. thingsboard_cli/help/_generated/models/psklw_m2_mbootstrap_server_credential.py +28 -0
  1990. thingsboard_cli/help/_generated/models/qr_code_settings.py +44 -0
  1991. thingsboard_cli/help/_generated/models/qr_code_settings_id.py +12 -0
  1992. thingsboard_cli/help/_generated/models/qrcode_config.py +19 -0
  1993. thingsboard_cli/help/_generated/models/quarter_interval.py +18 -0
  1994. thingsboard_cli/help/_generated/models/queue.py +49 -0
  1995. thingsboard_cli/help/_generated/models/queue_id.py +16 -0
  1996. thingsboard_cli/help/_generated/models/queue_stats.py +21 -0
  1997. thingsboard_cli/help/_generated/models/queue_stats_id.py +16 -0
  1998. thingsboard_cli/help/_generated/models/quick_time_interval.py +8 -0
  1999. thingsboard_cli/help/_generated/models/rate_limits_notification_rule_trigger_config.py +23 -0
  2000. thingsboard_cli/help/_generated/models/rate_limits_recipients_config.py +20 -0
  2001. thingsboard_cli/help/_generated/models/raw_data_event_filter.py +24 -0
  2002. thingsboard_cli/help/_generated/models/read_ts_kv_query_result.py +32 -0
  2003. thingsboard_cli/help/_generated/models/referenced_entity_key.py +20 -0
  2004. thingsboard_cli/help/_generated/models/refresh_token_request.py +12 -0
  2005. thingsboard_cli/help/_generated/models/related_entities_aggregation_calculated_field_configuration.py +153 -0
  2006. thingsboard_cli/help/_generated/models/relation_entity_type_filter.py +17 -0
  2007. thingsboard_cli/help/_generated/models/relation_path_level.py +16 -0
  2008. thingsboard_cli/help/_generated/models/relation_path_query_dynamic_source_configuration.py +26 -0
  2009. thingsboard_cli/help/_generated/models/relation_type_group.py +8 -0
  2010. thingsboard_cli/help/_generated/models/relations_query_filter.py +50 -0
  2011. thingsboard_cli/help/_generated/models/relations_search_parameters.py +26 -0
  2012. thingsboard_cli/help/_generated/models/repeating_alarm_condition.py +163 -0
  2013. thingsboard_cli/help/_generated/models/repeating_alarm_condition_spec.py +62 -0
  2014. thingsboard_cli/help/_generated/models/report.py +28 -0
  2015. thingsboard_cli/help/_generated/models/report_bar_chart_settings.py +87 -0
  2016. thingsboard_cli/help/_generated/models/report_bar_chart_with_labels_settings.py +232 -0
  2017. thingsboard_cli/help/_generated/models/report_component.py +713 -0
  2018. thingsboard_cli/help/_generated/models/report_component_sub_type.py +8 -0
  2019. thingsboard_cli/help/_generated/models/report_component_type.py +8 -0
  2020. thingsboard_cli/help/_generated/models/report_doughnut_chart_settings.py +55 -0
  2021. thingsboard_cli/help/_generated/models/report_id.py +16 -0
  2022. thingsboard_cli/help/_generated/models/report_info.py +37 -0
  2023. thingsboard_cli/help/_generated/models/report_job_configuration.py +188 -0
  2024. thingsboard_cli/help/_generated/models/report_job_result.py +57 -0
  2025. thingsboard_cli/help/_generated/models/report_latest_chart_settings.py +48 -0
  2026. thingsboard_cli/help/_generated/models/report_pie_chart_settings.py +59 -0
  2027. thingsboard_cli/help/_generated/models/report_range_chart_settings.py +262 -0
  2028. thingsboard_cli/help/_generated/models/report_request.py +1074 -0
  2029. thingsboard_cli/help/_generated/models/report_task_result.py +43 -0
  2030. thingsboard_cli/help/_generated/models/report_template.py +1081 -0
  2031. thingsboard_cli/help/_generated/models/report_template_config.py +1067 -0
  2032. thingsboard_cli/help/_generated/models/report_template_export_data.py +525 -0
  2033. thingsboard_cli/help/_generated/models/report_template_id.py +16 -0
  2034. thingsboard_cli/help/_generated/models/report_template_info.py +33 -0
  2035. thingsboard_cli/help/_generated/models/report_template_type.py +8 -0
  2036. thingsboard_cli/help/_generated/models/report_time_series_chart_settings.py +204 -0
  2037. thingsboard_cli/help/_generated/models/repository_auth_method.py +8 -0
  2038. thingsboard_cli/help/_generated/models/repository_settings.py +25 -0
  2039. thingsboard_cli/help/_generated/models/repository_settings_info.py +13 -0
  2040. thingsboard_cli/help/_generated/models/reset_password_email_request.py +12 -0
  2041. thingsboard_cli/help/_generated/models/reset_password_request.py +13 -0
  2042. thingsboard_cli/help/_generated/models/resource.py +8 -0
  2043. thingsboard_cli/help/_generated/models/resource_export_data.py +28 -0
  2044. thingsboard_cli/help/_generated/models/resource_shortage_recipients_config.py +20 -0
  2045. thingsboard_cli/help/_generated/models/resource_sub_type.py +8 -0
  2046. thingsboard_cli/help/_generated/models/resource_type.py +8 -0
  2047. thingsboard_cli/help/_generated/models/resources_shortage_notification_rule_trigger_config.py +22 -0
  2048. thingsboard_cli/help/_generated/models/rich_text_component.py +263 -0
  2049. thingsboard_cli/help/_generated/models/role.py +30 -0
  2050. thingsboard_cli/help/_generated/models/role_export_data.py +525 -0
  2051. thingsboard_cli/help/_generated/models/role_id.py +16 -0
  2052. thingsboard_cli/help/_generated/models/role_type.py +8 -0
  2053. thingsboard_cli/help/_generated/models/rpc.py +28 -0
  2054. thingsboard_cli/help/_generated/models/rpc_id.py +16 -0
  2055. thingsboard_cli/help/_generated/models/rpc_status.py +8 -0
  2056. thingsboard_cli/help/_generated/models/rpklw_m2_mbootstrap_server_credential.py +28 -0
  2057. thingsboard_cli/help/_generated/models/rule_chain.py +30 -0
  2058. thingsboard_cli/help/_generated/models/rule_chain_connection_info.py +20 -0
  2059. thingsboard_cli/help/_generated/models/rule_chain_data.py +85 -0
  2060. thingsboard_cli/help/_generated/models/rule_chain_debug_event_filter.py +32 -0
  2061. thingsboard_cli/help/_generated/models/rule_chain_export_data.py +568 -0
  2062. thingsboard_cli/help/_generated/models/rule_chain_id.py +16 -0
  2063. thingsboard_cli/help/_generated/models/rule_chain_import_result.py +20 -0
  2064. thingsboard_cli/help/_generated/models/rule_chain_meta_data.py +61 -0
  2065. thingsboard_cli/help/_generated/models/rule_chain_note.py +22 -0
  2066. thingsboard_cli/help/_generated/models/rule_chain_output_labels_usage.py +21 -0
  2067. thingsboard_cli/help/_generated/models/rule_chain_type.py +8 -0
  2068. thingsboard_cli/help/_generated/models/rule_engine_component_lifecycle_event_notification_rule_trigger_config.py +28 -0
  2069. thingsboard_cli/help/_generated/models/rule_engine_component_lifecycle_event_recipients_config.py +20 -0
  2070. thingsboard_cli/help/_generated/models/rule_node.py +36 -0
  2071. thingsboard_cli/help/_generated/models/rule_node_debug_event_filter.py +54 -0
  2072. thingsboard_cli/help/_generated/models/rule_node_id.py +16 -0
  2073. thingsboard_cli/help/_generated/models/save_device_with_credentials_request.py +127 -0
  2074. thingsboard_cli/help/_generated/models/save_ota_package_info_request.py +40 -0
  2075. thingsboard_cli/help/_generated/models/scheduled_report_info.py +37 -0
  2076. thingsboard_cli/help/_generated/models/scheduler_event.py +29 -0
  2077. thingsboard_cli/help/_generated/models/scheduler_event_export_data.py +525 -0
  2078. thingsboard_cli/help/_generated/models/scheduler_event_filter.py +33 -0
  2079. thingsboard_cli/help/_generated/models/scheduler_event_id.py +16 -0
  2080. thingsboard_cli/help/_generated/models/scheduler_event_info.py +28 -0
  2081. thingsboard_cli/help/_generated/models/scheduler_event_with_customer_info.py +31 -0
  2082. thingsboard_cli/help/_generated/models/script_calculated_field_configuration.py +122 -0
  2083. thingsboard_cli/help/_generated/models/script_language.py +8 -0
  2084. thingsboard_cli/help/_generated/models/secret.py +27 -0
  2085. thingsboard_cli/help/_generated/models/secret_id.py +16 -0
  2086. thingsboard_cli/help/_generated/models/secret_info.py +25 -0
  2087. thingsboard_cli/help/_generated/models/secret_type.py +8 -0
  2088. thingsboard_cli/help/_generated/models/security_settings.py +31 -0
  2089. thingsboard_cli/help/_generated/models/self_registration_params.py +127 -0
  2090. thingsboard_cli/help/_generated/models/self_registration_type.py +8 -0
  2091. thingsboard_cli/help/_generated/models/share_group_request.py +21 -0
  2092. thingsboard_cli/help/_generated/models/shared_attributes_setting_snmp_communication_config.py +30 -0
  2093. thingsboard_cli/help/_generated/models/short_customer_info.py +19 -0
  2094. thingsboard_cli/help/_generated/models/short_entity_view.py +18 -0
  2095. thingsboard_cli/help/_generated/models/sign_up_field.py +17 -0
  2096. thingsboard_cli/help/_generated/models/sign_up_field_id.py +8 -0
  2097. thingsboard_cli/help/_generated/models/sign_up_request.py +19 -0
  2098. thingsboard_cli/help/_generated/models/sign_up_result.py +8 -0
  2099. thingsboard_cli/help/_generated/models/sign_up_self_registration_params.py +55 -0
  2100. thingsboard_cli/help/_generated/models/simple_alarm_condition.py +156 -0
  2101. thingsboard_cli/help/_generated/models/simple_alarm_condition_expression.py +104 -0
  2102. thingsboard_cli/help/_generated/models/simple_alarm_condition_spec.py +63 -0
  2103. thingsboard_cli/help/_generated/models/simple_calculated_field_configuration.py +123 -0
  2104. thingsboard_cli/help/_generated/models/simple_entity.py +13 -0
  2105. thingsboard_cli/help/_generated/models/single_entity_filter.py +30 -0
  2106. thingsboard_cli/help/_generated/models/single_entity_version_create_request.py +38 -0
  2107. thingsboard_cli/help/_generated/models/single_entity_version_load_request.py +39 -0
  2108. thingsboard_cli/help/_generated/models/slack_conversation.py +20 -0
  2109. thingsboard_cli/help/_generated/models/slack_conversation_type.py +8 -0
  2110. thingsboard_cli/help/_generated/models/slack_delivery_method_notification_template.py +18 -0
  2111. thingsboard_cli/help/_generated/models/slack_notification_delivery_method_config.py +17 -0
  2112. thingsboard_cli/help/_generated/models/slack_notification_target_config.py +32 -0
  2113. thingsboard_cli/help/_generated/models/smpp_bind_type.py +8 -0
  2114. thingsboard_cli/help/_generated/models/smpp_sms_provider_configuration.py +41 -0
  2115. thingsboard_cli/help/_generated/models/sms_delivery_method_notification_template.py +18 -0
  2116. thingsboard_cli/help/_generated/models/sms_provider_configuration.py +52 -0
  2117. thingsboard_cli/help/_generated/models/sms_two_fa_account_config.py +18 -0
  2118. thingsboard_cli/help/_generated/models/sms_two_fa_provider_config.py +18 -0
  2119. thingsboard_cli/help/_generated/models/snmp_communication_config.py +56 -0
  2120. thingsboard_cli/help/_generated/models/snmp_communication_spec.py +8 -0
  2121. thingsboard_cli/help/_generated/models/snmp_device_profile_transport_configuration.py +64 -0
  2122. thingsboard_cli/help/_generated/models/snmp_device_transport_configuration.py +37 -0
  2123. thingsboard_cli/help/_generated/models/snmp_mapping.py +17 -0
  2124. thingsboard_cli/help/_generated/models/snmp_protocol_version.py +8 -0
  2125. thingsboard_cli/help/_generated/models/solution_data.py +694 -0
  2126. thingsboard_cli/help/_generated/models/solution_export_request.py +30 -0
  2127. thingsboard_cli/help/_generated/models/solution_export_response.py +700 -0
  2128. thingsboard_cli/help/_generated/models/solution_import_result.py +14 -0
  2129. thingsboard_cli/help/_generated/models/solution_install_response.py +22 -0
  2130. thingsboard_cli/help/_generated/models/solution_step.py +8 -0
  2131. thingsboard_cli/help/_generated/models/solution_template_level.py +8 -0
  2132. thingsboard_cli/help/_generated/models/solution_validation_result.py +15 -0
  2133. thingsboard_cli/help/_generated/models/specific_time_schedule.py +20 -0
  2134. thingsboard_cli/help/_generated/models/split_view_component.py +46 -0
  2135. thingsboard_cli/help/_generated/models/starred_dashboard_info.py +14 -0
  2136. thingsboard_cli/help/_generated/models/state_entity_filter.py +30 -0
  2137. thingsboard_cli/help/_generated/models/state_entity_owner_filter.py +31 -0
  2138. thingsboard_cli/help/_generated/models/statistics_event_filter.py +25 -0
  2139. thingsboard_cli/help/_generated/models/store_info.py +14 -0
  2140. thingsboard_cli/help/_generated/models/string_filter_predicate.py +40 -0
  2141. thingsboard_cli/help/_generated/models/string_operation.py +8 -0
  2142. thingsboard_cli/help/_generated/models/sub_report_component.py +250 -0
  2143. thingsboard_cli/help/_generated/models/submit_strategy.py +16 -0
  2144. thingsboard_cli/help/_generated/models/submit_strategy_type.py +8 -0
  2145. thingsboard_cli/help/_generated/models/success.py +17 -0
  2146. thingsboard_cli/help/_generated/models/sync_strategy.py +8 -0
  2147. thingsboard_cli/help/_generated/models/system_administrators_filter.py +16 -0
  2148. thingsboard_cli/help/_generated/models/system_info.py +25 -0
  2149. thingsboard_cli/help/_generated/models/system_info_data.py +19 -0
  2150. thingsboard_cli/help/_generated/models/table_sort_direction.py +8 -0
  2151. thingsboard_cli/help/_generated/models/table_sort_order.py +16 -0
  2152. thingsboard_cli/help/_generated/models/task_processing_failure_notification_rule_trigger_config.py +19 -0
  2153. thingsboard_cli/help/_generated/models/task_processing_failure_recipients_config.py +20 -0
  2154. thingsboard_cli/help/_generated/models/task_result.py +17 -0
  2155. thingsboard_cli/help/_generated/models/tb_chat_request.py +235 -0
  2156. thingsboard_cli/help/_generated/models/tb_chat_response.py +26 -0
  2157. thingsboard_cli/help/_generated/models/tb_content.py +21 -0
  2158. thingsboard_cli/help/_generated/models/tb_image_delete_result.py +36 -0
  2159. thingsboard_cli/help/_generated/models/tb_report_format.py +8 -0
  2160. thingsboard_cli/help/_generated/models/tb_resource.py +40 -0
  2161. thingsboard_cli/help/_generated/models/tb_resource_delete_result.py +24 -0
  2162. thingsboard_cli/help/_generated/models/tb_resource_export_data.py +525 -0
  2163. thingsboard_cli/help/_generated/models/tb_resource_id.py +16 -0
  2164. thingsboard_cli/help/_generated/models/tb_resource_info.py +38 -0
  2165. thingsboard_cli/help/_generated/models/tb_secret_delete_result.py +24 -0
  2166. thingsboard_cli/help/_generated/models/tb_text_content.py +17 -0
  2167. thingsboard_cli/help/_generated/models/tb_user_message.py +22 -0
  2168. thingsboard_cli/help/_generated/models/tbel_alarm_condition_expression.py +17 -0
  2169. thingsboard_cli/help/_generated/models/telemetry_entity_view.py +20 -0
  2170. thingsboard_cli/help/_generated/models/telemetry_mapping_configuration.py +42 -0
  2171. thingsboard_cli/help/_generated/models/telemetry_observe_strategy.py +8 -0
  2172. thingsboard_cli/help/_generated/models/telemetry_querying_snmp_communication_config.py +31 -0
  2173. thingsboard_cli/help/_generated/models/tenant.py +32 -0
  2174. thingsboard_cli/help/_generated/models/tenant_administrators_filter.py +18 -0
  2175. thingsboard_cli/help/_generated/models/tenant_id.py +16 -0
  2176. thingsboard_cli/help/_generated/models/tenant_info.py +33 -0
  2177. thingsboard_cli/help/_generated/models/tenant_name_strategy_type.py +8 -0
  2178. thingsboard_cli/help/_generated/models/tenant_profile.py +161 -0
  2179. thingsboard_cli/help/_generated/models/tenant_profile_configuration.py +109 -0
  2180. thingsboard_cli/help/_generated/models/tenant_profile_data.py +145 -0
  2181. thingsboard_cli/help/_generated/models/tenant_profile_id.py +16 -0
  2182. thingsboard_cli/help/_generated/models/tenant_profile_queue_configuration.py +41 -0
  2183. thingsboard_cli/help/_generated/models/tenant_solution_template_details.py +24 -0
  2184. thingsboard_cli/help/_generated/models/tenant_solution_template_info.py +25 -0
  2185. thingsboard_cli/help/_generated/models/tenant_solution_template_instructions.py +21 -0
  2186. thingsboard_cli/help/_generated/models/test_sms_request.py +55 -0
  2187. thingsboard_cli/help/_generated/models/text_alignment.py +8 -0
  2188. thingsboard_cli/help/_generated/models/thingsboard_client.py +8 -0
  2189. thingsboard_cli/help/_generated/models/thingsboard_credentials_expired_response.py +19 -0
  2190. thingsboard_cli/help/_generated/models/thingsboard_error_code.py +8 -0
  2191. thingsboard_cli/help/_generated/models/thingsboard_error_response.py +18 -0
  2192. thingsboard_cli/help/_generated/models/threshold_label_position.py +8 -0
  2193. thingsboard_cli/help/_generated/models/time_series_chart_bar_width.py +14 -0
  2194. thingsboard_cli/help/_generated/models/time_series_chart_bar_width_settings.py +13 -0
  2195. thingsboard_cli/help/_generated/models/time_series_chart_grid_settings.py +15 -0
  2196. thingsboard_cli/help/_generated/models/time_series_chart_key_settings.py +113 -0
  2197. thingsboard_cli/help/_generated/models/time_series_chart_no_aggregation_bar_width_settings.py +24 -0
  2198. thingsboard_cli/help/_generated/models/time_series_chart_no_aggregation_bar_width_strategy.py +8 -0
  2199. thingsboard_cli/help/_generated/models/time_series_chart_series_type.py +8 -0
  2200. thingsboard_cli/help/_generated/models/time_series_chart_state_settings.py +20 -0
  2201. thingsboard_cli/help/_generated/models/time_series_chart_state_source_type.py +8 -0
  2202. thingsboard_cli/help/_generated/models/time_series_chart_threshold.py +61 -0
  2203. thingsboard_cli/help/_generated/models/time_series_chart_xaxis_settings.py +43 -0
  2204. thingsboard_cli/help/_generated/models/time_series_chart_yaxis_settings.py +50 -0
  2205. thingsboard_cli/help/_generated/models/time_series_immediate_output_strategy.py +21 -0
  2206. thingsboard_cli/help/_generated/models/time_series_output.py +41 -0
  2207. thingsboard_cli/help/_generated/models/time_series_output_strategy.py +28 -0
  2208. thingsboard_cli/help/_generated/models/time_series_rule_chain_output_strategy.py +16 -0
  2209. thingsboard_cli/help/_generated/models/time_unit.py +8 -0
  2210. thingsboard_cli/help/_generated/models/time_window_configuration.py +50 -0
  2211. thingsboard_cli/help/_generated/models/timeseries_chart_component.py +448 -0
  2212. thingsboard_cli/help/_generated/models/timeseries_table_component.py +289 -0
  2213. thingsboard_cli/help/_generated/models/to_core_edqs_request.py +21 -0
  2214. thingsboard_cli/help/_generated/models/to_device_rpc_request_snmp_communication_config.py +30 -0
  2215. thingsboard_cli/help/_generated/models/to_server_rpc_request_snmp_communication_config.py +30 -0
  2216. thingsboard_cli/help/_generated/models/token.py +17 -0
  2217. thingsboard_cli/help/_generated/models/totp_two_fa_account_config.py +18 -0
  2218. thingsboard_cli/help/_generated/models/totp_two_fa_provider_config.py +17 -0
  2219. thingsboard_cli/help/_generated/models/translation_info.py +16 -0
  2220. thingsboard_cli/help/_generated/models/transport_payload_type_configuration.py +29 -0
  2221. thingsboard_cli/help/_generated/models/trendz_configuration.py +13 -0
  2222. thingsboard_cli/help/_generated/models/trendz_healthcheck_result.py +21 -0
  2223. thingsboard_cli/help/_generated/models/trendz_summary.py +17 -0
  2224. thingsboard_cli/help/_generated/models/trendz_synchronization_result.py +21 -0
  2225. thingsboard_cli/help/_generated/models/trendz_synchronization_result_type.py +8 -0
  2226. thingsboard_cli/help/_generated/models/trendz_synchronization_status.py +8 -0
  2227. thingsboard_cli/help/_generated/models/trendz_usage.py +31 -0
  2228. thingsboard_cli/help/_generated/models/trendz_view_config.py +14 -0
  2229. thingsboard_cli/help/_generated/models/trendz_view_config_lite.py +13 -0
  2230. thingsboard_cli/help/_generated/models/ts_data.py +13 -0
  2231. thingsboard_cli/help/_generated/models/ts_kv_entry.py +25 -0
  2232. thingsboard_cli/help/_generated/models/ts_value.py +14 -0
  2233. thingsboard_cli/help/_generated/models/twilio_sms_provider_configuration.py +19 -0
  2234. thingsboard_cli/help/_generated/models/two_fa_account_config.py +38 -0
  2235. thingsboard_cli/help/_generated/models/two_fa_account_config_update_request.py +12 -0
  2236. thingsboard_cli/help/_generated/models/two_fa_provider_config.py +37 -0
  2237. thingsboard_cli/help/_generated/models/two_fa_provider_info.py +18 -0
  2238. thingsboard_cli/help/_generated/models/two_fa_provider_type.py +8 -0
  2239. thingsboard_cli/help/_generated/models/uniquify_strategy.py +8 -0
  2240. thingsboard_cli/help/_generated/models/update_message.py +17 -0
  2241. thingsboard_cli/help/_generated/models/usage.py +8 -0
  2242. thingsboard_cli/help/_generated/models/usage_info.py +40 -0
  2243. thingsboard_cli/help/_generated/models/user.py +38 -0
  2244. thingsboard_cli/help/_generated/models/user_activation_link.py +13 -0
  2245. thingsboard_cli/help/_generated/models/user_dashboards_info.py +28 -0
  2246. thingsboard_cli/help/_generated/models/user_email_info.py +20 -0
  2247. thingsboard_cli/help/_generated/models/user_export_data.py +525 -0
  2248. thingsboard_cli/help/_generated/models/user_group_list_filter.py +17 -0
  2249. thingsboard_cli/help/_generated/models/user_id.py +16 -0
  2250. thingsboard_cli/help/_generated/models/user_info.py +46 -0
  2251. thingsboard_cli/help/_generated/models/user_list_filter.py +17 -0
  2252. thingsboard_cli/help/_generated/models/user_mobile_info.py +68 -0
  2253. thingsboard_cli/help/_generated/models/user_notification_settings.py +18 -0
  2254. thingsboard_cli/help/_generated/models/user_password_policy.py +21 -0
  2255. thingsboard_cli/help/_generated/models/user_role_filter.py +17 -0
  2256. thingsboard_cli/help/_generated/models/users_filter.py +57 -0
  2257. thingsboard_cli/help/_generated/models/v2_captcha_params.py +19 -0
  2258. thingsboard_cli/help/_generated/models/v3_captcha_params.py +19 -0
  2259. thingsboard_cli/help/_generated/models/value_source_type.py +8 -0
  2260. thingsboard_cli/help/_generated/models/vendor.py +13 -0
  2261. thingsboard_cli/help/_generated/models/version_create_config.py +17 -0
  2262. thingsboard_cli/help/_generated/models/version_create_request.py +64 -0
  2263. thingsboard_cli/help/_generated/models/version_create_request_type.py +8 -0
  2264. thingsboard_cli/help/_generated/models/version_creation_result.py +25 -0
  2265. thingsboard_cli/help/_generated/models/version_load_config.py +18 -0
  2266. thingsboard_cli/help/_generated/models/version_load_request.py +62 -0
  2267. thingsboard_cli/help/_generated/models/version_load_request_type.py +8 -0
  2268. thingsboard_cli/help/_generated/models/version_load_result.py +38 -0
  2269. thingsboard_cli/help/_generated/models/versioned_entity_info.py +18 -0
  2270. thingsboard_cli/help/_generated/models/vertical_alignment.py +8 -0
  2271. thingsboard_cli/help/_generated/models/watermark.py +12 -0
  2272. thingsboard_cli/help/_generated/models/web_delivery_method_notification_template.py +20 -0
  2273. thingsboard_cli/help/_generated/models/web_self_registration_params.py +110 -0
  2274. thingsboard_cli/help/_generated/models/web_view_page.py +23 -0
  2275. thingsboard_cli/help/_generated/models/week_interval.py +18 -0
  2276. thingsboard_cli/help/_generated/models/week_sun_sat_interval.py +18 -0
  2277. thingsboard_cli/help/_generated/models/white_labeling.py +24 -0
  2278. thingsboard_cli/help/_generated/models/white_labeling_params.py +44 -0
  2279. thingsboard_cli/help/_generated/models/white_labeling_type.py +8 -0
  2280. thingsboard_cli/help/_generated/models/widget_bundle_info.py +18 -0
  2281. thingsboard_cli/help/_generated/models/widget_type.py +25 -0
  2282. thingsboard_cli/help/_generated/models/widget_type_details.py +50 -0
  2283. thingsboard_cli/help/_generated/models/widget_type_export_data.py +525 -0
  2284. thingsboard_cli/help/_generated/models/widget_type_id.py +16 -0
  2285. thingsboard_cli/help/_generated/models/widget_type_info.py +35 -0
  2286. thingsboard_cli/help/_generated/models/widgets_bundle.py +27 -0
  2287. thingsboard_cli/help/_generated/models/widgets_bundle_export_data.py +527 -0
  2288. thingsboard_cli/help/_generated/models/widgets_bundle_id.py +16 -0
  2289. thingsboard_cli/help/_generated/models/x509_certificate_chain_provision_configuration.py +19 -0
  2290. thingsboard_cli/help/_generated/models/x509_lw_m2_mbootstrap_server_credential.py +28 -0
  2291. thingsboard_cli/help/_generated/models/year_interval.py +18 -0
  2292. thingsboard_cli/help/_generated/models/zone_group_configuration.py +48 -0
  2293. thingsboard_cli/main.py +1027 -0
  2294. thingsboard_cli/resources/manifest.json +4 -0
  2295. thingsboard_cli/resources/maven_wrapper/.mvn/wrapper/maven-wrapper.properties +3 -0
  2296. thingsboard_cli/resources/maven_wrapper/mvnw +295 -0
  2297. thingsboard_cli/resources/maven_wrapper/mvnw.cmd +189 -0
  2298. thingsboard_cli/resources/prompts/ai-assistant/main-assistant-prompt.md +112 -0
  2299. thingsboard_cli/resources/prompts/ai-assistant/skills/alarms/SKILL.md +101 -0
  2300. thingsboard_cli/resources/prompts/ai-assistant/skills/alarms/references/alarm-rules.md +795 -0
  2301. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/SKILL.md +216 -0
  2302. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/geofencing.md +253 -0
  2303. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/propagation.md +213 -0
  2304. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/related-aggregation.md +286 -0
  2305. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/script.md +338 -0
  2306. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/simple.md +210 -0
  2307. thingsboard_cli/resources/prompts/ai-assistant/skills/calculated-fields/references/ts-aggregation.md +261 -0
  2308. thingsboard_cli/resources/prompts/solutions/alarm/resources/alarm-capabilities.md +555 -0
  2309. thingsboard_cli/resources/prompts/solutions/alarm/resources/alarms-schema.json +445 -0
  2310. thingsboard_cli/resources/prompts/solutions/cf/resources/related-aggregation/capabilities.md +85 -0
  2311. thingsboard_cli/resources/prompts/solutions/cf/resources/related-aggregation/example.json +36 -0
  2312. thingsboard_cli/resources/prompts/solutions/cf/resources/related-aggregation/schema.json +93 -0
  2313. thingsboard_cli/resources/prompts/solutions/cf/resources/script/capabilities.md +156 -0
  2314. thingsboard_cli/resources/prompts/solutions/cf/resources/script/example.json +17 -0
  2315. thingsboard_cli/resources/prompts/solutions/cf/resources/script/schema.json +19 -0
  2316. thingsboard_cli/resources/prompts/solutions/cf/resources/ts-aggregation/capabilities.md +45 -0
  2317. thingsboard_cli/resources/prompts/solutions/cf/resources/ts-aggregation/example.json +18 -0
  2318. thingsboard_cli/resources/prompts/solutions/cf/resources/ts-aggregation/schema.json +83 -0
  2319. thingsboard_cli/resources/prompts/solutions/dashboard/resources/ba-overview/ba-dashboard-overview-capabilities.md +211 -0
  2320. thingsboard_cli/resources/prompts/solutions/dashboard/resources/ba-overview/ba-dashboards-overview-schema.json +94 -0
  2321. thingsboard_cli/resources/prompts/solutions/dashboard/resources/ba-overview/dashboards-ready-example.json +68 -0
  2322. thingsboard_cli/resources/prompts/solutions/dashboard/resources/icons.json +22 -0
  2323. thingsboard_cli/resources/prompts/solutions/dashboard/resources/images.json +95 -0
  2324. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/change-owner-dialog/action-capabilities.md +47 -0
  2325. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/change-owner-dialog/action-schema.json +41 -0
  2326. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/change-state/action-capabilities.md +75 -0
  2327. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/change-state/action-schema.json +35 -0
  2328. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/common-action-capabilities.md +101 -0
  2329. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/create-entity-dialog/action-capabilities.md +183 -0
  2330. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/create-entity-dialog/action-schema.json +209 -0
  2331. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/create-map-entity-dialog/action-capabilities.md +173 -0
  2332. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/create-map-entity-dialog/action-schema.json +238 -0
  2333. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/delete-entity-dialog/action-capabilities.md +59 -0
  2334. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/delete-entity-dialog/action-schema.json +35 -0
  2335. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/drill-down/action-capabilities.md +72 -0
  2336. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/drill-down/action-schema.json +33 -0
  2337. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/edit-entity-dialog/action-capabilities.md +82 -0
  2338. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-action/edit-entity-dialog/action-schema.json +285 -0
  2339. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-actions/dashboard-state-actions-capabilities.md +132 -0
  2340. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-actions/dashboard-state-actions-schema.json +46 -0
  2341. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/asset-search-query/datasource-capabilities.md +51 -0
  2342. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/asset-search-query/datasource-schema.json +40 -0
  2343. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/asset-type/datasource-capabilities.md +33 -0
  2344. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/asset-type/datasource-schema.json +25 -0
  2345. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/common-datasource-capabilities.md +41 -0
  2346. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/customer-entities/datasource-capabilities.md +35 -0
  2347. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/customer-entities/datasource-schema.json +34 -0
  2348. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/customers-by-profile/datasource-capabilities.md +32 -0
  2349. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/customers-by-profile/datasource-schema.json +22 -0
  2350. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/dashboard-state-datasource-capabilities.md +121 -0
  2351. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/dashboard-state-datasource-schema.json +61 -0
  2352. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/device-search-query/datasource-capabilities.md +51 -0
  2353. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/device-search-query/datasource-schema.json +40 -0
  2354. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/device-type/datasource-capabilities.md +33 -0
  2355. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/device-type/datasource-schema.json +25 -0
  2356. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/entity-name/datasource-capabilities.md +29 -0
  2357. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/entity-name/datasource-schema.json +35 -0
  2358. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/entity-type/datasource-capabilities.md +35 -0
  2359. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/entity-type/datasource-schema.json +29 -0
  2360. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/relations-query/datasource-capabilities.md +51 -0
  2361. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/relations-query/datasource-schema.json +54 -0
  2362. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/single-entity/datasource-capabilities.md +30 -0
  2363. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/single-entity/datasource-schema.json +27 -0
  2364. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/state-entity/datasource-capabilities.md +35 -0
  2365. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-datasource/state-entity/datasource-schema.json +22 -0
  2366. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-layout/dashboard-state-layout-capabilities.md +413 -0
  2367. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-layout/dashboard-state-layout-schema.json +45 -0
  2368. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/action-button/widget-capabilities.md +20 -0
  2369. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/action-button/widget-schema.json +39 -0
  2370. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/alarm-count/widget-capabilities.md +15 -0
  2371. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/alarm-count/widget-schema.json +28 -0
  2372. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/alarm-table/widget-capabilities.md +28 -0
  2373. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/alarm-table/widget-schema.json +28 -0
  2374. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/bar-chart/widget-capabilities.md +27 -0
  2375. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/bar-chart/widget-schema.json +65 -0
  2376. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/battery-level/widget-capabilities.md +24 -0
  2377. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/battery-level/widget-schema.json +53 -0
  2378. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/chart/widget-capabilities.md +34 -0
  2379. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/chart/widget-schema.json +123 -0
  2380. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/common-widget-capabilities.md +40 -0
  2381. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/entity-table/widget-capabilities.md +40 -0
  2382. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/entity-table/widget-schema.json +78 -0
  2383. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/header-card/widget-capabilities.md +52 -0
  2384. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/header-card/widget-schema.json +65 -0
  2385. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/horizontal-value-card/widget-capabilities.md +38 -0
  2386. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/horizontal-value-card/widget-schema.json +65 -0
  2387. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/indoor-map/widget-capabilities.md +138 -0
  2388. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/indoor-map/widget-schema.json +291 -0
  2389. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/info-card/widget-capabilities.md +54 -0
  2390. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/info-card/widget-schema.json +69 -0
  2391. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/navigation-widget/widget-capabilities.md +40 -0
  2392. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/navigation-widget/widget-schema.json +38 -0
  2393. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/outdoor-map/widget-capabilities.md +101 -0
  2394. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/outdoor-map/widget-schema.json +232 -0
  2395. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/pie-chart/widget-capabilities.md +30 -0
  2396. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/pie-chart/widget-schema.json +69 -0
  2397. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/progress-bar/widget-capabilities.md +51 -0
  2398. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/progress-bar/widget-schema.json +101 -0
  2399. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/range-chart/widget-capabilities.md +52 -0
  2400. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/range-chart/widget-schema.json +123 -0
  2401. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/signal-strength/widget-capabilities.md +33 -0
  2402. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/signal-strength/widget-schema.json +92 -0
  2403. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/simple-gauge/widget-capabilities.md +57 -0
  2404. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/simple-gauge/widget-schema.json +112 -0
  2405. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/state-chart/widget-capabilities.md +120 -0
  2406. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/state-chart/widget-schema.json +172 -0
  2407. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/value-chart-card/widget-capabilities.md +27 -0
  2408. thingsboard_cli/resources/prompts/solutions/dashboard/resources/state-widget/value-chart-card/widget-schema.json +62 -0
  2409. thingsboard_cli/resources/prompts/solutions/dashboard/resources/states/dashboard-states-capabilities.md +702 -0
  2410. thingsboard_cli/resources/prompts/solutions/dashboard/resources/states/dashboard-states-schema.json +97 -0
  2411. thingsboard_cli/resources/prompts/solutions/data-generator/resources/customer-and-users-generator-schema.json +94 -0
  2412. thingsboard_cli/resources/prompts/solutions/data-generator/resources/devices-and-assets-generator-schema.json +138 -0
  2413. thingsboard_cli/resources/prompts/solutions/data-generator/resources/entity-relations-schema.json +55 -0
  2414. thingsboard_cli/resources/prompts/solutions/data-generator/resources/generator-guidelines.md +280 -0
  2415. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/composite-value-strategy-example.json +15 -0
  2416. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/composite-value-strategy-schema.json +45 -0
  2417. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/constant-value-strategy-example.json +4 -0
  2418. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/constant-value-strategy-schema.json +17 -0
  2419. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/counter-value-strategy-example.json +14 -0
  2420. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/counter-value-strategy-schema.json +61 -0
  2421. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/dec-value-strategy-example.json +10 -0
  2422. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/dec-value-strategy-schema.json +41 -0
  2423. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/event-value-strategy-example.json +6 -0
  2424. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/event-value-strategy-schema.json +25 -0
  2425. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/inc-value-strategy-example.json +10 -0
  2426. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/inc-value-strategy-schema.json +41 -0
  2427. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/natural-value-strategy-example.json +17 -0
  2428. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/natural-value-strategy-schema.json +78 -0
  2429. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/schedule-value-strategy-example.json +32 -0
  2430. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/schedule-value-strategy-schema.json +93 -0
  2431. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/sequence-value-strategy-example.json +19 -0
  2432. thingsboard_cli/resources/prompts/solutions/data-generator/resources/value-strategies/sequence-value-strategy-schema.json +30 -0
  2433. thingsboard_cli/resources/prompts/solutions/main-prompt.txt +66 -0
  2434. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-capabilities.md +403 -0
  2435. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-in-progress-example.json +6 -0
  2436. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-ready-example-1.json +26 -0
  2437. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-ready-example-2.json +26 -0
  2438. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-ready-example-3.json +24 -0
  2439. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-ready-example-4.json +23 -0
  2440. thingsboard_cli/resources/prompts/solutions/solution-ba/resources/solution-schema.json +166 -0
  2441. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/alarms/alarm-capabilities.md +134 -0
  2442. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/alarms/schema.json +175 -0
  2443. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/entity-profiles/entity-profile-planner-rules.md +57 -0
  2444. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/entity-profiles/entity-profile-schema.json +126 -0
  2445. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/entity-profiles/entity-profiles-schema.json +125 -0
  2446. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/entity-profiles/entity-profiles.md +142 -0
  2447. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/iam/iam-schema.json +40 -0
  2448. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/iam/iam.json +23 -0
  2449. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/iam/iam.md +16 -0
  2450. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/delta/metric-capabilities.md +47 -0
  2451. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/delta/schema.json +113 -0
  2452. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/geofencing/metric-capabilities.md +83 -0
  2453. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/geofencing/schema.json +224 -0
  2454. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/math/metric-capabilities.md +80 -0
  2455. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/math/schema.json +113 -0
  2456. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/propagate/metric-capabilities.md +88 -0
  2457. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/propagate/schema.json +177 -0
  2458. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/related-aggregation/metric-capabilities.md +130 -0
  2459. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/related-aggregation/schema.json +205 -0
  2460. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/script/metric-capabilities.md +128 -0
  2461. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/script/schema.json +124 -0
  2462. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/ts-aggregation/metric-capabilities.md +56 -0
  2463. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/metrics/ts-aggregation/schema.json +110 -0
  2464. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/relations/entity-relations-generation.md +30 -0
  2465. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/relations/entity-relations-schema.json +42 -0
  2466. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/relations/entity-relations.md +56 -0
  2467. thingsboard_cli/resources/prompts/solutions/solution-entities/resources/solution-schema.json +634 -0
  2468. thingsboard_cli/resources/prompts/solutions/solution-planner/resources/patterns-and-constraints.md +531 -0
  2469. thingsboard_cli/resources/prompts/solutions/solution-planner/resources/schema.json +379 -0
  2470. thingsboard_cli/resources/prompts/tbel/tbel-reference.md +604 -0
  2471. thingsboard_cli/resources/templates/widget-action/change-owner-dialog.html +40 -0
  2472. thingsboard_cli/resources/templates/widget-action/change-owner-dialog.js +99 -0
  2473. thingsboard_cli/resources/templates/widget-action/delete-entity-function.js +91 -0
  2474. thingsboard_cli/resources/templates/widget-action/entity-dialog.html +36 -0
  2475. thingsboard_cli/resources/templates/widget-action/entity-dialog.js +308 -0
  2476. thingsboard_cli/resources/templates/widget-action/field/image-field.html +2 -0
  2477. thingsboard_cli/resources/templates/widget-action/field/number-field.html +8 -0
  2478. thingsboard_cli/resources/templates/widget-action/field/profile-field.html +12 -0
  2479. thingsboard_cli/resources/templates/widget-action/field/relation-field.html +21 -0
  2480. thingsboard_cli/resources/templates/widget-action/field/select-field.html +12 -0
  2481. thingsboard_cli/resources/templates/widget-action/field/text-field.html +7 -0
  2482. thingsboard_cli/resources/templates/widget-action/field/textarea-field.html +7 -0
  2483. thingsboard_cli/resources/templates/widget-action/field/toggle-field.html +2 -0
  2484. thingsboard_cli/scaffold/.claude/CLAUDE.md +248 -0
  2485. thingsboard_cli/scaffold/.claude/agents/alarm-generator.md +109 -0
  2486. thingsboard_cli/scaffold/.claude/agents/alarms-designer.md +109 -0
  2487. thingsboard_cli/scaffold/.claude/agents/asset-profiles-generator.md +45 -0
  2488. thingsboard_cli/scaffold/.claude/agents/assets-generator.md +48 -0
  2489. thingsboard_cli/scaffold/.claude/agents/attribute-values-generator.md +124 -0
  2490. thingsboard_cli/scaffold/.claude/agents/cf-generator.md +179 -0
  2491. thingsboard_cli/scaffold/.claude/agents/cf-reprocess-generator.md +132 -0
  2492. thingsboard_cli/scaffold/.claude/agents/customers-generator.md +50 -0
  2493. thingsboard_cli/scaffold/.claude/agents/dashboard-json-generator.md +2149 -0
  2494. thingsboard_cli/scaffold/.claude/agents/device-emulator-generator.md +210 -0
  2495. thingsboard_cli/scaffold/.claude/agents/device-profiles-generator.md +47 -0
  2496. thingsboard_cli/scaffold/.claude/agents/devices-generator.md +48 -0
  2497. thingsboard_cli/scaffold/.claude/agents/entities-planner.md +294 -0
  2498. thingsboard_cli/scaffold/.claude/agents/entity-groups-generator.md +59 -0
  2499. thingsboard_cli/scaffold/.claude/agents/entity-profiles-designer.md +100 -0
  2500. thingsboard_cli/scaffold/.claude/agents/extension-builder.md +462 -0
  2501. thingsboard_cli/scaffold/.claude/agents/iam-designer.md +98 -0
  2502. thingsboard_cli/scaffold/.claude/agents/instance-entity-discoverer.md +71 -0
  2503. thingsboard_cli/scaffold/.claude/agents/metrics-designer.md +165 -0
  2504. thingsboard_cli/scaffold/.claude/agents/relations-designer.md +89 -0
  2505. thingsboard_cli/scaffold/.claude/agents/relations-generator.md +45 -0
  2506. thingsboard_cli/scaffold/.claude/agents/roles-generator.md +51 -0
  2507. thingsboard_cli/scaffold/.claude/agents/users-generator.md +62 -0
  2508. thingsboard_cli/scaffold/.claude/agents/wiring-executor.md +90 -0
  2509. thingsboard_cli/scaffold/.claude/examples/dashboards/building_systems_administration.json +4862 -0
  2510. thingsboard_cli/scaffold/.claude/examples/dashboards/coffee_machine_administration.json +1640 -0
  2511. thingsboard_cli/scaffold/.claude/examples/dashboards/facility_operations_dashboard.json +3679 -0
  2512. thingsboard_cli/scaffold/.claude/settings.json +13 -0
  2513. thingsboard_cli/scaffold/.claude/skills/.gitkeep +0 -0
  2514. thingsboard_cli/scaffold/.claude/skills/commit-step/SKILL.md +96 -0
  2515. thingsboard_cli/scaffold/.claude/skills/create-extension/SKILL.md +200 -0
  2516. thingsboard_cli/scaffold/.claude/skills/create-solution/SKILL.md +793 -0
  2517. thingsboard_cli/scaffold/.claude/skills/design-dashboards/SKILL.md +277 -0
  2518. thingsboard_cli/scaffold/.claude/skills/design-solution-architecture/SKILL.md +279 -0
  2519. thingsboard_cli/scaffold/.claude/skills/generate-alarms/SKILL.md +71 -0
  2520. thingsboard_cli/scaffold/.claude/skills/generate-attributes/SKILL.md +96 -0
  2521. thingsboard_cli/scaffold/.claude/skills/generate-calculated-fields/SKILL.md +67 -0
  2522. thingsboard_cli/scaffold/.claude/skills/generate-dashboard-json/SKILL.md +77 -0
  2523. thingsboard_cli/scaffold/.claude/skills/generate-emulators/SKILL.md +102 -0
  2524. thingsboard_cli/scaffold/.claude/skills/generate-entities/SKILL.md +121 -0
  2525. thingsboard_cli/scaffold/.claude/skills/pull-solution/SKILL.md +239 -0
  2526. thingsboard_cli/scaffold/.claude/skills/reprocess-calculated-fields/SKILL.md +45 -0
  2527. thingsboard_cli/scaffold/.gitignore +1 -0
  2528. thingsboard_cli/scaffold/manifest.json +4 -0
  2529. thingsboard_cli-4.3.1.2.dist-info/METADATA +129 -0
  2530. thingsboard_cli-4.3.1.2.dist-info/RECORD +2532 -0
  2531. thingsboard_cli-4.3.1.2.dist-info/WHEEL +4 -0
  2532. thingsboard_cli-4.3.1.2.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,3679 @@
1
+ {
2
+ "title": "Facility Operations Dashboard",
3
+ "name": "Facility Operations Dashboard",
4
+ "image": null,
5
+ "mobileHide": false,
6
+ "mobileOrder": null,
7
+ "configuration": {
8
+ "timewindow": {
9
+ "selectedTab": 1,
10
+ "history": {
11
+ "historyType": 0,
12
+ "timewindowMs": 604800000
13
+ },
14
+ "aggregation": {
15
+ "type": "NONE",
16
+ "limit": 25000
17
+ }
18
+ },
19
+ "settings": {
20
+ "stateControllerId": "entity",
21
+ "showTitle": false,
22
+ "showDashboardsSelect": true,
23
+ "showEntitiesSelect": true,
24
+ "showDashboardTimewindow": true,
25
+ "showDashboardExport": true,
26
+ "toolbarAlwaysOpen": true
27
+ },
28
+ "widgets": {
29
+ "fc802397-a495-4ad5-b37d-2788a09685bc": {
30
+ "sizeX": 12,
31
+ "sizeY": 5,
32
+ "row": 6,
33
+ "col": 0,
34
+ "config": {
35
+ "configMode": "basic",
36
+ "title": "Office Units",
37
+ "titleFont": {
38
+ "size": 21,
39
+ "sizeUnit": "px",
40
+ "weight": "500",
41
+ "lineHeight": "22px"
42
+ },
43
+ "showTitle": true,
44
+ "dropShadow": false,
45
+ "enableFullscreen": false,
46
+ "enableDataExport": false,
47
+ "padding": "4px",
48
+ "borderRadius": "8px",
49
+ "widgetStyle": {
50
+ "box-shadow": "0px 2px 4px 0px #00000024;"
51
+ },
52
+ "actions": {
53
+ "rowClick": [
54
+ {
55
+ "id": "d4814669-b3ad-459b-b2be-f728c7c0ee41",
56
+ "name": "View Office Unit Details",
57
+ "icon": "arrow_forward",
58
+ "type": "openDashboardState",
59
+ "targetDashboardStateId": "office-unit-details",
60
+ "setEntityId": true,
61
+ "stateEntityParamName": "selectedOfficeUnit"
62
+ }
63
+ ],
64
+ "headerButton": [
65
+ {
66
+ "id": "47df571c-ef5e-4c8e-a2c0-b82605cd3c0b",
67
+ "name": "Create Office Unit",
68
+ "icon": "add",
69
+ "type": "customPretty",
70
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Create New Office Unit\";\nlet createEntity = true;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = \"ASSET\";\n let entitySubType = \"OfficeUnit\";\n let entityOwner = \"currentCustomer\";\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n let createRelations = [{\"fromStateEntity\":\"selectedOfficeFloor\",\"type\":\"OfficeFloorToOfficeUnit\"}];\n if (createRelations && createRelations.length) {\n let stateParams = widgetContext.stateController.getStateParams();\n for (let createRelation of createRelations) {\n let fromEntityId = null;\n if (createRelation.fromStateEntity === 'singleEntity' && singleEntityId) {\n fromEntityId = singleEntityId;\n } else if (createRelation.fromStateEntity && stateParams[createRelation.fromStateEntity]) {\n fromEntityId = stateParams[createRelation.fromStateEntity].entityId;\n } else {\n fromEntityId = stateParams.entityId;\n }\n if (!fromEntityId && createRelation.fromStateEntity === 'currentCustomer') {\n fromEntityId = {id: currentUser.customerId, entityType: \"CUSTOMER\" };\n }\n if (fromEntityId && fromEntityId.id && fromEntityId.entityType) {\n let relation = {\n type: createRelation.type,\n typeGroup: 'COMMON',\n from: fromEntityId,\n to: entityId\n };\n createRelationsObservables.push(entityRelationService.saveRelation(relation));\n }\n }\n }\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = [\"OfficeUnit\"];\n \n let entityOwner = \"currentCustomer\";\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
71
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Office Unit Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Office unit name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
72
+ }
73
+ ],
74
+ "actionCellButton": [
75
+ {
76
+ "id": "223a1996-107a-4cf8-8bdb-1b499283569c",
77
+ "name": "Edit Office Unit",
78
+ "icon": "edit",
79
+ "type": "customPretty",
80
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Edit Office Unit '${entityName}'\";\nlet createEntity = false;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = null;\n let entitySubType = null;\n let entityOwner = null;\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = null;\n \n let entityOwner = null;\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
81
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Unit Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Unit name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
82
+ },
83
+ {
84
+ "id": "0b926f38-6887-40e7-b7d6-6a8f4303aed8",
85
+ "name": "Delete Office Unit",
86
+ "icon": "delete",
87
+ "type": "custom",
88
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet dialogs = $injector.get(widgetContext.servicesMap.get('dialogs'));\nlet deleteEntityTitle = \"Delete Office Unit '${entityName}'\";\nlet deleteEntityPrompt = \"Are you sure you want to delete the office unit '${entityName}'?\";\n\ndeleteEntityTitle = deleteEntityTitle.replaceAll('${entityName}', entityName);\ndeleteEntityPrompt = deleteEntityPrompt.replaceAll('${entityName}', entityName);\n\nopenDeleteEntityDialog();\n\nfunction openDeleteEntityDialog() {\n dialogs.confirm(deleteEntityTitle, deleteEntityPrompt, 'Cancel', 'Delete').subscribe(\n function(result) {\n if (result) {\n deleteEntity(entityId);\n }\n }\n );\n}\n\nfunction deleteEntity(entityId) {\n let deleteObservable = null;\n switch (entityId.entityType) {\n case 'DEVICE':\n let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\n deleteObservable = deviceService.deleteDevice(entityId.id);\n break;\n case 'ASSET':\n let assetService = $injector.get(widgetContext.servicesMap.get('assetService'));\n deleteObservable = assetService.deleteAsset(entityId.id);\n break;\n case 'ENTITY_VIEW':\n let entityViewService = $injector.get(widgetContext.servicesMap.get('entityViewService'));\n deleteObservable = entityViewService.deleteEntityView(entityId.id);\n break;\n case 'EDGE':\n let edgeService = $injector.get(widgetContext.servicesMap.get('edgeService'));\n deleteObservable = edgeService.deleteEdge(entityId.id);\n break;\n case 'TENANT':\n let tenantService = $injector.get(widgetContext.servicesMap.get('tenantService'));\n deleteObservable = tenantService.deleteTenant(entityId.id);\n break;\n case 'CUSTOMER':\n let customerService = $injector.get(widgetContext.servicesMap.get('customerService'));\n deleteObservable = customerService.deleteCustomer(entityId.id);\n break;\n case 'DASHBOARD':\n let dashboardService = $injector.get(widgetContext.servicesMap.get('dashboardService'));\n deleteObservable = dashboardService.deleteDashboard(entityId.id);\n break;\n case 'USER':\n let userService = $injector.get(widgetContext.servicesMap.get('userService'));\n deleteObservable = userService.deleteUser(entityId.id);\n break;\n case 'SCHEDULER_EVENT':\n let schedulerEventService = $injector.get(widgetContext.servicesMap.get('schedulerEventService'));\n deleteObservable = schedulerEventService.deleteSchedulerEvent(entityId.id);\n break;\n case 'ROLE':\n let roleService = $injector.get(widgetContext.servicesMap.get('roleService'));\n deleteObservable = roleService.deleteRole(entityId.id);\n break;\n case 'ENTITY_GROUP':\n let entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n deleteObservable = entityGroupService.deleteEntityGroup(entityId.id);\n break;\n default:\n showErrorDialog(`Unsupported entity type '${entityId.entityType}'`);\n break;\n }\n if (deleteObservable) {\n deleteObservable.subscribe(\n function success() {\n widgetContext.updateAliases();\n },\n function fail() {\n showErrorDialog();\n }\n );\n }\n}\n\nfunction showErrorDialog(error) {\n let title = 'Error';\n error = error || 'Please try again.';\n let content = `An error occurred while deleting '${entityName}'. ${error}`;\n dialogs.alert(title, content, 'CLOSE').subscribe(\n function(result) {}\n );\n}\n"
89
+ }
90
+ ]
91
+ },
92
+ "settings": {
93
+ "entitiesTitle": "Office Units",
94
+ "displayEntityName": false,
95
+ "displayEntityType": false
96
+ },
97
+ "datasources": [
98
+ {
99
+ "type": "entity",
100
+ "dataKeys": [
101
+ {
102
+ "name": "name",
103
+ "label": "Name",
104
+ "type": "entityField",
105
+ "color": "var(--tb-primary-500)",
106
+ "settings": {}
107
+ },
108
+ {
109
+ "name": "activePower",
110
+ "label": "Active Power",
111
+ "type": "timeseries",
112
+ "decimals": 1,
113
+ "color": "var(--tb-primary-500)",
114
+ "settings": {}
115
+ },
116
+ {
117
+ "name": "dailyOfficeEnergy",
118
+ "label": "Daily Energy",
119
+ "type": "timeseries",
120
+ "decimals": 1,
121
+ "color": "var(--tb-primary-500)",
122
+ "settings": {}
123
+ }
124
+ ],
125
+ "entityAliasId": "3db33207-8115-43ff-8997-267562d4fd1f"
126
+ }
127
+ ]
128
+ },
129
+ "id": "fc802397-a495-4ad5-b37d-2788a09685bc",
130
+ "typeFullFqn": "system.cards.entities_table",
131
+ "type": "latest"
132
+ },
133
+ "4f66c90f-367b-4f0a-82c0-a50b8e5dffa3": {
134
+ "sizeX": 12,
135
+ "sizeY": 6,
136
+ "row": 0,
137
+ "col": 12,
138
+ "config": {
139
+ "configMode": "basic",
140
+ "title": "Main Breaker Active Power Trend",
141
+ "titleFont": {
142
+ "size": 21,
143
+ "sizeUnit": "px",
144
+ "weight": "500",
145
+ "lineHeight": "22px"
146
+ },
147
+ "showTitle": true,
148
+ "dropShadow": false,
149
+ "useDashboardTimewindow": true,
150
+ "padding": "0px",
151
+ "margin": "0px",
152
+ "borderRadius": "8px",
153
+ "widgetStyle": {
154
+ "box-shadow": "0px 2px 4px 0px #00000024;"
155
+ },
156
+ "actions": {},
157
+ "settings": {
158
+ "dataZoom": false,
159
+ "showLegend": false,
160
+ "legendConfig": {
161
+ "position": "top",
162
+ "sortDataKeys": false,
163
+ "showMin": false,
164
+ "showMax": false,
165
+ "showAvg": true,
166
+ "showTotal": false,
167
+ "showLatest": false
168
+ },
169
+ "xAxis": {
170
+ "show": true,
171
+ "position": "bottom"
172
+ },
173
+ "yAxis": {
174
+ "show": true,
175
+ "position": "left"
176
+ },
177
+ "yAxes": {
178
+ "default": {
179
+ "id": "default",
180
+ "label": "Active Power",
181
+ "position": "left",
182
+ "min": 0,
183
+ "max": 100000,
184
+ "units": "",
185
+ "decimals": 1,
186
+ "order": 0
187
+ }
188
+ }
189
+ },
190
+ "datasources": [
191
+ {
192
+ "type": "entity",
193
+ "dataKeys": [
194
+ {
195
+ "name": "activePower",
196
+ "label": "Active Power",
197
+ "type": "timeseries",
198
+ "units": "",
199
+ "decimals": 1,
200
+ "color": "#2196F3",
201
+ "settings": {
202
+ "yAxisId": "default",
203
+ "showLegend": true
204
+ }
205
+ }
206
+ ],
207
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
208
+ }
209
+ ]
210
+ },
211
+ "id": "4f66c90f-367b-4f0a-82c0-a50b8e5dffa3",
212
+ "typeFullFqn": "system.time_series_chart",
213
+ "type": "timeseries"
214
+ },
215
+ "d1bd0c24-6098-4ea1-8ce7-54dcf2d8335e": {
216
+ "sizeX": 6,
217
+ "sizeY": 1,
218
+ "row": 0,
219
+ "col": 6,
220
+ "config": {
221
+ "configMode": "basic",
222
+ "title": "Breaker Status",
223
+ "showTitle": false,
224
+ "dropShadow": false,
225
+ "enableFullscreen": false,
226
+ "enableDataExport": false,
227
+ "padding": "0px",
228
+ "margin": "0px",
229
+ "borderRadius": "8px",
230
+ "widgetStyle": {
231
+ "box-shadow": "0px 2px 4px 0px #00000024;"
232
+ },
233
+ "widgetCss": "tb-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n width: 40px!important;\n height: 40px!important;\n background-color: var(--tb-primary-50);\n}\n\n.tb-value-card-icon-row {\n width: 50%;\n justify-content: space-between;\n}\n",
234
+ "units": "",
235
+ "decimals": 0,
236
+ "actions": {},
237
+ "settings": {
238
+ "layout": "horizontal",
239
+ "showLabel": true,
240
+ "labelColor": {
241
+ "type": "constant",
242
+ "color": "#000000DE"
243
+ },
244
+ "showIcon": true,
245
+ "icon": "power_settings_new",
246
+ "iconColor": {
247
+ "type": "constant",
248
+ "color": "var(--tb-primary-500)"
249
+ },
250
+ "iconSize": 24,
251
+ "iconSizeUnit": "px",
252
+ "valueColor": {
253
+ "type": "constant",
254
+ "color": "#000000DE"
255
+ },
256
+ "valueFont": {
257
+ "size": 30
258
+ },
259
+ "labelFont": {
260
+ "size": 20
261
+ },
262
+ "showDate": false,
263
+ "autoScale": true
264
+ },
265
+ "datasources": [
266
+ {
267
+ "type": "entity",
268
+ "dataKeys": [
269
+ {
270
+ "name": "active",
271
+ "label": "Active Status",
272
+ "type": "attribute",
273
+ "color": "var(--tb-primary-500)",
274
+ "settings": {}
275
+ }
276
+ ],
277
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
278
+ }
279
+ ]
280
+ },
281
+ "id": "d1bd0c24-6098-4ea1-8ce7-54dcf2d8335e",
282
+ "typeFullFqn": "system.cards.horizontal_value_card",
283
+ "type": "latest"
284
+ },
285
+ "bf3d66c0-ba6d-4a0d-a9c5-343e90dd65e2": {
286
+ "sizeX": 12,
287
+ "sizeY": 1,
288
+ "row": 0,
289
+ "col": 12,
290
+ "config": {
291
+ "configMode": "basic",
292
+ "title": "Current",
293
+ "showTitle": false,
294
+ "dropShadow": false,
295
+ "enableFullscreen": false,
296
+ "enableDataExport": false,
297
+ "padding": "0px",
298
+ "margin": "0px",
299
+ "borderRadius": "8px",
300
+ "widgetStyle": {
301
+ "box-shadow": "0px 2px 4px 0px #00000024;"
302
+ },
303
+ "widgetCss": "tb-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n width: 40px!important;\n height: 40px!important;\n background-color: var(--tb-primary-50);\n}\n\n.tb-value-card-icon-row {\n width: 50%;\n justify-content: space-between;\n}\n",
304
+ "units": "A",
305
+ "decimals": 2,
306
+ "actions": {},
307
+ "settings": {
308
+ "layout": "horizontal",
309
+ "showLabel": true,
310
+ "labelColor": {
311
+ "type": "constant",
312
+ "color": "#000000DE"
313
+ },
314
+ "showIcon": true,
315
+ "icon": "electric_meter",
316
+ "iconColor": {
317
+ "type": "constant",
318
+ "color": "var(--tb-primary-500)"
319
+ },
320
+ "iconSize": 24,
321
+ "iconSizeUnit": "px",
322
+ "valueColor": {
323
+ "type": "constant",
324
+ "color": "#000000DE"
325
+ },
326
+ "valueFont": {
327
+ "size": 30
328
+ },
329
+ "labelFont": {
330
+ "size": 20
331
+ },
332
+ "showDate": false,
333
+ "autoScale": true
334
+ },
335
+ "datasources": [
336
+ {
337
+ "type": "entity",
338
+ "dataKeys": [
339
+ {
340
+ "name": "current",
341
+ "label": "Current",
342
+ "type": "timeseries",
343
+ "color": "var(--tb-primary-500)",
344
+ "settings": {}
345
+ }
346
+ ],
347
+ "entityAliasId": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe"
348
+ }
349
+ ]
350
+ },
351
+ "id": "bf3d66c0-ba6d-4a0d-a9c5-343e90dd65e2",
352
+ "typeFullFqn": "system.cards.horizontal_value_card",
353
+ "type": "latest"
354
+ },
355
+ "b7bf1a86-0b3e-49e1-a99c-94698059b877": {
356
+ "sizeX": 12,
357
+ "sizeY": 5,
358
+ "row": 7,
359
+ "col": 0,
360
+ "config": {
361
+ "configMode": "basic",
362
+ "title": "Hourly Energy Consumption",
363
+ "titleFont": {
364
+ "size": 21,
365
+ "sizeUnit": "px",
366
+ "weight": "500",
367
+ "lineHeight": "22px"
368
+ },
369
+ "showTitle": true,
370
+ "dropShadow": false,
371
+ "useDashboardTimewindow": true,
372
+ "padding": "0px",
373
+ "margin": "0px",
374
+ "borderRadius": "8px",
375
+ "widgetStyle": {
376
+ "box-shadow": "0px 2px 4px 0px #00000024;"
377
+ },
378
+ "actions": {},
379
+ "settings": {
380
+ "dataZoom": false,
381
+ "showLegend": false,
382
+ "legendConfig": {
383
+ "position": "top",
384
+ "sortDataKeys": false,
385
+ "showMin": false,
386
+ "showMax": false,
387
+ "showAvg": true,
388
+ "showTotal": false,
389
+ "showLatest": false
390
+ },
391
+ "xAxis": {
392
+ "show": true,
393
+ "position": "bottom"
394
+ },
395
+ "yAxis": {
396
+ "show": true,
397
+ "position": "left"
398
+ },
399
+ "yAxes": {
400
+ "default": {
401
+ "id": "default",
402
+ "label": "Energy Consumption",
403
+ "position": "left",
404
+ "min": null,
405
+ "max": null,
406
+ "units": "",
407
+ "decimals": 1,
408
+ "order": 0
409
+ }
410
+ }
411
+ },
412
+ "datasources": [
413
+ {
414
+ "type": "entity",
415
+ "dataKeys": [
416
+ {
417
+ "name": "totalBuildingConsumption",
418
+ "label": "Total Building Consumption",
419
+ "type": "timeseries",
420
+ "units": "",
421
+ "decimals": 1,
422
+ "color": "#2196F3",
423
+ "settings": {
424
+ "yAxisId": "default",
425
+ "showLegend": true
426
+ }
427
+ }
428
+ ],
429
+ "entityAliasId": "7327faf4-aded-4fa2-8008-8c380513e113"
430
+ }
431
+ ]
432
+ },
433
+ "id": "b7bf1a86-0b3e-49e1-a99c-94698059b877",
434
+ "typeFullFqn": "system.time_series_chart",
435
+ "type": "timeseries"
436
+ },
437
+ "2a299e04-1df1-4cc0-9389-8db9b8d0a542": {
438
+ "sizeX": 12,
439
+ "sizeY": 6,
440
+ "row": 1,
441
+ "col": 12,
442
+ "config": {
443
+ "configMode": "basic",
444
+ "title": "Alarms",
445
+ "titleFont": {
446
+ "size": 21,
447
+ "sizeUnit": "px",
448
+ "weight": "500",
449
+ "lineHeight": "22px"
450
+ },
451
+ "showTitle": true,
452
+ "dropShadow": false,
453
+ "useDashboardTimewindow": true,
454
+ "padding": "4px",
455
+ "borderRadius": "8px",
456
+ "widgetStyle": {
457
+ "box-shadow": "0px 2px 4px 0px #00000024;"
458
+ },
459
+ "actions": {},
460
+ "settings": {
461
+ "alarmsTitle": "Alarms",
462
+ "enableSelection": true,
463
+ "enableSearch": true
464
+ },
465
+ "alarmSource": {
466
+ "type": "entity",
467
+ "name": "alarms",
468
+ "dataKeys": [
469
+ {
470
+ "name": "createdTime",
471
+ "label": "Created Time",
472
+ "type": "alarm",
473
+ "color": "var(--tb-primary-500)",
474
+ "settings": {}
475
+ },
476
+ {
477
+ "name": "originator",
478
+ "label": "Originator",
479
+ "type": "alarm",
480
+ "color": "var(--tb-primary-500)",
481
+ "settings": {}
482
+ },
483
+ {
484
+ "name": "type",
485
+ "label": "Type",
486
+ "type": "alarm",
487
+ "color": "var(--tb-primary-500)",
488
+ "settings": {}
489
+ },
490
+ {
491
+ "name": "severity",
492
+ "label": "Severity",
493
+ "type": "alarm",
494
+ "color": "var(--tb-primary-500)",
495
+ "settings": {}
496
+ },
497
+ {
498
+ "name": "status",
499
+ "label": "Status",
500
+ "type": "alarm",
501
+ "color": "var(--tb-primary-500)",
502
+ "settings": {}
503
+ }
504
+ ],
505
+ "entityAliasId": "7327faf4-aded-4fa2-8008-8c380513e113"
506
+ },
507
+ "alarmFilterConfig": {
508
+ "typeList": [],
509
+ "statusList": [
510
+ "ACTIVE"
511
+ ],
512
+ "severityList": [
513
+ "CRITICAL",
514
+ "MAJOR",
515
+ "MINOR",
516
+ "WARNING",
517
+ "INDETERMINATE"
518
+ ],
519
+ "searchPropagatedAlarms": true
520
+ },
521
+ "datasources": []
522
+ },
523
+ "id": "2a299e04-1df1-4cc0-9389-8db9b8d0a542",
524
+ "typeFullFqn": "system.alarm_widgets.alarms_table",
525
+ "type": "alarm"
526
+ },
527
+ "b0f4db58-b51e-4ba1-8dd5-3464a178d0c4": {
528
+ "sizeX": 12,
529
+ "sizeY": 11,
530
+ "row": 0,
531
+ "col": 12,
532
+ "config": {
533
+ "configMode": "basic",
534
+ "title": "Daily Energy History",
535
+ "titleFont": {
536
+ "size": 21,
537
+ "sizeUnit": "px",
538
+ "weight": "500",
539
+ "lineHeight": "22px"
540
+ },
541
+ "showTitle": true,
542
+ "dropShadow": false,
543
+ "useDashboardTimewindow": true,
544
+ "padding": "0px",
545
+ "margin": "0px",
546
+ "borderRadius": "8px",
547
+ "widgetStyle": {
548
+ "box-shadow": "0px 2px 4px 0px #00000024;"
549
+ },
550
+ "actions": {},
551
+ "settings": {
552
+ "dataZoom": false,
553
+ "showLegend": false,
554
+ "legendConfig": {
555
+ "position": "top",
556
+ "sortDataKeys": false,
557
+ "showMin": false,
558
+ "showMax": false,
559
+ "showAvg": true,
560
+ "showTotal": false,
561
+ "showLatest": false
562
+ },
563
+ "xAxis": {
564
+ "show": true,
565
+ "position": "bottom"
566
+ },
567
+ "yAxis": {
568
+ "show": true,
569
+ "position": "left"
570
+ },
571
+ "yAxes": {
572
+ "default": {
573
+ "id": "default",
574
+ "label": "Daily Energy",
575
+ "position": "left",
576
+ "min": null,
577
+ "max": null,
578
+ "units": "",
579
+ "decimals": 1,
580
+ "order": 0
581
+ }
582
+ }
583
+ },
584
+ "datasources": [
585
+ {
586
+ "type": "entity",
587
+ "dataKeys": [
588
+ {
589
+ "name": "dailyOfficeEnergy",
590
+ "label": "Daily Energy",
591
+ "type": "timeseries",
592
+ "units": "",
593
+ "decimals": 1,
594
+ "color": "#2196F3",
595
+ "settings": {
596
+ "yAxisId": "default",
597
+ "showLegend": true
598
+ }
599
+ }
600
+ ],
601
+ "entityAliasId": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe"
602
+ }
603
+ ]
604
+ },
605
+ "id": "b0f4db58-b51e-4ba1-8dd5-3464a178d0c4",
606
+ "typeFullFqn": "system.time_series_chart",
607
+ "type": "timeseries"
608
+ },
609
+ "d7b42191-1815-4672-bb53-71a87ae3d0e0": {
610
+ "sizeX": 12,
611
+ "sizeY": 6,
612
+ "row": 0,
613
+ "col": 12,
614
+ "config": {
615
+ "configMode": "basic",
616
+ "title": "Alarms",
617
+ "titleFont": {
618
+ "size": 21,
619
+ "sizeUnit": "px",
620
+ "weight": "500",
621
+ "lineHeight": "22px"
622
+ },
623
+ "showTitle": true,
624
+ "dropShadow": false,
625
+ "useDashboardTimewindow": true,
626
+ "padding": "4px",
627
+ "borderRadius": "8px",
628
+ "widgetStyle": {
629
+ "box-shadow": "0px 2px 4px 0px #00000024;"
630
+ },
631
+ "actions": {},
632
+ "settings": {
633
+ "alarmsTitle": "Alarms",
634
+ "enableSelection": true,
635
+ "enableSearch": true
636
+ },
637
+ "alarmSource": {
638
+ "type": "entity",
639
+ "name": "alarms",
640
+ "dataKeys": [
641
+ {
642
+ "name": "createdTime",
643
+ "label": "Created Time",
644
+ "type": "alarm",
645
+ "color": "var(--tb-primary-500)",
646
+ "settings": {}
647
+ },
648
+ {
649
+ "name": "originator",
650
+ "label": "Originator",
651
+ "type": "alarm",
652
+ "color": "var(--tb-primary-500)",
653
+ "settings": {}
654
+ },
655
+ {
656
+ "name": "type",
657
+ "label": "Type",
658
+ "type": "alarm",
659
+ "color": "var(--tb-primary-500)",
660
+ "settings": {}
661
+ },
662
+ {
663
+ "name": "severity",
664
+ "label": "Severity",
665
+ "type": "alarm",
666
+ "color": "var(--tb-primary-500)",
667
+ "settings": {}
668
+ },
669
+ {
670
+ "name": "status",
671
+ "label": "Status",
672
+ "type": "alarm",
673
+ "color": "var(--tb-primary-500)",
674
+ "settings": {}
675
+ }
676
+ ],
677
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce"
678
+ },
679
+ "alarmFilterConfig": {
680
+ "typeList": [],
681
+ "statusList": [
682
+ "ACTIVE"
683
+ ],
684
+ "severityList": [
685
+ "CRITICAL",
686
+ "MAJOR",
687
+ "MINOR",
688
+ "WARNING",
689
+ "INDETERMINATE"
690
+ ],
691
+ "searchPropagatedAlarms": true
692
+ },
693
+ "datasources": []
694
+ },
695
+ "id": "d7b42191-1815-4672-bb53-71a87ae3d0e0",
696
+ "typeFullFqn": "system.alarm_widgets.alarms_table",
697
+ "type": "alarm"
698
+ },
699
+ "492428b8-1ee7-4bf5-a85e-5b18465d51b3": {
700
+ "sizeX": 4,
701
+ "sizeY": 1,
702
+ "row": 0,
703
+ "col": 20,
704
+ "config": {
705
+ "configMode": "basic",
706
+ "title": "connect-meter-device",
707
+ "titleFont": {
708
+ "size": 21,
709
+ "sizeUnit": "px",
710
+ "weight": "500",
711
+ "lineHeight": "22px"
712
+ },
713
+ "showTitle": false,
714
+ "dropShadow": false,
715
+ "enableFullscreen": false,
716
+ "enableDataExport": false,
717
+ "backgroundColor": "#FFFFFF00",
718
+ "padding": "0px",
719
+ "borderRadius": "8px",
720
+ "actions": {
721
+ "click": [
722
+ {
723
+ "id": null,
724
+ "name": "Open connectivity documentation",
725
+ "icon": null,
726
+ "openNewBrowserTab": true,
727
+ "url": "https://thingsboard.io/docs/paas/getting-started-guides/connectivity/",
728
+ "type": "openURL"
729
+ }
730
+ ]
731
+ },
732
+ "settings": {
733
+ "appearance": {
734
+ "type": "filled",
735
+ "showLabel": true,
736
+ "label": "How to connect real devices?",
737
+ "showIcon": true,
738
+ "icon": "help_outline",
739
+ "mainColor": "var(--tb-primary-500)",
740
+ "backgroundColor": "#FFFFFF",
741
+ "customStyle": {}
742
+ },
743
+ "activatedState": {
744
+ "action": "DO_NOTHING",
745
+ "defaultValue": false
746
+ },
747
+ "disabledState": {
748
+ "action": "DO_NOTHING",
749
+ "defaultValue": false
750
+ }
751
+ },
752
+ "datasources": []
753
+ },
754
+ "id": "492428b8-1ee7-4bf5-a85e-5b18465d51b3",
755
+ "typeFullFqn": "system.action_button",
756
+ "type": "latest"
757
+ },
758
+ "c35f60e4-284a-49e3-bbcd-8c753ea9f1f5": {
759
+ "sizeX": 1,
760
+ "sizeY": 1,
761
+ "row": 0,
762
+ "col": 23,
763
+ "config": {
764
+ "configMode": "basic",
765
+ "title": "Edit Building Settings",
766
+ "showTitle": false,
767
+ "dropShadow": false,
768
+ "enableFullscreen": false,
769
+ "enableDataExport": false,
770
+ "padding": "0px",
771
+ "borderRadius": "8px",
772
+ "actions": {
773
+ "click": [
774
+ {
775
+ "id": "f2e08df3-5817-407d-ba45-93f8990a2a31",
776
+ "name": "Edit Building",
777
+ "icon": "edit",
778
+ "type": "customPretty",
779
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Edit Building '${entityName}'\";\nlet createEntity = false;\n\nlet attributeKeys = [\"tariffRate\",\"address\"];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n tariffRate: [null, []],\n address: [null, []]\n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = null;\n let entitySubType = null;\n let entityOwner = null;\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = null;\n \n let entityOwner = null;\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
780
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Building Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Building name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n <fieldset formGroupName=\"attributes\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Tariff Rate</mat-label>\n <input type=\"number\" matInput formControlName=\"tariffRate\">\n</mat-form-field>\n\n<mat-form-field appearance=\"outline\">\n <mat-label>Address</mat-label>\n <input matInput formControlName=\"address\">\n</mat-form-field>\n</fieldset>\n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
781
+ }
782
+ ]
783
+ },
784
+ "settings": {
785
+ "appearance": {
786
+ "type": "filled",
787
+ "showLabel": false,
788
+ "label": "Edit Building Settings",
789
+ "showIcon": true,
790
+ "icon": "edit",
791
+ "mainColor": "var(--tb-primary-500)",
792
+ "backgroundColor": "#FFFFFF",
793
+ "customStyle": {}
794
+ },
795
+ "activatedState": {
796
+ "defaultValue": false,
797
+ "action": "DO_NOTHING",
798
+ "dataToValue": {
799
+ "type": "NONE",
800
+ "compareToValue": true
801
+ }
802
+ },
803
+ "disabledState": {
804
+ "defaultValue": false,
805
+ "action": "DO_NOTHING",
806
+ "dataToValue": {
807
+ "type": "NONE",
808
+ "compareToValue": true
809
+ }
810
+ }
811
+ },
812
+ "datasources": [
813
+ {
814
+ "type": "entity",
815
+ "dataKeys": [],
816
+ "entityAliasId": "7327faf4-aded-4fa2-8008-8c380513e113"
817
+ }
818
+ ]
819
+ },
820
+ "id": "c35f60e4-284a-49e3-bbcd-8c753ea9f1f5",
821
+ "typeFullFqn": "system.action_button",
822
+ "type": "latest"
823
+ },
824
+ "0d25e5ab-7728-4194-82d8-59ed88af4cd0": {
825
+ "sizeX": 12,
826
+ "sizeY": 6,
827
+ "row": 0,
828
+ "col": 0,
829
+ "config": {
830
+ "configMode": "basic",
831
+ "title": "Floor Plan Map",
832
+ "titleFont": {
833
+ "size": 21,
834
+ "sizeUnit": "px",
835
+ "weight": "500",
836
+ "lineHeight": "22px"
837
+ },
838
+ "showTitle": false,
839
+ "dropShadow": false,
840
+ "enableFullscreen": false,
841
+ "enableDataExport": false,
842
+ "padding": "0px",
843
+ "margin": "0px",
844
+ "borderRadius": "8px",
845
+ "widgetStyle": {
846
+ "box-shadow": "0px 2px 4px 0px #00000024;"
847
+ },
848
+ "actions": {},
849
+ "settings": {
850
+ "imageSource": {
851
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce",
852
+ "sourceType": "entityKey",
853
+ "entityKey": {
854
+ "name": "floorPlan",
855
+ "label": "Floor Plan",
856
+ "type": "attribute",
857
+ "color": "var(--tb-primary-500)",
858
+ "settings": {}
859
+ }
860
+ },
861
+ "mapType": "image",
862
+ "markers": [
863
+ {
864
+ "dsType": "entity",
865
+ "dsEntityAliasId": "3db33207-8115-43ff-8997-267562d4fd1f",
866
+ "additionalDataKeys": [
867
+ {
868
+ "name": "name",
869
+ "label": "Name",
870
+ "type": "entityField",
871
+ "color": "var(--tb-primary-500)",
872
+ "settings": {}
873
+ },
874
+ {
875
+ "name": "activePower",
876
+ "label": "Active Power",
877
+ "type": "timeseries",
878
+ "color": "var(--tb-primary-500)",
879
+ "settings": {}
880
+ }
881
+ ],
882
+ "xKey": {
883
+ "name": "xPos",
884
+ "label": "X Position",
885
+ "type": "attribute",
886
+ "color": "var(--tb-primary-500)",
887
+ "settings": {}
888
+ },
889
+ "yKey": {
890
+ "name": "yPos",
891
+ "label": "Y Position",
892
+ "type": "attribute",
893
+ "color": "var(--tb-primary-500)",
894
+ "settings": {}
895
+ },
896
+ "label": {
897
+ "show": true,
898
+ "type": "pattern",
899
+ "pattern": "${Name}"
900
+ },
901
+ "edit": {
902
+ "enabledActions": [
903
+ "add",
904
+ "move",
905
+ "remove"
906
+ ]
907
+ },
908
+ "markerType": "icon",
909
+ "markerIcon": {
910
+ "icon": "bolt",
911
+ "color": {
912
+ "type": "constant",
913
+ "color": "#2196F3"
914
+ }
915
+ },
916
+ "tooltip": {
917
+ "show": true,
918
+ "trigger": "click",
919
+ "type": "pattern",
920
+ "pattern": "<b>Unit:</b> ${Name}<br/><b>Active Power:</b> ${Active Power} W<br/><link-act name='navigate-to-office-unit-from-map'>View Details</link-act>",
921
+ "tagActions": [
922
+ {
923
+ "id": "d88c6333-dde3-4f50-971f-ea3f338851fa",
924
+ "name": "navigate-to-office-unit-from-map",
925
+ "icon": "arrow_forward",
926
+ "type": "openDashboardState",
927
+ "targetDashboardStateId": "office-unit-details",
928
+ "setEntityId": true,
929
+ "stateEntityParamName": "selectedOfficeUnit"
930
+ }
931
+ ]
932
+ }
933
+ },
934
+ {
935
+ "dsType": "entity",
936
+ "dsEntityAliasId": "6cde2143-5432-4d8f-a2dd-c84534a98c0c",
937
+ "additionalDataKeys": [
938
+ {
939
+ "name": "name",
940
+ "label": "Name",
941
+ "type": "entityField",
942
+ "color": "var(--tb-primary-500)",
943
+ "settings": {}
944
+ },
945
+ {
946
+ "name": "state",
947
+ "label": "Status",
948
+ "type": "timeseries",
949
+ "color": "var(--tb-primary-500)",
950
+ "settings": {}
951
+ },
952
+ {
953
+ "name": "activePower",
954
+ "label": "Active Power",
955
+ "type": "timeseries",
956
+ "color": "var(--tb-primary-500)",
957
+ "settings": {}
958
+ }
959
+ ],
960
+ "xKey": {
961
+ "name": "xPos",
962
+ "label": "X Position",
963
+ "type": "attribute",
964
+ "color": "var(--tb-primary-500)",
965
+ "settings": {}
966
+ },
967
+ "yKey": {
968
+ "name": "yPos",
969
+ "label": "Y Position",
970
+ "type": "attribute",
971
+ "color": "var(--tb-primary-500)",
972
+ "settings": {}
973
+ },
974
+ "label": {
975
+ "show": true,
976
+ "type": "pattern",
977
+ "pattern": "${Name}"
978
+ },
979
+ "edit": {
980
+ "enabledActions": [
981
+ "add",
982
+ "move",
983
+ "remove"
984
+ ]
985
+ },
986
+ "markerType": "icon",
987
+ "markerIcon": {
988
+ "icon": "electric_meter",
989
+ "color": {
990
+ "type": "function",
991
+ "colorFunction": "if (data.Status === 'closed') { return '#4CAF50'; } else if (data.Status === 'tripped') { return '#F44336'; } else if (data.Status === 'open') { return '#FF9800'; } return '#757575';"
992
+ }
993
+ },
994
+ "tooltip": {
995
+ "show": true,
996
+ "trigger": "click",
997
+ "type": "pattern",
998
+ "pattern": "<b>Breaker:</b> ${Name}<br/><b>Status:</b> ${Status}<br/><b>Power:</b> ${Active Power} W<br/><link-act name='navigate-to-main-breaker-from-map'>View Details</link-act>",
999
+ "tagActions": [
1000
+ {
1001
+ "id": "182a87a2-49fd-4263-8379-2cf5391c3bb0",
1002
+ "name": "navigate-to-main-breaker-from-map",
1003
+ "icon": "arrow_forward",
1004
+ "type": "openDashboardState",
1005
+ "targetDashboardStateId": "main-breaker-details",
1006
+ "setEntityId": true,
1007
+ "stateEntityParamName": "selectedMainBreaker"
1008
+ }
1009
+ ]
1010
+ }
1011
+ }
1012
+ ],
1013
+ "polygons": [],
1014
+ "circles": [],
1015
+ "fitMapBounds": false,
1016
+ "mapActionButtons": [
1017
+ {
1018
+ "action": {
1019
+ "id": "22e52a78-64fe-473e-84ab-341d1792dd1d",
1020
+ "name": "Place Office Unit",
1021
+ "icon": "add_location",
1022
+ "mapItemType": "marker",
1023
+ "mapItemTooltips": {},
1024
+ "type": "placeMapItem",
1025
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Create New Office Unit\";\nlet createEntity = true;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ {key: 'xPos', value: additionalParams.coordinates.x}, {key: 'yPos', value: additionalParams.coordinates.y}];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = \"ASSET\";\n let entitySubType = \"OfficeUnit\";\n let entityOwner = \"currentCustomer\";\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n let createRelations = [{\"fromStateEntity\":\"selectedOfficeFloor\",\"type\":\"OfficeFloorToOfficeUnit\"}];\n if (createRelations && createRelations.length) {\n let stateParams = widgetContext.stateController.getStateParams();\n for (let createRelation of createRelations) {\n let fromEntityId = null;\n if (createRelation.fromStateEntity === 'singleEntity' && singleEntityId) {\n fromEntityId = singleEntityId;\n } else if (createRelation.fromStateEntity && stateParams[createRelation.fromStateEntity]) {\n fromEntityId = stateParams[createRelation.fromStateEntity].entityId;\n } else {\n fromEntityId = stateParams.entityId;\n }\n if (!fromEntityId && createRelation.fromStateEntity === 'currentCustomer') {\n fromEntityId = {id: currentUser.customerId, entityType: \"CUSTOMER\" };\n }\n if (fromEntityId && fromEntityId.id && fromEntityId.entityType) {\n let relation = {\n type: createRelation.type,\n typeGroup: 'COMMON',\n from: fromEntityId,\n to: entityId\n };\n createRelationsObservables.push(entityRelationService.saveRelation(relation));\n }\n }\n }\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = [\"OfficeUnit\"];\n \n let entityOwner = \"currentCustomer\";\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
1026
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Office Unit Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Office unit name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
1027
+ },
1028
+ "color": "#0000008a",
1029
+ "icon": "add_location",
1030
+ "label": "Place Office Unit"
1031
+ },
1032
+ {
1033
+ "action": {
1034
+ "id": "e8327b14-f94a-4468-9286-1e2253098003",
1035
+ "name": "Place Main Breaker",
1036
+ "icon": "add_location",
1037
+ "mapItemType": "marker",
1038
+ "mapItemTooltips": {},
1039
+ "type": "placeMapItem",
1040
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Place New Main Breaker on Floor Plan\";\nlet createEntity = true;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ {key: 'xPos', value: additionalParams.coordinates.x}, {key: 'yPos', value: additionalParams.coordinates.y}];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]],\n label: [null, []]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = \"DEVICE\";\n let entitySubType = \"MainBreaker\";\n let entityOwner = \"currentCustomer\";\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n let createRelations = [{\"fromStateEntity\":\"selectedOfficeFloor\",\"type\":\"OfficeFloorToMainBreaker\"}];\n if (createRelations && createRelations.length) {\n let stateParams = widgetContext.stateController.getStateParams();\n for (let createRelation of createRelations) {\n let fromEntityId = null;\n if (createRelation.fromStateEntity === 'singleEntity' && singleEntityId) {\n fromEntityId = singleEntityId;\n } else if (createRelation.fromStateEntity && stateParams[createRelation.fromStateEntity]) {\n fromEntityId = stateParams[createRelation.fromStateEntity].entityId;\n } else {\n fromEntityId = stateParams.entityId;\n }\n if (!fromEntityId && createRelation.fromStateEntity === 'currentCustomer') {\n fromEntityId = {id: currentUser.customerId, entityType: \"CUSTOMER\" };\n }\n if (fromEntityId && fromEntityId.id && fromEntityId.entityType) {\n let relation = {\n type: createRelation.type,\n typeGroup: 'COMMON',\n from: fromEntityId,\n to: entityId\n };\n createRelationsObservables.push(entityRelationService.saveRelation(relation));\n }\n }\n }\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = [\"MainBreaker\"];\n \n let entityOwner = \"currentCustomer\";\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
1041
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Breaker Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Breaker name is required.</mat-error>\n }\n</mat-form-field>\n\n<mat-form-field appearance=\"outline\">\n <mat-label>Label</mat-label>\n <input matInput formControlName=\"label\">\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
1042
+ },
1043
+ "color": "#0000008a",
1044
+ "icon": "add_location",
1045
+ "label": "Place Main Breaker"
1046
+ }
1047
+ ]
1048
+ },
1049
+ "datasources": []
1050
+ },
1051
+ "id": "0d25e5ab-7728-4194-82d8-59ed88af4cd0",
1052
+ "typeFullFqn": "system.image_map",
1053
+ "type": "latest"
1054
+ },
1055
+ "075946be-5d43-42a1-86b0-b7d6297d07c6": {
1056
+ "sizeX": 4,
1057
+ "sizeY": 1,
1058
+ "row": 0,
1059
+ "col": 12,
1060
+ "config": {
1061
+ "configMode": "basic",
1062
+ "title": "Overview",
1063
+ "showTitle": false,
1064
+ "dropShadow": false,
1065
+ "enableFullscreen": false,
1066
+ "enableDataExport": false,
1067
+ "backgroundColor": "#FFFFF00",
1068
+ "padding": "0px",
1069
+ "borderRadius": "8px",
1070
+ "actions": {
1071
+ "click": [
1072
+ {
1073
+ "id": null,
1074
+ "name": null,
1075
+ "icon": null,
1076
+ "type": "custom",
1077
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"main-breaker-overview\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
1078
+ }
1079
+ ]
1080
+ },
1081
+ "settings": {
1082
+ "appearance": {
1083
+ "type": "outlined",
1084
+ "showLabel": true,
1085
+ "label": "Overview",
1086
+ "showIcon": true,
1087
+ "icon": "dashboard",
1088
+ "mainColor": "var(--tb-primary-500)",
1089
+ "backgroundColor": "#FFFFFF00",
1090
+ "customStyle": {}
1091
+ },
1092
+ "activatedState": {
1093
+ "action": "GET_DASHBOARD_STATE_OBJECT",
1094
+ "defaultValue": false,
1095
+ "dataToValue": {
1096
+ "type": "FUNCTION",
1097
+ "compareToValue": true,
1098
+ "dataToValueFunction": "return data.params.subStateId === \"main-breaker-overview\";"
1099
+ }
1100
+ },
1101
+ "disabledState": {
1102
+ "action": "DO_NOTHING"
1103
+ }
1104
+ },
1105
+ "datasources": []
1106
+ },
1107
+ "id": "075946be-5d43-42a1-86b0-b7d6297d07c6",
1108
+ "typeFullFqn": "system.action_button",
1109
+ "type": "latest"
1110
+ },
1111
+ "9f992ee8-e9a4-4c27-a609-a26aa3ab78c5": {
1112
+ "sizeX": 24,
1113
+ "sizeY": 14,
1114
+ "row": 1,
1115
+ "col": 0,
1116
+ "config": {
1117
+ "configMode": "basic",
1118
+ "titleFont": {
1119
+ "size": 21,
1120
+ "sizeUnit": "px",
1121
+ "weight": "500",
1122
+ "lineHeight": "22px"
1123
+ },
1124
+ "showTitle": false,
1125
+ "dropShadow": false,
1126
+ "enableFullscreen": false,
1127
+ "enableDataExport": false,
1128
+ "backgroundColor": "#FFFFFF00",
1129
+ "padding": "0px",
1130
+ "borderRadius": "8px",
1131
+ "actions": {},
1132
+ "settings": {
1133
+ "useMarkdownTextFunction": true,
1134
+ "markdownTextFunction": "let subState = ctx.stateController.getStateParams().subStateId || \"main-breaker-overview\";\n\nreturn `<div tb-toast toastTarget=\"layout\" class=\"block\">\n <tb-dashboard-state class=\"state\" [ctx]=\"ctx\" stateId=\"${subState}\" [syncParentStateParams]=\"true\"></tb-dashboard-state>\n </div>`;",
1135
+ "applyDefaultMarkdownStyle": true,
1136
+ "markdownCss": ".block {\n flex-grow: 1;\n width: 100%;\n height: 100%;\n display: flex;\n padding: 0;\n}\n\n.state {\n flex-grow: 1;\n padding: 0;\n width: 100%;\n height: 100%;\n}"
1137
+ },
1138
+ "datasources": [
1139
+ {
1140
+ "type": "entity",
1141
+ "dataKeys": [],
1142
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
1143
+ }
1144
+ ]
1145
+ },
1146
+ "id": "9f992ee8-e9a4-4c27-a609-a26aa3ab78c5",
1147
+ "typeFullFqn": "system.cards.markdown_card",
1148
+ "type": "latest"
1149
+ },
1150
+ "be134d80-83cc-4122-beca-699bd212ef09": {
1151
+ "sizeX": 16,
1152
+ "sizeY": 1,
1153
+ "row": 0,
1154
+ "col": 0,
1155
+ "config": {
1156
+ "configMode": "basic",
1157
+ "title": "Floor Header",
1158
+ "showTitle": false,
1159
+ "dropShadow": false,
1160
+ "enableFullscreen": false,
1161
+ "enableDataExport": false,
1162
+ "backgroundColor": "#FFFFFF00",
1163
+ "padding": "0px",
1164
+ "borderRadius": "8px",
1165
+ "actions": {},
1166
+ "settings": {
1167
+ "useMarkdownTextFunction": false,
1168
+ "markdownTextPattern": "**${Name}**",
1169
+ "applyDefaultMarkdownStyle": true,
1170
+ "markdownCss": ".tb-markdown-view p {\n display: flex;\n margin: 0;\n align-items: center;\n height: 100%;\n font-size: 28px;\n font-weight: 500;\n color: #212121;\n padding: 0;\n}\n"
1171
+ },
1172
+ "datasources": [
1173
+ {
1174
+ "type": "entity",
1175
+ "dataKeys": [
1176
+ {
1177
+ "name": "name",
1178
+ "label": "Name",
1179
+ "type": "entityField",
1180
+ "color": "var(--tb-primary-500)",
1181
+ "settings": {}
1182
+ }
1183
+ ],
1184
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce"
1185
+ }
1186
+ ]
1187
+ },
1188
+ "id": "be134d80-83cc-4122-beca-699bd212ef09",
1189
+ "typeFullFqn": "system.cards.markdown_card",
1190
+ "type": "latest"
1191
+ },
1192
+ "7d375d4e-1ee3-4a89-86d4-2f57df44af05": {
1193
+ "sizeX": 4,
1194
+ "sizeY": 1,
1195
+ "row": 0,
1196
+ "col": 16,
1197
+ "config": {
1198
+ "configMode": "basic",
1199
+ "title": "Overview",
1200
+ "showTitle": false,
1201
+ "dropShadow": false,
1202
+ "enableFullscreen": false,
1203
+ "enableDataExport": false,
1204
+ "backgroundColor": "#FFFFF00",
1205
+ "padding": "0px",
1206
+ "borderRadius": "8px",
1207
+ "actions": {
1208
+ "click": [
1209
+ {
1210
+ "id": null,
1211
+ "name": null,
1212
+ "icon": null,
1213
+ "type": "custom",
1214
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"office-floor-overview\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
1215
+ }
1216
+ ]
1217
+ },
1218
+ "settings": {
1219
+ "appearance": {
1220
+ "type": "outlined",
1221
+ "showLabel": true,
1222
+ "label": "Overview",
1223
+ "showIcon": true,
1224
+ "icon": "map",
1225
+ "mainColor": "var(--tb-primary-500)",
1226
+ "backgroundColor": "#FFFFFF00",
1227
+ "customStyle": {}
1228
+ },
1229
+ "activatedState": {
1230
+ "action": "GET_DASHBOARD_STATE_OBJECT",
1231
+ "defaultValue": false,
1232
+ "dataToValue": {
1233
+ "type": "FUNCTION",
1234
+ "compareToValue": true,
1235
+ "dataToValueFunction": "return data.params.subStateId === \"office-floor-overview\";"
1236
+ }
1237
+ },
1238
+ "disabledState": {
1239
+ "action": "DO_NOTHING"
1240
+ }
1241
+ },
1242
+ "datasources": []
1243
+ },
1244
+ "id": "7d375d4e-1ee3-4a89-86d4-2f57df44af05",
1245
+ "typeFullFqn": "system.action_button",
1246
+ "type": "latest"
1247
+ },
1248
+ "142f442f-f8d8-494b-8d47-282b94950935": {
1249
+ "sizeX": 6,
1250
+ "sizeY": 1,
1251
+ "row": 0,
1252
+ "col": 0,
1253
+ "config": {
1254
+ "configMode": "basic",
1255
+ "title": "Breaker State",
1256
+ "showTitle": false,
1257
+ "dropShadow": false,
1258
+ "enableFullscreen": false,
1259
+ "enableDataExport": false,
1260
+ "padding": "0px",
1261
+ "margin": "0px",
1262
+ "borderRadius": "8px",
1263
+ "widgetStyle": {
1264
+ "box-shadow": "0px 2px 4px 0px #00000024;"
1265
+ },
1266
+ "widgetCss": "tb-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n width: 40px!important;\n height: 40px!important;\n background-color: var(--tb-primary-50);\n}\n\n.tb-value-card-icon-row {\n width: 50%;\n justify-content: space-between;\n}\n",
1267
+ "units": "",
1268
+ "decimals": 0,
1269
+ "actions": {},
1270
+ "settings": {
1271
+ "layout": "horizontal",
1272
+ "showLabel": true,
1273
+ "labelColor": {
1274
+ "type": "constant",
1275
+ "color": "#000000DE"
1276
+ },
1277
+ "showIcon": true,
1278
+ "icon": "power_settings_new",
1279
+ "iconColor": {
1280
+ "type": "constant",
1281
+ "color": "var(--tb-primary-500)"
1282
+ },
1283
+ "iconSize": 24,
1284
+ "iconSizeUnit": "px",
1285
+ "valueColor": {
1286
+ "type": "constant",
1287
+ "color": "#000000DE"
1288
+ },
1289
+ "valueFont": {
1290
+ "size": 30
1291
+ },
1292
+ "labelFont": {
1293
+ "size": 20
1294
+ },
1295
+ "showDate": false,
1296
+ "autoScale": true
1297
+ },
1298
+ "datasources": [
1299
+ {
1300
+ "type": "entity",
1301
+ "dataKeys": [
1302
+ {
1303
+ "name": "state",
1304
+ "label": "State",
1305
+ "type": "timeseries",
1306
+ "color": "var(--tb-primary-500)",
1307
+ "settings": {}
1308
+ }
1309
+ ],
1310
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
1311
+ }
1312
+ ]
1313
+ },
1314
+ "id": "142f442f-f8d8-494b-8d47-282b94950935",
1315
+ "typeFullFqn": "system.cards.horizontal_value_card",
1316
+ "type": "latest"
1317
+ },
1318
+ "d001f783-5edb-4f4d-8844-ff1598cddc4d": {
1319
+ "sizeX": 12,
1320
+ "sizeY": 5,
1321
+ "row": 6,
1322
+ "col": 12,
1323
+ "config": {
1324
+ "configMode": "basic",
1325
+ "title": "Main Breakers",
1326
+ "titleFont": {
1327
+ "size": 21,
1328
+ "sizeUnit": "px",
1329
+ "weight": "500",
1330
+ "lineHeight": "22px"
1331
+ },
1332
+ "showTitle": true,
1333
+ "dropShadow": false,
1334
+ "enableFullscreen": false,
1335
+ "enableDataExport": false,
1336
+ "padding": "4px",
1337
+ "borderRadius": "8px",
1338
+ "widgetStyle": {
1339
+ "box-shadow": "0px 2px 4px 0px #00000024;"
1340
+ },
1341
+ "actions": {
1342
+ "rowClick": [
1343
+ {
1344
+ "id": "c2519180-9bb8-44fb-a16b-83650a14d262",
1345
+ "name": "View Details",
1346
+ "icon": "arrow_forward",
1347
+ "type": "openDashboardState",
1348
+ "targetDashboardStateId": "main-breaker-details",
1349
+ "setEntityId": true,
1350
+ "stateEntityParamName": "selectedMainBreaker"
1351
+ }
1352
+ ],
1353
+ "headerButton": [
1354
+ {
1355
+ "id": "e770881c-dc34-46ee-8d43-f886fc60419d",
1356
+ "name": "Create Main Breaker",
1357
+ "icon": "add",
1358
+ "type": "customPretty",
1359
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Create New Main Breaker\";\nlet createEntity = true;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = \"DEVICE\";\n let entitySubType = \"MainBreaker\";\n let entityOwner = \"currentCustomer\";\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n let createRelations = [{\"fromStateEntity\":\"selectedOfficeFloor\",\"type\":\"OfficeFloorToMainBreaker\"}];\n if (createRelations && createRelations.length) {\n let stateParams = widgetContext.stateController.getStateParams();\n for (let createRelation of createRelations) {\n let fromEntityId = null;\n if (createRelation.fromStateEntity === 'singleEntity' && singleEntityId) {\n fromEntityId = singleEntityId;\n } else if (createRelation.fromStateEntity && stateParams[createRelation.fromStateEntity]) {\n fromEntityId = stateParams[createRelation.fromStateEntity].entityId;\n } else {\n fromEntityId = stateParams.entityId;\n }\n if (!fromEntityId && createRelation.fromStateEntity === 'currentCustomer') {\n fromEntityId = {id: currentUser.customerId, entityType: \"CUSTOMER\" };\n }\n if (fromEntityId && fromEntityId.id && fromEntityId.entityType) {\n let relation = {\n type: createRelation.type,\n typeGroup: 'COMMON',\n from: fromEntityId,\n to: entityId\n };\n createRelationsObservables.push(entityRelationService.saveRelation(relation));\n }\n }\n }\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = [\"MainBreaker\"];\n \n let entityOwner = \"currentCustomer\";\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
1360
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Breaker Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Breaker name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
1361
+ }
1362
+ ],
1363
+ "actionCellButton": [
1364
+ {
1365
+ "id": "fc87f57e-30d6-422c-91b3-bc50defad467",
1366
+ "name": "Edit Main Breaker",
1367
+ "icon": "edit",
1368
+ "type": "customPretty",
1369
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Edit Main Breaker '${entityName}'\";\nlet createEntity = false;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = null;\n let entitySubType = null;\n let entityOwner = null;\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = null;\n \n let entityOwner = null;\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
1370
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Device Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Device name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
1371
+ },
1372
+ {
1373
+ "id": "e16710e9-6b72-4b43-8235-d7a611afcc59",
1374
+ "name": "Delete Main Breaker",
1375
+ "icon": "delete",
1376
+ "type": "custom",
1377
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet dialogs = $injector.get(widgetContext.servicesMap.get('dialogs'));\nlet deleteEntityTitle = \"Delete Main Breaker '${entityName}'\";\nlet deleteEntityPrompt = \"Are you sure you want to delete the main breaker '${entityName}'?\";\n\ndeleteEntityTitle = deleteEntityTitle.replaceAll('${entityName}', entityName);\ndeleteEntityPrompt = deleteEntityPrompt.replaceAll('${entityName}', entityName);\n\nopenDeleteEntityDialog();\n\nfunction openDeleteEntityDialog() {\n dialogs.confirm(deleteEntityTitle, deleteEntityPrompt, 'Cancel', 'Delete').subscribe(\n function(result) {\n if (result) {\n deleteEntity(entityId);\n }\n }\n );\n}\n\nfunction deleteEntity(entityId) {\n let deleteObservable = null;\n switch (entityId.entityType) {\n case 'DEVICE':\n let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\n deleteObservable = deviceService.deleteDevice(entityId.id);\n break;\n case 'ASSET':\n let assetService = $injector.get(widgetContext.servicesMap.get('assetService'));\n deleteObservable = assetService.deleteAsset(entityId.id);\n break;\n case 'ENTITY_VIEW':\n let entityViewService = $injector.get(widgetContext.servicesMap.get('entityViewService'));\n deleteObservable = entityViewService.deleteEntityView(entityId.id);\n break;\n case 'EDGE':\n let edgeService = $injector.get(widgetContext.servicesMap.get('edgeService'));\n deleteObservable = edgeService.deleteEdge(entityId.id);\n break;\n case 'TENANT':\n let tenantService = $injector.get(widgetContext.servicesMap.get('tenantService'));\n deleteObservable = tenantService.deleteTenant(entityId.id);\n break;\n case 'CUSTOMER':\n let customerService = $injector.get(widgetContext.servicesMap.get('customerService'));\n deleteObservable = customerService.deleteCustomer(entityId.id);\n break;\n case 'DASHBOARD':\n let dashboardService = $injector.get(widgetContext.servicesMap.get('dashboardService'));\n deleteObservable = dashboardService.deleteDashboard(entityId.id);\n break;\n case 'USER':\n let userService = $injector.get(widgetContext.servicesMap.get('userService'));\n deleteObservable = userService.deleteUser(entityId.id);\n break;\n case 'SCHEDULER_EVENT':\n let schedulerEventService = $injector.get(widgetContext.servicesMap.get('schedulerEventService'));\n deleteObservable = schedulerEventService.deleteSchedulerEvent(entityId.id);\n break;\n case 'ROLE':\n let roleService = $injector.get(widgetContext.servicesMap.get('roleService'));\n deleteObservable = roleService.deleteRole(entityId.id);\n break;\n case 'ENTITY_GROUP':\n let entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n deleteObservable = entityGroupService.deleteEntityGroup(entityId.id);\n break;\n default:\n showErrorDialog(`Unsupported entity type '${entityId.entityType}'`);\n break;\n }\n if (deleteObservable) {\n deleteObservable.subscribe(\n function success() {\n widgetContext.updateAliases();\n },\n function fail() {\n showErrorDialog();\n }\n );\n }\n}\n\nfunction showErrorDialog(error) {\n let title = 'Error';\n error = error || 'Please try again.';\n let content = `An error occurred while deleting '${entityName}'. ${error}`;\n dialogs.alert(title, content, 'CLOSE').subscribe(\n function(result) {}\n );\n}\n"
1378
+ }
1379
+ ]
1380
+ },
1381
+ "settings": {
1382
+ "entitiesTitle": "Main Breakers",
1383
+ "displayEntityName": false,
1384
+ "displayEntityType": false
1385
+ },
1386
+ "datasources": [
1387
+ {
1388
+ "type": "entity",
1389
+ "dataKeys": [
1390
+ {
1391
+ "name": "name",
1392
+ "label": "Name",
1393
+ "type": "entityField",
1394
+ "color": "var(--tb-primary-500)",
1395
+ "settings": {}
1396
+ },
1397
+ {
1398
+ "name": "state",
1399
+ "label": "State",
1400
+ "type": "timeseries",
1401
+ "color": "var(--tb-primary-500)",
1402
+ "settings": {
1403
+ "useCellContentFunction": true,
1404
+ "useCellContentFunctionOnExport": true,
1405
+ "cellContentFunction": "let color = '#757575'; let backColor = '#F5F5F5'; let text = value; if (value === 'closed') { color = '#E8F5E9'; backColor = '#2E7D32'; text = 'Closed'; } else if (value === 'tripped') { color = '#FFEBEE'; backColor = '#C62828'; text = 'Tripped'; } else if (value === 'open') { color = '#FFF3E0'; backColor = '#EF6C00'; text = 'Open'; } return `<span style=\"font-size:14px;width:fit-content;font-weight:500;color:${color};background:${backColor};padding:8px;border-radius:6px;\">${text}</span>`;"
1406
+ }
1407
+ },
1408
+ {
1409
+ "name": "activePower",
1410
+ "label": "Active Power",
1411
+ "type": "timeseries",
1412
+ "decimals": 1,
1413
+ "color": "var(--tb-primary-500)",
1414
+ "settings": {}
1415
+ },
1416
+ {
1417
+ "name": "active",
1418
+ "label": "Status",
1419
+ "type": "attribute",
1420
+ "color": "var(--tb-primary-500)",
1421
+ "settings": {
1422
+ "useCellContentFunction": true,
1423
+ "useCellContentFunctionOnExport": true,
1424
+ "cellContentFunction": "let color = '#757575'; let backColor = '#F5F5F5'; let text = 'Inactive'; if (value == 'true' || value == true) { text = 'Active'; color = '#E8EAF6'; backColor = '#303F9F'; } return `<span style=\"font-size:14px;width:fit-content;font-weight:500;color:${color};background:${backColor};padding:8px;border-radius:6px;\">${text}</span>`;"
1425
+ }
1426
+ }
1427
+ ],
1428
+ "entityAliasId": "6cde2143-5432-4d8f-a2dd-c84534a98c0c"
1429
+ }
1430
+ ]
1431
+ },
1432
+ "id": "d001f783-5edb-4f4d-8844-ff1598cddc4d",
1433
+ "typeFullFqn": "system.cards.entities_table",
1434
+ "type": "latest"
1435
+ },
1436
+ "0ddffb1a-5c36-4887-9ad7-a339a91c6740": {
1437
+ "sizeX": 23,
1438
+ "sizeY": 1,
1439
+ "row": 0,
1440
+ "col": 0,
1441
+ "config": {
1442
+ "configMode": "basic",
1443
+ "title": "Building Header",
1444
+ "showTitle": false,
1445
+ "dropShadow": false,
1446
+ "enableFullscreen": false,
1447
+ "enableDataExport": false,
1448
+ "backgroundColor": "#FFFFFF00",
1449
+ "padding": "0px",
1450
+ "borderRadius": "8px",
1451
+ "actions": {},
1452
+ "settings": {
1453
+ "useMarkdownTextFunction": false,
1454
+ "markdownTextPattern": "**${Name}** | ${Address}",
1455
+ "applyDefaultMarkdownStyle": true,
1456
+ "markdownCss": ".tb-markdown-view p {\n display: flex;\n margin: 0;\n align-items: center;\n height: 100%;\n font-size: 28px;\n font-weight: 500;\n color: #212121;\n padding: 0;\n}\n"
1457
+ },
1458
+ "datasources": [
1459
+ {
1460
+ "type": "entity",
1461
+ "dataKeys": [
1462
+ {
1463
+ "name": "name",
1464
+ "label": "Name",
1465
+ "type": "entityField",
1466
+ "color": "var(--tb-primary-500)",
1467
+ "settings": {}
1468
+ },
1469
+ {
1470
+ "name": "address",
1471
+ "label": "Address",
1472
+ "type": "attribute",
1473
+ "color": "var(--tb-primary-500)",
1474
+ "settings": {}
1475
+ }
1476
+ ],
1477
+ "entityAliasId": "7327faf4-aded-4fa2-8008-8c380513e113"
1478
+ }
1479
+ ]
1480
+ },
1481
+ "id": "0ddffb1a-5c36-4887-9ad7-a339a91c6740",
1482
+ "typeFullFqn": "system.cards.markdown_card",
1483
+ "type": "latest"
1484
+ },
1485
+ "eb50572a-f223-43ce-b517-1c1bc8d4561c": {
1486
+ "sizeX": 12,
1487
+ "sizeY": 4,
1488
+ "row": 1,
1489
+ "col": 12,
1490
+ "config": {
1491
+ "configMode": "basic",
1492
+ "title": "Active Power",
1493
+ "titleFont": {
1494
+ "size": 21,
1495
+ "sizeUnit": "px",
1496
+ "weight": "500",
1497
+ "lineHeight": "22px"
1498
+ },
1499
+ "showTitle": false,
1500
+ "dropShadow": false,
1501
+ "enableFullscreen": false,
1502
+ "enableDataExport": false,
1503
+ "borderRadius": "8px",
1504
+ "widgetStyle": {
1505
+ "box-shadow": "0px 2px 4px 0px #00000024;"
1506
+ },
1507
+ "units": "W",
1508
+ "decimals": 0,
1509
+ "actions": {},
1510
+ "settings": {
1511
+ "minValue": 0,
1512
+ "maxValue": 15000,
1513
+ "gaugeType": "arc",
1514
+ "showTitle": true,
1515
+ "title": "Active Power",
1516
+ "titleFont": {
1517
+ "color": "#000000DE"
1518
+ },
1519
+ "labelFont": {},
1520
+ "valueFont": {},
1521
+ "minMaxFont": {},
1522
+ "showMinMax": false,
1523
+ "barColor": {
1524
+ "type": "function",
1525
+ "colorFunction": "if (typeof value === 'number') { if (value > 13500) return '#F44336'; if (value > 10500) return '#FF9800'; return '#4CAF50'; } return '#bdbdbd';"
1526
+ },
1527
+ "showValue": true
1528
+ },
1529
+ "datasources": [
1530
+ {
1531
+ "type": "entity",
1532
+ "dataKeys": [
1533
+ {
1534
+ "name": "activePower",
1535
+ "label": "Active Power",
1536
+ "type": "timeseries",
1537
+ "color": "#000000DE",
1538
+ "settings": {}
1539
+ }
1540
+ ],
1541
+ "entityAliasId": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe"
1542
+ }
1543
+ ]
1544
+ },
1545
+ "id": "eb50572a-f223-43ce-b517-1c1bc8d4561c",
1546
+ "typeFullFqn": "system.digital_gauges.simple_gauge_justgage",
1547
+ "type": "latest"
1548
+ },
1549
+ "9a9400c2-e562-4e3e-b674-0fefa7eda038": {
1550
+ "sizeX": 24,
1551
+ "sizeY": 6,
1552
+ "row": 5,
1553
+ "col": 0,
1554
+ "config": {
1555
+ "configMode": "basic",
1556
+ "title": "Alarms",
1557
+ "titleFont": {
1558
+ "size": 21,
1559
+ "sizeUnit": "px",
1560
+ "weight": "500",
1561
+ "lineHeight": "22px"
1562
+ },
1563
+ "showTitle": true,
1564
+ "dropShadow": false,
1565
+ "useDashboardTimewindow": true,
1566
+ "padding": "4px",
1567
+ "borderRadius": "8px",
1568
+ "widgetStyle": {
1569
+ "box-shadow": "0px 2px 4px 0px #00000024;"
1570
+ },
1571
+ "actions": {},
1572
+ "settings": {
1573
+ "alarmsTitle": "Alarms",
1574
+ "enableSelection": true,
1575
+ "enableSearch": true
1576
+ },
1577
+ "alarmSource": {
1578
+ "type": "entity",
1579
+ "name": "alarms",
1580
+ "dataKeys": [
1581
+ {
1582
+ "name": "createdTime",
1583
+ "label": "Created Time",
1584
+ "type": "alarm",
1585
+ "color": "var(--tb-primary-500)",
1586
+ "settings": {}
1587
+ },
1588
+ {
1589
+ "name": "originator",
1590
+ "label": "Originator",
1591
+ "type": "alarm",
1592
+ "color": "var(--tb-primary-500)",
1593
+ "settings": {}
1594
+ },
1595
+ {
1596
+ "name": "type",
1597
+ "label": "Type",
1598
+ "type": "alarm",
1599
+ "color": "var(--tb-primary-500)",
1600
+ "settings": {}
1601
+ },
1602
+ {
1603
+ "name": "severity",
1604
+ "label": "Severity",
1605
+ "type": "alarm",
1606
+ "color": "var(--tb-primary-500)",
1607
+ "settings": {}
1608
+ },
1609
+ {
1610
+ "name": "status",
1611
+ "label": "Status",
1612
+ "type": "alarm",
1613
+ "color": "var(--tb-primary-500)",
1614
+ "settings": {}
1615
+ }
1616
+ ],
1617
+ "entityAliasId": "64c039a4-0ef0-4b75-9c73-44ae6065fceb"
1618
+ },
1619
+ "alarmFilterConfig": {
1620
+ "typeList": [],
1621
+ "statusList": [
1622
+ "ACTIVE"
1623
+ ],
1624
+ "severityList": [
1625
+ "CRITICAL",
1626
+ "MAJOR",
1627
+ "MINOR",
1628
+ "WARNING",
1629
+ "INDETERMINATE"
1630
+ ],
1631
+ "searchPropagatedAlarms": true
1632
+ },
1633
+ "datasources": []
1634
+ },
1635
+ "id": "9a9400c2-e562-4e3e-b674-0fefa7eda038",
1636
+ "typeFullFqn": "system.alarm_widgets.alarms_table",
1637
+ "type": "alarm"
1638
+ },
1639
+ "72935318-a7e0-45bd-97e1-131eb3138842": {
1640
+ "sizeX": 4,
1641
+ "sizeY": 1,
1642
+ "row": 0,
1643
+ "col": 16,
1644
+ "config": {
1645
+ "configMode": "basic",
1646
+ "title": "Statistics",
1647
+ "showTitle": false,
1648
+ "dropShadow": false,
1649
+ "enableFullscreen": false,
1650
+ "enableDataExport": false,
1651
+ "backgroundColor": "#FFFFF00",
1652
+ "padding": "0px",
1653
+ "borderRadius": "8px",
1654
+ "actions": {
1655
+ "click": [
1656
+ {
1657
+ "id": null,
1658
+ "name": null,
1659
+ "icon": null,
1660
+ "type": "custom",
1661
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"office-unit-statistics\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
1662
+ }
1663
+ ]
1664
+ },
1665
+ "settings": {
1666
+ "appearance": {
1667
+ "type": "outlined",
1668
+ "showLabel": true,
1669
+ "label": "Statistics",
1670
+ "showIcon": true,
1671
+ "icon": "show_chart",
1672
+ "mainColor": "var(--tb-primary-500)",
1673
+ "backgroundColor": "#FFFFFF00",
1674
+ "customStyle": {}
1675
+ },
1676
+ "activatedState": {
1677
+ "action": "GET_DASHBOARD_STATE_OBJECT",
1678
+ "defaultValue": false,
1679
+ "dataToValue": {
1680
+ "type": "FUNCTION",
1681
+ "compareToValue": true,
1682
+ "dataToValueFunction": "return data.params.subStateId === \"office-unit-statistics\";"
1683
+ }
1684
+ },
1685
+ "disabledState": {
1686
+ "action": "DO_NOTHING"
1687
+ }
1688
+ },
1689
+ "datasources": []
1690
+ },
1691
+ "id": "72935318-a7e0-45bd-97e1-131eb3138842",
1692
+ "typeFullFqn": "system.action_button",
1693
+ "type": "latest"
1694
+ },
1695
+ "d0e03ae2-2f43-4023-9559-73a6365a9b5d": {
1696
+ "sizeX": 12,
1697
+ "sizeY": 1,
1698
+ "row": 0,
1699
+ "col": 0,
1700
+ "config": {
1701
+ "configMode": "basic",
1702
+ "title": "Main Breaker",
1703
+ "showTitle": false,
1704
+ "dropShadow": false,
1705
+ "enableFullscreen": false,
1706
+ "enableDataExport": false,
1707
+ "backgroundColor": "#FFFFFF00",
1708
+ "padding": "0px",
1709
+ "borderRadius": "8px",
1710
+ "actions": {},
1711
+ "settings": {
1712
+ "useMarkdownTextFunction": false,
1713
+ "markdownTextPattern": "**${Name}**",
1714
+ "applyDefaultMarkdownStyle": true,
1715
+ "markdownCss": ".tb-markdown-view p {\n display: flex;\n margin: 0;\n align-items: center;\n height: 100%;\n font-size: 28px;\n font-weight: 500;\n color: #212121;\n padding: 0;\n}\n"
1716
+ },
1717
+ "datasources": [
1718
+ {
1719
+ "type": "entity",
1720
+ "dataKeys": [
1721
+ {
1722
+ "name": "name",
1723
+ "label": "Name",
1724
+ "type": "entityField",
1725
+ "color": "var(--tb-primary-500)",
1726
+ "settings": {}
1727
+ }
1728
+ ],
1729
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
1730
+ }
1731
+ ]
1732
+ },
1733
+ "id": "d0e03ae2-2f43-4023-9559-73a6365a9b5d",
1734
+ "typeFullFqn": "system.cards.markdown_card",
1735
+ "type": "latest"
1736
+ },
1737
+ "e9f7fb0b-391e-4972-a00b-97992364c049": {
1738
+ "sizeX": 4,
1739
+ "sizeY": 1,
1740
+ "row": 0,
1741
+ "col": 20,
1742
+ "config": {
1743
+ "configMode": "basic",
1744
+ "title": "Statistics",
1745
+ "showTitle": false,
1746
+ "dropShadow": false,
1747
+ "enableFullscreen": false,
1748
+ "enableDataExport": false,
1749
+ "backgroundColor": "#FFFFF00",
1750
+ "padding": "0px",
1751
+ "borderRadius": "8px",
1752
+ "actions": {
1753
+ "click": [
1754
+ {
1755
+ "id": null,
1756
+ "name": null,
1757
+ "icon": null,
1758
+ "type": "custom",
1759
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"office-floor-statistics\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
1760
+ }
1761
+ ]
1762
+ },
1763
+ "settings": {
1764
+ "appearance": {
1765
+ "type": "outlined",
1766
+ "showLabel": true,
1767
+ "label": "Statistics",
1768
+ "showIcon": true,
1769
+ "icon": "show_chart",
1770
+ "mainColor": "var(--tb-primary-500)",
1771
+ "backgroundColor": "#FFFFFF00",
1772
+ "customStyle": {}
1773
+ },
1774
+ "activatedState": {
1775
+ "action": "GET_DASHBOARD_STATE_OBJECT",
1776
+ "defaultValue": false,
1777
+ "dataToValue": {
1778
+ "type": "FUNCTION",
1779
+ "compareToValue": true,
1780
+ "dataToValueFunction": "return data.params.subStateId === \"office-floor-statistics\";"
1781
+ }
1782
+ },
1783
+ "disabledState": {
1784
+ "action": "DO_NOTHING"
1785
+ }
1786
+ },
1787
+ "datasources": []
1788
+ },
1789
+ "id": "e9f7fb0b-391e-4972-a00b-97992364c049",
1790
+ "typeFullFqn": "system.action_button",
1791
+ "type": "latest"
1792
+ },
1793
+ "98101b1d-6b77-45e5-b1c4-fb27991950e5": {
1794
+ "sizeX": 4,
1795
+ "sizeY": 1,
1796
+ "row": 0,
1797
+ "col": 20,
1798
+ "config": {
1799
+ "configMode": "basic",
1800
+ "title": "connect-breaker-device",
1801
+ "titleFont": {
1802
+ "size": 21,
1803
+ "sizeUnit": "px",
1804
+ "weight": "500",
1805
+ "lineHeight": "22px"
1806
+ },
1807
+ "showTitle": false,
1808
+ "dropShadow": false,
1809
+ "enableFullscreen": false,
1810
+ "enableDataExport": false,
1811
+ "backgroundColor": "#FFFFFF00",
1812
+ "padding": "0px",
1813
+ "borderRadius": "8px",
1814
+ "actions": {
1815
+ "click": [
1816
+ {
1817
+ "id": null,
1818
+ "name": "Open connectivity documentation",
1819
+ "icon": null,
1820
+ "openNewBrowserTab": true,
1821
+ "url": "https://thingsboard.io/docs/paas/getting-started-guides/connectivity/",
1822
+ "type": "openURL"
1823
+ }
1824
+ ]
1825
+ },
1826
+ "settings": {
1827
+ "appearance": {
1828
+ "type": "filled",
1829
+ "showLabel": true,
1830
+ "label": "How to connect real devices?",
1831
+ "showIcon": true,
1832
+ "icon": "help_outline",
1833
+ "mainColor": "var(--tb-primary-500)",
1834
+ "backgroundColor": "#FFFFFF",
1835
+ "customStyle": {}
1836
+ },
1837
+ "activatedState": {
1838
+ "action": "DO_NOTHING",
1839
+ "defaultValue": false
1840
+ },
1841
+ "disabledState": {
1842
+ "action": "DO_NOTHING",
1843
+ "defaultValue": false
1844
+ }
1845
+ },
1846
+ "datasources": []
1847
+ },
1848
+ "id": "98101b1d-6b77-45e5-b1c4-fb27991950e5",
1849
+ "typeFullFqn": "system.action_button",
1850
+ "type": "latest"
1851
+ },
1852
+ "96b908b7-5582-4a46-9bee-16ff06a3055b": {
1853
+ "sizeX": 24,
1854
+ "sizeY": 14,
1855
+ "row": 1,
1856
+ "col": 0,
1857
+ "config": {
1858
+ "configMode": "basic",
1859
+ "titleFont": {
1860
+ "size": 21,
1861
+ "sizeUnit": "px",
1862
+ "weight": "500",
1863
+ "lineHeight": "22px"
1864
+ },
1865
+ "showTitle": false,
1866
+ "dropShadow": false,
1867
+ "enableFullscreen": false,
1868
+ "enableDataExport": false,
1869
+ "backgroundColor": "#FFFFFF00",
1870
+ "padding": "0px",
1871
+ "borderRadius": "8px",
1872
+ "actions": {},
1873
+ "settings": {
1874
+ "useMarkdownTextFunction": true,
1875
+ "markdownTextFunction": "let subState = ctx.stateController.getStateParams().subStateId || \"office-floor-statistics\";\n\nreturn `<div tb-toast toastTarget=\"layout\" class=\"block\">\n <tb-dashboard-state class=\"state\" [ctx]=\"ctx\" stateId=\"${subState}\" [syncParentStateParams]=\"true\"></tb-dashboard-state>\n </div>`;",
1876
+ "applyDefaultMarkdownStyle": true,
1877
+ "markdownCss": ".block {\n flex-grow: 1;\n width: 100%;\n height: 100%;\n display: flex;\n padding: 0;\n}\n\n.state {\n flex-grow: 1;\n padding: 0;\n width: 100%;\n height: 100%;\n}"
1878
+ },
1879
+ "datasources": [
1880
+ {
1881
+ "type": "entity",
1882
+ "dataKeys": [],
1883
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce"
1884
+ }
1885
+ ]
1886
+ },
1887
+ "id": "96b908b7-5582-4a46-9bee-16ff06a3055b",
1888
+ "typeFullFqn": "system.cards.markdown_card",
1889
+ "type": "latest"
1890
+ },
1891
+ "3545f963-81d6-4ba4-9696-b1ad4a008829": {
1892
+ "sizeX": 12,
1893
+ "sizeY": 11,
1894
+ "row": 0,
1895
+ "col": 0,
1896
+ "config": {
1897
+ "configMode": "basic",
1898
+ "title": "Floor Consumption History",
1899
+ "titleFont": {
1900
+ "size": 21,
1901
+ "sizeUnit": "px",
1902
+ "weight": "500",
1903
+ "lineHeight": "22px"
1904
+ },
1905
+ "showTitle": true,
1906
+ "dropShadow": false,
1907
+ "useDashboardTimewindow": true,
1908
+ "padding": "0px",
1909
+ "margin": "0px",
1910
+ "borderRadius": "8px",
1911
+ "widgetStyle": {
1912
+ "box-shadow": "0px 2px 4px 0px #00000024;"
1913
+ },
1914
+ "actions": {},
1915
+ "settings": {
1916
+ "dataZoom": false,
1917
+ "showLegend": false,
1918
+ "legendConfig": {
1919
+ "position": "top",
1920
+ "sortDataKeys": false,
1921
+ "showMin": false,
1922
+ "showMax": false,
1923
+ "showAvg": true,
1924
+ "showTotal": false,
1925
+ "showLatest": false
1926
+ },
1927
+ "xAxis": {
1928
+ "show": true,
1929
+ "position": "bottom"
1930
+ },
1931
+ "yAxis": {
1932
+ "show": true,
1933
+ "position": "left"
1934
+ },
1935
+ "yAxes": {
1936
+ "default": {
1937
+ "id": "default",
1938
+ "label": "Energy Consumption",
1939
+ "position": "left",
1940
+ "min": null,
1941
+ "max": null,
1942
+ "units": "",
1943
+ "decimals": 1,
1944
+ "order": 0
1945
+ }
1946
+ }
1947
+ },
1948
+ "datasources": [
1949
+ {
1950
+ "type": "entity",
1951
+ "dataKeys": [
1952
+ {
1953
+ "name": "dailyFloorEnergy",
1954
+ "label": "Daily Floor Energy",
1955
+ "type": "timeseries",
1956
+ "units": "",
1957
+ "decimals": 1,
1958
+ "color": "#2196F3",
1959
+ "settings": {
1960
+ "yAxisId": "default",
1961
+ "showLegend": true
1962
+ }
1963
+ },
1964
+ {
1965
+ "name": "totalTenantConsumption",
1966
+ "label": "Total Tenant Consumption",
1967
+ "type": "timeseries",
1968
+ "units": "",
1969
+ "decimals": 1,
1970
+ "color": "#4CAF50",
1971
+ "settings": {
1972
+ "yAxisId": "default",
1973
+ "showLegend": true
1974
+ }
1975
+ }
1976
+ ],
1977
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce"
1978
+ }
1979
+ ]
1980
+ },
1981
+ "id": "3545f963-81d6-4ba4-9696-b1ad4a008829",
1982
+ "typeFullFqn": "system.time_series_chart",
1983
+ "type": "timeseries"
1984
+ },
1985
+ "c658b81b-6794-44c8-b644-e77d984b0d00": {
1986
+ "sizeX": 12,
1987
+ "sizeY": 1,
1988
+ "row": 0,
1989
+ "col": 0,
1990
+ "config": {
1991
+ "configMode": "basic",
1992
+ "title": "Voltage",
1993
+ "showTitle": false,
1994
+ "dropShadow": false,
1995
+ "enableFullscreen": false,
1996
+ "enableDataExport": false,
1997
+ "padding": "0px",
1998
+ "margin": "0px",
1999
+ "borderRadius": "8px",
2000
+ "widgetStyle": {
2001
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2002
+ },
2003
+ "widgetCss": "tb-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n width: 40px!important;\n height: 40px!important;\n background-color: var(--tb-primary-50);\n}\n\n.tb-value-card-icon-row {\n width: 50%;\n justify-content: space-between;\n}\n",
2004
+ "units": "V",
2005
+ "decimals": 1,
2006
+ "actions": {},
2007
+ "settings": {
2008
+ "layout": "horizontal",
2009
+ "showLabel": true,
2010
+ "labelColor": {
2011
+ "type": "constant",
2012
+ "color": "#000000DE"
2013
+ },
2014
+ "showIcon": true,
2015
+ "icon": "electric_meter",
2016
+ "iconColor": {
2017
+ "type": "constant",
2018
+ "color": "var(--tb-primary-500)"
2019
+ },
2020
+ "iconSize": 24,
2021
+ "iconSizeUnit": "px",
2022
+ "valueColor": {
2023
+ "type": "constant",
2024
+ "color": "#000000DE"
2025
+ },
2026
+ "valueFont": {
2027
+ "size": 30
2028
+ },
2029
+ "labelFont": {
2030
+ "size": 20
2031
+ },
2032
+ "showDate": false,
2033
+ "autoScale": true
2034
+ },
2035
+ "datasources": [
2036
+ {
2037
+ "type": "entity",
2038
+ "dataKeys": [
2039
+ {
2040
+ "name": "voltage",
2041
+ "label": "Voltage",
2042
+ "type": "timeseries",
2043
+ "color": "var(--tb-primary-500)",
2044
+ "settings": {}
2045
+ }
2046
+ ],
2047
+ "entityAliasId": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe"
2048
+ }
2049
+ ]
2050
+ },
2051
+ "id": "c658b81b-6794-44c8-b644-e77d984b0d00",
2052
+ "typeFullFqn": "system.cards.horizontal_value_card",
2053
+ "type": "latest"
2054
+ },
2055
+ "e3bab18b-940d-4f4b-af12-9a4b2fe21444": {
2056
+ "sizeX": 24,
2057
+ "sizeY": 5,
2058
+ "row": 6,
2059
+ "col": 0,
2060
+ "config": {
2061
+ "configMode": "basic",
2062
+ "title": "Breaker Energy Trend",
2063
+ "titleFont": {
2064
+ "size": 21,
2065
+ "sizeUnit": "px",
2066
+ "weight": "500",
2067
+ "lineHeight": "22px"
2068
+ },
2069
+ "showTitle": true,
2070
+ "dropShadow": false,
2071
+ "useDashboardTimewindow": true,
2072
+ "padding": "0px",
2073
+ "margin": "0px",
2074
+ "borderRadius": "8px",
2075
+ "widgetStyle": {
2076
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2077
+ },
2078
+ "actions": {},
2079
+ "settings": {
2080
+ "dataZoom": false,
2081
+ "showLegend": false,
2082
+ "legendConfig": {
2083
+ "position": "top",
2084
+ "sortDataKeys": false,
2085
+ "showMin": false,
2086
+ "showMax": false,
2087
+ "showAvg": true,
2088
+ "showTotal": false,
2089
+ "showLatest": false
2090
+ },
2091
+ "xAxis": {
2092
+ "show": true,
2093
+ "position": "bottom"
2094
+ },
2095
+ "yAxis": {
2096
+ "show": true,
2097
+ "position": "left"
2098
+ },
2099
+ "yAxes": {
2100
+ "default": {
2101
+ "id": "default",
2102
+ "label": "Energy",
2103
+ "position": "left",
2104
+ "min": null,
2105
+ "max": null,
2106
+ "units": "",
2107
+ "decimals": 1,
2108
+ "order": 0
2109
+ }
2110
+ }
2111
+ },
2112
+ "datasources": [
2113
+ {
2114
+ "type": "entity",
2115
+ "dataKeys": [
2116
+ {
2117
+ "name": "dailyFloorEnergy",
2118
+ "label": "Daily Floor Energy",
2119
+ "type": "timeseries",
2120
+ "units": "",
2121
+ "decimals": 1,
2122
+ "color": "#2196F3",
2123
+ "settings": {
2124
+ "yAxisId": "default",
2125
+ "showLegend": true
2126
+ }
2127
+ }
2128
+ ],
2129
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
2130
+ }
2131
+ ]
2132
+ },
2133
+ "id": "e3bab18b-940d-4f4b-af12-9a4b2fe21444",
2134
+ "typeFullFqn": "system.time_series_chart",
2135
+ "type": "timeseries"
2136
+ },
2137
+ "1a361761-a319-4fc1-97a0-22622d585cf6": {
2138
+ "sizeX": 12,
2139
+ "sizeY": 11,
2140
+ "row": 0,
2141
+ "col": 0,
2142
+ "config": {
2143
+ "configMode": "basic",
2144
+ "title": "Electrical Metrics Trends",
2145
+ "titleFont": {
2146
+ "size": 21,
2147
+ "sizeUnit": "px",
2148
+ "weight": "500",
2149
+ "lineHeight": "22px"
2150
+ },
2151
+ "showTitle": true,
2152
+ "dropShadow": false,
2153
+ "useDashboardTimewindow": true,
2154
+ "padding": "0px",
2155
+ "margin": "0px",
2156
+ "borderRadius": "8px",
2157
+ "widgetStyle": {
2158
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2159
+ },
2160
+ "actions": {},
2161
+ "settings": {
2162
+ "dataZoom": false,
2163
+ "showLegend": false,
2164
+ "legendConfig": {
2165
+ "position": "top",
2166
+ "sortDataKeys": false,
2167
+ "showMin": false,
2168
+ "showMax": false,
2169
+ "showAvg": true,
2170
+ "showTotal": false,
2171
+ "showLatest": false
2172
+ },
2173
+ "xAxis": {
2174
+ "show": true,
2175
+ "position": "bottom"
2176
+ },
2177
+ "yAxis": {
2178
+ "show": true,
2179
+ "position": "left"
2180
+ },
2181
+ "yAxes": {
2182
+ "power": {
2183
+ "id": "power",
2184
+ "label": "Active Power",
2185
+ "position": "left",
2186
+ "min": 0,
2187
+ "max": 15000,
2188
+ "units": "",
2189
+ "decimals": 1,
2190
+ "order": 0
2191
+ },
2192
+ "voltage": {
2193
+ "id": "voltage",
2194
+ "label": "Voltage",
2195
+ "position": "right",
2196
+ "min": 0,
2197
+ "max": 250,
2198
+ "units": "",
2199
+ "decimals": 1,
2200
+ "order": 1
2201
+ },
2202
+ "current": {
2203
+ "id": "current",
2204
+ "label": "Current",
2205
+ "position": "right",
2206
+ "min": 0,
2207
+ "max": 60,
2208
+ "units": "",
2209
+ "decimals": 1,
2210
+ "order": 2
2211
+ }
2212
+ }
2213
+ },
2214
+ "datasources": [
2215
+ {
2216
+ "type": "entity",
2217
+ "dataKeys": [
2218
+ {
2219
+ "name": "activePower",
2220
+ "label": "Active Power",
2221
+ "type": "timeseries",
2222
+ "units": "",
2223
+ "decimals": 1,
2224
+ "color": "#2196F3",
2225
+ "settings": {
2226
+ "yAxisId": "power",
2227
+ "showLegend": true
2228
+ }
2229
+ },
2230
+ {
2231
+ "name": "voltage",
2232
+ "label": "Voltage",
2233
+ "type": "timeseries",
2234
+ "units": "",
2235
+ "decimals": 1,
2236
+ "color": "#F44336",
2237
+ "settings": {
2238
+ "yAxisId": "voltage",
2239
+ "showLegend": true
2240
+ }
2241
+ },
2242
+ {
2243
+ "name": "current",
2244
+ "label": "Current",
2245
+ "type": "timeseries",
2246
+ "units": "",
2247
+ "decimals": 1,
2248
+ "color": "#4CAF50",
2249
+ "settings": {
2250
+ "yAxisId": "current",
2251
+ "showLegend": true
2252
+ }
2253
+ }
2254
+ ],
2255
+ "entityAliasId": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe"
2256
+ }
2257
+ ]
2258
+ },
2259
+ "id": "1a361761-a319-4fc1-97a0-22622d585cf6",
2260
+ "typeFullFqn": "system.time_series_chart",
2261
+ "type": "timeseries"
2262
+ },
2263
+ "50ddec34-42b8-45cf-9b41-8629fefff74a": {
2264
+ "sizeX": 12,
2265
+ "sizeY": 11,
2266
+ "row": 0,
2267
+ "col": 12,
2268
+ "config": {
2269
+ "configMode": "basic",
2270
+ "title": "Alarms",
2271
+ "titleFont": {
2272
+ "size": 21,
2273
+ "sizeUnit": "px",
2274
+ "weight": "500",
2275
+ "lineHeight": "22px"
2276
+ },
2277
+ "showTitle": true,
2278
+ "dropShadow": false,
2279
+ "useDashboardTimewindow": true,
2280
+ "padding": "4px",
2281
+ "borderRadius": "8px",
2282
+ "widgetStyle": {
2283
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2284
+ },
2285
+ "actions": {},
2286
+ "settings": {
2287
+ "alarmsTitle": "Alarms",
2288
+ "enableSelection": true,
2289
+ "enableSearch": true
2290
+ },
2291
+ "alarmSource": {
2292
+ "type": "entity",
2293
+ "name": "alarms",
2294
+ "dataKeys": [
2295
+ {
2296
+ "name": "createdTime",
2297
+ "label": "Created Time",
2298
+ "type": "alarm",
2299
+ "color": "var(--tb-primary-500)",
2300
+ "settings": {}
2301
+ },
2302
+ {
2303
+ "name": "originator",
2304
+ "label": "Originator",
2305
+ "type": "alarm",
2306
+ "color": "var(--tb-primary-500)",
2307
+ "settings": {}
2308
+ },
2309
+ {
2310
+ "name": "type",
2311
+ "label": "Type",
2312
+ "type": "alarm",
2313
+ "color": "var(--tb-primary-500)",
2314
+ "settings": {}
2315
+ },
2316
+ {
2317
+ "name": "severity",
2318
+ "label": "Severity",
2319
+ "type": "alarm",
2320
+ "color": "var(--tb-primary-500)",
2321
+ "settings": {}
2322
+ },
2323
+ {
2324
+ "name": "status",
2325
+ "label": "Status",
2326
+ "type": "alarm",
2327
+ "color": "var(--tb-primary-500)",
2328
+ "settings": {}
2329
+ }
2330
+ ],
2331
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
2332
+ },
2333
+ "alarmFilterConfig": {
2334
+ "typeList": [],
2335
+ "statusList": [
2336
+ "ACTIVE"
2337
+ ],
2338
+ "severityList": [
2339
+ "CRITICAL",
2340
+ "MAJOR",
2341
+ "MINOR",
2342
+ "WARNING",
2343
+ "INDETERMINATE"
2344
+ ],
2345
+ "searchPropagatedAlarms": true
2346
+ },
2347
+ "datasources": []
2348
+ },
2349
+ "id": "50ddec34-42b8-45cf-9b41-8629fefff74a",
2350
+ "typeFullFqn": "system.alarm_widgets.alarms_table",
2351
+ "type": "alarm"
2352
+ },
2353
+ "c22fba98-a98d-4f2c-bcc1-565430f079a4": {
2354
+ "sizeX": 4,
2355
+ "sizeY": 1,
2356
+ "row": 0,
2357
+ "col": 12,
2358
+ "config": {
2359
+ "configMode": "basic",
2360
+ "title": "Overview",
2361
+ "showTitle": false,
2362
+ "dropShadow": false,
2363
+ "enableFullscreen": false,
2364
+ "enableDataExport": false,
2365
+ "backgroundColor": "#FFFFF00",
2366
+ "padding": "0px",
2367
+ "borderRadius": "8px",
2368
+ "actions": {
2369
+ "click": [
2370
+ {
2371
+ "id": null,
2372
+ "name": null,
2373
+ "icon": null,
2374
+ "type": "custom",
2375
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"office-unit-overview\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
2376
+ }
2377
+ ]
2378
+ },
2379
+ "settings": {
2380
+ "appearance": {
2381
+ "type": "outlined",
2382
+ "showLabel": true,
2383
+ "label": "Overview",
2384
+ "showIcon": true,
2385
+ "icon": "info",
2386
+ "mainColor": "var(--tb-primary-500)",
2387
+ "backgroundColor": "#FFFFFF00",
2388
+ "customStyle": {}
2389
+ },
2390
+ "activatedState": {
2391
+ "action": "GET_DASHBOARD_STATE_OBJECT",
2392
+ "defaultValue": false,
2393
+ "dataToValue": {
2394
+ "type": "FUNCTION",
2395
+ "compareToValue": true,
2396
+ "dataToValueFunction": "return data.params.subStateId === \"office-unit-overview\";"
2397
+ }
2398
+ },
2399
+ "disabledState": {
2400
+ "action": "DO_NOTHING"
2401
+ }
2402
+ },
2403
+ "datasources": []
2404
+ },
2405
+ "id": "c22fba98-a98d-4f2c-bcc1-565430f079a4",
2406
+ "typeFullFqn": "system.action_button",
2407
+ "type": "latest"
2408
+ },
2409
+ "0531bdba-6fdb-4c46-8415-eaad5dde4d24": {
2410
+ "sizeX": 12,
2411
+ "sizeY": 10,
2412
+ "row": 1,
2413
+ "col": 0,
2414
+ "config": {
2415
+ "configMode": "basic",
2416
+ "title": "Main Breaker Power Load",
2417
+ "titleFont": {
2418
+ "size": 21,
2419
+ "sizeUnit": "px",
2420
+ "weight": "500",
2421
+ "lineHeight": "22px"
2422
+ },
2423
+ "showTitle": false,
2424
+ "dropShadow": false,
2425
+ "enableFullscreen": false,
2426
+ "enableDataExport": false,
2427
+ "borderRadius": "8px",
2428
+ "widgetStyle": {
2429
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2430
+ },
2431
+ "units": "W",
2432
+ "decimals": 0,
2433
+ "actions": {},
2434
+ "settings": {
2435
+ "minValue": 0,
2436
+ "maxValue": 100000,
2437
+ "gaugeType": "arc",
2438
+ "showTitle": true,
2439
+ "title": "Main Breaker Power Load",
2440
+ "titleFont": {
2441
+ "color": "#000000DE"
2442
+ },
2443
+ "labelFont": {},
2444
+ "valueFont": {},
2445
+ "minMaxFont": {},
2446
+ "showMinMax": false,
2447
+ "barColor": {
2448
+ "type": "function",
2449
+ "colorFunction": "if (typeof value === 'number') { if (value > 80000) { return '#F44336'; } else if (value > 60000) { return '#FF9800'; } else { return '#4CAF50'; } } return '#BDBDBD';"
2450
+ },
2451
+ "showValue": true
2452
+ },
2453
+ "datasources": [
2454
+ {
2455
+ "type": "entity",
2456
+ "dataKeys": [
2457
+ {
2458
+ "name": "activePower",
2459
+ "label": "Active Power",
2460
+ "type": "timeseries",
2461
+ "color": "#000000DE",
2462
+ "settings": {}
2463
+ }
2464
+ ],
2465
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
2466
+ }
2467
+ ]
2468
+ },
2469
+ "id": "0531bdba-6fdb-4c46-8415-eaad5dde4d24",
2470
+ "typeFullFqn": "system.digital_gauges.simple_gauge_justgage",
2471
+ "type": "latest"
2472
+ },
2473
+ "bb4ce8df-a38f-4352-9ca9-96fd28e3d4c0": {
2474
+ "sizeX": 12,
2475
+ "sizeY": 5,
2476
+ "row": 7,
2477
+ "col": 12,
2478
+ "config": {
2479
+ "configMode": "basic",
2480
+ "title": "Building Energy Consumption and Cost Trends",
2481
+ "titleFont": {
2482
+ "size": 21,
2483
+ "sizeUnit": "px",
2484
+ "weight": "500",
2485
+ "lineHeight": "22px"
2486
+ },
2487
+ "showTitle": true,
2488
+ "dropShadow": false,
2489
+ "useDashboardTimewindow": true,
2490
+ "padding": "0px",
2491
+ "margin": "0px",
2492
+ "borderRadius": "8px",
2493
+ "widgetStyle": {
2494
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2495
+ },
2496
+ "actions": {},
2497
+ "settings": {
2498
+ "dataZoom": false,
2499
+ "showLegend": false,
2500
+ "legendConfig": {
2501
+ "position": "top",
2502
+ "sortDataKeys": false,
2503
+ "showMin": false,
2504
+ "showMax": false,
2505
+ "showAvg": true,
2506
+ "showTotal": false,
2507
+ "showLatest": false
2508
+ },
2509
+ "xAxis": {
2510
+ "show": true,
2511
+ "position": "bottom"
2512
+ },
2513
+ "yAxis": {
2514
+ "show": true,
2515
+ "position": "left"
2516
+ },
2517
+ "yAxes": {
2518
+ "consumption_axis": {
2519
+ "id": "consumption_axis",
2520
+ "label": "Consumption",
2521
+ "position": "left",
2522
+ "min": null,
2523
+ "max": null,
2524
+ "units": "",
2525
+ "decimals": 1,
2526
+ "order": 0
2527
+ },
2528
+ "cost_axis": {
2529
+ "id": "cost_axis",
2530
+ "label": "Cost",
2531
+ "position": "right",
2532
+ "min": null,
2533
+ "max": null,
2534
+ "units": "",
2535
+ "decimals": 1,
2536
+ "order": 1
2537
+ }
2538
+ }
2539
+ },
2540
+ "datasources": [
2541
+ {
2542
+ "type": "entity",
2543
+ "dataKeys": [
2544
+ {
2545
+ "name": "totalBuildingConsumption",
2546
+ "label": "Energy Consumption",
2547
+ "type": "timeseries",
2548
+ "units": "",
2549
+ "decimals": 1,
2550
+ "color": "#2196F3",
2551
+ "settings": {
2552
+ "yAxisId": "consumption_axis",
2553
+ "showLegend": true
2554
+ }
2555
+ },
2556
+ {
2557
+ "name": "dailyCost",
2558
+ "label": "Daily Cost",
2559
+ "type": "timeseries",
2560
+ "units": "",
2561
+ "decimals": 1,
2562
+ "color": "#4CAF50",
2563
+ "settings": {
2564
+ "yAxisId": "cost_axis",
2565
+ "showLegend": true
2566
+ }
2567
+ }
2568
+ ],
2569
+ "entityAliasId": "7327faf4-aded-4fa2-8008-8c380513e113"
2570
+ }
2571
+ ]
2572
+ },
2573
+ "id": "bb4ce8df-a38f-4352-9ca9-96fd28e3d4c0",
2574
+ "typeFullFqn": "system.time_series_chart",
2575
+ "type": "timeseries"
2576
+ },
2577
+ "accf469f-8a07-4af2-a844-385bd2c2c9b8": {
2578
+ "sizeX": 12,
2579
+ "sizeY": 6,
2580
+ "row": 1,
2581
+ "col": 0,
2582
+ "config": {
2583
+ "configMode": "basic",
2584
+ "title": "Office Floors",
2585
+ "titleFont": {
2586
+ "size": 21,
2587
+ "sizeUnit": "px",
2588
+ "weight": "500",
2589
+ "lineHeight": "22px"
2590
+ },
2591
+ "showTitle": true,
2592
+ "dropShadow": false,
2593
+ "enableFullscreen": false,
2594
+ "enableDataExport": false,
2595
+ "padding": "4px",
2596
+ "borderRadius": "8px",
2597
+ "widgetStyle": {
2598
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2599
+ },
2600
+ "actions": {
2601
+ "rowClick": [
2602
+ {
2603
+ "id": "13a25bd8-9c4a-490d-8a98-32531ad16c9d",
2604
+ "name": "View Office Floor Details",
2605
+ "icon": "arrow_forward",
2606
+ "type": "openDashboardState",
2607
+ "targetDashboardStateId": "office-floor-details",
2608
+ "setEntityId": true,
2609
+ "stateEntityParamName": "selectedOfficeFloor"
2610
+ }
2611
+ ],
2612
+ "headerButton": [
2613
+ {
2614
+ "id": "a176c8b7-5be6-4249-a53d-9608a72ea191",
2615
+ "name": "Add Office Floor",
2616
+ "icon": "add",
2617
+ "type": "customPretty",
2618
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Create New Office Floor\";\nlet createEntity = true;\n\nlet attributeKeys = [\"floorPlan\"];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n floorPlan: [null, []]\n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = \"ASSET\";\n let entitySubType = \"OfficeFloor\";\n let entityOwner = \"currentCustomer\";\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n let createRelations = [{\"fromStateEntity\":\"singleEntity\",\"type\":\"Contains\"}];\n if (createRelations && createRelations.length) {\n let stateParams = widgetContext.stateController.getStateParams();\n for (let createRelation of createRelations) {\n let fromEntityId = null;\n if (createRelation.fromStateEntity === 'singleEntity' && singleEntityId) {\n fromEntityId = singleEntityId;\n } else if (createRelation.fromStateEntity && stateParams[createRelation.fromStateEntity]) {\n fromEntityId = stateParams[createRelation.fromStateEntity].entityId;\n } else {\n fromEntityId = stateParams.entityId;\n }\n if (!fromEntityId && createRelation.fromStateEntity === 'currentCustomer') {\n fromEntityId = {id: currentUser.customerId, entityType: \"CUSTOMER\" };\n }\n if (fromEntityId && fromEntityId.id && fromEntityId.entityType) {\n let relation = {\n type: createRelation.type,\n typeGroup: 'COMMON',\n from: fromEntityId,\n to: entityId\n };\n createRelationsObservables.push(entityRelationService.saveRelation(relation));\n }\n }\n }\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = [\"OfficeFloor\"];\n \n let entityOwner = \"currentCustomer\";\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
2619
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Floor Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Floor name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n <fieldset formGroupName=\"attributes\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><tb-gallery-image-input class=\"flex-1\" formControlName=\"floorPlan\" label=\"Floor Plan Image\">\n</tb-gallery-image-input></fieldset>\n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
2620
+ }
2621
+ ],
2622
+ "actionCellButton": [
2623
+ {
2624
+ "id": "86322a5e-c5cb-4f2e-aa49-5cc887682295",
2625
+ "name": "Edit Office Floor",
2626
+ "icon": "edit",
2627
+ "type": "customPretty",
2628
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\nlet entityService = $injector.get(widgetContext.servicesMap.get('entityService'));\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\nlet entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n\nlet dialogTitle = \"Edit '${entityName}'\";\nlet createEntity = false;\n\nlet attributeKeys = [];\nlet additionalAttributes = [ ];\nlet additionalTelemetry = [ ];\n\nopenEntityDialog();\n\nfunction openEntityDialog() {\n customDialog.customDialog(htmlTemplate, EntityDialogController).subscribe();\n}\n\nfunction EntityDialogController(instance) {\n let vm = instance;\n\n const currentUser = widgetContext.currentUser;\n\n if (createEntity) {\n vm.dialogTitle = dialogTitle;\n } else {\n vm.dialogTitle = dialogTitle.replaceAll('${entityName}', entityName);\n }\n\n vm.submitTitle = createEntity ? 'Create' : 'Save';\n\n vm.entityFormGroup = vm.fb.group({\n entityFields: vm.fb.group({\n name: [null, [vm.validators.required]]\n }),\n \n });\n\n \n\n if (attributeKeys.length) {\n vm.entityFormGroup.addControl('attributes',\n vm.fb.group({\n \n })\n );\n }\n\n vm.save = function() {\n vm.entityFormGroup.markAsPristine();\n saveEntity().subscribe(\n function (entity) {\n widgetContext.rxjs.forkJoin([\n saveAttributes(entity.id),\n saveTelemetry(entity.id),\n createRelations(entity.id),\n addToEntityGroups(entity.id)\n ]).subscribe(\n function () {\n widgetContext.updateAliases();\n vm.dialogRef.close(null);\n }\n );\n }\n );\n };\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n\n if (!createEntity) {\n loadEntity();\n }\n\n function saveEntity() {\n const entityFields = vm.entityFormGroup.get('entityFields').value;\n let entity;\n if (createEntity) {\n entity = entityFields;\n let entityType = null;\n let entitySubType = null;\n let entityOwner = null;\n entity.id = {\n entityType: entityType\n };\n \n \n if (entitySubType) {\n entity.type = entitySubType;\n }\n \n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n let ownerId = stateParams.entityId;\n if (ownerId && ownerId.entityType === 'CUSTOMER') {\n entity.customerId = ownerId;\n }\n }\n if (!entity.customerId && widgetContext.currentUser.authority === 'CUSTOMER_USER') {\n entity.customerId = {id: widgetContext.currentUser.customerId, entityType: 'CUSTOMER'};\n }\n if (entityType === 'USER') {\n if (entity.customerId) {\n entity.authority = 'CUSTOMER_USER';\n } else {\n entity.authority = 'TENANT_ADMIN';\n }\n }\n } else {\n entity = {...vm.entity, ...entityFields};\n }\n return entityService.saveEntity(entity);\n }\n\n function saveAttributes(entityId) {\n if (attributeKeys.length || additionalAttributes.length) {\n let attributes = attributeKeys.length ? vm.entityFormGroup.get('attributes').value : [];\n let attributesArray = [];\n for (let key in attributes) {\n if (attributes[key] !== null) {\n attributesArray.push({key: key, value: attributes[key]});\n }\n }\n if (additionalAttributes.length) {\n additionalAttributes.forEach(attribute => {\n attributesArray.push({key: attribute.key, value: attribute.value});\n })\n }\n if (attributesArray.length > 0) {\n return attributeService.saveEntityAttributes(entityId, \"SERVER_SCOPE\", attributesArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function saveTelemetry(entityId) {\n if (additionalTelemetry.length) {\n let telemetryArray = [];\n additionalTelemetry.forEach(telemetry => {\n telemetryArray.push({key: telemetry.key, value: telemetry.value});\n })\n return attributeService.saveEntityTimeseries(entityId, \"LATEST_TELEMETRY\", telemetryArray);\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function createRelations(entityId) {\n let singleEntityId;\n for (const value of Object.values(widgetContext.aliasController.entityAliases)) {\n if (value.filter.type === 'singleEntity') {\n singleEntityId = value.filter.singleEntity ?? null;\n }\n }\n\n if (createEntity) {\n let createRelationsObservables = [];\n \n \n if (createRelationsObservables.length) {\n return widgetContext.rxjs.forkJoin(createRelationsObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function addToEntityGroups(entityId) {\n if (createEntity) {\n let addToGroupObservables = [];\n let targetEntityGroups = null;\n \n let entityOwner = null;\n let ownerId;\n if (entityOwner) {\n let stateParams = widgetContext.stateController.getStateParams();\n if (stateParams[entityOwner]) {\n stateParams = stateParams[entityOwner];\n }\n ownerId = stateParams.entityId;\n }\n if (targetEntityGroups && targetEntityGroups.length) {\n for (let targetEntityGroup of targetEntityGroups) {\n addToGroupObservables.push(getOrCreateEntityGroupByName(targetEntityGroup, entityId.entityType, ownerId).pipe(\n widgetContext.rxjs.switchMap((group) => {\n if (group) {\n return entityGroupService.addEntityToEntityGroup(group.id.id, entityId.id);\n } else {\n return widgetContext.rxjs.of(null);\n }\n })\n ));\n }\n }\n if (addToGroupObservables.length) {\n return widgetContext.rxjs.forkJoin(addToGroupObservables);\n } else {\n return widgetContext.rxjs.of([]);\n }\n } else {\n return widgetContext.rxjs.of([]);\n }\n }\n\n function loadEntity() {\n entityService.getEntity(entityId.entityType, entityId.id).subscribe(\n function(entity) {\n vm.entity = entity;\n vm.entityFormGroup.get('entityFields').patchValue(entity);\n if (attributeKeys.length) {\n attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE', attributeKeys).subscribe(\n function (attributes) {\n let entityAttributes = {};\n for (var i = 0; i < attributes.length; i++) {\n entityAttributes[attributes[i].key] = attributes[i].value;\n }\n vm.entityFormGroup.get('attributes').patchValue(entityAttributes);\n }\n );\n }\n }\n );\n }\n\n function getOrCreateEntityGroupByName(groupName, groupType, ownerId) {\n var entityGroupsPageLink = widgetContext.pageLink(10, 0, groupName);\n let findEntyGroup$;\n if (ownerId) {\n findEntyGroup$ = entityGroupService.getEntityGroupsByOwnerIdAndPageLink(ownerId.entityType, ownerId.id, groupType, entityGroupsPageLink, {ignoreLoading: true});\n } else {\n findEntyGroup$ = entityGroupService.getEntityGroupsByPageLink(entityGroupsPageLink, groupType, {ignoreLoading: true});\n }\n return findEntyGroup$.pipe(\n widgetContext.rxjs.switchMap((data) => {\n if (data.data.length) {\n const findGroup = data.data.find((group) => group.name === groupName);\n if (findGroup) {\n return widgetContext.rxjs.of(findGroup);\n }\n }\n const entityGroup = {\n name: groupName,\n type: groupType,\n }\n if (ownerId) {\n entityGroup.ownerId = ownerId;\n }\n return entityGroupService.saveEntityGroup(entityGroup, {ignoreLoading: true}).pipe(\n widgetContext.rxjs.catchError(() => widgetContext.rxjs.of(null))\n );\n })\n );\n }\n}",
2629
+ "customHtml": "<form #entityForm=\"ngForm\" [formGroup]=\"entityFormGroup\"\n (ngSubmit)=\"save()\" class=\"entity-form\" style=\"width: 600px;\">\n <mat-toolbar color=\"primary\">\n <h2>{{ dialogTitle }}</h2>\n <span class=\"flex-1\"></span>\n <button mat-icon-button (click)=\"cancel()\" type=\"button\">\n <mat-icon class=\"material-icons\">close</mat-icon>\n </button>\n </mat-toolbar>\n <mat-progress-bar color=\"warn\" mode=\"indeterminate\" *ngIf=\"isLoading$ | async\">\n </mat-progress-bar>\n <div style=\"height: 4px;\" *ngIf=\"!(isLoading$ | async)\"></div>\n <div mat-dialog-content>\n <fieldset formGroupName=\"entityFields\" class=\"tb-form-panel outlined\" [disabled]=\"isLoading$ | async\"><mat-form-field appearance=\"outline\">\n <mat-label>Floor Name</mat-label>\n <input matInput formControlName=\"name\" required=\"required\">\n @if(entityFormGroup.get(\"entityFields\").get(\"name\").hasError(\"required\")) {\n <mat-error>Floor name is required.</mat-error>\n }\n</mat-form-field>\n</fieldset>\n \n \n \n </div>\n <div mat-dialog-actions class=\"flex items-center justify-end\">\n <button mat-button color=\"primary\"\n type=\"button\"\n [disabled]=\"(isLoading$ | async)\"\n (click)=\"cancel()\" cdkFocusInitial>\n Cancel\n </button>\n <button mat-button mat-raised-button color=\"primary\"\n type=\"submit\"\n [disabled]=\"(isLoading$ | async) || entityForm.invalid || !entityForm.dirty\">\n {{ submitTitle }}\n </button>\n </div>\n</form>\n"
2630
+ },
2631
+ {
2632
+ "id": "12bb4e94-80bf-415c-b707-2ae1ed2e65e9",
2633
+ "name": "Delete Office Floor",
2634
+ "icon": "delete",
2635
+ "type": "custom",
2636
+ "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet dialogs = $injector.get(widgetContext.servicesMap.get('dialogs'));\nlet deleteEntityTitle = \"Delete Office Floor '${entityName}'\";\nlet deleteEntityPrompt = \"Are you sure you want to delete the Office Floor '${entityName}'?\";\n\ndeleteEntityTitle = deleteEntityTitle.replaceAll('${entityName}', entityName);\ndeleteEntityPrompt = deleteEntityPrompt.replaceAll('${entityName}', entityName);\n\nopenDeleteEntityDialog();\n\nfunction openDeleteEntityDialog() {\n dialogs.confirm(deleteEntityTitle, deleteEntityPrompt, 'Cancel', 'Delete').subscribe(\n function(result) {\n if (result) {\n deleteEntity(entityId);\n }\n }\n );\n}\n\nfunction deleteEntity(entityId) {\n let deleteObservable = null;\n switch (entityId.entityType) {\n case 'DEVICE':\n let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\n deleteObservable = deviceService.deleteDevice(entityId.id);\n break;\n case 'ASSET':\n let assetService = $injector.get(widgetContext.servicesMap.get('assetService'));\n deleteObservable = assetService.deleteAsset(entityId.id);\n break;\n case 'ENTITY_VIEW':\n let entityViewService = $injector.get(widgetContext.servicesMap.get('entityViewService'));\n deleteObservable = entityViewService.deleteEntityView(entityId.id);\n break;\n case 'EDGE':\n let edgeService = $injector.get(widgetContext.servicesMap.get('edgeService'));\n deleteObservable = edgeService.deleteEdge(entityId.id);\n break;\n case 'TENANT':\n let tenantService = $injector.get(widgetContext.servicesMap.get('tenantService'));\n deleteObservable = tenantService.deleteTenant(entityId.id);\n break;\n case 'CUSTOMER':\n let customerService = $injector.get(widgetContext.servicesMap.get('customerService'));\n deleteObservable = customerService.deleteCustomer(entityId.id);\n break;\n case 'DASHBOARD':\n let dashboardService = $injector.get(widgetContext.servicesMap.get('dashboardService'));\n deleteObservable = dashboardService.deleteDashboard(entityId.id);\n break;\n case 'USER':\n let userService = $injector.get(widgetContext.servicesMap.get('userService'));\n deleteObservable = userService.deleteUser(entityId.id);\n break;\n case 'SCHEDULER_EVENT':\n let schedulerEventService = $injector.get(widgetContext.servicesMap.get('schedulerEventService'));\n deleteObservable = schedulerEventService.deleteSchedulerEvent(entityId.id);\n break;\n case 'ROLE':\n let roleService = $injector.get(widgetContext.servicesMap.get('roleService'));\n deleteObservable = roleService.deleteRole(entityId.id);\n break;\n case 'ENTITY_GROUP':\n let entityGroupService = $injector.get(widgetContext.servicesMap.get('entityGroupService'));\n deleteObservable = entityGroupService.deleteEntityGroup(entityId.id);\n break;\n default:\n showErrorDialog(`Unsupported entity type '${entityId.entityType}'`);\n break;\n }\n if (deleteObservable) {\n deleteObservable.subscribe(\n function success() {\n widgetContext.updateAliases();\n },\n function fail() {\n showErrorDialog();\n }\n );\n }\n}\n\nfunction showErrorDialog(error) {\n let title = 'Error';\n error = error || 'Please try again.';\n let content = `An error occurred while deleting '${entityName}'. ${error}`;\n dialogs.alert(title, content, 'CLOSE').subscribe(\n function(result) {}\n );\n}\n"
2637
+ }
2638
+ ]
2639
+ },
2640
+ "settings": {
2641
+ "entitiesTitle": "Office Floors",
2642
+ "displayEntityName": false,
2643
+ "displayEntityType": false
2644
+ },
2645
+ "datasources": [
2646
+ {
2647
+ "type": "entity",
2648
+ "dataKeys": [
2649
+ {
2650
+ "name": "name",
2651
+ "label": "Floor Name",
2652
+ "type": "entityField",
2653
+ "color": "var(--tb-primary-500)",
2654
+ "settings": {}
2655
+ },
2656
+ {
2657
+ "name": "dailyFloorEnergy",
2658
+ "label": "Daily Energy",
2659
+ "type": "timeseries",
2660
+ "decimals": 1,
2661
+ "color": "var(--tb-primary-500)",
2662
+ "settings": {}
2663
+ },
2664
+ {
2665
+ "name": "floorActivePower",
2666
+ "label": "Active Power",
2667
+ "type": "timeseries",
2668
+ "decimals": 1,
2669
+ "color": "var(--tb-primary-500)",
2670
+ "settings": {}
2671
+ }
2672
+ ],
2673
+ "entityAliasId": "3272366f-d077-44a8-854b-6fed87d70687"
2674
+ }
2675
+ ]
2676
+ },
2677
+ "id": "accf469f-8a07-4af2-a844-385bd2c2c9b8",
2678
+ "typeFullFqn": "system.cards.entities_table",
2679
+ "type": "latest"
2680
+ },
2681
+ "e643d044-c596-48cf-9019-096384e6920e": {
2682
+ "sizeX": 12,
2683
+ "sizeY": 11,
2684
+ "row": 0,
2685
+ "col": 12,
2686
+ "config": {
2687
+ "configMode": "basic",
2688
+ "title": "Floor Active Power Trend",
2689
+ "titleFont": {
2690
+ "size": 21,
2691
+ "sizeUnit": "px",
2692
+ "weight": "500",
2693
+ "lineHeight": "22px"
2694
+ },
2695
+ "showTitle": true,
2696
+ "dropShadow": false,
2697
+ "useDashboardTimewindow": true,
2698
+ "padding": "0px",
2699
+ "margin": "0px",
2700
+ "borderRadius": "8px",
2701
+ "widgetStyle": {
2702
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2703
+ },
2704
+ "actions": {},
2705
+ "settings": {
2706
+ "dataZoom": false,
2707
+ "showLegend": false,
2708
+ "legendConfig": {
2709
+ "position": "top",
2710
+ "sortDataKeys": false,
2711
+ "showMin": false,
2712
+ "showMax": false,
2713
+ "showAvg": true,
2714
+ "showTotal": false,
2715
+ "showLatest": false
2716
+ },
2717
+ "xAxis": {
2718
+ "show": true,
2719
+ "position": "bottom"
2720
+ },
2721
+ "yAxis": {
2722
+ "show": true,
2723
+ "position": "left"
2724
+ },
2725
+ "yAxes": {
2726
+ "default": {
2727
+ "id": "default",
2728
+ "label": "Active Power",
2729
+ "position": "left",
2730
+ "min": null,
2731
+ "max": null,
2732
+ "units": "",
2733
+ "decimals": 1,
2734
+ "order": 0
2735
+ }
2736
+ }
2737
+ },
2738
+ "datasources": [
2739
+ {
2740
+ "type": "entity",
2741
+ "dataKeys": [
2742
+ {
2743
+ "name": "floorActivePower",
2744
+ "label": "Active Power",
2745
+ "type": "timeseries",
2746
+ "units": "",
2747
+ "decimals": 1,
2748
+ "color": "#2196F3",
2749
+ "settings": {
2750
+ "yAxisId": "default",
2751
+ "showLegend": true
2752
+ }
2753
+ }
2754
+ ],
2755
+ "entityAliasId": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce"
2756
+ }
2757
+ ]
2758
+ },
2759
+ "id": "e643d044-c596-48cf-9019-096384e6920e",
2760
+ "typeFullFqn": "system.time_series_chart",
2761
+ "type": "timeseries"
2762
+ },
2763
+ "e3bac23d-ff76-4f7e-873c-2d87fef62062": {
2764
+ "sizeX": 12,
2765
+ "sizeY": 1,
2766
+ "row": 0,
2767
+ "col": 0,
2768
+ "config": {
2769
+ "configMode": "basic",
2770
+ "title": "Office Unit",
2771
+ "showTitle": false,
2772
+ "dropShadow": false,
2773
+ "enableFullscreen": false,
2774
+ "enableDataExport": false,
2775
+ "backgroundColor": "#FFFFFF00",
2776
+ "padding": "0px",
2777
+ "borderRadius": "8px",
2778
+ "actions": {},
2779
+ "settings": {
2780
+ "useMarkdownTextFunction": false,
2781
+ "markdownTextPattern": "**${Name}**",
2782
+ "applyDefaultMarkdownStyle": true,
2783
+ "markdownCss": ".tb-markdown-view p {\n display: flex;\n margin: 0;\n align-items: center;\n height: 100%;\n font-size: 28px;\n font-weight: 500;\n color: #212121;\n padding: 0;\n}\n"
2784
+ },
2785
+ "datasources": [
2786
+ {
2787
+ "type": "entity",
2788
+ "dataKeys": [
2789
+ {
2790
+ "name": "name",
2791
+ "label": "Name",
2792
+ "type": "entityField",
2793
+ "color": "var(--tb-primary-500)",
2794
+ "settings": {}
2795
+ }
2796
+ ],
2797
+ "entityAliasId": "64c039a4-0ef0-4b75-9c73-44ae6065fceb"
2798
+ }
2799
+ ]
2800
+ },
2801
+ "id": "e3bac23d-ff76-4f7e-873c-2d87fef62062",
2802
+ "typeFullFqn": "system.cards.markdown_card",
2803
+ "type": "latest"
2804
+ },
2805
+ "e1d93317-516f-43a1-94d6-cabf8f8c6ec3": {
2806
+ "sizeX": 12,
2807
+ "sizeY": 4,
2808
+ "row": 1,
2809
+ "col": 0,
2810
+ "config": {
2811
+ "configMode": "basic",
2812
+ "title": "Office Unit Details",
2813
+ "showTitle": false,
2814
+ "dropShadow": false,
2815
+ "enableFullscreen": false,
2816
+ "enableDataExport": false,
2817
+ "padding": "10px",
2818
+ "borderRadius": "8px",
2819
+ "widgetStyle": {
2820
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2821
+ },
2822
+ "actions": {},
2823
+ "settings": {
2824
+ "useMarkdownTextFunction": false,
2825
+ "markdownTextPattern": "<div class=\"value-block flex flex-col justify-between gap-2\"><div class=\"flex flex-1\"><span class=\"title\">Office Unit Details</span></div><div class=\"flex flex-col justify-between gap-1\"><div class=\"flex flex-row justify-between\"><span class=\"label\">Name</span><span class=\"value\">${Name}</span></div><div class=\"flex flex-row justify-between\"><span class=\"label\">Label</span><span class=\"value\">${Label}</span></div><div class=\"flex flex-row justify-between\"><span class=\"label\">Active Power</span><span class=\"value\">${Active Power:1}</span></div><div class=\"flex flex-row justify-between\"><span class=\"label\">Daily Energy</span><span class=\"value\">${Daily Energy:1}</span></div></div></div>",
2826
+ "applyDefaultMarkdownStyle": false,
2827
+ "markdownCss": ".label {font-weight: 400;font-size: 16px;line-height: 21px;letter-spacing: 0.2px;color: #424242;}.value {padding: 4px;font-weight: 500;font-size: 16px;line-height: 21px;letter-spacing: 0.2px;color: #212121;}.title {font-weight: 600;font-size: 18px;line-height: 21px;letter-spacing: 0.2px;color: #212121;}.value-block {height: 100%;}"
2828
+ },
2829
+ "datasources": [
2830
+ {
2831
+ "type": "entity",
2832
+ "dataKeys": [
2833
+ {
2834
+ "name": "name",
2835
+ "label": "Name",
2836
+ "type": "entityField",
2837
+ "color": "var(--tb-primary-500)",
2838
+ "settings": {}
2839
+ },
2840
+ {
2841
+ "name": "label",
2842
+ "label": "Label",
2843
+ "type": "entityField",
2844
+ "color": "var(--tb-primary-500)",
2845
+ "settings": {}
2846
+ },
2847
+ {
2848
+ "name": "activePower",
2849
+ "label": "Active Power",
2850
+ "type": "timeseries",
2851
+ "color": "var(--tb-primary-500)",
2852
+ "settings": {}
2853
+ },
2854
+ {
2855
+ "name": "dailyOfficeEnergy",
2856
+ "label": "Daily Energy",
2857
+ "type": "timeseries",
2858
+ "color": "var(--tb-primary-500)",
2859
+ "settings": {}
2860
+ }
2861
+ ],
2862
+ "entityAliasId": "64c039a4-0ef0-4b75-9c73-44ae6065fceb"
2863
+ }
2864
+ ]
2865
+ },
2866
+ "id": "e1d93317-516f-43a1-94d6-cabf8f8c6ec3",
2867
+ "typeFullFqn": "system.cards.markdown_card",
2868
+ "type": "latest"
2869
+ },
2870
+ "f3402cce-adb2-4e28-9dac-0411c343a1f0": {
2871
+ "sizeX": 4,
2872
+ "sizeY": 1,
2873
+ "row": 0,
2874
+ "col": 16,
2875
+ "config": {
2876
+ "configMode": "basic",
2877
+ "title": "Statistics",
2878
+ "showTitle": false,
2879
+ "dropShadow": false,
2880
+ "enableFullscreen": false,
2881
+ "enableDataExport": false,
2882
+ "backgroundColor": "#FFFFF00",
2883
+ "padding": "0px",
2884
+ "borderRadius": "8px",
2885
+ "actions": {
2886
+ "click": [
2887
+ {
2888
+ "id": null,
2889
+ "name": null,
2890
+ "icon": null,
2891
+ "type": "custom",
2892
+ "customFunction": "let params = widgetContext.stateController.getStateParams();\n\nparams.subStateId = \"main-breaker-statistics\";\n\nwidgetContext.stateController.updateState(widgetContext.stateController.getStateId(), params);\nwidgetContext.updateAliases();"
2893
+ }
2894
+ ]
2895
+ },
2896
+ "settings": {
2897
+ "appearance": {
2898
+ "type": "outlined",
2899
+ "showLabel": true,
2900
+ "label": "Statistics",
2901
+ "showIcon": true,
2902
+ "icon": "show_chart",
2903
+ "mainColor": "var(--tb-primary-500)",
2904
+ "backgroundColor": "#FFFFFF00",
2905
+ "customStyle": {}
2906
+ },
2907
+ "activatedState": {
2908
+ "action": "GET_DASHBOARD_STATE_OBJECT",
2909
+ "defaultValue": false,
2910
+ "dataToValue": {
2911
+ "type": "FUNCTION",
2912
+ "compareToValue": true,
2913
+ "dataToValueFunction": "return data.params.subStateId === \"main-breaker-statistics\";"
2914
+ }
2915
+ },
2916
+ "disabledState": {
2917
+ "action": "DO_NOTHING"
2918
+ }
2919
+ },
2920
+ "datasources": []
2921
+ },
2922
+ "id": "f3402cce-adb2-4e28-9dac-0411c343a1f0",
2923
+ "typeFullFqn": "system.action_button",
2924
+ "type": "latest"
2925
+ },
2926
+ "c91b9b21-f993-4722-b4bf-133731feb76c": {
2927
+ "sizeX": 12,
2928
+ "sizeY": 6,
2929
+ "row": 0,
2930
+ "col": 0,
2931
+ "config": {
2932
+ "configMode": "basic",
2933
+ "title": "Breaker State History",
2934
+ "titleFont": {
2935
+ "size": 21,
2936
+ "sizeUnit": "px",
2937
+ "weight": "500",
2938
+ "lineHeight": "22px"
2939
+ },
2940
+ "showTitle": true,
2941
+ "dropShadow": false,
2942
+ "useDashboardTimewindow": true,
2943
+ "padding": "0px",
2944
+ "margin": "0px",
2945
+ "borderRadius": "8px",
2946
+ "widgetStyle": {
2947
+ "box-shadow": "0px 2px 4px 0px #00000024;"
2948
+ },
2949
+ "actions": {},
2950
+ "settings": {
2951
+ "dataZoom": false,
2952
+ "showLegend": false,
2953
+ "legendConfig": {
2954
+ "position": "top",
2955
+ "sortDataKeys": false,
2956
+ "showMin": false,
2957
+ "showMax": false,
2958
+ "showAvg": true,
2959
+ "showTotal": false,
2960
+ "showLatest": false
2961
+ },
2962
+ "xAxis": {
2963
+ "show": true,
2964
+ "position": "bottom"
2965
+ },
2966
+ "yAxis": {
2967
+ "show": true,
2968
+ "position": "left"
2969
+ },
2970
+ "yAxes": {
2971
+ "default": {
2972
+ "id": "default",
2973
+ "label": "Status",
2974
+ "position": "left",
2975
+ "min": null,
2976
+ "max": null,
2977
+ "units": null,
2978
+ "decimals": null,
2979
+ "order": 0
2980
+ }
2981
+ },
2982
+ "states": [
2983
+ {
2984
+ "label": "Closed",
2985
+ "value": 0,
2986
+ "sourceType": "constant",
2987
+ "sourceValue": "closed"
2988
+ },
2989
+ {
2990
+ "label": "Tripped",
2991
+ "value": 1,
2992
+ "sourceType": "constant",
2993
+ "sourceValue": "tripped"
2994
+ },
2995
+ {
2996
+ "label": "Open",
2997
+ "value": 2,
2998
+ "sourceType": "constant",
2999
+ "sourceValue": "open"
3000
+ }
3001
+ ]
3002
+ },
3003
+ "datasources": [
3004
+ {
3005
+ "type": "entity",
3006
+ "dataKeys": [
3007
+ {
3008
+ "name": "state",
3009
+ "label": "Breaker State",
3010
+ "type": "timeseries",
3011
+ "decimals": 0,
3012
+ "color": "#F44336",
3013
+ "settings": {
3014
+ "yAxisId": "default",
3015
+ "showLegend": true
3016
+ }
3017
+ }
3018
+ ],
3019
+ "entityAliasId": "fc70867e-e467-430b-83dd-ef1b2becd117"
3020
+ }
3021
+ ]
3022
+ },
3023
+ "id": "c91b9b21-f993-4722-b4bf-133731feb76c",
3024
+ "typeFullFqn": "system.state_chart",
3025
+ "type": "timeseries"
3026
+ },
3027
+ "931b2e1e-2940-460a-a167-43f0ddb1a589": {
3028
+ "sizeX": 24,
3029
+ "sizeY": 14,
3030
+ "row": 1,
3031
+ "col": 0,
3032
+ "config": {
3033
+ "configMode": "basic",
3034
+ "titleFont": {
3035
+ "size": 21,
3036
+ "sizeUnit": "px",
3037
+ "weight": "500",
3038
+ "lineHeight": "22px"
3039
+ },
3040
+ "showTitle": false,
3041
+ "dropShadow": false,
3042
+ "enableFullscreen": false,
3043
+ "enableDataExport": false,
3044
+ "backgroundColor": "#FFFFFF00",
3045
+ "padding": "0px",
3046
+ "borderRadius": "8px",
3047
+ "actions": {},
3048
+ "settings": {
3049
+ "useMarkdownTextFunction": true,
3050
+ "markdownTextFunction": "let subState = ctx.stateController.getStateParams().subStateId || \"office-unit-statistics\";\n\nreturn `<div tb-toast toastTarget=\"layout\" class=\"block\">\n <tb-dashboard-state class=\"state\" [ctx]=\"ctx\" stateId=\"${subState}\" [syncParentStateParams]=\"true\"></tb-dashboard-state>\n </div>`;",
3051
+ "applyDefaultMarkdownStyle": true,
3052
+ "markdownCss": ".block {\n flex-grow: 1;\n width: 100%;\n height: 100%;\n display: flex;\n padding: 0;\n}\n\n.state {\n flex-grow: 1;\n padding: 0;\n width: 100%;\n height: 100%;\n}"
3053
+ },
3054
+ "datasources": [
3055
+ {
3056
+ "type": "entity",
3057
+ "dataKeys": [],
3058
+ "entityAliasId": "64c039a4-0ef0-4b75-9c73-44ae6065fceb"
3059
+ }
3060
+ ]
3061
+ },
3062
+ "id": "931b2e1e-2940-460a-a167-43f0ddb1a589",
3063
+ "typeFullFqn": "system.cards.markdown_card",
3064
+ "type": "latest"
3065
+ }
3066
+ },
3067
+ "states": {
3068
+ "office-floor-details": {
3069
+ "name": "Office Floor Navigation",
3070
+ "root": false,
3071
+ "layouts": {
3072
+ "main": {
3073
+ "widgets": {
3074
+ "e9f7fb0b-391e-4972-a00b-97992364c049": {
3075
+ "sizeX": 4,
3076
+ "sizeY": 1,
3077
+ "col": 20,
3078
+ "row": 0
3079
+ },
3080
+ "be134d80-83cc-4122-beca-699bd212ef09": {
3081
+ "sizeX": 16,
3082
+ "sizeY": 1,
3083
+ "col": 0,
3084
+ "row": 0
3085
+ },
3086
+ "96b908b7-5582-4a46-9bee-16ff06a3055b": {
3087
+ "sizeX": 24,
3088
+ "sizeY": 14,
3089
+ "col": 0,
3090
+ "row": 1
3091
+ },
3092
+ "7d375d4e-1ee3-4a89-86d4-2f57df44af05": {
3093
+ "sizeX": 4,
3094
+ "sizeY": 1,
3095
+ "col": 16,
3096
+ "row": 0
3097
+ }
3098
+ },
3099
+ "gridSettings": {
3100
+ "layoutType": "default",
3101
+ "backgroundColor": "#EEEEEE",
3102
+ "columns": "24",
3103
+ "margin": 10,
3104
+ "outerMargin": true,
3105
+ "backgroundSizeMode": "100%",
3106
+ "marginBetweenWidgets": "10",
3107
+ "applyMarginToSides": "true",
3108
+ "autoFillHeight": "false",
3109
+ "mobileAutoFillHeight": "false",
3110
+ "mobileRowHeight": "70"
3111
+ },
3112
+ "breakpoints": null
3113
+ }
3114
+ }
3115
+ },
3116
+ "office-unit-details": {
3117
+ "name": "Office Unit Navigation",
3118
+ "root": false,
3119
+ "layouts": {
3120
+ "main": {
3121
+ "widgets": {
3122
+ "492428b8-1ee7-4bf5-a85e-5b18465d51b3": {
3123
+ "sizeX": 4,
3124
+ "sizeY": 1,
3125
+ "col": 20,
3126
+ "row": 0
3127
+ },
3128
+ "72935318-a7e0-45bd-97e1-131eb3138842": {
3129
+ "sizeX": 4,
3130
+ "sizeY": 1,
3131
+ "col": 16,
3132
+ "row": 0
3133
+ },
3134
+ "e3bac23d-ff76-4f7e-873c-2d87fef62062": {
3135
+ "sizeX": 12,
3136
+ "sizeY": 1,
3137
+ "col": 0,
3138
+ "row": 0
3139
+ },
3140
+ "c22fba98-a98d-4f2c-bcc1-565430f079a4": {
3141
+ "sizeX": 4,
3142
+ "sizeY": 1,
3143
+ "col": 12,
3144
+ "row": 0
3145
+ },
3146
+ "931b2e1e-2940-460a-a167-43f0ddb1a589": {
3147
+ "sizeX": 24,
3148
+ "sizeY": 14,
3149
+ "col": 0,
3150
+ "row": 1
3151
+ }
3152
+ },
3153
+ "gridSettings": {
3154
+ "layoutType": "default",
3155
+ "backgroundColor": "#EEEEEE",
3156
+ "columns": "24",
3157
+ "margin": 10,
3158
+ "outerMargin": true,
3159
+ "backgroundSizeMode": "100%",
3160
+ "marginBetweenWidgets": "10",
3161
+ "applyMarginToSides": "true",
3162
+ "autoFillHeight": "false",
3163
+ "mobileAutoFillHeight": "false",
3164
+ "mobileRowHeight": "70"
3165
+ },
3166
+ "breakpoints": null
3167
+ }
3168
+ }
3169
+ },
3170
+ "office-floor-overview": {
3171
+ "name": "Office Floor Overview",
3172
+ "root": false,
3173
+ "layouts": {
3174
+ "main": {
3175
+ "widgets": {
3176
+ "0d25e5ab-7728-4194-82d8-59ed88af4cd0": {
3177
+ "sizeX": 12,
3178
+ "sizeY": 6,
3179
+ "col": 0,
3180
+ "row": 0
3181
+ },
3182
+ "fc802397-a495-4ad5-b37d-2788a09685bc": {
3183
+ "sizeX": 12,
3184
+ "sizeY": 5,
3185
+ "col": 0,
3186
+ "row": 6
3187
+ },
3188
+ "d001f783-5edb-4f4d-8844-ff1598cddc4d": {
3189
+ "sizeX": 12,
3190
+ "sizeY": 5,
3191
+ "col": 12,
3192
+ "row": 6
3193
+ },
3194
+ "d7b42191-1815-4672-bb53-71a87ae3d0e0": {
3195
+ "sizeX": 12,
3196
+ "sizeY": 6,
3197
+ "col": 12,
3198
+ "row": 0
3199
+ }
3200
+ },
3201
+ "gridSettings": {
3202
+ "layoutType": "default",
3203
+ "backgroundColor": "#EEEEEE",
3204
+ "columns": "24",
3205
+ "margin": 10,
3206
+ "outerMargin": true,
3207
+ "backgroundSizeMode": "100%",
3208
+ "marginBetweenWidgets": "10",
3209
+ "applyMarginToSides": "true",
3210
+ "autoFillHeight": "true",
3211
+ "mobileAutoFillHeight": "false",
3212
+ "mobileRowHeight": "70"
3213
+ },
3214
+ "breakpoints": null
3215
+ }
3216
+ }
3217
+ },
3218
+ "office-unit-statistics": {
3219
+ "name": "Office Unit Statistics",
3220
+ "root": false,
3221
+ "layouts": {
3222
+ "main": {
3223
+ "widgets": {
3224
+ "1a361761-a319-4fc1-97a0-22622d585cf6": {
3225
+ "sizeX": 12,
3226
+ "sizeY": 11,
3227
+ "col": 0,
3228
+ "row": 0
3229
+ },
3230
+ "b0f4db58-b51e-4ba1-8dd5-3464a178d0c4": {
3231
+ "sizeX": 12,
3232
+ "sizeY": 11,
3233
+ "col": 12,
3234
+ "row": 0
3235
+ }
3236
+ },
3237
+ "gridSettings": {
3238
+ "layoutType": "default",
3239
+ "backgroundColor": "#EEEEEE",
3240
+ "columns": "24",
3241
+ "margin": 10,
3242
+ "outerMargin": true,
3243
+ "backgroundSizeMode": "100%",
3244
+ "marginBetweenWidgets": "10",
3245
+ "applyMarginToSides": "true",
3246
+ "autoFillHeight": "true",
3247
+ "mobileAutoFillHeight": "false",
3248
+ "mobileRowHeight": "70"
3249
+ },
3250
+ "breakpoints": null
3251
+ }
3252
+ }
3253
+ },
3254
+ "main-breaker-details": {
3255
+ "name": "Main Breaker Navigation",
3256
+ "root": false,
3257
+ "layouts": {
3258
+ "main": {
3259
+ "widgets": {
3260
+ "075946be-5d43-42a1-86b0-b7d6297d07c6": {
3261
+ "sizeX": 4,
3262
+ "sizeY": 1,
3263
+ "col": 12,
3264
+ "row": 0
3265
+ },
3266
+ "d0e03ae2-2f43-4023-9559-73a6365a9b5d": {
3267
+ "sizeX": 12,
3268
+ "sizeY": 1,
3269
+ "col": 0,
3270
+ "row": 0
3271
+ },
3272
+ "9f992ee8-e9a4-4c27-a609-a26aa3ab78c5": {
3273
+ "sizeX": 24,
3274
+ "sizeY": 14,
3275
+ "col": 0,
3276
+ "row": 1
3277
+ },
3278
+ "98101b1d-6b77-45e5-b1c4-fb27991950e5": {
3279
+ "sizeX": 4,
3280
+ "sizeY": 1,
3281
+ "col": 20,
3282
+ "row": 0
3283
+ },
3284
+ "f3402cce-adb2-4e28-9dac-0411c343a1f0": {
3285
+ "sizeX": 4,
3286
+ "sizeY": 1,
3287
+ "col": 16,
3288
+ "row": 0
3289
+ }
3290
+ },
3291
+ "gridSettings": {
3292
+ "layoutType": "default",
3293
+ "backgroundColor": "#EEEEEE",
3294
+ "columns": "24",
3295
+ "margin": 10,
3296
+ "outerMargin": true,
3297
+ "backgroundSizeMode": "100%",
3298
+ "marginBetweenWidgets": "10",
3299
+ "applyMarginToSides": "true",
3300
+ "autoFillHeight": "false",
3301
+ "mobileAutoFillHeight": "false",
3302
+ "mobileRowHeight": "70"
3303
+ },
3304
+ "breakpoints": null
3305
+ }
3306
+ }
3307
+ },
3308
+ "root": {
3309
+ "name": "Commercial Building Details",
3310
+ "root": true,
3311
+ "layouts": {
3312
+ "main": {
3313
+ "widgets": {
3314
+ "accf469f-8a07-4af2-a844-385bd2c2c9b8": {
3315
+ "sizeX": 12,
3316
+ "sizeY": 6,
3317
+ "col": 0,
3318
+ "row": 1
3319
+ },
3320
+ "c35f60e4-284a-49e3-bbcd-8c753ea9f1f5": {
3321
+ "sizeX": 1,
3322
+ "sizeY": 1,
3323
+ "col": 23,
3324
+ "row": 0
3325
+ },
3326
+ "b7bf1a86-0b3e-49e1-a99c-94698059b877": {
3327
+ "sizeX": 12,
3328
+ "sizeY": 5,
3329
+ "col": 0,
3330
+ "row": 7
3331
+ },
3332
+ "2a299e04-1df1-4cc0-9389-8db9b8d0a542": {
3333
+ "sizeX": 12,
3334
+ "sizeY": 6,
3335
+ "col": 12,
3336
+ "row": 1
3337
+ },
3338
+ "0ddffb1a-5c36-4887-9ad7-a339a91c6740": {
3339
+ "sizeX": 23,
3340
+ "sizeY": 1,
3341
+ "col": 0,
3342
+ "row": 0
3343
+ },
3344
+ "bb4ce8df-a38f-4352-9ca9-96fd28e3d4c0": {
3345
+ "sizeX": 12,
3346
+ "sizeY": 5,
3347
+ "col": 12,
3348
+ "row": 7
3349
+ }
3350
+ },
3351
+ "gridSettings": {
3352
+ "layoutType": "default",
3353
+ "backgroundColor": "#EEEEEE",
3354
+ "columns": "24",
3355
+ "margin": 10,
3356
+ "outerMargin": true,
3357
+ "backgroundSizeMode": "100%",
3358
+ "marginBetweenWidgets": "10",
3359
+ "applyMarginToSides": "true",
3360
+ "autoFillHeight": "true",
3361
+ "mobileAutoFillHeight": "false",
3362
+ "mobileRowHeight": "70"
3363
+ },
3364
+ "breakpoints": null
3365
+ }
3366
+ }
3367
+ },
3368
+ "main-breaker-statistics": {
3369
+ "name": "Main Breaker Statistics",
3370
+ "root": false,
3371
+ "layouts": {
3372
+ "main": {
3373
+ "widgets": {
3374
+ "4f66c90f-367b-4f0a-82c0-a50b8e5dffa3": {
3375
+ "sizeX": 12,
3376
+ "sizeY": 6,
3377
+ "col": 12,
3378
+ "row": 0
3379
+ },
3380
+ "e3bab18b-940d-4f4b-af12-9a4b2fe21444": {
3381
+ "sizeX": 24,
3382
+ "sizeY": 5,
3383
+ "col": 0,
3384
+ "row": 6
3385
+ },
3386
+ "c91b9b21-f993-4722-b4bf-133731feb76c": {
3387
+ "sizeX": 12,
3388
+ "sizeY": 6,
3389
+ "col": 0,
3390
+ "row": 0
3391
+ }
3392
+ },
3393
+ "gridSettings": {
3394
+ "layoutType": "default",
3395
+ "backgroundColor": "#EEEEEE",
3396
+ "columns": "24",
3397
+ "margin": 10,
3398
+ "outerMargin": true,
3399
+ "backgroundSizeMode": "100%",
3400
+ "marginBetweenWidgets": "10",
3401
+ "applyMarginToSides": "true",
3402
+ "autoFillHeight": "true",
3403
+ "mobileAutoFillHeight": "false",
3404
+ "mobileRowHeight": "70"
3405
+ },
3406
+ "breakpoints": null
3407
+ }
3408
+ }
3409
+ },
3410
+ "office-floor-statistics": {
3411
+ "name": "Office Floor Statistics",
3412
+ "root": false,
3413
+ "layouts": {
3414
+ "main": {
3415
+ "widgets": {
3416
+ "e643d044-c596-48cf-9019-096384e6920e": {
3417
+ "sizeX": 12,
3418
+ "sizeY": 11,
3419
+ "col": 12,
3420
+ "row": 0
3421
+ },
3422
+ "3545f963-81d6-4ba4-9696-b1ad4a008829": {
3423
+ "sizeX": 12,
3424
+ "sizeY": 11,
3425
+ "col": 0,
3426
+ "row": 0
3427
+ }
3428
+ },
3429
+ "gridSettings": {
3430
+ "layoutType": "default",
3431
+ "backgroundColor": "#EEEEEE",
3432
+ "columns": "24",
3433
+ "margin": 10,
3434
+ "outerMargin": true,
3435
+ "backgroundSizeMode": "100%",
3436
+ "marginBetweenWidgets": "10",
3437
+ "applyMarginToSides": "true",
3438
+ "autoFillHeight": "true",
3439
+ "mobileAutoFillHeight": "false",
3440
+ "mobileRowHeight": "70"
3441
+ },
3442
+ "breakpoints": null
3443
+ }
3444
+ }
3445
+ },
3446
+ "office-unit-overview": {
3447
+ "name": "Office Unit Overview",
3448
+ "root": false,
3449
+ "layouts": {
3450
+ "main": {
3451
+ "widgets": {
3452
+ "9a9400c2-e562-4e3e-b674-0fefa7eda038": {
3453
+ "sizeX": 24,
3454
+ "sizeY": 6,
3455
+ "col": 0,
3456
+ "row": 5
3457
+ },
3458
+ "e1d93317-516f-43a1-94d6-cabf8f8c6ec3": {
3459
+ "sizeX": 12,
3460
+ "sizeY": 4,
3461
+ "col": 0,
3462
+ "row": 1
3463
+ },
3464
+ "bf3d66c0-ba6d-4a0d-a9c5-343e90dd65e2": {
3465
+ "sizeX": 12,
3466
+ "sizeY": 1,
3467
+ "col": 12,
3468
+ "row": 0
3469
+ },
3470
+ "c658b81b-6794-44c8-b644-e77d984b0d00": {
3471
+ "sizeX": 12,
3472
+ "sizeY": 1,
3473
+ "col": 0,
3474
+ "row": 0
3475
+ },
3476
+ "eb50572a-f223-43ce-b517-1c1bc8d4561c": {
3477
+ "sizeX": 12,
3478
+ "sizeY": 4,
3479
+ "col": 12,
3480
+ "row": 1
3481
+ }
3482
+ },
3483
+ "gridSettings": {
3484
+ "layoutType": "default",
3485
+ "backgroundColor": "#EEEEEE",
3486
+ "columns": "24",
3487
+ "margin": 10,
3488
+ "outerMargin": true,
3489
+ "backgroundSizeMode": "100%",
3490
+ "marginBetweenWidgets": "10",
3491
+ "applyMarginToSides": "true",
3492
+ "autoFillHeight": "true",
3493
+ "mobileAutoFillHeight": "false",
3494
+ "mobileRowHeight": "70"
3495
+ },
3496
+ "breakpoints": null
3497
+ }
3498
+ }
3499
+ },
3500
+ "main-breaker-overview": {
3501
+ "name": "Main Breaker Overview",
3502
+ "root": false,
3503
+ "layouts": {
3504
+ "main": {
3505
+ "widgets": {
3506
+ "d1bd0c24-6098-4ea1-8ce7-54dcf2d8335e": {
3507
+ "sizeX": 6,
3508
+ "sizeY": 1,
3509
+ "col": 6,
3510
+ "row": 0
3511
+ },
3512
+ "50ddec34-42b8-45cf-9b41-8629fefff74a": {
3513
+ "sizeX": 12,
3514
+ "sizeY": 11,
3515
+ "col": 12,
3516
+ "row": 0
3517
+ },
3518
+ "142f442f-f8d8-494b-8d47-282b94950935": {
3519
+ "sizeX": 6,
3520
+ "sizeY": 1,
3521
+ "col": 0,
3522
+ "row": 0
3523
+ },
3524
+ "0531bdba-6fdb-4c46-8415-eaad5dde4d24": {
3525
+ "sizeX": 12,
3526
+ "sizeY": 10,
3527
+ "col": 0,
3528
+ "row": 1
3529
+ }
3530
+ },
3531
+ "gridSettings": {
3532
+ "layoutType": "default",
3533
+ "backgroundColor": "#EEEEEE",
3534
+ "columns": "24",
3535
+ "margin": 10,
3536
+ "outerMargin": true,
3537
+ "backgroundSizeMode": "100%",
3538
+ "marginBetweenWidgets": "10",
3539
+ "applyMarginToSides": "true",
3540
+ "autoFillHeight": "true",
3541
+ "mobileAutoFillHeight": "false",
3542
+ "mobileRowHeight": "70"
3543
+ },
3544
+ "breakpoints": null
3545
+ }
3546
+ }
3547
+ }
3548
+ },
3549
+ "entityAliases": {
3550
+ "3db33207-8115-43ff-8997-267562d4fd1f": {
3551
+ "id": "3db33207-8115-43ff-8997-267562d4fd1f",
3552
+ "alias": "Floor Office Units",
3553
+ "filter": {
3554
+ "resolveMultiple": true,
3555
+ "rootStateEntity": true,
3556
+ "stateEntityParamName": "selectedOfficeFloor",
3557
+ "defaultStateEntity": null,
3558
+ "rootEntity": null,
3559
+ "direction": "FROM",
3560
+ "maxLevel": 1,
3561
+ "fetchLastLevelOnly": false,
3562
+ "relationType": "OfficeFloorToOfficeUnit",
3563
+ "assetTypes": [
3564
+ "OfficeUnit"
3565
+ ],
3566
+ "type": "assetSearchQuery"
3567
+ }
3568
+ },
3569
+ "7327faf4-aded-4fa2-8008-8c380513e113": {
3570
+ "id": "7327faf4-aded-4fa2-8008-8c380513e113",
3571
+ "alias": "Building Details",
3572
+ "filter": {
3573
+ "resolveMultiple": false,
3574
+ "singleEntity": {
3575
+ "entityType": "ASSET",
3576
+ "id": "eb675110-4211-11f1-86a0-57164b9ff915"
3577
+ },
3578
+ "type": "singleEntity"
3579
+ }
3580
+ },
3581
+ "6cde2143-5432-4d8f-a2dd-c84534a98c0c": {
3582
+ "id": "6cde2143-5432-4d8f-a2dd-c84534a98c0c",
3583
+ "alias": "Floor Main Breakers",
3584
+ "filter": {
3585
+ "resolveMultiple": true,
3586
+ "rootStateEntity": true,
3587
+ "stateEntityParamName": "selectedOfficeFloor",
3588
+ "defaultStateEntity": null,
3589
+ "rootEntity": null,
3590
+ "direction": "FROM",
3591
+ "maxLevel": 1,
3592
+ "fetchLastLevelOnly": false,
3593
+ "relationType": "OfficeFloorToMainBreaker",
3594
+ "deviceTypes": [
3595
+ "MainBreaker"
3596
+ ],
3597
+ "type": "deviceSearchQuery"
3598
+ }
3599
+ },
3600
+ "0dedaddc-76f3-4a25-9e0a-a0764422d2ce": {
3601
+ "id": "0dedaddc-76f3-4a25-9e0a-a0764422d2ce",
3602
+ "alias": "Selected Floor",
3603
+ "filter": {
3604
+ "resolveMultiple": false,
3605
+ "stateEntityParamName": "selectedOfficeFloor",
3606
+ "defaultStateEntity": null,
3607
+ "type": "stateEntity"
3608
+ }
3609
+ },
3610
+ "fc70867e-e467-430b-83dd-ef1b2becd117": {
3611
+ "id": "fc70867e-e467-430b-83dd-ef1b2becd117",
3612
+ "alias": "Selected Main Breaker",
3613
+ "filter": {
3614
+ "resolveMultiple": false,
3615
+ "stateEntityParamName": "selectedMainBreaker",
3616
+ "defaultStateEntity": null,
3617
+ "type": "stateEntity"
3618
+ }
3619
+ },
3620
+ "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe": {
3621
+ "id": "0a7a119c-e2b5-4e63-8024-d9eba9ddfffe",
3622
+ "alias": "Unit Smart Meter",
3623
+ "filter": {
3624
+ "resolveMultiple": true,
3625
+ "rootStateEntity": true,
3626
+ "stateEntityParamName": "selectedOfficeUnit",
3627
+ "defaultStateEntity": null,
3628
+ "rootEntity": null,
3629
+ "direction": "FROM",
3630
+ "maxLevel": 1,
3631
+ "fetchLastLevelOnly": false,
3632
+ "relationType": "Has",
3633
+ "deviceTypes": [
3634
+ "SmartMeter"
3635
+ ],
3636
+ "type": "deviceSearchQuery"
3637
+ }
3638
+ },
3639
+ "64c039a4-0ef0-4b75-9c73-44ae6065fceb": {
3640
+ "id": "64c039a4-0ef0-4b75-9c73-44ae6065fceb",
3641
+ "alias": "Selected Office Unit",
3642
+ "filter": {
3643
+ "resolveMultiple": false,
3644
+ "stateEntityParamName": "selectedOfficeUnit",
3645
+ "defaultStateEntity": null,
3646
+ "type": "stateEntity"
3647
+ }
3648
+ },
3649
+ "3272366f-d077-44a8-854b-6fed87d70687": {
3650
+ "id": "3272366f-d077-44a8-854b-6fed87d70687",
3651
+ "alias": "Building Floors",
3652
+ "filter": {
3653
+ "resolveMultiple": true,
3654
+ "rootStateEntity": true,
3655
+ "stateEntityParamName": "singleAsset",
3656
+ "defaultStateEntity": {
3657
+ "entityType": "ASSET",
3658
+ "id": "eb675110-4211-11f1-86a0-57164b9ff915"
3659
+ },
3660
+ "rootEntity": null,
3661
+ "direction": "FROM",
3662
+ "maxLevel": 1,
3663
+ "fetchLastLevelOnly": false,
3664
+ "relationType": "Contains",
3665
+ "assetTypes": [
3666
+ "OfficeFloor"
3667
+ ],
3668
+ "type": "assetSearchQuery"
3669
+ }
3670
+ }
3671
+ },
3672
+ "additionalInfo": {
3673
+ "description": "Tenant-level operational dashboard for monitoring building energy performance, managing floor-level breakers, and resolving technical alarms.",
3674
+ "aiGenerated": true
3675
+ },
3676
+ "filters": {}
3677
+ },
3678
+ "resources": null
3679
+ }