Merge pull request #6936 from vvlladd28/bug/import-export/alarm-table
[3.4] UI: Fixed incorrect import/export/copy alarm type widgets
This commit is contained in:
		
						commit
						5f65cc4929
					
				@ -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<Array<string>>} = {};
 | 
			
		||||
    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];
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user