From ee0e2a68026e183dfe7085393fc2538783606cd1 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Thu, 24 Oct 2024 15:05:52 +0300 Subject: [PATCH 1/3] Process images for system dashboard resource --- .../server/dao/resource/BaseResourceService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java index d169134632..cea6842245 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java @@ -17,15 +17,19 @@ package org.thingsboard.server.dao.resource; import com.google.common.hash.Hashing; import com.google.common.util.concurrent.ListenableFuture; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.hibernate.exception.ConstraintViolationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import org.springframework.transaction.event.TransactionalEventListener; +import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.common.util.RegexUtils; import org.thingsboard.server.cache.resourceInfo.ResourceInfoCacheKey; import org.thingsboard.server.cache.resourceInfo.ResourceInfoEvictEvent; +import org.thingsboard.server.common.data.Dashboard; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.ResourceType; import org.thingsboard.server.common.data.TbResource; @@ -54,7 +58,7 @@ import static org.thingsboard.server.dao.service.Validator.validateId; @Service("TbResourceDaoService") @Slf4j -@AllArgsConstructor +@RequiredArgsConstructor @Primary public class BaseResourceService extends AbstractCachedEntityService implements ResourceService { @@ -62,6 +66,8 @@ public class BaseResourceService extends AbstractCachedEntityService Date: Thu, 24 Oct 2024 15:32:33 +0300 Subject: [PATCH 2/3] Don't create gateways dashboard for new tenants --- .../data/json/tenant/dashboards/gateways.json | 7023 ----------------- .../service/install/InstallScripts.java | 70 +- .../service/install/InstallScriptsTest.java | 5 +- 3 files changed, 34 insertions(+), 7064 deletions(-) delete mode 100644 application/src/main/data/json/tenant/dashboards/gateways.json diff --git a/application/src/main/data/json/tenant/dashboards/gateways.json b/application/src/main/data/json/tenant/dashboards/gateways.json deleted file mode 100644 index 1f32024d7f..0000000000 --- a/application/src/main/data/json/tenant/dashboards/gateways.json +++ /dev/null @@ -1,7023 +0,0 @@ -{ - "title": "ThingsBoard IoT Gateways", - "image": "tb-image:Z2F0ZXdheS1kYXNoYm9hcmRfKDEpLnBuZw==:Z2F0ZXdheS1kYXNoYm9hcmQucG5n;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAC8CAYAAADCScSrAAAKeUlEQVR4Ae3dS2xc1R3H8eP3jBMnxChpSVDaOAuUl2grpERFpRVRKxYVXXRDUTeVuqzUTVd0zxqk7hq13VStVOiCCqkCKaIPUKiCghpIhFAcEYhTErBpTGyPxw/md6//9rXxY2Z8PXPP/L8faTQPewa49zf/87/nHl+6ZmdnFwPgRHcAHCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XCHwcIXAwxUCD1d6Q4dbXFwM8/PzYW5ubvmxve5ZV1fX8q27uzv09vaGnp6e5Hkn6+rU/xO3Al77bwsLCwvuw90IBb+vry+570QdF3gFfWZmZlXItQNVvezeKptnNtrpXtusWq0m90ZVv7+/P9lmnaRjAq9KrqBby6JAl0ql5OY93PXSNlTwp6enk8ei4A8ODnbMNuyIwKt10U3VSjumXC4nQUfzKpXKcvC1TVXtdYtd9IHXjlHYRSFX2Kno+VDYFXptY1HgBwYGQsyiDnw27Bp2qeo7Q63i1NRU8jj20EcbeAu7qvnQ0FDHzioUhQ5oJycnk7Yx5tBHeeLJenYh7K2hbbx79+7kcXb7xya6wKuvzLYxhL11NEWpbS42SRCb6AKvgyhtaA2p9OytZ1O92gfaF7GJKvCaI1aF19ywZmPQHjYTZks2YhJV4G16TBtcoUd72LkOsX0Si2hSY4u/FPTY54I7gZ3B1ohrZ7djEE3g1c4IrUxxWOGJqcpHEXhb4CSdtpgpZlZ8YlqRGkXgbchU2Ondi0MtjaaFs39nUHRRpMeqO3PuxWP7JJbZmigCb0tVtZYdxWKBp6XJkW1MAl88FngrSkUXVeDp34vHlmJT4XNkG5N17sVD4IECI/BwhcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwLfJzL25MHr5/wGtxQLzNlDQ//js1ST0+w6Uws+fPRXuO8Df6bYCFb4Nzv/pRhJ2mbg9E15/6WZAaxB4uELg2+DbTx5cfqyW5tEnDwW0RhRXD9ZVa2V4eDh0iomPZ8JndyrhgSO7QmlX3IdS4+Pjyb0ubFt0VPg2uTtWCh/9Z2+oTjFv0EoEvk3mKrWpycn0Hq1DedkBE7e3TvHwSHpLf3/z3y3v6om+7SkKtmLOzj1zOVx/J/8TSo8/dTicffpwwPbQ0uRIJ5QUdlXjY2fuT17TYx2Ybtf5P98I2D4CvwOOnNobfvrMsXDkZO3+18eSM6koBlqaHXC9VulfPjeaVPsXn3s/fP3knoBiIPA7QMsG3nhpLHmspQMT52cCioGWJkdlZlIKj8Dn6IGRXauWDeTp7E+YockDSwuwbSwtwLrGPwrh1edDePfV1a//63fp69h5BB6uEHi4wrTCDpi8k7YvaxeGTd/d/H3XLqw87h0I4cDR2swPU/i5IvA5U6gvvrj5Ksh9a/7e42vfDOG9f4Yw+ubq1/X8Oz9Lw498EPicTSxV9oPHvxxsUcXe9+Dq1w7XAj+0f/UIcHs0hDvXavfX0s9CPgj8DlHYGwmqvgT7Ms8VfgUe+SLwOVPfPfxgc23IxRfS96viq805dHz152R/juYwS5MzBbS0p7nAT9xMW5mNPif7czSHM605+M0vL4Vb1+9t+HNdmeBX5x7Z8OdXL3waXnj+/eVr1WylaBdviulMKy1NDu6rBbC0u/FNqYPbu7UpzL//Ib0wk9bibPWnfLragVZgvvaXm+GxH40k7RPqR+Bz8IOnjoVqJZ2ByQZQc/Gbzb1r3v3G2yF8Pp5W9l88t3VzfqU2GugyfR/+dz68VXvbwz9M+3rUh8Dn4L1/pFcg0ExLNvBjV0K4dTV9fGidGRsdmKpHv3ix9mRpyby+IHqfKMh6rhNZcvRMWB4BNI05cjqEPfsDGkDgc6RgvvvKyvOJLS4ZqVFhZs0IoIDbCSiNGBol7EujwBu1Q7pxUqoxBD5HCuDY1fp/X5Vcv9/MtWn0xVA7pFGFlqZ+BD4H5b1pS7ORoQ3ajoe+m4b17cu19y+1NGpRHvnxyvt0W68dUut05umNPxvrYx6+AarE1k+rOtvjhx7b/H1HT6//us6kvvPK6rZGszZ6TTe1M/rn2PMs/Z7W1du/A+pD4BugAGphmCTtyNLBpaqsFnmpvdDJIrvpuar1/g1ajmQGp+vLr2u0sMvwVSsrz9eqcpm+htHSNKBvYOVgUWFWD63T/OWlgFsrUi+9V1+GC6+vtDR9S2dYRQek2edZ9mVi+XBjCHwDVMkVwg8upVOKmj1RxT8wki4Ua7Sf1nSmvjTZlsZGC6MeX73+WmqH/v175uEbReAboLAf/kYaUoVMFVbhn/wkDW2jgdeXZG629rlL8/Av/3Y0fHVk88vy/W80XcKgyq73Mw/fGALfIM2Ff34nrew6GLWWphn6gpz4fi3En3wl+f8+vfG3sbrf+60n9oYTZwMaxOKxJunkkKq7zaFvd4rwypufhrf+Opd8xu7a7VbtgPjgifTAduLDWlvzvVoL9Fr6z3j4iVJy3cqiYPGYAzqtr/ZG04LTd7c/H3789P3h40vp5+hzFz8L4dSj6V88DczXKvrjIdz7IP35kZMBTaLCF4iOA3ScoJu+SPYl0uuaqcn+vEio8GhKdvoxO2LY6yWmILeNE09whcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMOVKALf1ZX+HdziYuGX/bhj+8T2UdFFVeEJfPHMz88n9wQ+Rz09Pcn93Fx9FxtF6ywsLCT3BD5HtjEJfPFYhe/ujqNZiOLfsrc3XcVsGxfFUa1Wk3vbR0UXTUujKq+NSx9fHCpANupa21l00bQ0NmTO2AVc0HYWdlV3evicDQykf9dG4Itjeno6ue/r6wuxiCbw1taopSH07VepVJIZGo28sfTvEtU8fKlUSu5VWejl20e9u1X3/v7+EJOoAq9KokqvsE9NTQW0h8Ju1T2mdkaiW0ujKq/WRkMqrU3raZvPzs4m+2BwcDDEJrrAq6rYMKoqz8mo1tG2tpFVkwixzMxkRblaUoG3WRtdpInQ7zydA7ELYmnbx9bKmCiuPLYRDa1qbUTDqx3UIl9qY7KVPbYD1ayoAy/Z0GtHlMvlaM76FZ1NDtj2jT3sEn3gRaHXTTtIPb5Cby0PmqOqbtO/6tVjbmOyOiLwomkymy4TC75NZWJrCre2oSq6nefQttN2jPEAdT0dE3ijg6vsDhNVJgu+vgh21tYzbR/ddMCfvRltJ1X1mM6i1qPjAm+08xR+ZnDqZ4v0FPROHRU7NvBGVcyWsardscrmfWmCjXA22tkI2OkjX8cHHsjiMh1whcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XCHwcIXAwxUCD1cIPFwh8HCFwMMVAg9XCDxcIfBwhcDDFQIPVwg8XPkCcAEXfkdt4uwAAAAASUVORK5CYII=", - "mobileHide": false, - "mobileOrder": 6, - "configuration": { - "description": "", - "widgets": { - "23b9adc5-b3bd-040f-e5eb-a45925c73257": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1680624762213, - "endTimeMs": 1680711162213 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Gateways list", - "enableSearch": true, - "enableSelectColumnDisplay": false, - "enableStickyHeader": true, - "enableStickyAction": false, - "showCellActionsMenu": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": false, - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Gateways list", - "dropShadow": true, - "enableFullscreen": false, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "9b7a1caa-3510-3daa-e05a-fc39b851d2c1", - "filterId": "abdfdcf9-75d4-001d-783a-920cb8e2a7e1", - "dataKeys": [ - { - "name": "createdTime", - "type": "entityField", - "label": "Created time", - "color": "#2196f3", - "settings": { - "columnWidth": "140px", - "useCellStyleFunction": false, - "useCellContentFunction": false, - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.4570900758216545, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "name", - "type": "entityField", - "label": "Gateway name", - "color": "#4caf50", - "settings": { - "columnWidth": "20%", - "useCellStyleFunction": false, - "useCellContentFunction": false, - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.45934623767875316, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#f44336", - "settings": { - "columnWidth": "20%", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "var newValue = value == 'true' ? \"Active\" : \"Inactive\";\r\nvar bgColor = value == 'true' ? 'rgba(25,128,56, .06)': 'rgba(203,37,48, .06)',\r\ncolor = value == 'true' ? 'rgb(25,128,56)': 'rgb(203,37,48)';\r\nreturn `
${newValue}
`", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.7189327146035449, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": false, - "postFuncBody": "" - }, - { - "name": "active_connectors", - "type": "attribute", - "label": "Enabled Connectors", - "color": "#3f51b5", - "settings": { - "columnWidth": "20%", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "return value?JSON.parse(value).length:0;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.3929515708982403, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "Version", - "type": "attribute", - "label": "Version", - "color": "#8bc34a", - "settings": { - "columnWidth": "40%", - "useCellStyleFunction": false, - "useCellContentFunction": false, - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.4705163811361781, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ] - } - ], - "displayTimewindow": true, - "actions": { - "actionCellButton": [ - { - "name": "Launch command", - "icon": "terminal", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "customPretty", - "customHtml": "
\n \n

{{ 'gateway.launch-command' | translate }}

\n \n
\n \n
\n \n
\n \n
\n
\n", - "customCss": ".container {\n display: grid;\n grid-template-rows: min-content minmax(auto, 1fr) min-content;\n height: 100%;\n max-height: 100vh;\n width: 600px;\n max-width: 100%;\n}", - "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\n\nopenCommands();\n\nfunction openCommands() {\n customDialog.customDialog(htmlTemplate, CommandsDialogController, {panelClass: \"test\"}).subscribe();\n}\n\nfunction CommandsDialogController(instance) {\n let vm = instance;\n \n vm.entityId = entityId.id;\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n}\n", - "customResources": [], - "openInSeparateDialog": false, - "openInPopover": false, - "id": "ae2e5995-505f-a241-5fb2-6cbaf08b1b55" - }, - { - "name": "Gateway configuration", - "icon": "settings", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "customPretty", - "customHtml": "\n\n\n", - "customCss": ".gateway-config {\n width: 800px !important;\n padding: 0 !important;\n min-height: 75vh;\n max-width: 100%;\n display: grid !important;\n}\n\n@media screen and (max-width: 599px) {\n .mat-mdc-dialog-content {\n max-height: calc(100% - 60px) !important;\n }\n}", - "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\n\nopenAddEntityDialog();\n\nfunction openAddEntityDialog() {\n customDialog.customDialog(htmlTemplate, AddEntityDialogController).subscribe();\n}\n\nfunction AddEntityDialogController(instance) {\n let vm = instance;\n \n vm.device = additionalParams.entity.id;\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n}\n", - "customResources": [], - "openInSeparateDialog": false, - "openInPopover": false, - "id": "a54acd30-5c5f-d709-b892-5fc14f780e34" - }, - { - "name": "Connectors", - "icon": "private_connectivity", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "connectors", - "setEntityId": true, - "stateEntityParamName": "", - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "e27eea56-c57c-0a45-eb1d-f48f19e5356b" - } - ], - "rowClick": [ - { - "name": "Show geteway details", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "gateway_details", - "setEntityId": true, - "stateEntityParamName": "", - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "40cd37f1-6d1c-38a4-aba5-7dc408376647" - } - ], - "headerButton": [ - { - "name": "Add Gateway", - "icon": "add", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "customPretty", - "customHtml": "
\n \n

Add gateway

\n \n \n
\n \n \n
\n
\n
\n \n Name\n \n \n Gateway name is required.\n \n \n
\n
\n \n
\n
\n
\n \n \n
\n
\n", - "customCss": ".add-entity-form {\r\n min-width: 400px !important;\r\n}\r\n\r\n.add-entity-form .boolean-value-input {\r\n padding-left: 5px;\r\n}\r\n\r\n.add-entity-form .boolean-value-input .checkbox-label {\r\n margin-bottom: 8px;\r\n color: rgba(0,0,0,0.54);\r\n font-size: 12px;\r\n}\r\n\r\n.relations-list .header {\r\n padding-right: 5px;\r\n padding-bottom: 5px;\r\n padding-left: 5px;\r\n}\r\n\r\n.relations-list .header .cell {\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n font-size: 12px;\r\n font-weight: 700;\r\n color: rgba(0, 0, 0, .54);\r\n white-space: nowrap;\r\n}\r\n\r\n.relations-list .mat-form-field-infix {\r\n width: auto !important;\r\n}\r\n\r\n.relations-list .body {\r\n padding-right: 5px;\r\n padding-bottom: 15px;\r\n padding-left: 5px;\r\n}\r\n\r\n.relations-list .body .row {\r\n padding-top: 5px;\r\n}\r\n\r\n.relations-list .body .cell {\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n}\r\n\r\n.relations-list .body .md-button {\r\n margin: 0;\r\n}\r\n\r\n", - "customFunction": "let $injector = widgetContext.$scope.$injector;\r\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\r\nlet assetService = $injector.get(widgetContext.servicesMap.get('assetService'));\r\nlet deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\r\nlet attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));\r\nlet entityRelationService = $injector.get(widgetContext.servicesMap.get('entityRelationService'));\r\nlet userSettingsService = $injector.get(widgetContext.servicesMap.get('userSettingsService'));\r\n\r\nopenAddEntityDialog();\r\n\r\nfunction openAddEntityDialog() {\r\n customDialog.customDialog(htmlTemplate, AddEntityDialogController).subscribe();\r\n}\r\n\r\nfunction AddEntityDialogController(instance) {\r\n let vm = instance;\r\n let userSettings;\r\n userSettingsService.loadUserSettings().subscribe(settings=> {\r\n userSettings = settings;\r\n if (!userSettings.createdGatewaysCount) userSettings.createdGatewaysCount = 0;\r\n });\r\n \r\n\r\n vm.addEntityFormGroup = vm.fb.group({\r\n entityName: ['', [vm.validators.required]],\r\n entityType: ['DEVICE'],\r\n entityLabel: [''],\r\n type: ['', [vm.validators.required]],\r\n });\r\n\r\n vm.cancel = function() {\r\n vm.dialogRef.close(null);\r\n };\r\n\r\n\r\n vm.save = function($event) {\r\n vm.addEntityFormGroup.markAsPristine();\r\n saveEntityObservable().subscribe(\r\n function (device) {\r\n widgetContext.updateAliases();\r\n userSettingsService.putUserSettings({ createdGatewaysCount: ++userSettings.createdGatewaysCount }).subscribe(_=>{\r\n });\r\n vm.dialogRef.close(null);\r\n openCommandDialog(device, $event);\r\n }\r\n );\r\n };\r\n \r\n function openCommandDialog(device, $event) {\r\n vm.device = device;\r\n let openCommandAction = widgetContext.actionsApi.getActionDescriptors(\"actionCellButton\").find(action => action.name == \"Launch command\");\r\n widgetContext.actionsApi.handleWidgetAction($event, openCommandAction, device.id, device.name, {newDevice: true});\r\n goToConfigState();\r\n }\r\n\r\n \r\n function goToConfigState() {\r\n const stateParams = {};\r\n stateParams.entityId = vm.device.id;\r\n stateParams.entityName = vm.device.name;\r\n const newStateParams = {\r\n targetEntityParamName: 'default',\r\n new_gateway: {\r\n entityId: vm.device.id,\r\n entityName: vm.device.name\r\n }\r\n }\r\n const params = {...stateParams, ...newStateParams};\r\n widgetContext.stateController.openState('gateway_details', params, false);\r\n }\r\n\r\n function saveEntityObservable() {\r\n const formValues = vm.addEntityFormGroup.value;\r\n let entity = {\r\n name: formValues.entityName,\r\n type: formValues.type,\r\n label: formValues.entityLabel,\r\n additionalInfo: {\r\n gateway: true\r\n }\r\n };\r\n return deviceService.saveDevice(entity);\r\n }\r\n}\r\n", - "customResources": [], - "openInSeparateDialog": false, - "openInPopover": false, - "id": "9aab301f-a305-520b-4842-b02ca92a5970" - } - ] - }, - "showTitleIcon": false, - "titleTooltip": "", - "enableDataExport": false, - "widgetStyle": {}, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "configMode": "advanced", - "titleFont": null, - "titleColor": null, - "titleIcon": null, - "iconColor": null, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "23b9adc5-b3bd-040f-e5eb-a45925c73257", - "typeFullFqn": "system.cards.entities_table" - }, - "d4a1ffc4-c9f6-7b15-bca0-17feb58bac99": { - "type": "latest", - "sizeX": 9.5, - "sizeY": 6, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [] - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1680685647526, - "endTimeMs": 1680772047526 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "0px", - "settings": {}, - "title": "New Gateway configuration", - "showTitleIcon": false, - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": false, - "enableDataExport": false, - "widgetStyle": {}, - "widgetCss": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 500 - }, - "pageSize": 1024, - "noDataDisplayMessage": "", - "showLegend": false, - "useDashboardTimewindow": true, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "d4a1ffc4-c9f6-7b15-bca0-17feb58bac99", - "typeFullFqn": "system.gateway_widgets.gateway_general_configuration" - }, - "02a05113-d878-b086-328e-75bd6f02b2bb": { - "type": "latest", - "sizeX": 11, - "sizeY": 8, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "activeConnectors", - "type": "attribute", - "label": "activeConnectors", - "color": "#2196f3", - "settings": {}, - "_hash": 0.7454705362378311 - }, - { - "name": "lastConnectTime", - "type": "attribute", - "label": "lastConnectTime", - "color": "#4caf50", - "settings": {}, - "_hash": 0.7249585632235194 - }, - { - "name": "lastDisconnectTime", - "type": "attribute", - "label": "lastDisconnectTime", - "color": "#f44336", - "settings": {}, - "_hash": 0.9812430092707332 - }, - { - "name": "active", - "type": "attribute", - "label": "active", - "color": "#ffc107", - "settings": {}, - "_hash": 0.9216097189544408 - } - ] - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1680769601167, - "endTimeMs": 1680856001167 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#FFFFFF01", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "0px", - "settings": {}, - "title": "New Gateway connector", - "showTitleIcon": false, - "titleTooltip": "", - "dropShadow": false, - "enableFullscreen": false, - "enableDataExport": false, - "widgetStyle": {}, - "widgetCss": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 500 - }, - "pageSize": 1024, - "noDataDisplayMessage": "", - "showLegend": false, - "useDashboardTimewindow": true - }, - "row": 0, - "col": 0, - "id": "02a05113-d878-b086-328e-75bd6f02b2bb", - "typeFullFqn": "system.gateway_widgets.gateway_connectors" - }, - "79f59106-758f-c428-8b93-4341faea705d": { - "type": "latest", - "sizeX": 5, - "sizeY": 3.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "name", - "type": "entityField", - "label": "Name", - "color": "#2196f3", - "settings": {}, - "_hash": 0.1375998537558516 - }, - { - "name": "type", - "type": "entityField", - "label": "Type", - "color": "#4caf50", - "settings": {}, - "_hash": 0.9806146353493157 - }, - { - "name": "activeDevices", - "type": "attribute", - "label": "activeDevices", - "color": "#ffc107", - "settings": {}, - "_hash": 0.09421132942226995 - }, - { - "name": "inactiveDevices", - "type": "attribute", - "label": "inactiveDevices", - "color": "#607d8b", - "settings": {}, - "_hash": 0.35218481621567044 - }, - { - "name": "active_connectors", - "type": "attribute", - "label": "active_connectors", - "color": "#3f51b5", - "settings": {}, - "_hash": 0.45076316106117176 - }, - { - "name": "inactive_connectors", - "type": "attribute", - "label": "inactive_connectors", - "color": "#e91e63", - "settings": {}, - "_hash": 0.36755550699981954 - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#e91e63", - "settings": {}, - "_hash": 0.10301612696488416, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "var newValue = value == 'true' ? \"Active\" : \"Inactive\";\nreturn newValue;" - }, - { - "name": "ALL_ERRORS_COUNT", - "type": "timeseries", - "label": "ALL_ERRORS_COUNT", - "color": "#ffeb3b", - "settings": {}, - "_hash": 0.2770587478725004 - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "bd33a006-fd40-3efc-7863-505c6e64f2b8", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "count", - "color": "#3f51b5", - "settings": {}, - "_hash": 0.6470244865405319 - } - ] - }, - { - "type": "entityCount", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "956cf341-7cdf-82a7-ea2a-50cc9586f1f1", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "count 2", - "color": "#e91e63", - "settings": {}, - "_hash": 0.46058668157030436 - } - ] - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1683116949383, - "endTimeMs": 1683203349383 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "useMarkdownTextFunction": true, - "markdownTextPattern": "# Markdown/HTML card \\n - **Current entity**: **${entityName}**. \\n - **Current value**: **${Random}**.", - "markdownTextFunction": "var blockData = '';\nvar connectorsIndex = ctx.actionsApi.getActionDescriptors('elementClick').findIndex(action=>action.name==\"Connectors\");\nvar logsIndex = ctx.actionsApi.getActionDescriptors('elementClick').findIndex(action=>action.name==\"Logs\");\nfunction generateMatHeader(index) {\n if( index !== undefined && index > -1) {\n return ``\n } else {\n return \"\" \n }\n}\nfunction createDataBlock(value, label, dividerStyle, mobile, index) {\n blockData += `\n \n
\n \n ${generateMatHeader(index)}\n ${label}\n
\n ${value}\n `;\n}\ncreateDataBlock(data[0].Status, \"Status\", data[0].Status === \"Active\"? 'divider-green' : 'divider-red');\ncreateDataBlock(data[0].Name, \"Gateway Name\", '', ctx.isMobile);\ncreateDataBlock(data[0].Type, \"Gateway Type\", '');\ncreateDataBlock(\n `${(data[1]?data[1].count:0)} `\n + \" | \" + \n `${(data[2]?data[2][\"count 2\"]:0)} `\n , \"Devices (Active | Inactive)\", '');\ncreateDataBlock(\n `${(data[0].active_connectors?JSON.parse(data[0].active_connectors).length:0)} `\n + \" | \" + \n `${(data[0].inactive_connectors?JSON.parse(data[0].inactive_connectors).length:0)} `\n , \"Connectors (Enabled | Disabled)\", '', '', connectorsIndex);\ncreateDataBlock(data[0].ALL_ERRORS_COUNT || 0, \"Errors\", (data[0].ALL_ERRORS_COUNT || 0) === 0 ? 'divider-green' : 'divider-red', '', logsIndex);\nreturn `
${blockData}
`;", - "applyDefaultMarkdownStyle": false, - "markdownCss": ".divider {\n position: absolute;\n width: 3px;\n top: 8px;\n border-radius: 2px;\n bottom: 8px;\n border: 1px solid rgba(31, 70, 144, 1);\n background-color: rgba(31, 70, 144, 1);\n left: 10px;\n}\n.divider-green .divider {\n border: 1px solid rgb(25,128,56);\n background-color: rgb(25,128,56);\n}\n\n.divider-green .mat-mdc-card-content {\n color: rgb(25,128,56);\n}\n\n.divider-red .divider {\n border: 1px solid rgb(203,37,48);\n background-color: rgb(203,37,48);\n}\n\n.divider-red .mat-mdc-card-content {\n color: rgb(203,37,48);\n}\n\n.mdc-card {\n position: relative;\n padding-left: 10px;\n margin-bottom: 1px;\n}\n\n.mat-mdc-card-subtitle {\n font-weight: 400;\n font-size: 12px;\n}\n\n.mat-mdc-card-header {\n padding: 8px 16px 0;\n}\n\n.mat-mdc-card-content:last-child {\n padding-bottom: 8px;\n font-size: 16px;\n}\n\n.cards-container {\n height: calc(100% - 1px);\n justify-content: stretch;\n align-items: center;\n margin-bottom: 1px;\n}\n\n::ng-deep.tb-home-widget-link > div {\n flex-grow: 1;\n cursor: pointer;\n}\n\n .tb-home-widget-link {\n width: 100%;\n }\n\n .tb-home-widget-link:hover::after{\n color: inherit;\n }\n \n .tb-home-widget-link::after{\n content: 'arrow_forward';\n display: inline-block;\n transform: rotate(315deg);\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 18px;\n color: rgba(0, 0, 0, 0.12);\n vertical-align: bottom;\n margin-left: 6px;\n}" - }, - "title": "Connectors", - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": false, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "showLegend": false, - "useDashboardTimewindow": true, - "margin": "0", - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "displayTimewindow": true, - "borderRadius": "4px", - "actions": { - "elementClick": [ - { - "name": "Connectors", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "connectors", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "ee7216d8-ad7a-20db-1abc-2531e221f24c" - }, - { - "name": "Logs", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "logs", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "ceec0446-c25f-2b9b-b1b1-58ed751476ff" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "79f59106-758f-c428-8b93-4341faea705d", - "typeFullFqn": "system.cards.markdown_card" - }, - "60dcf518-8fc3-3539-8ff8-ce94bda39f3a": { - "type": "alarm", - "sizeX": 10.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 2592000000, - "quickInterval": "CURRENT_DAY", - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "enableSelection": true, - "enableSearch": true, - "enableSelectColumnDisplay": false, - "enableFilter": true, - "enableStickyHeader": true, - "enableStickyAction": false, - "reserveSpaceForHiddenAction": "true", - "displayDetails": true, - "allowAcknowledgment": true, - "allowClear": true, - "allowAssign": true, - "displayActivity": true, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "-createdTime", - "useRowStyleFunction": false - }, - "title": "Alarms", - "dropShadow": true, - "enableFullscreen": false, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "alarmSource": { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "createdTime", - "type": "alarm", - "label": "Created time", - "color": "#2196f3", - "settings": { - "useCellStyleFunction": false, - "cellStyleFunction": "", - "useCellContentFunction": false, - "cellContentFunction": "" - }, - "_hash": 0.021092237451093787 - }, - { - "name": "type", - "type": "alarm", - "label": "Type", - "color": "#f44336", - "settings": { - "useCellStyleFunction": false, - "cellStyleFunction": "", - "useCellContentFunction": false, - "cellContentFunction": "" - }, - "_hash": 0.7323586880398418 - }, - { - "name": "severity", - "type": "alarm", - "label": "Severity", - "color": "#ffc107", - "settings": { - "useCellStyleFunction": false, - "useCellContentFunction": false - }, - "_hash": 0.09927019860088193 - }, - { - "name": "details", - "type": "alarm", - "label": "details", - "color": "#9c27b0", - "settings": {}, - "_hash": 0.10903701402251387 - }, - { - "name": "status", - "type": "alarm", - "label": "Status", - "color": "#607d8b", - "settings": {}, - "_hash": 0.5260411335842929 - } - ] - }, - "alarmsPollingInterval": 5, - "showTitleIcon": false, - "titleIcon": "more_horiz", - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "widgetStyle": {}, - "displayTimewindow": false, - "actions": {}, - "datasources": [], - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "alarmFilterConfig": { - "statusList": [], - "severityList": [], - "typeList": [], - "searchPropagatedAlarms": false - }, - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "60dcf518-8fc3-3539-8ff8-ce94bda39f3a", - "typeFullFqn": "system.alarm_widgets.alarms_table" - }, - "27e6b37c-085e-824d-fb13-69651a545ec1": { - "type": "timeseries", - "sizeX": 7.5, - "sizeY": 3, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [] - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 43200000, - "quickInterval": "CURRENT_DAY", - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 25000 - }, - "timezone": null - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": {}, - "title": "Logs", - "showTitleIcon": false, - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "useDashboardTimewindow": false, - "displayTimewindow": true, - "titleTooltip": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "27e6b37c-085e-824d-fb13-69651a545ec1", - "typeFullFqn": "system.gateway_widgets.gateway_logs" - }, - "bcd04dbf-c82a-ca13-6e88-a74f32b4348a": { - "type": "timeseries", - "sizeX": 7.5, - "sizeY": 3, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [] - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 43200000, - "quickInterval": "CURRENT_DAY", - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 25000 - }, - "timezone": null - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "isConnectorLog": true, - "connectorLogState": "connector_logs" - }, - "title": "${connectorName} logs", - "showTitleIcon": false, - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "useDashboardTimewindow": false, - "displayTimewindow": true, - "titleTooltip": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "bcd04dbf-c82a-ca13-6e88-a74f32b4348a", - "typeFullFqn": "system.gateway_widgets.gateway_logs" - }, - "9b88dc51-b186-90ef-5afb-9648e6e2ac9a": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 604800000, - "quickInterval": "CURRENT_DAY", - "interval": 300000 - }, - "aggregation": { - "type": "NONE", - "limit": 25000 - }, - "timezone": null - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "stack": false, - "fontSize": 10, - "fontColor": "#545454", - "showTooltip": true, - "tooltipIndividual": false, - "tooltipCumulative": false, - "hideZeros": false, - "grid": { - "verticalLines": true, - "horizontalLines": true, - "outlineWidth": 0, - "color": "#545454", - "backgroundColor": null, - "tickColor": "#DDDDDD" - }, - "xaxis": { - "title": null, - "showLabels": true, - "color": "#545454" - }, - "yaxis": { - "min": null, - "max": null, - "title": null, - "showLabels": true, - "color": "#545454", - "tickSize": null, - "tickDecimals": 0, - "ticksFormatter": "" - }, - "shadowSize": 4, - "smoothLines": true, - "comparisonEnabled": false, - "timeForComparison": "previousInterval", - "comparisonCustomIntervalValue": 7200000, - "xaxisSecond": { - "axisPosition": "top", - "title": null, - "showLabels": true - }, - "customLegendEnabled": false, - "dataKeysListForLabels": [] - }, - "title": "Gateway Custom Statistics", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600 - }, - "useDashboardTimewindow": true, - "displayTimewindow": false, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "legendConfig": { - "direction": "column", - "position": "bottom", - "sortDataKeys": false, - "showMin": false, - "showMax": false, - "showAvg": true, - "showTotal": false, - "showLatest": false - }, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "9b88dc51-b186-90ef-5afb-9648e6e2ac9a", - "typeFullFqn": "system.gateway_widgets.gateway_custom_statistics" - }, - "2a318e56-5c83-4f82-bf23-df72dd7e3edf": { - "type": "rpc", - "sizeX": 9.5, - "sizeY": 5.5, - "config": { - "targetDeviceAliases": [], - "showTitle": false, - "backgroundColor": "#010101", - "color": "rgba(255, 254, 254, 0.87)", - "padding": "0px", - "settings": { - "parseGpioStatusFunction": "return body[pin] === true;", - "gpioStatusChangeRequest": { - "method": "setGpioStatus", - "paramsBody": "{\n \"pin\": \"{$pin}\",\n \"enabled\": \"{$enabled}\"\n}" - }, - "requestTimeout": 500, - "switchPanelBackgroundColor": "#b71c1c", - "gpioStatusRequest": { - "method": "getGpioStatus", - "paramsBody": "{}" - }, - "gpioList": [ - { - "pin": 1, - "label": "GPIO 1", - "row": 0, - "col": 0, - "_uniqueKey": 0 - }, - { - "pin": 2, - "label": "GPIO 2", - "row": 0, - "col": 1, - "_uniqueKey": 1 - }, - { - "pin": 3, - "label": "GPIO 3", - "row": 1, - "col": 0, - "_uniqueKey": 2 - } - ] - }, - "title": "RPC remote shell", - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": { - "border-radius": "10px" - }, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "useDashboardTimewindow": true, - "showLegend": false, - "actions": {}, - "datasources": [], - "showTitleIcon": false, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "targetDevice": { - "type": "entity", - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8" - } - }, - "row": 0, - "col": 0, - "id": "2a318e56-5c83-4f82-bf23-df72dd7e3edf", - "typeFullFqn": "system.control_widgets.rpc_remote_shell" - }, - "c50e294a-265a-d13c-c772-b56c4df953fe": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "allBytesSentToDevices", - "type": "timeseries", - "label": "Sent To Devices (bytes)", - "color": "#2196f3", - "settings": {}, - "_hash": 0.6608774125800538, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "allBytesSentToTB", - "type": "timeseries", - "label": "Send To ThingsBoard (bytes)", - "color": "#4caf50", - "settings": {}, - "_hash": 0.05525630093240763, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "allReсeivedBytesFromTB", - "type": "timeseries", - "label": "Received From ThingsBoard (bytes)", - "color": "#f44336", - "settings": {}, - "_hash": 0.4539040118567914, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "convertedBytesFromDevice", - "type": "timeseries", - "label": "Converted From Devices (bytes)", - "color": "#ffc107", - "settings": {}, - "_hash": 0.36601736007496366, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "eventsProduced", - "type": "timeseries", - "label": "Events Produced", - "color": "#607d8b", - "settings": {}, - "_hash": 0.6227465527701406, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "eventsSent", - "type": "timeseries", - "label": "Events Sent", - "color": "#9c27b0", - "settings": {}, - "_hash": 0.6043328458525739, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "receivedBytesFromDevices", - "type": "timeseries", - "label": "Received From Devices (bytes)", - "color": "#8bc34a", - "settings": {}, - "_hash": 0.7829761270709421, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ] - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 604800000, - "quickInterval": "CURRENT_DAY", - "interval": 1800000 - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - }, - "timezone": null - }, - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "stack": false, - "fontSize": 10, - "fontColor": "#545454", - "showTooltip": true, - "tooltipIndividual": false, - "tooltipCumulative": false, - "hideZeros": false, - "grid": { - "verticalLines": true, - "horizontalLines": true, - "outlineWidth": 0, - "color": "#545454", - "backgroundColor": null, - "tickColor": "#DDDDDD" - }, - "xaxis": { - "title": null, - "showLabels": true, - "color": "#545454" - }, - "yaxis": { - "min": null, - "max": null, - "title": null, - "showLabels": true, - "color": "#545454", - "tickSize": null, - "tickDecimals": 0, - "ticksFormatter": "" - }, - "shadowSize": 4, - "smoothLines": true, - "comparisonEnabled": false, - "timeForComparison": "previousInterval", - "comparisonCustomIntervalValue": 7200000, - "xaxisSecond": { - "axisPosition": "top", - "title": null, - "showLabels": true - }, - "customLegendEnabled": false, - "dataKeysListForLabels": [] - }, - "title": "Gateway General Chart Statistics", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600 - }, - "useDashboardTimewindow": true, - "displayTimewindow": false, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "legendConfig": { - "direction": "row", - "position": "bottom", - "sortDataKeys": false, - "showMin": false, - "showMax": false, - "showAvg": false, - "showTotal": false, - "showLatest": false - }, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "c50e294a-265a-d13c-c772-b56c4df953fe", - "typeFullFqn": "system.gateway_widgets.gateway_general_chart_statistics" - }, - "da01e13f-c108-39fd-2a74-b40da088769a": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 6.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "SERVICE_LOGS", - "type": "timeseries", - "label": "Status", - "color": "#4caf50", - "settings": { - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"DEBUG\":\r\n cssClass = \"status status-debug\";\r\n break;\r\n case \"WARNING\":\r\n cssClass = \"status status-warning\";\r\n break;\r\n case \"ERROR\":\r\n case \"EXCEPTION\":\r\n cssClass = \"status status-error\";\r\n break;\r\n case \"INFO\":\r\n default:\r\n cssClass = \"status status-info\";\r\n break;\r\n }\r\n \r\n return `${value}`;" - }, - "_hash": 0.6667576563240645, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "if (value.includes(\"RPC\")&&!value.includes(\"GRPC\")) {\n let parsedValue = value.match(/\\|(\\w+)\\|/);\n parsedValue = parsedValue ? parsedValue[1] :\n parsedValue;\n return parsedValue || value;\n} else return '';" - }, - { - "name": "SERVICE_LOGS", - "type": "timeseries", - "label": "Details", - "color": "#2196f3", - "settings": { - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let statusValue = value.match(/\\|(\\w+)\\|/); \r\nstatusValue = statusValue? statusValue[1] : statusValue;\r\nlet cssClass = statusValue === \"EXCEPTION\" ?\r\n \"msg-status-exception\" : 'msg';\r\nlet parsedValue = /\\[(.*)/.exec(value);\r\nparsedValue = parsedValue ? parsedValue[0] : parsedValue;\r\nreturn `${parsedValue || value}`;" - }, - "_hash": 0.6931154680365814, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "if (value.includes(\"RPC\")&&!value.includes(\"GRPC\")) {\n return value;\n} else return '';" - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 604800000, - "quickInterval": "CURRENT_DAY", - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "showCellActionsMenu": true, - "reserveSpaceForHiddenAction": "true", - "showTimestamp": true, - "showMilliseconds": false, - "displayPagination": true, - "useEntityLabel": false, - "defaultPageSize": 10, - "hideEmptyLines": true, - "disableStickyHeader": false, - "useRowStyleFunction": false - }, - "title": "RPC Logs", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "widgetStyle": {}, - "actions": {}, - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "displayTimewindow": true, - "titleTooltip": "", - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n}\r\n\r\n.status-debug {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n}\r\n\r\n.status-warning {\r\n color: orange;\r\n background: rgba(255, 165, 0, 0.1);\r\n}\r\n\r\n.status-error {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n}\r\n\r\n.status-info {\r\n color: blue;\r\n background: rgba(0, 0, 128, 0.1);\r\n}\r\n\r\n.msg-status-exception {\r\n color: red;\r\n}", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "da01e13f-c108-39fd-2a74-b40da088769a", - "typeFullFqn": "system.cards.timeseries_table" - }, - "ce3065bf-d898-2c03-6236-ce1b6cdf1f3f": { - "type": "rpc", - "sizeX": 9.5, - "sizeY": 5.5, - "config": { - "targetDeviceAliases": [], - "showTitle": true, - "backgroundColor": "#010101", - "color": "rgba(255, 254, 254, 0.87)", - "padding": "0px", - "settings": { - "parseGpioStatusFunction": "return body[pin] === true;", - "gpioStatusChangeRequest": { - "method": "setGpioStatus", - "paramsBody": "{\n \"pin\": \"{$pin}\",\n \"enabled\": \"{$enabled}\"\n}" - }, - "requestTimeout": 500, - "switchPanelBackgroundColor": "#b71c1c", - "gpioStatusRequest": { - "method": "getGpioStatus", - "paramsBody": "{}" - }, - "gpioList": [ - { - "pin": 1, - "label": "GPIO 1", - "row": 0, - "col": 0, - "_uniqueKey": 0 - }, - { - "pin": 2, - "label": "GPIO 2", - "row": 0, - "col": 1, - "_uniqueKey": 1 - }, - { - "pin": 3, - "label": "GPIO 3", - "row": 1, - "col": 0, - "_uniqueKey": 2 - } - ] - }, - "title": "RPC debug terminal", - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "useDashboardTimewindow": true, - "showLegend": false, - "actions": {}, - "datasources": [], - "showTitleIcon": false, - "titleTooltip": "", - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "borderRadius": "4px", - "targetDevice": { - "type": "entity", - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8" - } - }, - "row": 0, - "col": 0, - "id": "ce3065bf-d898-2c03-6236-ce1b6cdf1f3f", - "typeFullFqn": "system.control_widgets.rpc_debug_terminal" - }, - "46b68eb5-7e2d-bca1-c2ef-061b64575218": { - "type": "rpc", - "sizeX": 4, - "sizeY": 2, - "config": { - "targetDeviceAliases": [], - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "parseGpioStatusFunction": "return body[pin] === true;", - "gpioStatusChangeRequest": { - "method": "setGpioStatus", - "paramsBody": "{\n \"pin\": \"{$pin}\",\n \"enabled\": \"{$enabled}\"\n}" - }, - "requestTimeout": 500, - "switchPanelBackgroundColor": "#b71c1c", - "gpioStatusRequest": { - "method": "getGpioStatus", - "paramsBody": "{}" - }, - "gpioList": [ - { - "pin": 1, - "label": "GPIO 1", - "row": 0, - "col": 0, - "_uniqueKey": 0 - }, - { - "pin": 2, - "label": "GPIO 2", - "row": 0, - "col": 1, - "_uniqueKey": 1 - }, - { - "pin": 3, - "label": "GPIO 3", - "row": 1, - "col": 0, - "_uniqueKey": 2 - } - ] - }, - "title": "Service RPC", - "datasources": [], - "showTitleIcon": false, - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "widgetCss": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600 - }, - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "borderRadius": "4px", - "targetDevice": { - "type": "entity", - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8" - } - }, - "row": 0, - "col": 0, - "id": "46b68eb5-7e2d-bca1-c2ef-061b64575218", - "typeFullFqn": "system.gateway_widgets.service_rpc" - }, - "878c68fd-71cb-21d4-684a-b5b5a4526b43": { - "type": "rpc", - "sizeX": 4, - "sizeY": 2, - "config": { - "targetDeviceAliases": [], - "showTitle": true, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "isConnector": true - }, - "title": "Service RPC", - "datasources": [], - "showTitleIcon": false, - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "widgetCss": "", - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600 - }, - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "showLegend": false, - "borderRadius": "4px", - "targetDevice": { - "type": "entity", - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8" - } - }, - "row": 0, - "col": 0, - "id": "878c68fd-71cb-21d4-684a-b5b5a4526b43", - "typeFullFqn": "system.gateway_widgets.service_rpc" - }, - "0fc7dcf3-32a2-0159-738e-96956bf0d450": { - "type": "timeseries", - "sizeX": 8, - "sizeY": 6.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "SERVICE_LOGS", - "type": "timeseries", - "label": "Status", - "color": "#4caf50", - "settings": { - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"DEBUG\":\r\n cssClass = \"status status-debug\";\r\n break;\r\n case \"WARNING\":\r\n cssClass = \"status status-warning\";\r\n break;\r\n case \"ERROR\":\r\n case \"EXCEPTION\":\r\n cssClass = \"status status-error\";\r\n break;\r\n case \"INFO\":\r\n default:\r\n cssClass = \"status status-info\";\r\n break;\r\n }\r\n \r\n return `${value}`;" - }, - "_hash": 0.6667576563240645, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "if (value.includes(\"RPC\")&&!value.includes(\"GRPC\")) {\n let parsedValue = value.match(/\\|(\\w+)\\|/);\n parsedValue = parsedValue ? parsedValue[1] :\n parsedValue;\n return parsedValue || value;\n} else return '';" - }, - { - "name": "SERVICE_LOGS", - "type": "timeseries", - "label": "Details", - "color": "#2196f3", - "settings": { - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let statusValue = value.match(/\\|(\\w+)\\|/); \r\nstatusValue = statusValue? statusValue[1] : statusValue;\r\nlet cssClass = statusValue === \"EXCEPTION\" ?\r\n \"msg-status-exception\" : 'msg';\r\nlet parsedValue = /\\[(.*)/.exec(value);\r\nparsedValue = parsedValue ? parsedValue[0] : parsedValue;\r\nreturn `${parsedValue || value}`;" - }, - "_hash": 0.6931154680365814, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "if (value.includes(\"RPC\")&&!value.includes(\"GRPC\")) {\n return value;\n} else return '';" - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - }, - "latestDataKeys": [] - } - ], - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 0, - "realtime": { - "realtimeType": 0, - "timewindowMs": 604800000, - "quickInterval": "CURRENT_DAY", - "interval": 1000 - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "showCellActionsMenu": true, - "reserveSpaceForHiddenAction": "true", - "showTimestamp": true, - "showMilliseconds": false, - "displayPagination": true, - "useEntityLabel": false, - "defaultPageSize": 10, - "hideEmptyLines": true, - "disableStickyHeader": false, - "useRowStyleFunction": false - }, - "title": "RPC Logs", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 600, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "widgetStyle": {}, - "actions": {}, - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "displayTimewindow": true, - "titleTooltip": "", - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n}\r\n\r\n.status-debug {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n}\r\n\r\n.status-warning {\r\n color: orange;\r\n background: rgba(255, 165, 0, 0.1);\r\n}\r\n\r\n.status-error {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n}\r\n\r\n.status-info {\r\n color: blue;\r\n background: rgba(0, 0, 128, 0.1);\r\n}\r\n\r\n.msg-status-exception {\r\n color: red;\r\n}", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "0fc7dcf3-32a2-0159-738e-96956bf0d450", - "typeFullFqn": "system.cards.timeseries_table" - }, - "6e136fbc-545b-4926-c0a9-79348f35628a": { - "type": "rpc", - "sizeX": 9.5, - "sizeY": 5.5, - "config": { - "targetDeviceAliases": [], - "showTitle": true, - "backgroundColor": "#010101", - "color": "rgba(255, 254, 254, 0.87)", - "padding": "0px", - "settings": { - "parseGpioStatusFunction": "return body[pin] === true;", - "gpioStatusChangeRequest": { - "method": "setGpioStatus", - "paramsBody": "{\n \"pin\": \"{$pin}\",\n \"enabled\": \"{$enabled}\"\n}" - }, - "requestTimeout": 500, - "switchPanelBackgroundColor": "#b71c1c", - "gpioStatusRequest": { - "method": "getGpioStatus", - "paramsBody": "{}" - }, - "gpioList": [ - { - "pin": 1, - "label": "GPIO 1", - "row": 0, - "col": 0, - "_uniqueKey": 0 - }, - { - "pin": 2, - "label": "GPIO 2", - "row": 0, - "col": 1, - "_uniqueKey": 1 - }, - { - "pin": 3, - "label": "GPIO 3", - "row": 1, - "col": 0, - "_uniqueKey": 2 - } - ] - }, - "title": "New RPC debug terminal", - "dropShadow": true, - "enableFullscreen": true, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "useDashboardTimewindow": true, - "showLegend": false, - "actions": {}, - "datasources": [], - "showTitleIcon": false, - "titleTooltip": "", - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "borderRadius": "4px", - "targetDevice": { - "type": "entity", - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8" - } - }, - "row": 0, - "col": 0, - "id": "6e136fbc-545b-4926-c0a9-79348f35628a", - "typeFullFqn": "system.control_widgets.rpc_debug_terminal" - }, - "fb9df382-6ef3-4aa6-bc13-8bf8e300ba19": { - "type": "latest", - "sizeX": 5, - "sizeY": 3.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [] - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1685437116892, - "endTimeMs": 1685523516892 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "useMarkdownTextFunction": false, - "markdownTextPattern": "
\r\n \r\n
", - "applyDefaultMarkdownStyle": false, - "markdownCss": ".action-buttons-container {\r\n display: flex;\r\n flex-wrap: wrap;\r\n flex-direction: row;\r\n height: 100%;\r\n width: 100%;\r\n align-content: center;\r\n}\r\n\r\nbutton {\r\n flex-grow: 1;\r\n margin: 10px;\r\n min-width: 150px;\r\n height: auto;\r\n}" - }, - "title": "Service command", - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": false, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "showLegend": false, - "useDashboardTimewindow": true, - "actions": { - "elementClick": [ - { - "name": "Launch command", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "customPretty", - "customHtml": "
\n \n

{{ 'gateway.launch-command' | translate }}

\n \n
\n \n
\n \n
\n \n
\n
\n", - "customCss": ".container {\n display: grid;\n grid-template-rows: min-content minmax(auto, 1fr) min-content;\n height: 100%;\n max-height: 100vh;\n width: 600px;\n max-width: 100%;\n}", - "customFunction": "let $injector = widgetContext.$scope.$injector;\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\n\nopenCommands();\n\nfunction openCommands() {\n customDialog.customDialog(htmlTemplate, CommandsDialogController, {panelClass: \"test\"}).subscribe();\n}\n\nfunction CommandsDialogController(instance) {\n let vm = instance;\n \n vm.entityId = entityId.id;\n\n vm.cancel = function() {\n vm.dialogRef.close(null);\n };\n}\n", - "customResources": [], - "openInSeparateDialog": false, - "openInPopover": false, - "id": "337c767b-3217-d3d3-b955-7b0bd0858a1d" - } - ] - }, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "fb9df382-6ef3-4aa6-bc13-8bf8e300ba19", - "typeFullFqn": "system.cards.markdown_card" - }, - "61d149e8-b249-5526-e5d7-6ad58413982e": { - "type": "latest", - "sizeX": 5, - "sizeY": 3.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "filterId": null, - "dataKeys": [ - { - "name": "general_configuration", - "type": "attribute", - "label": "general_configuration", - "color": "#2196f3", - "settings": {}, - "_hash": 0.739858588321151 - }, - { - "name": "RemoteLoggingLevel", - "type": "attribute", - "label": "RemoteLoggingLevel", - "color": "#4caf50", - "settings": {}, - "_hash": 0.20230761305210687 - } - ] - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1685437116892, - "endTimeMs": 1685523516892 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "8px", - "settings": { - "useMarkdownTextFunction": true, - "markdownTextFunction": "let buttonsHtml = \"\" \nctx.actionsApi.getActionDescriptors('elementClick').forEach((btn, index)=>{\n let disabled =false;\n if (index == 2) {\n disabled = data[0] && data[0].RemoteLoggingLevel ? data[0].RemoteLoggingLevel == \"NONE\" : true;\n } else if (index == 4) {\n const conf = data[0].general_configuration? JSON.parse(data[0].general_configuration): {};\n disabled = !conf.remoteShell;\n }\n buttonsHtml += ``\n});\n\nreturn `
${buttonsHtml}
`;", - "applyDefaultMarkdownStyle": false, - "markdownCss": ".action-buttons-container {\r\n display: flex;\r\n flex-wrap: wrap;\r\n flex-direction: row;\r\n height: 100%;\r\n width: 100%;\r\n align-content: start;\r\n}\r\n\r\nbutton {\r\n flex-grow: 1;\r\n margin: 10px;\r\n min-width: 150px;\r\n height: auto;\r\n}" - }, - "title": "General configuration", - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": false, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "showLegend": false, - "useDashboardTimewindow": true, - "actions": { - "elementClick": [ - { - "name": "General configuration", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "configuration", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "337c767b-3217-d3d3-b955-7b0bd0858a1d" - }, - { - "name": "Connectors configuration", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "connectors", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "00469ea7-f4c4-e39d-a735-c74b6ba6a026" - }, - { - "name": "Logs", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "logs", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "d8607421-28b4-7c3b-949b-f69c3a46b461" - }, - { - "name": "Statistics", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "statistics", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "425ba0d8-8e26-18a5-881d-bebe27fb2a7a" - }, - { - "name": "Remote Shell", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "remote_shell", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "2c4c7dcc-009f-64eb-5f1b-a991df6d25a2" - }, - { - "name": "RPC", - "icon": "more_horiz", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "openDashboardState", - "targetDashboardStateId": "rpc", - "setEntityId": true, - "stateEntityParamName": null, - "openRightLayout": false, - "openInSeparateDialog": false, - "openInPopover": false, - "id": "35705df8-69cf-7f76-b52f-d53c5a1931c0" - } - ] - }, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "61d149e8-b249-5526-e5d7-6ad58413982e", - "typeFullFqn": "system.cards.markdown_card" - }, - "3d661190-7463-ba61-6793-503c85af67ec": { - "type": "latest", - "sizeX": 5, - "sizeY": 3.5, - "config": { - "datasources": [ - { - "type": "entity", - "name": "function", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "dataKeys": [], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "bd9176e1-9e04-3e9b-d5a5-07b72bb9ae90", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "mqttCount", - "color": "#4caf50", - "settings": {}, - "_hash": 0.9590451878027946, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "44038462-1bae-e075-7b31-283341cb2295", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "modbusCount", - "color": "#ff5722", - "settings": {}, - "_hash": 0.46402083951505624, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "884e9c34-7534-a483-99be-81b56cd91185", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "grpcCount", - "color": "#f44336", - "settings": {}, - "_hash": 0.16110429492126088, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "e91ca0e9-1653-4fbc-5f3d-3da021b1b415", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "opcuaCount", - "color": "#ffc107", - "settings": {}, - "_hash": 0.13973521146913304, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "3f74cbaa-6353-5e88-a7e8-708fc0e18039", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "bleCount", - "color": "#607d8b", - "settings": {}, - "_hash": 0.7205723252294653, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "c08eee84-64ee-73c4-8d96-c0df813a92cd", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "requestCount", - "color": "#9c27b0", - "settings": {}, - "_hash": 0.6993292961463216, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "2f0af7f5-22ea-c0d5-3aef-7f2bb1b534ec", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "canCount", - "color": "#8bc34a", - "settings": {}, - "_hash": 0.4850065031079176, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "92a7d208-c143-ea20-5162-1da584532830", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "bacnetCount", - "color": "#3f51b5", - "settings": {}, - "_hash": 0.36987531665233075, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "498f090c-b1e5-df74-35d1-3ecf89d33f1c", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "odbcCount", - "color": "#e91e63", - "settings": {}, - "_hash": 0.8279345016611896, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "9175179d-a8db-848b-0762-e78da150e768", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "restCount", - "color": "#ffeb3b", - "settings": {}, - "_hash": 0.07245826389852739, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "9175179d-a8db-848b-0762-e78da150e768", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "restCount", - "color": "#03a9f4", - "settings": {}, - "_hash": 0.4321492578560704, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "1b70460b-428b-2aed-f23a-65927d3e67bb", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "snmpCount", - "color": "#ff9800", - "settings": {}, - "_hash": 0.7395574625078822, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "ae357478-b4c2-eee8-dde6-a6942fe6202f", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "ftpCount", - "color": "#673ab7", - "settings": {}, - "_hash": 0.9999791065203374, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "6eef4979-369f-c2cc-4894-96a84b6a668a", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "socketCount", - "color": "#cddc39", - "settings": {}, - "_hash": 0.47563823619478685, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "9c8e3a63-01a1-64b5-fe44-4f58f8350340", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "xmppCount", - "color": "#009688", - "settings": {}, - "_hash": 0.5679285702280172, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "c6501413-d823-29c4-992f-9ae6e8e25549", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "ocppCount", - "color": "#795548", - "settings": {}, - "_hash": 0.38390880166484287, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - }, - { - "type": "entityCount", - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "2f04d6e5-8438-857a-ca78-ae78cc8b0c03", - "dataKeys": [ - { - "name": "count", - "type": "count", - "label": "customCount", - "color": "#00bcd4", - "settings": {}, - "_hash": 0.9282529984749979, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 60000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1686652103417, - "endTimeMs": 1686738503417 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "AVG", - "limit": 25000 - } - }, - "showTitle": false, - "backgroundColor": "#fff", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "0px", - "settings": { - "useMarkdownTextFunction": false, - "markdownTextPattern": "
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n", - "applyDefaultMarkdownStyle": false, - "markdownCss": ".mat-mdc-form-field-subscript-wrapper {\n display: none !important;\n}\n\n.devices-tabs {\n height: 100%;\n}\n\n::ng-deep .mat-mdc-tab-body-wrapper {\n height: 100%;\n}" - }, - "title": "Gateway devices", - "showTitleIcon": false, - "iconColor": "rgba(0, 0, 0, 0.87)", - "iconSize": "24px", - "titleTooltip": "", - "dropShadow": true, - "enableFullscreen": false, - "widgetStyle": {}, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400 - }, - "showLegend": false, - "useDashboardTimewindow": true, - "displayTimewindow": true, - "widgetCss": "", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px" - }, - "row": 0, - "col": 0, - "id": "3d661190-7463-ba61-6793-503c85af67ec", - "typeFullFqn": "system.cards.markdown_card" - }, - "1615bd4e-c0a4-c32c-3706-3c83214cb8d7": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": null, - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "", - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "45e4507d-3adc-bb31-8b2b-1ba09bbd56ac" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "1615bd4e-c0a4-c32c-3706-3c83214cb8d7", - "typeFullFqn": "system.cards.entities_table" - }, - "aafba3d8-a381-21c0-ecbe-446da3cdc041": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "bd9176e1-9e04-3e9b-d5a5-07b72bb9ae90", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "borderRadius": "4px", - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "852eccce-98eb-24db-c783-bdd62566f906" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "aafba3d8-a381-21c0-ecbe-446da3cdc041", - "typeFullFqn": "system.cards.entities_table" - }, - "7f676bb2-bde2-10e7-80d8-25dd734e8e22": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "44038462-1bae-e075-7b31-283341cb2295", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "3c31ba62-e760-2bea-4c8d-d32784a86c24" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "7f676bb2-bde2-10e7-80d8-25dd734e8e22", - "typeFullFqn": "system.cards.entities_table" - }, - "d64482d8-001a-6f33-9b56-665530098fe5": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "884e9c34-7534-a483-99be-81b56cd91185", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "4b55ea81-93bf-4206-9166-3e0bdc1dd9f3" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "d64482d8-001a-6f33-9b56-665530098fe5", - "typeFullFqn": "system.cards.entities_table" - }, - "bb27723a-989c-2327-5808-b56d490b93ab": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "e91ca0e9-1653-4fbc-5f3d-3da021b1b415", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "babf88d0-a118-e2b5-f10e-3a5970c8a65b" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "bb27723a-989c-2327-5808-b56d490b93ab", - "typeFullFqn": "system.cards.entities_table" - }, - "cf2eba6b-44f6-9cc2-6089-35c735f54898": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "3f74cbaa-6353-5e88-a7e8-708fc0e18039", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "18414f44-1c65-536a-14de-eaf21a7d56bd" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "cf2eba6b-44f6-9cc2-6089-35c735f54898", - "typeFullFqn": "system.cards.entities_table" - }, - "3f6ed61b-f5af-13e3-7505-f69fd53f8211": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "c08eee84-64ee-73c4-8d96-c0df813a92cd", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "794974da-c9d2-a9f7-be47-c9eb642094e8" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "3f6ed61b-f5af-13e3-7505-f69fd53f8211", - "typeFullFqn": "system.cards.entities_table" - }, - "b06cecaa-2806-65a9-782d-4f2d8cf95a6c": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "2f0af7f5-22ea-c0d5-3aef-7f2bb1b534ec", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "2add705b-3e53-8559-8126-380cac686fb0" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "b06cecaa-2806-65a9-782d-4f2d8cf95a6c", - "typeFullFqn": "system.cards.entities_table" - }, - "c3d39b60-a668-7f5e-e6f4-cae27151f4aa": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "92a7d208-c143-ea20-5162-1da584532830", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "7e1ba820-9992-d52a-579b-20485abb3926" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "c3d39b60-a668-7f5e-e6f4-cae27151f4aa", - "typeFullFqn": "system.cards.entities_table" - }, - "f78a0d66-60cb-188f-857f-9acd4d24bd5a": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "498f090c-b1e5-df74-35d1-3ecf89d33f1c", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "91af27c1-b37c-2276-6022-a332e41b2b33" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "f78a0d66-60cb-188f-857f-9acd4d24bd5a", - "typeFullFqn": "system.cards.entities_table" - }, - "b81a171c-77c0-b857-21d2-cff02a1cb733": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "9175179d-a8db-848b-0762-e78da150e768", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "26cf8696-054b-13ec-7984-6fc5df20e6f1" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "b81a171c-77c0-b857-21d2-cff02a1cb733", - "typeFullFqn": "system.cards.entities_table" - }, - "0e399bef-01d2-4e4e-02d2-e254ebe91e56": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "1b70460b-428b-2aed-f23a-65927d3e67bb", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "1dcfaf24-32be-cd19-62d6-86d12cc6a7ef" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "0e399bef-01d2-4e4e-02d2-e254ebe91e56", - "typeFullFqn": "system.cards.entities_table" - }, - "819c1d39-de7c-8ac3-858e-0040d286823e": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "ae357478-b4c2-eee8-dde6-a6942fe6202f", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "ad2bc817-f3c4-150c-4672-8fe0c38aee8d" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "819c1d39-de7c-8ac3-858e-0040d286823e", - "typeFullFqn": "system.cards.entities_table" - }, - "d4f73f32-f719-98bb-d427-b5c8957e8f47": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "6eef4979-369f-c2cc-4894-96a84b6a668a", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "d1ad84cd-bd9c-4dca-e4a0-f444ae8598bd" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "d4f73f32-f719-98bb-d427-b5c8957e8f47", - "typeFullFqn": "system.cards.entities_table" - }, - "f16a258c-3f6c-9317-fda7-48b33d8fe8b9": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "9c8e3a63-01a1-64b5-fe44-4f58f8350340", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "bf80eef9-b879-9a08-40a4-488dbdefa125" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "f16a258c-3f6c-9317-fda7-48b33d8fe8b9", - "typeFullFqn": "system.cards.entities_table" - }, - "d1951ec7-ab13-87e4-bc05-ce2318dca353": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "c6501413-d823-29c4-992f-9ae6e8e25549", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "b5a406b3-cc0a-8a09-9aec-3f8befae5fb8" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "d1951ec7-ab13-87e4-bc05-ce2318dca353", - "typeFullFqn": "system.cards.entities_table" - }, - "75b6372d-4def-42b4-8774-4edf413a8b83": { - "type": "latest", - "sizeX": 7.5, - "sizeY": 6.5, - "config": { - "timewindow": { - "displayValue": "", - "selectedTab": 0, - "realtime": { - "realtimeType": 1, - "interval": 1000, - "timewindowMs": 86400000, - "quickInterval": "CURRENT_DAY" - }, - "history": { - "historyType": 0, - "interval": 1000, - "timewindowMs": 60000, - "fixedTimewindow": { - "startTimeMs": 1684327643501, - "endTimeMs": 1684414043501 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 200 - } - }, - "showTitle": true, - "backgroundColor": "rgb(255, 255, 255)", - "color": "rgba(0, 0, 0, 0.87)", - "padding": "4px", - "settings": { - "entitiesTitle": "Devices", - "enableSearch": true, - "enableSelectColumnDisplay": true, - "enableStickyHeader": true, - "enableStickyAction": true, - "reserveSpaceForHiddenAction": "true", - "displayEntityName": true, - "entityNameColumnTitle": "Device Name", - "displayEntityLabel": false, - "displayEntityType": false, - "displayPagination": true, - "defaultPageSize": 10, - "defaultSortOrder": "entityName", - "useRowStyleFunction": false - }, - "title": "Devices", - "dropShadow": true, - "enableFullscreen": true, - "titleStyle": { - "fontSize": "16px", - "fontWeight": 400, - "padding": "5px 10px 5px 10px" - }, - "useDashboardTimewindow": false, - "showLegend": false, - "datasources": [ - { - "type": "entity", - "name": null, - "entityAliasId": "a75d9031-ba51-8da4-81be-de65061b72f4", - "filterId": "2f04d6e5-8438-857a-ca78-ae78cc8b0c03", - "dataKeys": [ - { - "name": "type", - "type": "entityField", - "label": "Device Type", - "color": "#2196f3", - "settings": {}, - "_hash": 0.3129929097366162, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "active", - "type": "attribute", - "label": "Status", - "color": "#4caf50", - "settings": { - "columnWidth": "0px", - "useCellStyleFunction": false, - "useCellContentFunction": true, - "cellContentFunction": "let cssClass;\r\nswitch (value) {\r\n case \"Active\":\r\n cssClass = \"status status-active\";\r\n break;\r\n case \"Inactive\":\r\n default:\r\n cssClass = \"status status-inactive\";\r\n break;\r\n }\r\n \r\n return `${value}`;", - "defaultColumnVisibility": "visible", - "columnSelectionToDisplay": "enabled" - }, - "_hash": 0.5969880627410065, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": true, - "postFuncBody": "return value == 'true' ? \"Active\": \"Inactive\";" - }, - { - "name": "connectorName", - "type": "attribute", - "label": "Connector Name", - "color": "#f44336", - "settings": {}, - "_hash": 0.012483045440007778, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - }, - { - "name": "connectorType", - "type": "attribute", - "label": "Connector Type", - "color": "#ffc107", - "settings": {}, - "_hash": 0.6004192233378134, - "aggregationType": null, - "units": null, - "decimals": null, - "funcBody": null, - "usePostProcessing": null, - "postFuncBody": null - } - ], - "alarmFilterConfig": { - "statusList": [ - "ACTIVE" - ] - } - } - ], - "displayTimewindow": true, - "showTitleIcon": false, - "titleTooltip": "", - "widgetStyle": {}, - "widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n", - "pageSize": 1024, - "noDataDisplayMessage": "", - "enableDataExport": false, - "actions": { - "actionCellButton": [ - { - "name": "Show Device Info", - "icon": "info", - "useShowWidgetActionFunction": null, - "showWidgetActionFunction": "return true;", - "type": "custom", - "customFunction": "const url = `${window.location.origin + widgetContext.utils.getEntityDetailsPageURL(entityId.id, entityId.entityType)}`;\nwindow.open(url, '_blank');", - "openInSeparateDialog": false, - "openInPopover": false, - "id": "ec1dfba3-4b43-2491-8948-f602337f8a3b" - } - ] - } - }, - "row": 0, - "col": 0, - "id": "75b6372d-4def-42b4-8774-4edf413a8b83", - "typeFullFqn": "system.cards.entities_table" - } - }, - "states": { - "default": { - "name": "Gateway List", - "root": true, - "layouts": { - "main": { - "widgets": { - "23b9adc5-b3bd-040f-e5eb-a45925c73257": { - "sizeX": 48, - "sizeY": 23, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 48, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": true, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "configuration": { - "name": "Configuration", - "root": false, - "layouts": { - "main": { - "widgets": { - "d4a1ffc4-c9f6-7b15-bca0-17feb58bac99": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0, - "mobileHeight": null - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": true, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "connectors": { - "name": "Connectors", - "root": false, - "layouts": { - "main": { - "widgets": { - "02a05113-d878-b086-328e-75bd6f02b2bb": { - "sizeX": 24, - "sizeY": 12, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": true, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "gateway_details": { - "name": "${entityName}", - "root": false, - "layouts": { - "main": { - "widgets": { - "79f59106-758f-c428-8b93-4341faea705d": { - "sizeX": 40, - "sizeY": 3, - "row": 0, - "col": 0, - "mobileHeight": 5, - "mobileOrder": 2 - }, - "60dcf518-8fc3-3539-8ff8-ce94bda39f3a": { - "sizeX": 40, - "sizeY": 10, - "row": 12, - "col": 0 - }, - "fb9df382-6ef3-4aa6-bc13-8bf8e300ba19": { - "sizeX": 8, - "sizeY": 3, - "row": 0, - "col": 40, - "mobileOrder": 0, - "mobileHeight": 1 - }, - "61d149e8-b249-5526-e5d7-6ad58413982e": { - "sizeX": 8, - "sizeY": 19, - "row": 3, - "col": 40, - "mobileOrder": 1, - "mobileHeight": 3 - }, - "3d661190-7463-ba61-6793-503c85af67ec": { - "sizeX": 40, - "sizeY": 9, - "row": 3, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 48, - "margin": 10, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "logs": { - "name": "Logs", - "root": false, - "layouts": { - "main": { - "widgets": { - "27e6b37c-085e-824d-fb13-69651a545ec1": { - "sizeX": 48, - "sizeY": 16, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 48, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": true, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "connector_logs": { - "name": "Logs", - "root": false, - "layouts": { - "main": { - "widgets": { - "bcd04dbf-c82a-ca13-6e88-a74f32b4348a": { - "sizeX": 24, - "sizeY": 10, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "statistics": { - "name": "Statistics", - "root": false, - "layouts": { - "main": { - "widgets": { - "9b88dc51-b186-90ef-5afb-9648e6e2ac9a": { - "sizeX": 48, - "sizeY": 12, - "row": 10, - "col": 0 - }, - "c50e294a-265a-d13c-c772-b56c4df953fe": { - "sizeX": 48, - "sizeY": 10, - "row": 0, - "col": 0, - "mobileOrder": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 48, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "remote_shell": { - "name": "Remote Shell", - "root": false, - "layouts": { - "main": { - "widgets": { - "2a318e56-5c83-4f82-bf23-df72dd7e3edf": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 10, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "rpc": { - "name": "RPC", - "root": false, - "layouts": { - "main": { - "widgets": { - "da01e13f-c108-39fd-2a74-b40da088769a": { - "sizeX": 45, - "sizeY": 10, - "row": 12, - "col": 0, - "mobileOrder": 1 - }, - "ce3065bf-d898-2c03-6236-ce1b6cdf1f3f": { - "sizeX": 45, - "sizeY": 9, - "row": 22, - "col": 0, - "mobileOrder": 2 - }, - "46b68eb5-7e2d-bca1-c2ef-061b64575218": { - "sizeX": 45, - "sizeY": 12, - "row": 0, - "col": 0, - "mobileOrder": 0, - "mobileHeight": 8 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 45, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "connector_rpc": { - "name": "Connector RPC", - "root": false, - "layouts": { - "main": { - "widgets": { - "878c68fd-71cb-21d4-684a-b5b5a4526b43": { - "sizeX": 48, - "sizeY": 13, - "row": 0, - "col": 0, - "mobileOrder": 0, - "mobileHeight": 8 - }, - "0fc7dcf3-32a2-0159-738e-96956bf0d450": { - "sizeX": 48, - "sizeY": 10, - "row": 13, - "col": 0, - "mobileOrder": 1, - "mobileHeight": null - }, - "6e136fbc-545b-4926-c0a9-79348f35628a": { - "sizeX": 48, - "sizeY": 9, - "row": 23, - "col": 0, - "mobileOrder": 2 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 48, - "margin": 12, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70, - "outerMargin": true - } - } - } - }, - "gateway_devices_0": { - "name": "Gateway devices", - "root": false, - "layouts": { - "main": { - "widgets": { - "1615bd4e-c0a4-c32c-3706-3c83214cb8d7": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_1": { - "name": "gateway_devices_mqtt", - "root": false, - "layouts": { - "main": { - "widgets": { - "aafba3d8-a381-21c0-ecbe-446da3cdc041": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_2": { - "name": "gateway_devices_modbus", - "root": false, - "layouts": { - "main": { - "widgets": { - "7f676bb2-bde2-10e7-80d8-25dd734e8e22": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": true, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_3": { - "name": "gateway_devices_grpc", - "root": false, - "layouts": { - "main": { - "widgets": { - "d64482d8-001a-6f33-9b56-665530098fe5": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_4": { - "name": "gateway_devices_opcua", - "root": false, - "layouts": { - "main": { - "widgets": { - "bb27723a-989c-2327-5808-b56d490b93ab": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_6": { - "name": "gateway_devices_ble", - "root": false, - "layouts": { - "main": { - "widgets": { - "cf2eba6b-44f6-9cc2-6089-35c735f54898": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_7": { - "name": "gateway_devices_request", - "root": false, - "layouts": { - "main": { - "widgets": { - "3f6ed61b-f5af-13e3-7505-f69fd53f8211": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_8": { - "name": "gateway_devices_can", - "root": false, - "layouts": { - "main": { - "widgets": { - "b06cecaa-2806-65a9-782d-4f2d8cf95a6c": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_9": { - "name": "gateway_devices_bacnet", - "root": false, - "layouts": { - "main": { - "widgets": { - "c3d39b60-a668-7f5e-e6f4-cae27151f4aa": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_10": { - "name": "gateway_devices_odbc", - "root": false, - "layouts": { - "main": { - "widgets": { - "f78a0d66-60cb-188f-857f-9acd4d24bd5a": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_11": { - "name": "gateway_devices_rest", - "root": false, - "layouts": { - "main": { - "widgets": { - "b81a171c-77c0-b857-21d2-cff02a1cb733": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_12": { - "name": "gateway_devices_snmp", - "root": false, - "layouts": { - "main": { - "widgets": { - "0e399bef-01d2-4e4e-02d2-e254ebe91e56": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_13": { - "name": "gateway_devices_ftp", - "root": false, - "layouts": { - "main": { - "widgets": { - "819c1d39-de7c-8ac3-858e-0040d286823e": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_14": { - "name": "gateway_devices_socket", - "root": false, - "layouts": { - "main": { - "widgets": { - "d4f73f32-f719-98bb-d427-b5c8957e8f47": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_15": { - "name": "gateway_devices_xmpp", - "root": false, - "layouts": { - "main": { - "widgets": { - "f16a258c-3f6c-9317-fda7-48b33d8fe8b9": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_16": { - "name": "gateway_devices_ocpp", - "root": false, - "layouts": { - "main": { - "widgets": { - "d1951ec7-ab13-87e4-bc05-ce2318dca353": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - }, - "gateway_devices_17": { - "name": "gateway_devices_custom", - "root": false, - "layouts": { - "main": { - "widgets": { - "75b6372d-4def-42b4-8774-4edf413a8b83": { - "sizeX": 24, - "sizeY": 11, - "row": 0, - "col": 0 - } - }, - "gridSettings": { - "backgroundColor": "#eeeeee", - "columns": 24, - "margin": 0, - "outerMargin": true, - "backgroundSizeMode": "100%", - "autoFillHeight": false, - "backgroundImageUrl": null, - "mobileAutoFillHeight": false, - "mobileRowHeight": 70 - } - } - } - } - }, - "entityAliases": { - "9b7a1caa-3510-3daa-e05a-fc39b851d2c1": { - "id": "9b7a1caa-3510-3daa-e05a-fc39b851d2c1", - "alias": "Devices", - "filter": { - "type": "entityType", - "resolveMultiple": true, - "entityType": "DEVICE" - } - }, - "a2f01c66-96cf-49c5-303f-e6f21c559ee8": { - "id": "a2f01c66-96cf-49c5-303f-e6f21c559ee8", - "alias": "Selected Gateway", - "filter": { - "type": "stateEntity", - "resolveMultiple": false, - "stateEntityParamName": "", - "defaultStateEntity": null - } - }, - "a75d9031-ba51-8da4-81be-de65061b72f4": { - "id": "a75d9031-ba51-8da4-81be-de65061b72f4", - "alias": "GatewayDevices", - "filter": { - "type": "relationsQuery", - "resolveMultiple": true, - "rootStateEntity": true, - "stateEntityParamName": null, - "defaultStateEntity": null, - "rootEntity": null, - "direction": "FROM", - "maxLevel": 1, - "fetchLastLevelOnly": false, - "filters": [ - { - "relationType": "Created", - "entityTypes": [ - "DEVICE" - ] - } - ] - } - }, - "e3ea8714-bd05-67aa-8413-e07e93d53930": { - "id": "e3ea8714-bd05-67aa-8413-e07e93d53930", - "alias": "Current User", - "filter": { - "type": "singleEntity", - "resolveMultiple": false, - "singleEntity": { - "entityType": "CURRENT_USER", - "id": "13814000-1dd2-11b2-8080-808080808080" - } - } - } - }, - "filters": { - "abdfdcf9-75d4-001d-783a-920cb8e2a7e1": { - "id": "abdfdcf9-75d4-001d-783a-920cb8e2a7e1", - "filter": "Gateway", - "keyFilters": [ - { - "key": { - "type": "ENTITY_FIELD", - "key": "additionalInfo" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "CONTAINS", - "value": { - "defaultValue": "\"gateway\":true", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "bd33a006-fd40-3efc-7863-505c6e64f2b8": { - "id": "bd33a006-fd40-3efc-7863-505c6e64f2b8", - "filter": "isActive", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "active" - }, - "valueType": "BOOLEAN", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": true, - "dynamicValue": null - }, - "type": "BOOLEAN" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "956cf341-7cdf-82a7-ea2a-50cc9586f1f1": { - "id": "956cf341-7cdf-82a7-ea2a-50cc9586f1f1", - "filter": "isInactive", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "active" - }, - "valueType": "BOOLEAN", - "predicates": [ - { - "keyFilterPredicate": { - "type": "BOOLEAN", - "operation": "EQUAL", - "value": { - "defaultValue": false - } - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "bd9176e1-9e04-3e9b-d5a5-07b72bb9ae90": { - "id": "bd9176e1-9e04-3e9b-d5a5-07b72bb9ae90", - "filter": "gateway_devices_mqtt", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "mqtt", - "dynamicValue": null - }, - "ignoreCase": true, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "44038462-1bae-e075-7b31-283341cb2295": { - "id": "44038462-1bae-e075-7b31-283341cb2295", - "filter": "gateway_devices_modbus", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "modbus", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "884e9c34-7534-a483-99be-81b56cd91185": { - "id": "884e9c34-7534-a483-99be-81b56cd91185", - "filter": "gateway_devices_grpc", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "grpc", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "e91ca0e9-1653-4fbc-5f3d-3da021b1b415": { - "id": "e91ca0e9-1653-4fbc-5f3d-3da021b1b415", - "filter": "gateway_devices_opcua", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "opcua", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "3931abd5-2205-9386-6ea9-8e8a8131bb9d": { - "id": "3931abd5-2205-9386-6ea9-8e8a8131bb9d", - "filter": "gateway_devices_opcua_asyncio", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "opcua_asyncio", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "3f74cbaa-6353-5e88-a7e8-708fc0e18039": { - "id": "3f74cbaa-6353-5e88-a7e8-708fc0e18039", - "filter": "gateway_devices_ble", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "ble", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "c08eee84-64ee-73c4-8d96-c0df813a92cd": { - "id": "c08eee84-64ee-73c4-8d96-c0df813a92cd", - "filter": "gateway_devices_request", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "request", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "2f0af7f5-22ea-c0d5-3aef-7f2bb1b534ec": { - "id": "2f0af7f5-22ea-c0d5-3aef-7f2bb1b534ec", - "filter": "gateway_devices_can", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "can", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "92a7d208-c143-ea20-5162-1da584532830": { - "id": "92a7d208-c143-ea20-5162-1da584532830", - "filter": "gateway_devices_bacnet", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "bacnet", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "498f090c-b1e5-df74-35d1-3ecf89d33f1c": { - "id": "498f090c-b1e5-df74-35d1-3ecf89d33f1c", - "filter": "gateway_devices_odbc", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "odbc", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "9175179d-a8db-848b-0762-e78da150e768": { - "id": "9175179d-a8db-848b-0762-e78da150e768", - "filter": "gateway_devices_rest", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "rest", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "1b70460b-428b-2aed-f23a-65927d3e67bb": { - "id": "1b70460b-428b-2aed-f23a-65927d3e67bb", - "filter": "gateway_devices_snmp", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "snmp", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "ae357478-b4c2-eee8-dde6-a6942fe6202f": { - "id": "ae357478-b4c2-eee8-dde6-a6942fe6202f", - "filter": "gateway_devices_ftp", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "ftp", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "6eef4979-369f-c2cc-4894-96a84b6a668a": { - "id": "6eef4979-369f-c2cc-4894-96a84b6a668a", - "filter": "gateway_devices_socket", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "socket", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "9c8e3a63-01a1-64b5-fe44-4f58f8350340": { - "id": "9c8e3a63-01a1-64b5-fe44-4f58f8350340", - "filter": "gateway_devices_xmpp", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "xmpp", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "c6501413-d823-29c4-992f-9ae6e8e25549": { - "id": "c6501413-d823-29c4-992f-9ae6e8e25549", - "filter": "gateway_devices_ocpp", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "ocpp", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - }, - "2f04d6e5-8438-857a-ca78-ae78cc8b0c03": { - "id": "2f04d6e5-8438-857a-ca78-ae78cc8b0c03", - "filter": "gateway_devices_custom", - "keyFilters": [ - { - "key": { - "type": "ATTRIBUTE", - "key": "connectorType" - }, - "valueType": "STRING", - "predicates": [ - { - "keyFilterPredicate": { - "operation": "EQUAL", - "value": { - "defaultValue": "custom", - "dynamicValue": null - }, - "ignoreCase": false, - "type": "STRING" - }, - "userInfo": { - "editable": true, - "label": "", - "autogeneratedLabel": true, - "order": 0 - } - } - ] - } - ], - "editable": true - } - }, - "timewindow": { - "hideInterval": false, - "hideLastInterval": false, - "hideQuickInterval": false, - "hideAggregation": false, - "hideAggInterval": false, - "hideTimezone": false, - "selectedTab": 1, - "history": { - "historyType": 0, - "timewindowMs": 300000, - "interval": 120000, - "fixedTimewindow": { - "startTimeMs": 1686306375309.7058, - "endTimeMs": 1686307998839.1177 - }, - "quickInterval": "CURRENT_DAY" - }, - "aggregation": { - "type": "NONE", - "limit": 25000 - }, - "timezone": null - }, - "settings": { - "stateControllerId": "entity", - "showTitle": false, - "showDashboardsSelect": false, - "showEntitiesSelect": false, - "showDashboardTimewindow": true, - "showDashboardExport": false, - "toolbarAlwaysOpen": true, - "titleColor": "rgba(0,0,0,0.870588)", - "showDashboardLogo": false, - "dashboardLogoUrl": null, - "hideToolbar": false, - "showFilters": false, - "showUpdateDashboardImage": false, - "dashboardCss": "" - } - }, - "externalId": null, - "name": "Gateway" -} \ No newline at end of file diff --git a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java index ba0972a1e2..624822a6fc 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java +++ b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java @@ -19,7 +19,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Getter; import lombok.Setter; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -54,8 +53,8 @@ import org.thingsboard.server.service.install.update.ImagesUpdater; import java.io.IOException; import java.io.UncheckedIOException; -import java.nio.file.DirectoryStream; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -170,7 +169,6 @@ public class InstallScripts { loadRuleChainsFromPath(tenantId, edgeChainsDir); } - @SneakyThrows private void loadRuleChainsFromPath(TenantId tenantId, Path ruleChainsPath) { findRuleChainsFromPath(ruleChainsPath).forEach(path -> { try { @@ -182,12 +180,10 @@ public class InstallScripts { }); } - List findRuleChainsFromPath(Path ruleChainsPath) throws IOException { - List paths = new ArrayList<>(); - try (DirectoryStream dirStream = Files.newDirectoryStream(ruleChainsPath, path -> path.toString().endsWith(InstallScripts.JSON_EXT))) { - dirStream.forEach(paths::add); + List findRuleChainsFromPath(Path ruleChainsPath) { + try (Stream files = listDir(ruleChainsPath).filter(path -> path.toString().endsWith(InstallScripts.JSON_EXT))) { + return files.toList(); } - return paths; } public RuleChain createDefaultRuleChain(TenantId tenantId, String ruleChainName) { @@ -211,11 +207,11 @@ public class InstallScripts { return ruleChain; } - public void loadSystemWidgets() throws Exception { + public void loadSystemWidgets() { log.info("Loading system widgets"); Map widgetsBundlesMap = new HashMap<>(); Path widgetBundlesDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, WIDGET_BUNDLES_DIR); - try (DirectoryStream dirStream = Files.newDirectoryStream(widgetBundlesDir, path -> path.toString().endsWith(JSON_EXT))) { + try (Stream dirStream = listDir(widgetBundlesDir).filter(path -> path.toString().endsWith(JSON_EXT))) { dirStream.forEach( path -> { JsonNode widgetsBundleDescriptorJson; @@ -247,7 +243,7 @@ public class InstallScripts { } Path widgetTypesDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, WIDGET_TYPES_DIR); if (Files.exists(widgetTypesDir)) { - try (DirectoryStream dirStream = Files.newDirectoryStream(widgetTypesDir, path -> path.toString().endsWith(JSON_EXT))) { + try (Stream dirStream = listDir(widgetTypesDir).filter(path -> path.toString().endsWith(JSON_EXT))) { dirStream.forEach( path -> { try { @@ -300,12 +296,12 @@ public class InstallScripts { } } - private void loadSystemScadaSymbols() throws Exception { + private void loadSystemScadaSymbols() { log.info("Loading system SCADA symbols"); Path scadaSymbolsDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, SCADA_SYMBOLS_DIR); if (Files.exists(scadaSymbolsDir)) { WidgetTypeDetails scadaSymbolWidgetTemplate = widgetTypeService.findWidgetTypeDetailsByTenantIdAndFqn(TenantId.SYS_TENANT_ID, "scada_symbol"); - try (DirectoryStream dirStream = Files.newDirectoryStream(scadaSymbolsDir, path -> path.toString().endsWith(SVG_EXT))) { + try (Stream dirStream = listDir(scadaSymbolsDir).filter(path -> path.toString().endsWith(SVG_EXT))) { dirStream.forEach( path -> { try { @@ -404,11 +400,10 @@ public class InstallScripts { imagesUpdater.updateAssetProfilesImages(); } - @SneakyThrows public void loadSystemImages() { log.info("Loading system images..."); - Stream dashboardsFiles = Stream.concat(Files.list(Paths.get(getDataDir(), JSON_DIR, DEMO_DIR, DASHBOARDS_DIR)), - Files.list(Paths.get(getDataDir(), JSON_DIR, TENANT_DIR, DASHBOARDS_DIR))); + Stream dashboardsFiles = Stream.concat(listDir(Paths.get(getDataDir(), JSON_DIR, DEMO_DIR, DASHBOARDS_DIR)), + listDir(Paths.get(getDataDir(), JSON_DIR, TENANT_DIR, DASHBOARDS_DIR))); try (dashboardsFiles) { dashboardsFiles.forEach(file -> { try { @@ -431,25 +426,22 @@ public class InstallScripts { loadDashboardsFromDir(tenantId, customerId, dashboardsDir); } - @SneakyThrows private void loadDashboardsFromDir(TenantId tenantId, CustomerId customerId, Path dashboardsDir) { - try (DirectoryStream dirStream = Files.newDirectoryStream(dashboardsDir, path -> path.toString().endsWith(JSON_EXT))) { - dirStream.forEach( - path -> { - try { - JsonNode dashboardJson = JacksonUtil.toJsonNode(path.toFile()); - Dashboard dashboard = JacksonUtil.treeToValue(dashboardJson, Dashboard.class); - dashboard.setTenantId(tenantId); - Dashboard savedDashboard = dashboardService.saveDashboard(dashboard); - if (customerId != null && !customerId.isNullUid()) { - dashboardService.assignDashboardToCustomer(TenantId.SYS_TENANT_ID, savedDashboard.getId(), customerId); - } - } catch (Exception e) { - log.error("Unable to load dashboard from json: [{}]", path.toString()); - throw new RuntimeException("Unable to load dashboard from json", e); - } + try (Stream dashboards = listDir(dashboardsDir).filter(path -> path.toString().endsWith(JSON_EXT))) { + dashboards.forEach(path -> { + try { + JsonNode dashboardJson = JacksonUtil.toJsonNode(path.toFile()); + Dashboard dashboard = JacksonUtil.treeToValue(dashboardJson, Dashboard.class); + dashboard.setTenantId(tenantId); + Dashboard savedDashboard = dashboardService.saveDashboard(dashboard); + if (customerId != null && !customerId.isNullUid()) { + dashboardService.assignDashboardToCustomer(TenantId.SYS_TENANT_ID, savedDashboard.getId(), customerId); } - ); + } catch (Exception e) { + log.error("Unable to load dashboard from json: [{}]", path.toString()); + throw new RuntimeException("Unable to load dashboard from json", e); + } + }); } } @@ -464,9 +456,9 @@ public class InstallScripts { } } - public void createOAuth2Templates() throws Exception { + public void createOAuth2Templates() { Path oauth2ConfigTemplatesDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, OAUTH2_CONFIG_TEMPLATES_DIR); - try (DirectoryStream dirStream = Files.newDirectoryStream(oauth2ConfigTemplatesDir, path -> path.toString().endsWith(JSON_EXT))) { + try (Stream dirStream = listDir(oauth2ConfigTemplatesDir).filter(path -> path.toString().endsWith(JSON_EXT))) { dirStream.forEach( path -> { try { @@ -489,7 +481,7 @@ public class InstallScripts { public void loadSystemLwm2mResources() { Path resourceLwm2mPath = Paths.get(getDataDir(), MODELS_LWM2M_DIR); - try (DirectoryStream dirStream = Files.newDirectoryStream(resourceLwm2mPath, path -> path.toString().endsWith(InstallScripts.XML_EXT))) { + try (Stream dirStream = listDir(resourceLwm2mPath).filter(path -> path.toString().endsWith(InstallScripts.XML_EXT))) { dirStream.forEach( path -> { try { @@ -539,9 +531,11 @@ public class InstallScripts { } } - private Stream listDir(Path resourcesDir) { + private Stream listDir(Path dir) { try { - return Files.list(resourcesDir); + return Files.list(dir); + } catch (NoSuchFileException e) { + return Stream.empty(); } catch (IOException e) { throw new UncheckedIOException(e); } diff --git a/application/src/test/java/org/thingsboard/server/service/install/InstallScriptsTest.java b/application/src/test/java/org/thingsboard/server/service/install/InstallScriptsTest.java index 37b50fda4f..9d42c1d8ae 100644 --- a/application/src/test/java/org/thingsboard/server/service/install/InstallScriptsTest.java +++ b/application/src/test/java/org/thingsboard/server/service/install/InstallScriptsTest.java @@ -39,7 +39,6 @@ import org.thingsboard.server.dao.widget.WidgetTypeService; import org.thingsboard.server.dao.widget.WidgetsBundleService; import org.thingsboard.server.service.install.update.ImagesUpdater; -import java.io.IOException; import java.nio.file.Path; import java.util.Collections; import java.util.List; @@ -87,14 +86,14 @@ class InstallScriptsTest { } @Test - void testDefaultRuleChainsTemplates() throws IOException { + void testDefaultRuleChainsTemplates() { Path dir = installScripts.getTenantRuleChainsDir(); installScripts.findRuleChainsFromPath(dir) .forEach(this::validateRuleChainTemplate); } @Test - void testDefaultEdgeRuleChainsTemplates() throws IOException { + void testDefaultEdgeRuleChainsTemplates() { Path dir = installScripts.getEdgeRuleChainsDir(); installScripts.findRuleChainsFromPath(dir) .forEach(this::validateRuleChainTemplate); From 5998e60565cb8c927a6505a1fb545cfb3ecd68bf Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 29 Oct 2024 14:23:36 +0200 Subject: [PATCH 3/3] Fix gateway extension resource usage in widgets --- .../service/entitiy/dashboard/DashboardSyncService.java | 7 ++----- .../thingsboard/server/service/install/InstallScripts.java | 6 ++++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java index 8cdc30216a..ce946688ea 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java @@ -18,6 +18,7 @@ package org.thingsboard.server.service.entitiy.dashboard; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.ResourceType; import org.thingsboard.server.common.data.id.TenantId; @@ -39,6 +40,7 @@ import java.util.stream.Stream; @TbCoreComponent @RequiredArgsConstructor @Slf4j +@ConditionalOnProperty(value = "transport.gateway.dashboard.sync.enabled", havingValue = "true") public class DashboardSyncService { private final GitSyncService gitSyncService; @@ -46,8 +48,6 @@ public class DashboardSyncService { private final WidgetsBundleService widgetsBundleService; private final PartitionService partitionService; - @Value("${transport.gateway.dashboard.sync.enabled:true}") - private boolean enabled; @Value("${transport.gateway.dashboard.sync.repository_url:}") private String repoUrl; @Value("${transport.gateway.dashboard.sync.branch:main}") @@ -60,9 +60,6 @@ public class DashboardSyncService { @AfterStartUp(order = AfterStartUp.REGULAR_SERVICE) public void init() throws Exception { - if (!enabled) { - return; - } gitSyncService.registerSync(REPO_KEY, repoUrl, branch, TimeUnit.HOURS.toMillis(fetchFrequencyHours), this::update); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java index 624822a6fc..115208bc47 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java +++ b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java @@ -247,8 +247,10 @@ public class InstallScripts { dirStream.forEach( path -> { try { - JsonNode widgetTypeJson = JacksonUtil.toJsonNode(path.toFile()); - WidgetTypeDetails widgetTypeDetails = JacksonUtil.treeToValue(widgetTypeJson, WidgetTypeDetails.class); + String widgetTypeJson = Files.readString(path); + widgetTypeJson = resourceService.checkSystemResourcesUsage(widgetTypeJson, ResourceType.JS_MODULE); + + WidgetTypeDetails widgetTypeDetails = JacksonUtil.fromString(widgetTypeJson, WidgetTypeDetails.class); widgetTypeService.saveWidgetType(widgetTypeDetails); } catch (Exception e) { log.error("Unable to load widget type from json: [{}]", path.toString());