diff --git a/ui-ngx/src/app/core/utils.ts b/ui-ngx/src/app/core/utils.ts index 9a56fff033..0aae2f29c9 100644 --- a/ui-ngx/src/app/core/utils.ts +++ b/ui-ngx/src/app/core/utils.ts @@ -729,3 +729,37 @@ function prepareMessageFromData(data): string { return data; } } + +export function genNextLabel(name: string, datasources: Datasource[]): string { + let label = name; + let i = 1; + let matches = false; + if (datasources) { + do { + matches = false; + datasources.forEach((datasource) => { + if (datasource) { + if (datasource.dataKeys) { + datasource.dataKeys.forEach((dataKey) => { + if (dataKey.label === label) { + i++; + label = name + ' ' + i; + matches = true; + } + }); + } + if (datasource.latestDataKeys) { + datasource.latestDataKeys.forEach((dataKey) => { + if (dataKey.label === label) { + i++; + label = name + ' ' + i; + matches = true; + } + }); + } + } + }); + } while (matches); + } + return label; +} diff --git a/ui-ngx/src/app/modules/home/components/widget/data-key-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/data-key-config.component.ts index e484ac5e4d..97293c5ad9 100644 --- a/ui-ngx/src/app/modules/home/components/widget/data-key-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/data-key-config.component.ts @@ -19,7 +19,8 @@ import { PageComponent } from '@shared/components/page.component'; import { Store } from '@ngrx/store'; import { AppState } from '@core/core.state'; import { - ComparisonResultType, comparisonResultTypeTranslationMap, + ComparisonResultType, + comparisonResultTypeTranslationMap, DataKey, dataKeyAggregationTypeHintTranslationMap, Widget, @@ -50,6 +51,7 @@ import { WidgetService } from '@core/http/widget.service'; import { Dashboard } from '@shared/models/dashboard.models'; import { IAliasController } from '@core/api/widget-api.models'; import { aggregationTranslations, AggregationType, ComparisonDuration } from '@shared/models/time/time.models'; +import { genNextLabel } from '@core/utils'; @Component({ selector: 'tb-data-key-config', @@ -201,7 +203,7 @@ export class DataKeyConfigComponent extends PageComponent implements OnInit, Con let newLabel = this.dataKeyFormGroup.get('name').value; if (aggType !== AggregationType.NONE) { const prefix = this.translate.instant(aggregationTranslations.get(aggType)); - newLabel = this.genNextLabelWithAggregation(prefix + ' ' + newLabel); + newLabel = genNextLabel(prefix + ' ' + newLabel, this.widget.config.datasources); } this.dataKeyFormGroup.get('label').patchValue(newLabel); } @@ -241,30 +243,6 @@ export class DataKeyConfigComponent extends PageComponent implements OnInit, Con ); } - private genNextLabelWithAggregation(name: string): string { - let label = name; - let i = 1; - let matches = false; - const datasources = this.widget.config.datasources; - if (datasources) { - do { - matches = false; - datasources.forEach((datasource) => { - if (datasource && datasource?.dataKeys) { - datasource.dataKeys.forEach((dataKey) => { - if (dataKey.label === label) { - i++; - label = name + ' ' + i; - matches = true; - } - }); - } - }); - } while (matches); - } - return label; - } - registerOnChange(fn: any): void { this.propagateChange = fn; } diff --git a/ui-ngx/src/app/modules/home/components/widget/widget-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/widget-config.component.ts index b8683741e3..6283e45d70 100644 --- a/ui-ngx/src/app/modules/home/components/widget/widget-config.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/widget-config.component.ts @@ -20,7 +20,9 @@ import { Store } from '@ngrx/store'; import { AppState } from '@core/core.state'; import { DataKey, - Datasource, datasourcesHasAggregation, datasourcesHasOnlyComparisonAggregation, + Datasource, + datasourcesHasAggregation, + datasourcesHasOnlyComparisonAggregation, DatasourceType, datasourceTypeTranslationMap, defaultLegendConfig, @@ -42,7 +44,7 @@ import { Validators } from '@angular/forms'; import { WidgetConfigComponentData } from '@home/models/widget-component.models'; -import { deepClone, isDefined, isObject } from '@app/core/utils'; +import { deepClone, genNextLabel, isDefined, isObject } from '@app/core/utils'; import { alarmFields, AlarmSearchStatus, @@ -74,7 +76,6 @@ import { FilterDialogComponent, FilterDialogData } from '@home/components/filter import { COMMA, ENTER, SEMICOLON } from '@angular/cdk/keycodes'; import { MatChipInputEvent } from '@angular/material/chips'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; -import { AggregationType } from '@shared/models/time/time.models'; const emptySettingsSchema: JsonSchema = { type: 'object', @@ -794,7 +795,8 @@ export class WidgetConfigComponent extends PageComponent implements OnInit, Cont label = this.translate.instant(keyField.name); } } - label = this.genNextLabel(label); + const datasources = this.widgetType === widgetType.alarm ? [this.modelValue.config.alarmSource] : this.modelValue.config.datasources; + label = genNextLabel(label, datasources); const result: DataKey = { name: chip, type, @@ -819,41 +821,6 @@ export class WidgetConfigComponent extends PageComponent implements OnInit, Cont } } - private genNextLabel(name: string): string { - let label = name; - let i = 1; - let matches = false; - const datasources = this.widgetType === widgetType.alarm ? [this.modelValue.config.alarmSource] : this.modelValue.config.datasources; - if (datasources) { - do { - matches = false; - datasources.forEach((datasource) => { - if (datasource) { - if (datasource.dataKeys) { - datasource.dataKeys.forEach((dataKey) => { - if (dataKey.label === label) { - i++; - label = name + ' ' + i; - matches = true; - } - }); - } - if (datasource.latestDataKeys) { - datasource.latestDataKeys.forEach((dataKey) => { - if (dataKey.label === label) { - i++; - label = name + ' ' + i; - matches = true; - } - }); - } - } - }); - } while (matches); - } - return label; - } - private genNextColor(): string { let i = 0; const datasources = this.widgetType === widgetType.alarm ? [this.modelValue.config.alarmSource] : this.modelValue.config.datasources;