Timewindow: leave only selected realtime/history and aggregation parameters for saving and remove others from configuration
This commit is contained in:
		
							parent
							
								
									3491419dd9
								
							
						
					
					
						commit
						083078b7f5
					
				@ -295,7 +295,8 @@ export class DashboardUtilsService {
 | 
			
		||||
    widgetConfig.datasources = this.validateAndUpdateDatasources(widgetConfig.datasources);
 | 
			
		||||
    if (type === widgetType.latest) {
 | 
			
		||||
      const onlyHistoryTimewindow = datasourcesHasOnlyComparisonAggregation(widgetConfig.datasources);
 | 
			
		||||
      widgetConfig.timewindow = initModelFromDefaultTimewindow(widgetConfig.timewindow, true, onlyHistoryTimewindow, this.timeService);
 | 
			
		||||
      widgetConfig.timewindow = initModelFromDefaultTimewindow(widgetConfig.timewindow, true,
 | 
			
		||||
        onlyHistoryTimewindow, this.timeService, false);
 | 
			
		||||
    } else if (type === widgetType.rpc) {
 | 
			
		||||
      if (widgetConfig.targetDeviceAliasIds && widgetConfig.targetDeviceAliasIds.length) {
 | 
			
		||||
        widgetConfig.targetDevice = {
 | 
			
		||||
 | 
			
		||||
@ -152,73 +152,73 @@ export class TimewindowConfigDialogComponent extends PageComponent implements On
 | 
			
		||||
    this.timewindowForm = this.fb.group({
 | 
			
		||||
      selectedTab: [isDefined(this.timewindow.selectedTab) ? this.timewindow.selectedTab : TimewindowType.REALTIME],
 | 
			
		||||
      realtime: this.fb.group({
 | 
			
		||||
        realtimeType: [ isDefined(realtime?.realtimeType) ? this.timewindow.realtime.realtimeType : RealtimeWindowType.LAST_INTERVAL ],
 | 
			
		||||
        timewindowMs: [ isDefined(realtime?.timewindowMs) ? this.timewindow.realtime.timewindowMs : null ],
 | 
			
		||||
        interval: [ isDefined(realtime?.interval) ? this.timewindow.realtime.interval : null ],
 | 
			
		||||
        quickInterval: [ isDefined(realtime?.quickInterval) ? this.timewindow.realtime.quickInterval : null ],
 | 
			
		||||
        disableCustomInterval: [ isDefinedAndNotNull(this.timewindow.realtime?.disableCustomInterval)
 | 
			
		||||
          ? this.timewindow.realtime?.disableCustomInterval : false ],
 | 
			
		||||
        disableCustomGroupInterval: [ isDefinedAndNotNull(this.timewindow.realtime?.disableCustomGroupInterval)
 | 
			
		||||
          ? this.timewindow.realtime?.disableCustomGroupInterval : false ],
 | 
			
		||||
        hideInterval: [ isDefinedAndNotNull(this.timewindow.realtime.hideInterval)
 | 
			
		||||
          ? this.timewindow.realtime.hideInterval : false ],
 | 
			
		||||
        realtimeType: [ isDefined(realtime?.realtimeType) ? realtime.realtimeType : RealtimeWindowType.LAST_INTERVAL ],
 | 
			
		||||
        timewindowMs: [ isDefined(realtime?.timewindowMs) ? realtime.timewindowMs : null ],
 | 
			
		||||
        interval: [ isDefined(realtime?.interval) ? realtime.interval : null ],
 | 
			
		||||
        quickInterval: [ isDefined(realtime?.quickInterval) ? realtime.quickInterval : null ],
 | 
			
		||||
        disableCustomInterval: [ isDefinedAndNotNull(realtime?.disableCustomInterval)
 | 
			
		||||
          ? realtime.disableCustomInterval : false ],
 | 
			
		||||
        disableCustomGroupInterval: [ isDefinedAndNotNull(realtime?.disableCustomGroupInterval)
 | 
			
		||||
          ? realtime.disableCustomGroupInterval : false ],
 | 
			
		||||
        hideInterval: [ isDefinedAndNotNull(realtime?.hideInterval)
 | 
			
		||||
          ? realtime.hideInterval : false ],
 | 
			
		||||
        hideLastInterval: [{
 | 
			
		||||
          value: isDefinedAndNotNull(this.timewindow.realtime.hideLastInterval)
 | 
			
		||||
            ? this.timewindow.realtime.hideLastInterval : false,
 | 
			
		||||
          disabled: this.timewindow.realtime.hideInterval
 | 
			
		||||
          value: isDefinedAndNotNull(realtime?.hideLastInterval)
 | 
			
		||||
            ? realtime.hideLastInterval : false,
 | 
			
		||||
          disabled: realtime?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        hideQuickInterval: [{
 | 
			
		||||
          value: isDefinedAndNotNull(this.timewindow.realtime.hideQuickInterval)
 | 
			
		||||
            ? this.timewindow.realtime.hideQuickInterval : false,
 | 
			
		||||
          disabled: this.timewindow.realtime.hideInterval
 | 
			
		||||
          value: isDefinedAndNotNull(realtime?.hideQuickInterval)
 | 
			
		||||
            ? realtime.hideQuickInterval : false,
 | 
			
		||||
          disabled: realtime?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        advancedParams: this.fb.group({
 | 
			
		||||
          allowedLastIntervals: [ isDefinedAndNotNull(this.timewindow.realtime?.advancedParams?.allowedLastIntervals)
 | 
			
		||||
            ? this.timewindow.realtime.advancedParams.allowedLastIntervals : null ],
 | 
			
		||||
          allowedQuickIntervals: [ isDefinedAndNotNull(this.timewindow.realtime?.advancedParams?.allowedQuickIntervals)
 | 
			
		||||
            ? this.timewindow.realtime.advancedParams.allowedQuickIntervals : null ],
 | 
			
		||||
          lastAggIntervalsConfig: [ isDefinedAndNotNull(this.timewindow.realtime?.advancedParams?.lastAggIntervalsConfig)
 | 
			
		||||
            ? this.timewindow.realtime.advancedParams.lastAggIntervalsConfig : null ],
 | 
			
		||||
          quickAggIntervalsConfig: [ isDefinedAndNotNull(this.timewindow.realtime?.advancedParams?.quickAggIntervalsConfig)
 | 
			
		||||
            ? this.timewindow.realtime.advancedParams.quickAggIntervalsConfig : null ]
 | 
			
		||||
          allowedLastIntervals: [ isDefinedAndNotNull(realtime?.advancedParams?.allowedLastIntervals)
 | 
			
		||||
            ? realtime.advancedParams.allowedLastIntervals : null ],
 | 
			
		||||
          allowedQuickIntervals: [ isDefinedAndNotNull(realtime?.advancedParams?.allowedQuickIntervals)
 | 
			
		||||
            ? realtime.advancedParams.allowedQuickIntervals : null ],
 | 
			
		||||
          lastAggIntervalsConfig: [ isDefinedAndNotNull(realtime?.advancedParams?.lastAggIntervalsConfig)
 | 
			
		||||
            ? realtime.advancedParams.lastAggIntervalsConfig : null ],
 | 
			
		||||
          quickAggIntervalsConfig: [ isDefinedAndNotNull(realtime?.advancedParams?.quickAggIntervalsConfig)
 | 
			
		||||
            ? realtime.advancedParams.quickAggIntervalsConfig : null ]
 | 
			
		||||
        })
 | 
			
		||||
      }),
 | 
			
		||||
      history: this.fb.group({
 | 
			
		||||
        historyType: [ isDefined(history?.historyType) ? this.timewindow.history.historyType : HistoryWindowType.LAST_INTERVAL ],
 | 
			
		||||
        timewindowMs: [ isDefined(history?.timewindowMs) ? this.timewindow.history.timewindowMs : null ],
 | 
			
		||||
        interval: [ isDefined(history?.interval) ? this.timewindow.history.interval : null ],
 | 
			
		||||
        fixedTimewindow: [ isDefined(history?.fixedTimewindow) ? this.timewindow.history.fixedTimewindow : null ],
 | 
			
		||||
        quickInterval: [ isDefined(history?.quickInterval) ? this.timewindow.history.quickInterval : null ],
 | 
			
		||||
        disableCustomInterval: [ isDefinedAndNotNull(this.timewindow.history?.disableCustomInterval)
 | 
			
		||||
          ? this.timewindow.history?.disableCustomInterval : false ],
 | 
			
		||||
        disableCustomGroupInterval: [ isDefinedAndNotNull(this.timewindow.history?.disableCustomGroupInterval)
 | 
			
		||||
          ? this.timewindow.history?.disableCustomGroupInterval : false ],
 | 
			
		||||
        hideInterval: [ isDefinedAndNotNull(this.timewindow.history.hideInterval)
 | 
			
		||||
          ? this.timewindow.history.hideInterval : false ],
 | 
			
		||||
        historyType: [ isDefined(history?.historyType) ? history.historyType : HistoryWindowType.LAST_INTERVAL ],
 | 
			
		||||
        timewindowMs: [ isDefined(history?.timewindowMs) ? history.timewindowMs : null ],
 | 
			
		||||
        interval: [ isDefined(history?.interval) ? history.interval : null ],
 | 
			
		||||
        fixedTimewindow: [ isDefined(history?.fixedTimewindow) ? history.fixedTimewindow : null ],
 | 
			
		||||
        quickInterval: [ isDefined(history?.quickInterval) ? history.quickInterval : null ],
 | 
			
		||||
        disableCustomInterval: [ isDefinedAndNotNull(history?.disableCustomInterval)
 | 
			
		||||
          ? history.disableCustomInterval : false ],
 | 
			
		||||
        disableCustomGroupInterval: [ isDefinedAndNotNull(history?.disableCustomGroupInterval)
 | 
			
		||||
          ? history.disableCustomGroupInterval : false ],
 | 
			
		||||
        hideInterval: [ isDefinedAndNotNull(history?.hideInterval)
 | 
			
		||||
          ? history.hideInterval : false ],
 | 
			
		||||
        hideLastInterval: [{
 | 
			
		||||
          value: isDefinedAndNotNull(this.timewindow.history.hideLastInterval)
 | 
			
		||||
            ? this.timewindow.history.hideLastInterval : false,
 | 
			
		||||
          disabled: this.timewindow.history.hideInterval
 | 
			
		||||
          value: isDefinedAndNotNull(history?.hideLastInterval)
 | 
			
		||||
            ? history.hideLastInterval : false,
 | 
			
		||||
          disabled: history?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        hideQuickInterval: [{
 | 
			
		||||
          value: isDefinedAndNotNull(this.timewindow.history.hideQuickInterval)
 | 
			
		||||
            ? this.timewindow.history.hideQuickInterval : false,
 | 
			
		||||
          disabled: this.timewindow.history.hideInterval
 | 
			
		||||
          value: isDefinedAndNotNull(history?.hideQuickInterval)
 | 
			
		||||
            ? history.hideQuickInterval : false,
 | 
			
		||||
          disabled: history?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        hideFixedInterval: [{
 | 
			
		||||
          value: isDefinedAndNotNull(this.timewindow.history.hideFixedInterval)
 | 
			
		||||
            ? this.timewindow.history.hideFixedInterval : false,
 | 
			
		||||
          disabled: this.timewindow.history.hideInterval
 | 
			
		||||
          value: isDefinedAndNotNull(history?.hideFixedInterval)
 | 
			
		||||
            ? history.hideFixedInterval : false,
 | 
			
		||||
          disabled: history?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        advancedParams: this.fb.group({
 | 
			
		||||
          allowedLastIntervals: [ isDefinedAndNotNull(this.timewindow.history?.advancedParams?.allowedLastIntervals)
 | 
			
		||||
            ? this.timewindow.history.advancedParams.allowedLastIntervals : null ],
 | 
			
		||||
          allowedQuickIntervals: [ isDefinedAndNotNull(this.timewindow.history?.advancedParams?.allowedQuickIntervals)
 | 
			
		||||
            ? this.timewindow.history.advancedParams.allowedQuickIntervals : null ],
 | 
			
		||||
          lastAggIntervalsConfig: [ isDefinedAndNotNull(this.timewindow.history?.advancedParams?.lastAggIntervalsConfig)
 | 
			
		||||
            ? this.timewindow.history.advancedParams.lastAggIntervalsConfig : null ],
 | 
			
		||||
          quickAggIntervalsConfig: [ isDefinedAndNotNull(this.timewindow.history?.advancedParams?.quickAggIntervalsConfig)
 | 
			
		||||
            ? this.timewindow.history.advancedParams.quickAggIntervalsConfig : null ]
 | 
			
		||||
          allowedLastIntervals: [ isDefinedAndNotNull(history?.advancedParams?.allowedLastIntervals)
 | 
			
		||||
            ? history.advancedParams.allowedLastIntervals : null ],
 | 
			
		||||
          allowedQuickIntervals: [ isDefinedAndNotNull(history?.advancedParams?.allowedQuickIntervals)
 | 
			
		||||
            ? history.advancedParams.allowedQuickIntervals : null ],
 | 
			
		||||
          lastAggIntervalsConfig: [ isDefinedAndNotNull(history?.advancedParams?.lastAggIntervalsConfig)
 | 
			
		||||
            ? history.advancedParams.lastAggIntervalsConfig : null ],
 | 
			
		||||
          quickAggIntervalsConfig: [ isDefinedAndNotNull(history?.advancedParams?.quickAggIntervalsConfig)
 | 
			
		||||
            ? history.advancedParams.quickAggIntervalsConfig : null ]
 | 
			
		||||
        })
 | 
			
		||||
      }),
 | 
			
		||||
      aggregation: this.fb.group({
 | 
			
		||||
 | 
			
		||||
@ -27,12 +27,14 @@ import {
 | 
			
		||||
} from '@angular/core';
 | 
			
		||||
import {
 | 
			
		||||
  AggregationType,
 | 
			
		||||
  clearTimewindowConfig,
 | 
			
		||||
  currentHistoryTimewindow,
 | 
			
		||||
  currentRealtimeTimewindow,
 | 
			
		||||
  historyAllowedAggIntervals,
 | 
			
		||||
  HistoryWindowType,
 | 
			
		||||
  historyWindowTypeTranslations,
 | 
			
		||||
  Interval,
 | 
			
		||||
  MINUTE,
 | 
			
		||||
  QuickTimeInterval,
 | 
			
		||||
  realtimeAllowedAggIntervals,
 | 
			
		||||
  RealtimeWindowType,
 | 
			
		||||
@ -167,14 +169,14 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((this.isEdit || !this.timewindow.realtime.hideLastInterval) && !this.quickIntervalOnly) {
 | 
			
		||||
    if ((this.isEdit || !this.timewindow.realtime?.hideLastInterval) && !this.quickIntervalOnly) {
 | 
			
		||||
      this.realtimeTimewindowOptions.push({
 | 
			
		||||
        name: this.translate.instant(realtimeWindowTypeTranslations.get(RealtimeWindowType.LAST_INTERVAL)),
 | 
			
		||||
        value: this.realtimeTypes.LAST_INTERVAL
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.isEdit || !this.timewindow.realtime.hideQuickInterval || this.quickIntervalOnly) {
 | 
			
		||||
    if (this.isEdit || !this.timewindow.realtime?.hideQuickInterval || this.quickIntervalOnly) {
 | 
			
		||||
      this.realtimeTimewindowOptions.push({
 | 
			
		||||
        name: this.translate.instant(realtimeWindowTypeTranslations.get(RealtimeWindowType.INTERVAL)),
 | 
			
		||||
        value: this.realtimeTypes.INTERVAL
 | 
			
		||||
@ -188,21 +190,21 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history.hideLastInterval) {
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history?.hideLastInterval) {
 | 
			
		||||
      this.historyTimewindowOptions.push({
 | 
			
		||||
        name: this.translate.instant(historyWindowTypeTranslations.get(HistoryWindowType.LAST_INTERVAL)),
 | 
			
		||||
        value: this.historyTypes.LAST_INTERVAL
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history.hideFixedInterval) {
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history?.hideFixedInterval) {
 | 
			
		||||
      this.historyTimewindowOptions.push({
 | 
			
		||||
        name: this.translate.instant(historyWindowTypeTranslations.get(HistoryWindowType.FIXED)),
 | 
			
		||||
        value: this.historyTypes.FIXED
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history.hideQuickInterval) {
 | 
			
		||||
    if (this.isEdit || !this.timewindow.history?.hideQuickInterval) {
 | 
			
		||||
      this.historyTimewindowOptions.push({
 | 
			
		||||
        name: this.translate.instant(historyWindowTypeTranslations.get(HistoryWindowType.INTERVAL)),
 | 
			
		||||
        value: this.historyTypes.INTERVAL
 | 
			
		||||
@ -211,10 +213,10 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
 | 
			
		||||
    this.realtimeTypeSelectionAvailable = this.realtimeTimewindowOptions.length > 1;
 | 
			
		||||
    this.historyTypeSelectionAvailable = this.historyTimewindowOptions.length > 1;
 | 
			
		||||
    this.realtimeIntervalSelectionAvailable = this.isEdit || !(this.timewindow.realtime.hideInterval ||
 | 
			
		||||
      (this.timewindow.realtime.hideLastInterval && this.timewindow.realtime.hideQuickInterval));
 | 
			
		||||
    this.historyIntervalSelectionAvailable = this.isEdit || !(this.timewindow.history.hideInterval ||
 | 
			
		||||
      (this.timewindow.history.hideLastInterval && this.timewindow.history.hideQuickInterval && this.timewindow.history.hideFixedInterval));
 | 
			
		||||
    this.realtimeIntervalSelectionAvailable = this.isEdit || !(this.timewindow.realtime?.hideInterval ||
 | 
			
		||||
      (this.timewindow.realtime?.hideLastInterval && this.timewindow.realtime?.hideQuickInterval));
 | 
			
		||||
    this.historyIntervalSelectionAvailable = this.isEdit || !(this.timewindow.history?.hideInterval ||
 | 
			
		||||
      (this.timewindow.history?.hideLastInterval && this.timewindow.history?.hideQuickInterval && this.timewindow.history?.hideFixedInterval));
 | 
			
		||||
 | 
			
		||||
    this.aggregationOptionsAvailable = this.aggregation && (this.isEdit ||
 | 
			
		||||
      !(this.timewindow.hideAggregation && this.timewindow.hideAggInterval));
 | 
			
		||||
@ -230,28 +232,28 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
    const aggregation = this.timewindow.aggregation;
 | 
			
		||||
 | 
			
		||||
    if (!this.isEdit) {
 | 
			
		||||
      if (realtime.hideLastInterval && !realtime.hideQuickInterval) {
 | 
			
		||||
      if (realtime?.hideLastInterval && !realtime?.hideQuickInterval) {
 | 
			
		||||
        realtime.realtimeType = RealtimeWindowType.INTERVAL;
 | 
			
		||||
      }
 | 
			
		||||
      if (realtime.hideQuickInterval && !realtime.hideLastInterval) {
 | 
			
		||||
      if (realtime?.hideQuickInterval && !realtime?.hideLastInterval) {
 | 
			
		||||
        realtime.realtimeType = RealtimeWindowType.LAST_INTERVAL;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (history.hideLastInterval) {
 | 
			
		||||
      if (history?.hideLastInterval) {
 | 
			
		||||
        if (!history.hideFixedInterval) {
 | 
			
		||||
          history.historyType = HistoryWindowType.FIXED;
 | 
			
		||||
        } else if (!history.hideQuickInterval) {
 | 
			
		||||
          history.historyType = HistoryWindowType.INTERVAL;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (history.hideFixedInterval) {
 | 
			
		||||
      if (history?.hideFixedInterval) {
 | 
			
		||||
        if (!history.hideLastInterval) {
 | 
			
		||||
          history.historyType = HistoryWindowType.LAST_INTERVAL;
 | 
			
		||||
        } else if (!history.hideQuickInterval) {
 | 
			
		||||
          history.historyType = HistoryWindowType.INTERVAL;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (history.hideQuickInterval) {
 | 
			
		||||
      if (history?.hideQuickInterval) {
 | 
			
		||||
        if (!history.hideLastInterval) {
 | 
			
		||||
          history.historyType = HistoryWindowType.LAST_INTERVAL;
 | 
			
		||||
        } else if (!history.hideFixedInterval) {
 | 
			
		||||
@ -265,29 +267,29 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
      realtime: this.fb.group({
 | 
			
		||||
        realtimeType: [{
 | 
			
		||||
          value: isDefined(realtime?.realtimeType) ? realtime.realtimeType : RealtimeWindowType.LAST_INTERVAL,
 | 
			
		||||
          disabled: realtime.hideInterval
 | 
			
		||||
          disabled: realtime?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        timewindowMs: [{
 | 
			
		||||
          value: isDefined(realtime?.timewindowMs) ? realtime.timewindowMs : null,
 | 
			
		||||
          disabled: realtime.hideInterval || realtime.hideLastInterval
 | 
			
		||||
          value: isDefined(realtime?.timewindowMs) ? realtime.timewindowMs : MINUTE,
 | 
			
		||||
          disabled: realtime?.hideInterval || realtime?.hideLastInterval
 | 
			
		||||
        }],
 | 
			
		||||
        interval: [{
 | 
			
		||||
          value:isDefined(realtime?.interval) ? realtime.interval : null,
 | 
			
		||||
          disabled: hideAggInterval
 | 
			
		||||
        }],
 | 
			
		||||
        quickInterval: [{
 | 
			
		||||
          value: isDefined(realtime?.quickInterval) ? realtime.quickInterval : null,
 | 
			
		||||
          disabled: realtime.hideInterval || realtime.hideQuickInterval
 | 
			
		||||
          value: isDefined(realtime?.quickInterval) ? realtime.quickInterval : QuickTimeInterval.CURRENT_DAY,
 | 
			
		||||
          disabled: realtime?.hideInterval || realtime?.hideQuickInterval
 | 
			
		||||
        }]
 | 
			
		||||
      }),
 | 
			
		||||
      history: this.fb.group({
 | 
			
		||||
        historyType: [{
 | 
			
		||||
          value: isDefined(history?.historyType) ? history.historyType : HistoryWindowType.LAST_INTERVAL,
 | 
			
		||||
          disabled: history.hideInterval
 | 
			
		||||
          disabled: history?.hideInterval
 | 
			
		||||
        }],
 | 
			
		||||
        timewindowMs: [{
 | 
			
		||||
          value: isDefined(history?.timewindowMs) ? history.timewindowMs : null,
 | 
			
		||||
          disabled: history.hideInterval || history.hideLastInterval
 | 
			
		||||
          value: isDefined(history?.timewindowMs) ? history.timewindowMs : MINUTE,
 | 
			
		||||
          disabled: history?.hideInterval || history?.hideLastInterval
 | 
			
		||||
        }],
 | 
			
		||||
        interval: [{
 | 
			
		||||
          value:isDefined(history?.interval) ? history.interval : null,
 | 
			
		||||
@ -296,11 +298,11 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
        fixedTimewindow: [{
 | 
			
		||||
          value: isDefined(history?.fixedTimewindow) && this.timewindow.selectedTab === TimewindowType.HISTORY
 | 
			
		||||
            && history.historyType === HistoryWindowType.FIXED ? history.fixedTimewindow : null,
 | 
			
		||||
          disabled: history.hideInterval || history.hideFixedInterval
 | 
			
		||||
          disabled: history?.hideInterval || history?.hideFixedInterval
 | 
			
		||||
        }],
 | 
			
		||||
        quickInterval: [{
 | 
			
		||||
          value: isDefined(history?.quickInterval) ? history.quickInterval : null,
 | 
			
		||||
          disabled: history.hideInterval || history.hideQuickInterval
 | 
			
		||||
          value: isDefined(history?.quickInterval) ? history.quickInterval : QuickTimeInterval.CURRENT_DAY,
 | 
			
		||||
          disabled: history?.hideInterval || history?.hideQuickInterval
 | 
			
		||||
        }]
 | 
			
		||||
      }),
 | 
			
		||||
      aggregation: this.fb.group({
 | 
			
		||||
@ -380,6 +382,7 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
        takeUntil(this.destroy$)
 | 
			
		||||
      ).subscribe(() => {
 | 
			
		||||
        this.prepareTimewindowConfig();
 | 
			
		||||
        this.clearTimewindowConfig();
 | 
			
		||||
        this.changeTimewindow.emit(this.timewindow);
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
@ -407,6 +410,7 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
 | 
			
		||||
  update() {
 | 
			
		||||
    this.prepareTimewindowConfig();
 | 
			
		||||
    this.clearTimewindowConfig();
 | 
			
		||||
    this.result = this.timewindow;
 | 
			
		||||
    this.overlayRef?.dispose();
 | 
			
		||||
  }
 | 
			
		||||
@ -414,21 +418,25 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
  private prepareTimewindowConfig() {
 | 
			
		||||
    const timewindowFormValue = this.timewindowForm.getRawValue();
 | 
			
		||||
    this.timewindow.selectedTab = timewindowFormValue.selectedTab;
 | 
			
		||||
    this.timewindow.realtime = {...this.timewindow.realtime, ...{
 | 
			
		||||
        realtimeType: timewindowFormValue.realtime.realtimeType,
 | 
			
		||||
        timewindowMs: timewindowFormValue.realtime.timewindowMs,
 | 
			
		||||
        quickInterval: timewindowFormValue.realtime.quickInterval,
 | 
			
		||||
        interval: timewindowFormValue.realtime.interval
 | 
			
		||||
      }};
 | 
			
		||||
    this.timewindow.history = {...this.timewindow.history, ...{
 | 
			
		||||
        historyType: timewindowFormValue.history.historyType,
 | 
			
		||||
        timewindowMs: timewindowFormValue.history.timewindowMs,
 | 
			
		||||
        interval: timewindowFormValue.history.interval,
 | 
			
		||||
        fixedTimewindow: timewindowFormValue.history.fixedTimewindow,
 | 
			
		||||
        quickInterval: timewindowFormValue.history.quickInterval,
 | 
			
		||||
      }};
 | 
			
		||||
    if (this.timewindow.selectedTab === TimewindowType.REALTIME) {
 | 
			
		||||
      this.timewindow.realtime = {...this.timewindow.realtime, ...{
 | 
			
		||||
          realtimeType: timewindowFormValue.realtime.realtimeType,
 | 
			
		||||
          timewindowMs: timewindowFormValue.realtime.timewindowMs,
 | 
			
		||||
          quickInterval: timewindowFormValue.realtime.quickInterval,
 | 
			
		||||
        }};
 | 
			
		||||
    } else {
 | 
			
		||||
      this.timewindow.history = {...this.timewindow.history, ...{
 | 
			
		||||
          historyType: timewindowFormValue.history.historyType,
 | 
			
		||||
          timewindowMs: timewindowFormValue.history.timewindowMs,
 | 
			
		||||
          fixedTimewindow: timewindowFormValue.history.fixedTimewindow,
 | 
			
		||||
          quickInterval: timewindowFormValue.history.quickInterval,
 | 
			
		||||
        }};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.aggregation) {
 | 
			
		||||
      this.timewindow.realtime.interval = timewindowFormValue.realtime.interval;
 | 
			
		||||
      this.timewindow.history.interval = timewindowFormValue.history.interval;
 | 
			
		||||
 | 
			
		||||
      this.timewindow.aggregation = {
 | 
			
		||||
        type: timewindowFormValue.aggregation.type,
 | 
			
		||||
        limit: timewindowFormValue.aggregation.limit
 | 
			
		||||
@ -439,6 +447,10 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private clearTimewindowConfig() {
 | 
			
		||||
    clearTimewindowConfig(this.timewindow, this.quickIntervalOnly, this.historyOnly, this.aggregation, this.timezone);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private updateTimewindowForm() {
 | 
			
		||||
    this.timewindowForm.patchValue(this.timewindow, {emitEvent: false});
 | 
			
		||||
    this.updateValidators(this.timewindowForm.get('aggregation.type').value);
 | 
			
		||||
@ -568,12 +580,12 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private updateTimewindowAdvancedParams() {
 | 
			
		||||
    this.realtimeDisableCustomInterval = this.timewindow.realtime.disableCustomInterval;
 | 
			
		||||
    this.realtimeDisableCustomGroupInterval = this.timewindow.realtime.disableCustomGroupInterval;
 | 
			
		||||
    this.historyDisableCustomInterval = this.timewindow.history.disableCustomInterval;
 | 
			
		||||
    this.historyDisableCustomGroupInterval = this.timewindow.history.disableCustomGroupInterval;
 | 
			
		||||
    this.realtimeDisableCustomInterval = this.timewindow.realtime?.disableCustomInterval;
 | 
			
		||||
    this.realtimeDisableCustomGroupInterval = this.timewindow.realtime?.disableCustomGroupInterval;
 | 
			
		||||
    this.historyDisableCustomInterval = this.timewindow.history?.disableCustomInterval;
 | 
			
		||||
    this.historyDisableCustomGroupInterval = this.timewindow.history?.disableCustomGroupInterval;
 | 
			
		||||
 | 
			
		||||
    if (this.timewindow.realtime.advancedParams) {
 | 
			
		||||
    if (this.timewindow.realtime?.advancedParams) {
 | 
			
		||||
      this.realtimeAdvancedParams = this.timewindow.realtime.advancedParams;
 | 
			
		||||
      this.realtimeAllowedLastIntervals = this.timewindow.realtime.advancedParams.allowedLastIntervals;
 | 
			
		||||
      this.realtimeAllowedQuickIntervals = this.timewindow.realtime.advancedParams.allowedQuickIntervals;
 | 
			
		||||
@ -582,7 +594,7 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
 | 
			
		||||
      this.realtimeAllowedLastIntervals = null;
 | 
			
		||||
      this.realtimeAllowedQuickIntervals = null;
 | 
			
		||||
    }
 | 
			
		||||
    if (this.timewindow.history.advancedParams) {
 | 
			
		||||
    if (this.timewindow.history?.advancedParams) {
 | 
			
		||||
      this.historyAdvancedParams = this.timewindow.history.advancedParams;
 | 
			
		||||
      this.historyAllowedLastIntervals = this.timewindow.history.advancedParams.allowedLastIntervals;
 | 
			
		||||
      this.historyAllowedQuickIntervals = this.timewindow.history.advancedParams.allowedQuickIntervals;
 | 
			
		||||
 | 
			
		||||
@ -319,7 +319,8 @@ export class TimewindowComponent implements ControlValueAccessor, OnInit, OnChan
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  writeValue(obj: Timewindow): void {
 | 
			
		||||
    this.innerValue = initModelFromDefaultTimewindow(obj, this.quickIntervalOnly, this.historyOnly, this.timeService);
 | 
			
		||||
    this.innerValue = initModelFromDefaultTimewindow(obj, this.quickIntervalOnly, this.historyOnly, this.timeService,
 | 
			
		||||
      this.aggregation);
 | 
			
		||||
    this.timewindowDisabled = this.isTimewindowDisabled();
 | 
			
		||||
    if (this.onHistoryOnlyChanged()) {
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
 | 
			
		||||
@ -15,11 +15,12 @@
 | 
			
		||||
///
 | 
			
		||||
 | 
			
		||||
import { TimeService } from '@core/services/time.service';
 | 
			
		||||
import { deepClone, isDefined, isDefinedAndNotNull, isNumeric, isUndefined } from '@app/core/utils';
 | 
			
		||||
import { deepClone, isDefined, isDefinedAndNotNull, isNumeric, isUndefined, isUndefinedOrNull } from '@app/core/utils';
 | 
			
		||||
import moment_ from 'moment';
 | 
			
		||||
import * as momentTz from 'moment-timezone';
 | 
			
		||||
import { IntervalType } from '@shared/models/telemetry/telemetry.models';
 | 
			
		||||
import { FormGroup } from '@angular/forms';
 | 
			
		||||
import { isEmpty } from 'lodash';
 | 
			
		||||
 | 
			
		||||
const moment = moment_;
 | 
			
		||||
 | 
			
		||||
@ -314,7 +315,7 @@ const getTimewindowType = (timewindow: Timewindow): TimewindowType => {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const initModelFromDefaultTimewindow = (value: Timewindow, quickIntervalOnly: boolean,
 | 
			
		||||
                                               historyOnly: boolean, timeService: TimeService): Timewindow => {
 | 
			
		||||
                                               historyOnly: boolean, timeService: TimeService, hasAggregation: boolean): Timewindow => {
 | 
			
		||||
  const model = defaultTimewindow(timeService);
 | 
			
		||||
  if (value) {
 | 
			
		||||
    if (value.allowedAggTypes?.length) {
 | 
			
		||||
@ -446,7 +447,9 @@ export const initModelFromDefaultTimewindow = (value: Timewindow, quickIntervalO
 | 
			
		||||
      }
 | 
			
		||||
      model.aggregation.limit = value.aggregation.limit || Math.floor(timeService.getMaxDatapointsLimit() / 2);
 | 
			
		||||
    }
 | 
			
		||||
    model.timezone = value.timezone;
 | 
			
		||||
    if (value.timezone) {
 | 
			
		||||
      model.timezone = value.timezone;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (quickIntervalOnly) {
 | 
			
		||||
    model.realtime.realtimeType = RealtimeWindowType.INTERVAL;
 | 
			
		||||
@ -454,6 +457,7 @@ export const initModelFromDefaultTimewindow = (value: Timewindow, quickIntervalO
 | 
			
		||||
  if (historyOnly) {
 | 
			
		||||
    model.selectedTab = TimewindowType.HISTORY;
 | 
			
		||||
  }
 | 
			
		||||
  clearTimewindowConfig(model, quickIntervalOnly, historyOnly, hasAggregation);
 | 
			
		||||
  return model;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -1106,13 +1110,82 @@ export const cloneSelectedTimewindow = (timewindow: Timewindow): Timewindow => {
 | 
			
		||||
  if (isDefined(timewindow.selectedTab)) {
 | 
			
		||||
    cloned.selectedTab = timewindow.selectedTab;
 | 
			
		||||
  }
 | 
			
		||||
  cloned.realtime = deepClone(timewindow.realtime);
 | 
			
		||||
  cloned.history = deepClone(timewindow.history);
 | 
			
		||||
  cloned.aggregation = deepClone(timewindow.aggregation);
 | 
			
		||||
  cloned.timezone = timewindow.timezone;
 | 
			
		||||
  if (isDefined(timewindow.realtime)) {
 | 
			
		||||
    cloned.realtime = deepClone(timewindow.realtime);
 | 
			
		||||
  }
 | 
			
		||||
  if (isDefined(timewindow.history)) {
 | 
			
		||||
    cloned.history = deepClone(timewindow.history);
 | 
			
		||||
  }
 | 
			
		||||
  if (isDefined(timewindow.aggregation)) {
 | 
			
		||||
    cloned.aggregation = deepClone(timewindow.aggregation);
 | 
			
		||||
  }
 | 
			
		||||
  if (timewindow.timezone) {
 | 
			
		||||
    cloned.timezone = timewindow.timezone;
 | 
			
		||||
  }
 | 
			
		||||
  return cloned;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const clearTimewindowConfig = (timewindow: Timewindow, quickIntervalOnly: boolean,
 | 
			
		||||
                                      historyOnly: boolean, hasAggregation: boolean, hasTimezone = true): Timewindow => {
 | 
			
		||||
  if (timewindow.selectedTab === TimewindowType.REALTIME) {
 | 
			
		||||
    if (quickIntervalOnly || timewindow.realtime.realtimeType === RealtimeWindowType.INTERVAL) {
 | 
			
		||||
      delete timewindow.realtime.timewindowMs;
 | 
			
		||||
    } else {
 | 
			
		||||
      delete timewindow.realtime.quickInterval;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    delete timewindow.history.historyType;
 | 
			
		||||
    delete timewindow.history.timewindowMs;
 | 
			
		||||
    delete timewindow.history.fixedTimewindow;
 | 
			
		||||
    delete timewindow.history.quickInterval;
 | 
			
		||||
 | 
			
		||||
    delete timewindow.history.interval;
 | 
			
		||||
    if (!hasAggregation) {
 | 
			
		||||
      delete timewindow.realtime.interval;
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    if (timewindow.history.historyType === HistoryWindowType.LAST_INTERVAL) {
 | 
			
		||||
      delete timewindow.history.fixedTimewindow;
 | 
			
		||||
      delete timewindow.history.quickInterval;
 | 
			
		||||
    } else if (timewindow.history.historyType === HistoryWindowType.FIXED) {
 | 
			
		||||
      delete timewindow.history.timewindowMs;
 | 
			
		||||
      delete timewindow.history.quickInterval;
 | 
			
		||||
    } else if (timewindow.history.historyType === HistoryWindowType.INTERVAL) {
 | 
			
		||||
      delete timewindow.history.timewindowMs;
 | 
			
		||||
      delete timewindow.history.fixedTimewindow;
 | 
			
		||||
    } else {
 | 
			
		||||
      delete timewindow.history.timewindowMs;
 | 
			
		||||
      delete timewindow.history.fixedTimewindow;
 | 
			
		||||
      delete timewindow.history.quickInterval;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    delete timewindow.realtime.realtimeType;
 | 
			
		||||
    delete timewindow.realtime.timewindowMs;
 | 
			
		||||
    delete timewindow.realtime.quickInterval;
 | 
			
		||||
 | 
			
		||||
    delete timewindow.realtime.interval;
 | 
			
		||||
    if (!hasAggregation) {
 | 
			
		||||
      delete timewindow.history.interval;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!hasAggregation) {
 | 
			
		||||
    delete timewindow.aggregation;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (isEmpty(timewindow.history)) {
 | 
			
		||||
    delete timewindow.history;
 | 
			
		||||
  }
 | 
			
		||||
  if (historyOnly || isEmpty(timewindow.realtime)) {
 | 
			
		||||
    delete timewindow.realtime;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!hasTimezone || isUndefinedOrNull(timewindow.timezone)) {
 | 
			
		||||
    delete timewindow.timezone;
 | 
			
		||||
  }
 | 
			
		||||
  return timewindow;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export interface TimeInterval {
 | 
			
		||||
  name: string;
 | 
			
		||||
  translateParams: {[key: string]: any};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user