From 9c0ff5f917eda6c64087b0458d1054eca53253df Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Wed, 13 Jul 2022 11:02:05 +0300 Subject: [PATCH] UI: Fixed incorrect import/export/copy alarm type widgets --- .../core/services/dashboard-utils.service.ts | 5 +-- .../app/core/services/item-buffer.service.ts | 34 ++++++++++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ui-ngx/src/app/core/services/dashboard-utils.service.ts b/ui-ngx/src/app/core/services/dashboard-utils.service.ts index e95990e530..c157ca869e 100644 --- a/ui-ngx/src/app/core/services/dashboard-utils.service.ts +++ b/ui-ngx/src/app/core/services/dashboard-utils.service.ts @@ -30,7 +30,7 @@ import { WidgetLayout } from '@shared/models/dashboard.models'; import { isDefined, isString, isUndefined } from '@core/utils'; -import { Datasource, DatasourceType, Widget } from '@app/shared/models/widget.models'; +import { Datasource, DatasourceType, Widget, widgetType } from '@app/shared/models/widget.models'; import { EntityType } from '@shared/models/entity-type.models'; import { AliasFilterType, EntityAlias, EntityAliasFilter } from '@app/shared/models/alias.models'; import { EntityId } from '@app/shared/models/id/entity-id'; @@ -106,7 +106,8 @@ export class DashboardUtilsService { const targetDevicesByAliasId: {[aliasId: string]: Array>} = {}; for (const widgetId of Object.keys(dashboard.configuration.widgets)) { const widget = dashboard.configuration.widgets[widgetId]; - widget.config.datasources.forEach((datasource) => { + const datasources = widget.type === widgetType.alarm ? [widget.config.alarmSource] : widget.config.datasources; + datasources.forEach((datasource) => { if (datasource.entityAliasId) { const aliasId = datasource.entityAliasId; let aliasDatasources = datasourcesByAliasId[aliasId]; diff --git a/ui-ngx/src/app/core/services/item-buffer.service.ts b/ui-ngx/src/app/core/services/item-buffer.service.ts index b7ec22eb5a..f878c18001 100644 --- a/ui-ngx/src/app/core/services/item-buffer.service.ts +++ b/ui-ngx/src/app/core/services/item-buffer.service.ts @@ -17,7 +17,14 @@ import { Injectable } from '@angular/core'; import { Dashboard, DashboardLayoutId } from '@app/shared/models/dashboard.models'; import { AliasesInfo, EntityAlias, EntityAliases, EntityAliasInfo } from '@shared/models/alias.models'; -import { DatasourceType, Widget, WidgetPosition, WidgetSize } from '@shared/models/widget.models'; +import { + Datasource, + DatasourceType, + Widget, + WidgetPosition, + WidgetSize, + widgetType +} from '@shared/models/widget.models'; import { DashboardUtilsService } from '@core/services/dashboard-utils.service'; import { deepClone, isEqual } from '@core/utils'; import { UtilsService } from '@core/services/utils.service'; @@ -87,12 +94,13 @@ export class ItemBufferService { }; const originalColumns = this.getOriginalColumns(dashboard, sourceState, sourceLayout); const originalSize = this.getOriginalSize(dashboard, sourceState, sourceLayout, widget); + const datasources: Datasource[] = widget.type === widgetType.alarm ? [widget.config.alarmSource] : widget.config.datasources; if (widget.config && dashboard.configuration && dashboard.configuration.entityAliases) { let entityAlias: EntityAlias; - if (widget.config.datasources) { - for (let i = 0; i < widget.config.datasources.length; i++) { - const datasource = widget.config.datasources[i]; + if (datasources) { + for (let i = 0; i < datasources.length; i++) { + const datasource = datasources[i]; if ((datasource.type === DatasourceType.entity || datasource.type === DatasourceType.entityCount) && datasource.entityAliasId) { entityAlias = dashboard.configuration.entityAliases[datasource.entityAliasId]; if (entityAlias) { @@ -116,9 +124,9 @@ export class ItemBufferService { if (widget.config && dashboard.configuration && dashboard.configuration.filters) { let filter: Filter; - if (widget.config.datasources) { - for (let i = 0; i < widget.config.datasources.length; i++) { - const datasource = widget.config.datasources[i]; + if (datasources) { + for (let i = 0; i < datasources.length; i++) { + const datasource = datasources[i]; if ((datasource.type === DatasourceType.entity || datasource.type === DatasourceType.entityCount) && datasource.filterId) { filter = dashboard.configuration.filters[datasource.filterId]; if (filter) { @@ -438,7 +446,11 @@ export class ItemBufferService { const datasourceIndex = Number(datasourceIndexStr); aliasInfo = aliasesInfo.datasourceAliases[datasourceIndex]; newAliasId = this.getEntityAliasId(entityAliases, aliasInfo); - widget.config.datasources[datasourceIndex].entityAliasId = newAliasId; + if (widget.type === widgetType.alarm) { + widget.config.alarmSource.entityAliasId = newAliasId; + } else { + widget.config.datasources[datasourceIndex].entityAliasId = newAliasId; + } } for (const targetDeviceAliasIndexStr of Object.keys(aliasesInfo.targetDeviceAliases)) { const targetDeviceAliasIndex = Number(targetDeviceAliasIndexStr); @@ -457,7 +469,11 @@ export class ItemBufferService { const datasourceIndex = Number(datasourceIndexStr); filterInfo = filtersInfo.datasourceFilters[datasourceIndex]; newFilterId = this.getFilterId(filters, filterInfo); - widget.config.datasources[datasourceIndex].filterId = newFilterId; + if (widget.type === widgetType.alarm) { + widget.config.alarmSource.filterId = newFilterId; + } else { + widget.config.datasources[datasourceIndex].filterId = newFilterId; + } } return filters; }