Timewindow: optimize false properties deletion

This commit is contained in:
Ekaterina Chantsova 2025-07-21 17:22:34 +03:00
parent 6d509ca5d9
commit d95a00e4af
2 changed files with 28 additions and 46 deletions

View File

@ -197,6 +197,23 @@ export function deleteNullProperties(obj: any) {
});
}
export function deleteFalseProperties(obj: any) {
if (isUndefinedOrNull(obj)) {
return;
}
Object.keys(obj).forEach((propName) => {
if (obj[propName] === false || isUndefinedOrNull(obj[propName])) {
delete obj[propName];
} else if (isObject(obj[propName])) {
deleteFalseProperties(obj[propName]);
} else if (Array.isArray(obj[propName])) {
(obj[propName] as any[]).forEach((elem) => {
deleteFalseProperties(elem);
});
}
});
}
export function objToBase64(obj: any): string {
const json = JSON.stringify(obj);
return btoa(encodeURIComponent(json).replace(/%([0-9A-F]{2})/g,

View File

@ -36,7 +36,15 @@ import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { TimeService } from '@core/services/time.service';
import { deepClean, deepClone, isDefined, isDefinedAndNotNull, isEmpty, mergeDeepIgnoreArray } from '@core/utils';
import {
deepClean,
deepClone,
deleteFalseProperties,
isDefined,
isDefinedAndNotNull,
isEmpty,
mergeDeepIgnoreArray
} from '@core/utils';
import { ToggleHeaderOption } from '@shared/components/toggle-header.component';
import { TranslateService } from '@ngx-translate/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
@ -472,54 +480,11 @@ export class TimewindowConfigDialogComponent extends PageComponent implements On
delete this.timewindow.allowedAggTypes;
}
if (!this.timewindow.realtime.disableCustomInterval) {
delete this.timewindow.realtime.disableCustomInterval;
}
if (!this.timewindow.realtime.disableCustomGroupInterval) {
delete this.timewindow.realtime.disableCustomGroupInterval;
}
if (!this.timewindow.history.disableCustomInterval) {
delete this.timewindow.history.disableCustomInterval;
}
if (!this.timewindow.history.disableCustomGroupInterval) {
delete this.timewindow.history.disableCustomGroupInterval;
}
if (!this.timewindow.hideAggregation) {
delete this.timewindow.hideAggregation;
}
if (!this.timewindow.hideAggInterval) {
delete this.timewindow.hideAggInterval;
}
if (!this.timewindow.hideTimezone) {
delete this.timewindow.hideTimezone;
}
if (!this.timewindow.realtime.hideInterval) {
delete this.timewindow.realtime.hideInterval;
}
if (!this.timewindow.realtime.hideLastInterval) {
delete this.timewindow.realtime.hideLastInterval;
}
if (!this.timewindow.realtime.hideQuickInterval) {
delete this.timewindow.realtime.hideQuickInterval;
}
if (!this.timewindow.history.hideInterval) {
delete this.timewindow.history.hideInterval;
}
if (!this.timewindow.history.hideLastInterval) {
delete this.timewindow.history.hideLastInterval;
}
if (!this.timewindow.history.hideFixedInterval) {
delete this.timewindow.history.hideFixedInterval;
}
if (!this.timewindow.history.hideQuickInterval) {
delete this.timewindow.history.hideQuickInterval;
}
if (!this.aggregation) {
delete this.timewindow.aggregation;
}
deleteFalseProperties(this.timewindow);
this.dialogRef.close(deepClean(this.timewindow));
}