Timewindow: apply and save allowed intervals configuration

This commit is contained in:
Chantsova Ekaterina 2024-11-15 17:03:35 +02:00
parent 7e1456a96e
commit b62cf069ff
4 changed files with 98 additions and 18 deletions

View File

@ -355,14 +355,6 @@ export class TimewindowConfigDialogComponent extends PageComponent implements On
&& !(this.quickIntervalOnly && timewindowFormValue.history.historyType === HistoryWindowType.LAST_INTERVAL)) {
const allowedLastIntervals = timewindowFormValue.realtime.advancedParams.allowedLastIntervals;
const allowedQuickIntervals = timewindowFormValue.realtime.advancedParams.allowedQuickIntervals;
// this.timewindowForm.get('realtime').patchValue({
// realtimeType: Object.keys(RealtimeWindowType).includes(HistoryWindowType[timewindowFormValue.history.historyType]) ?
// RealtimeWindowType[HistoryWindowType[timewindowFormValue.history.historyType]] :
// timewindowFormValue.realtime.realtimeType,
// timewindowMs: timewindowFormValue.history.timewindowMs,
// quickInterval: timewindowFormValue.history.quickInterval.startsWith('CURRENT') ?
// timewindowFormValue.history.quickInterval : timewindowFormValue.realtime.quickInterval
// });
if (Object.keys(RealtimeWindowType).includes(HistoryWindowType[timewindowFormValue.history.historyType])) {
this.timewindowForm.get('realtime.realtimeType').patchValue(RealtimeWindowType[HistoryWindowType[timewindowFormValue.history.historyType]]);
}
@ -378,11 +370,6 @@ export class TimewindowConfigDialogComponent extends PageComponent implements On
} else {
const allowedLastIntervals = timewindowFormValue.history.advancedParams.allowedLastIntervals;
const allowedQuickIntervals = timewindowFormValue.history.advancedParams.allowedQuickIntervals;
// this.timewindowForm.get('history').patchValue({
// historyType: HistoryWindowType[RealtimeWindowType[timewindowFormValue.realtime.realtimeType]],
// timewindowMs: timewindowFormValue.realtime.timewindowMs,
// quickInterval: timewindowFormValue.realtime.quickInterval
// });
this.timewindowForm.get('history.historyType').patchValue(HistoryWindowType[RealtimeWindowType[timewindowFormValue.realtime.realtimeType]]);
if (!allowedLastIntervals?.length || allowedLastIntervals?.includes(timewindowFormValue.realtime.timewindowMs)) {
this.timewindowForm.get('history.timewindowMs').patchValue(timewindowFormValue.realtime.timewindowMs);
@ -407,11 +394,42 @@ export class TimewindowConfigDialogComponent extends PageComponent implements On
update() {
const timewindowFormValue = this.timewindowForm.getRawValue();
this.timewindow = mergeDeep(this.timewindow, timewindowFormValue);
if (timewindowFormValue.realtime.advancedParams.allowedLastIntervals?.length) {
this.timewindow.realtime.advancedParams.allowedLastIntervals = timewindowFormValue.realtime.advancedParams.allowedLastIntervals;
} else {
delete this.timewindow.realtime.advancedParams.allowedLastIntervals;
}
if (timewindowFormValue.realtime.advancedParams.allowedQuickIntervals?.length) {
this.timewindow.realtime.advancedParams.allowedQuickIntervals = timewindowFormValue.realtime.advancedParams.allowedQuickIntervals;
} else {
delete this.timewindow.realtime.advancedParams.allowedQuickIntervals;
}
if (timewindowFormValue.history.advancedParams.allowedLastIntervals?.length) {
this.timewindow.history.advancedParams.allowedLastIntervals = timewindowFormValue.history.advancedParams.allowedLastIntervals;
} else {
delete this.timewindow.history.advancedParams.allowedLastIntervals;
}
if (timewindowFormValue.history.advancedParams.allowedQuickIntervals?.length) {
this.timewindow.history.advancedParams.allowedQuickIntervals = timewindowFormValue.history.advancedParams.allowedQuickIntervals;
} else {
delete this.timewindow.history.advancedParams.allowedQuickIntervals;
}
if (!Object.keys(this.timewindow.realtime.advancedParams).length) {
delete this.timewindow.realtime.advancedParams;
}
if (!Object.keys(this.timewindow.history.advancedParams).length) {
delete this.timewindow.history.advancedParams;
}
if (timewindowFormValue.allowedAggTypes?.length) {
this.timewindow.allowedAggTypes = timewindowFormValue.allowedAggTypes;
} else {
delete this.timewindow.allowedAggTypes;
}
if (!this.aggregation) {
delete this.timewindow.aggregation;
}

View File

@ -51,6 +51,7 @@
formControlName="timewindowMs"
subscriptSizing="dynamic"
appearance="outline"
[allowedIntervals]="realtimeAllowedLastIntervals"
[disabledAdvanced]="timewindow.realtime.disableCustomInterval"
[required]="timewindowForm.get('selectedTab').value === timewindowTypes.REALTIME &&
timewindowForm.get('realtime.realtimeType').value === realtimeTypes.LAST_INTERVAL">
@ -63,6 +64,7 @@
onlyCurrentInterval="true"
subscriptSizing="dynamic"
appearance="outline"
[allowedIntervals]="realtimeAllowedQuickIntervals"
[required]="timewindowForm.get('selectedTab').value === timewindowTypes.REALTIME &&
timewindowForm.get('realtime.realtimeType').value === realtimeTypes.INTERVAL">
</tb-quick-time-interval>
@ -95,6 +97,7 @@
formControlName="timewindowMs"
subscriptSizing="dynamic"
appearance="outline"
[allowedIntervals]="historyAllowedLastIntervals"
[disabledAdvanced]="timewindow.history.disableCustomInterval"
[required]="timewindowForm.get('selectedTab').value === timewindowTypes.HISTORY &&
timewindowForm.get('history.historyType').value === historyTypes.LAST_INTERVAL">
@ -116,6 +119,7 @@
formControlName="quickInterval"
subscriptSizing="dynamic"
appearance="outline"
[allowedIntervals]="historyAllowedQuickIntervals"
[required]="timewindowForm.get('selectedTab').value === timewindowTypes.HISTORY &&
timewindowForm.get('history.historyType').value === historyTypes.INTERVAL">
</tb-quick-time-interval>

View File

@ -20,6 +20,8 @@ import {
DAY,
HistoryWindowType,
historyWindowTypeTranslations,
Interval,
QuickTimeInterval,
quickTimeIntervalPeriod,
RealtimeWindowType,
realtimeWindowTypeTranslations,
@ -103,6 +105,10 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
historyIntervalSelectionAvailable: boolean;
aggregationOptionsAvailable: boolean;
realtimeAllowedLastIntervals: Array<Interval>;
realtimeAllowedQuickIntervals: Array<QuickTimeInterval>;
historyAllowedLastIntervals: Array<Interval>;
historyAllowedQuickIntervals: Array<QuickTimeInterval>;
allowedAggTypes: Array<AggregationType>;
private destroy$ = new Subject<void>();
@ -124,7 +130,7 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
this.timezone = data.timezone;
this.isEdit = data.isEdit;
this.allowedAggTypes = this.timewindow.allowedAggTypes;
this.updateTimewindowAdvancedParams();
if (!this.historyOnly) {
this.timewindowTypeOptions.unshift({
@ -370,9 +376,32 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
fixedTimewindow: timewindowFormValue.history.fixedTimewindow,
quickInterval: timewindowFormValue.history.quickInterval,
}};
if (!this.timewindow.allowedAggTypes?.length) {
delete this.timewindow.allowedAggTypes;
}
// if (!this.timewindow.realtime.advancedParams?.allowedLastIntervals?.length) {
// delete this.timewindow.realtime.advancedParams.allowedLastIntervals;
// }
// if (!this.timewindow.realtime.advancedParams?.allowedQuickIntervals?.length) {
// delete this.timewindow.realtime.advancedParams.allowedQuickIntervals;
// }
//
// if (!this.timewindow.history.advancedParams?.allowedLastIntervals?.length) {
// delete this.timewindow.history.advancedParams.allowedLastIntervals;
// }
// if (!this.timewindow.history.advancedParams?.allowedQuickIntervals?.length) {
// } else {
// delete this.timewindow.history.advancedParams.allowedQuickIntervals;
// }
//
// if (!Object.keys(this.timewindow.realtime.advancedParams).length) {
// delete this.timewindow.realtime.advancedParams;
// }
// if (!Object.keys(this.timewindow.history.advancedParams).length) {
// delete this.timewindow.history.advancedParams;
// }
//
// if (!this.timewindow.allowedAggTypes?.length) {
// delete this.timewindow.allowedAggTypes;
// }
if (this.aggregation) {
this.timewindow.aggregation = {
type: timewindowFormValue.aggregation.type,
@ -515,10 +544,28 @@ export class TimewindowPanelComponent extends PageComponent implements OnInit, O
.subscribe((res) => {
if (res) {
this.timewindow = res;
this.allowedAggTypes = this.timewindow.allowedAggTypes;
this.updateTimewindowAdvancedParams();
this.updateTimewindowForm();
}
});
}
private updateTimewindowAdvancedParams() {
if (this.timewindow.realtime.advancedParams) {
this.realtimeAllowedLastIntervals = this.timewindow.realtime.advancedParams.allowedLastIntervals;
this.realtimeAllowedQuickIntervals = this.timewindow.realtime.advancedParams.allowedQuickIntervals;
} else {
this.realtimeAllowedLastIntervals = null;
this.realtimeAllowedQuickIntervals = null;
}
if (this.timewindow.history.advancedParams) {
this.historyAllowedLastIntervals = this.timewindow.history.advancedParams.allowedLastIntervals;
this.historyAllowedQuickIntervals = this.timewindow.history.advancedParams.allowedQuickIntervals;
} else {
this.historyAllowedLastIntervals = null;
this.historyAllowedQuickIntervals = null;
}
this.allowedAggTypes = this.timewindow.allowedAggTypes;
}
}

View File

@ -366,6 +366,10 @@ export const initModelFromDefaultTimewindow = (value: Timewindow, quickIntervalO
if (isDefined(value.realtime.timewindowMs)) {
model.realtime.timewindowMs = value.realtime.timewindowMs;
}
if (value.realtime.advancedParams) {
model.realtime.advancedParams = value.realtime.advancedParams;
}
}
if (isDefined(value.history)) {
if (isDefinedAndNotNull(value.history.hideInterval)) {
@ -409,6 +413,10 @@ export const initModelFromDefaultTimewindow = (value: Timewindow, quickIntervalO
model.history.fixedTimewindow.endTimeMs = value.history.fixedTimewindow.endTimeMs;
}
}
if (value.history.advancedParams) {
model.history.advancedParams = value.history.advancedParams;
}
}
if (value.aggregation) {
if (value.aggregation.type) {
@ -467,6 +475,9 @@ export const toHistoryTimewindow = (timewindow: Timewindow, startTimeMs: number,
},
timezone: timewindow.timezone
};
if (timewindow.history?.advancedParams) {
historyTimewindow.history.advancedParams = timewindow.history.advancedParams;
}
if (timewindow.allowedAggTypes?.length) {
historyTimewindow.allowedAggTypes = timewindow.allowedAggTypes;
}