Browse Source

Map widget: validate and update timewindow config on init; refactoring

pull/14685/head
Ekaterina Chantsova 9 months ago
parent
commit
bb451ed5ad
  1. 24
      ui-ngx/src/app/core/services/dashboard-utils.service.ts
  2. 25
      ui-ngx/src/app/modules/home/components/widget/config/basic/map/map-basic-config.component.ts
  3. 3
      ui-ngx/src/app/modules/home/components/widget/lib/maps/map.ts

24
ui-ngx/src/app/core/services/dashboard-utils.service.ts

@ -58,7 +58,7 @@ import {
WidgetConfigMode,
WidgetSize,
widgetType,
WidgetTypeDescriptor, widgetTypeHasTimewindow
WidgetTypeDescriptor
} from '@app/shared/models/widget.models';
import { EntityType } from '@shared/models/entity-type.models';
import { AliasFilterType, EntityAlias, EntityAliasFilter } from '@app/shared/models/alias.models';
@ -71,7 +71,11 @@ import { MediaBreakpoints } from '@shared/models/constants';
import { TranslateService } from '@ngx-translate/core';
import { DashboardPageLayout } from '@home/components/dashboard-page/dashboard-page.models';
import { maxGridsterCol, maxGridsterRow } from '@home/models/dashboard-component.models';
import { findWidgetModelDefinition, widgetHasTimewindow } from '@shared/models/widget/widget-model.definition';
import {
findWidgetModelDefinition,
widgetHasTimewindow,
WidgetModelDefinition
} from '@shared/models/widget/widget-model.definition';
@Injectable({
providedIn: 'root'
@ -243,7 +247,12 @@ export class DashboardUtilsService {
}
public validateAndUpdateWidget(widget: Widget): Widget {
widget.config = this.validateAndUpdateWidgetConfig(widget.config, widget.type);
const widgetDefinition = widget.config ? findWidgetModelDefinition(widget) : null;
if (widgetDefinition) {
widget.config = this.validateAndUpdateWidgetConfigWithModelDefinition(widget, widgetDefinition);
} else {
widget.config = this.validateAndUpdateWidgetConfig(widget.config, widget.type);
}
widget = this.validateAndUpdateWidgetTypeFqn(widget);
this.removeTimewindowConfigIfUnused(widget);
if (isDefined((widget as any).title)) {
@ -363,6 +372,15 @@ export class DashboardUtilsService {
return deepClean(widgetConfig, {cleanKeys: ['_hash'], cleanOnlyKey: true});
}
public validateAndUpdateWidgetConfigWithModelDefinition(widget: Widget, widgetDefinition: WidgetModelDefinition): WidgetConfig {
const widgetConfig = widget.config;
if (widget.type === widgetType.latest && widgetDefinition.hasTimewindow(widget)) {
widgetConfig.timewindow = initModelFromDefaultTimewindow(widgetConfig.timewindow, true,
widgetDefinition.datasourcesHasOnlyComparisonAggregation(widget), this.timeService, false);
}
return deepClean(widgetConfig, {cleanKeys: ['_hash'], cleanOnlyKey: true});
}
private removeTimewindowConfigIfUnused(widget: Widget) {
const hasTimewindow = widgetHasTimewindow(widget);
if (!hasTimewindow || widget.config.useDashboardTimewindow) {

25
ui-ngx/src/app/modules/home/components/widget/config/basic/map/map-basic-config.component.ts

@ -24,16 +24,12 @@ import { WidgetConfigComponentData } from '@home/models/widget-component.models'
import { isDefinedAndNotNull, isUndefined, mergeDeepIgnoreArray } from '@core/utils';
import { mapWidgetDefaultSettings, MapWidgetSettings } from '@home/components/widget/lib/maps/map-widget.models';
import { cssSizeToStrSize, resolveCssSize } from '@shared/models/widget-settings.models';
import {
datasourcesHasOnlyComparisonAggregation,
WidgetConfig,
widgetTitleAutocompleteValues
} from '@shared/models/widget.models';
import { WidgetConfig, widgetTitleAutocompleteValues } from '@shared/models/widget.models';
import {
getTimewindowConfig,
setTimewindowConfig
} from '@home/components/widget/config/timewindow-config-panel.component';
import { findWidgetModelDefinition } from '@shared/models/widget/widget-model.definition';
import { MapModelDefinition } from '@shared/models/widget/maps/map-model.definition';
@Component({
selector: 'tb-map-basic-config',
@ -92,6 +88,8 @@ export class MapBasicConfigComponent extends BasicWidgetConfigComponent {
this.mapWidgetConfigForm = this.fb.group({
mapSettings: [settings, []],
timewindowConfig: [getTimewindowConfig(configData.config), []],
showTitle: [configData.config.showTitle, []],
title: [configData.config.title, []],
titleFont: [configData.config.titleFont, []],
@ -111,7 +109,6 @@ export class MapBasicConfigComponent extends BasicWidgetConfigComponent {
actions: [configData.config.actions || {}, []]
});
this.mapWidgetConfigForm.addControl('timewindowConfig', this.fb.control(getTimewindowConfig(configData.config)));
}
protected prepareOutputConfig(config: any): WidgetConfigComponentData {
@ -191,12 +188,7 @@ export class MapBasicConfigComponent extends BasicWidgetConfigComponent {
if (this.trip) {
return true;
} else {
const widgetDefinition = findWidgetModelDefinition(this.widget);
if (widgetDefinition) {
return widgetDefinition.hasTimewindow(this.widget);
} else {
return false;
}
return this.widget ? MapModelDefinition.hasTimewindow(this.widget) : false;
}
}
@ -204,12 +196,7 @@ export class MapBasicConfigComponent extends BasicWidgetConfigComponent {
if (this.trip) {
return false;
} else {
const widgetDefinition = findWidgetModelDefinition(this.widget);
if (widgetDefinition) {
return widgetDefinition.datasourcesHasOnlyComparisonAggregation(this.widget);
} else {
return false;
}
return this.widget ? MapModelDefinition.datasourcesHasOnlyComparisonAggregation(this.widget) : false;
}
}

3
ui-ngx/src/app/modules/home/components/widget/lib/maps/map.ts

@ -342,8 +342,7 @@ export abstract class TbMap<S extends BaseMapSettings> {
const dataLayersSubscriptionOptions: WidgetSubscriptionOptions = {
datasources,
hasDataPageLink: true,
useDashboardTimewindow: isDefined(this.ctx.widgetConfig.useDashboardTimewindow)
? this.ctx.widgetConfig.useDashboardTimewindow : true,
useDashboardTimewindow: this.ctx.widgetConfig.useDashboardTimewindow ?? true,
type: widgetType.latest,
callbacks: {
onDataUpdated: (subscription) => {

Loading…
Cancel
Save