Browse Source

UI: fixed key filter dialog constant key type and boolean value type selected saving null if not touched, added clear of value field on value type change

pull/10348/head
rusikv 3 years ago
parent
commit
d18079f81f
  1. 34
      ui-ngx/src/app/modules/home/components/filter/key-filter-dialog.component.ts

34
ui-ngx/src/app/modules/home/components/filter/key-filter-dialog.component.ts

@ -35,7 +35,7 @@ import { TranslateService } from '@ngx-translate/core';
import { entityFields } from '@shared/models/entity.models'; import { entityFields } from '@shared/models/entity.models';
import { Observable, of, Subject } from 'rxjs'; import { Observable, of, Subject } from 'rxjs';
import { filter, map, mergeMap, publishReplay, refCount, startWith, takeUntil } from 'rxjs/operators'; import { filter, map, mergeMap, publishReplay, refCount, startWith, takeUntil } from 'rxjs/operators';
import { isDefined } from '@core/utils'; import { isBoolean, isDefined } from '@core/utils';
import { EntityId } from '@shared/models/id/entity-id'; import { EntityId } from '@shared/models/id/entity-id';
import { DeviceProfileService } from '@core/http/device-profile.service'; import { DeviceProfileService } from '@core/http/device-profile.service';
@ -121,22 +121,30 @@ export class KeyFilterDialogComponent extends
this.keyFilterFormGroup.get('valueType').valueChanges.pipe( this.keyFilterFormGroup.get('valueType').valueChanges.pipe(
takeUntil(this.destroy$) takeUntil(this.destroy$)
).subscribe((valueType: EntityKeyValueType) => { ).subscribe((valueType: EntityKeyValueType) => {
const prevValue: EntityKeyValueType = this.keyFilterFormGroup.value.valueType; const prevValueType: EntityKeyValueType = this.keyFilterFormGroup.value.valueType;
const predicates: KeyFilterPredicate[] = this.keyFilterFormGroup.get('predicates').value; const predicates: KeyFilterPredicate[] = this.keyFilterFormGroup.get('predicates').value;
if (prevValue && prevValue !== valueType && predicates && predicates.length) { const value = this.keyFilterFormGroup.get('value')?.value;
this.dialogs.confirm(this.translate.instant('filter.key-value-type-change-title'), if (prevValueType && prevValueType !== valueType) {
this.translate.instant('filter.key-value-type-change-message')).subscribe( if (this.isConstantKeyType && this.data.telemetryKeysOnly) {
(result) => { this.keyFilterFormGroup.get('value').setValue(null);
if (result) { }
this.keyFilterFormGroup.get('predicates').setValue([]); if (predicates && predicates.length) {
} else { this.dialogs.confirm(this.translate.instant('filter.key-value-type-change-title'),
this.keyFilterFormGroup.get('valueType').setValue(prevValue, {emitEvent: false}); this.translate.instant('filter.key-value-type-change-message')).subscribe(
(result) => {
if (result) {
this.keyFilterFormGroup.get('predicates').setValue([]);
} else {
this.keyFilterFormGroup.get('valueType').setValue(prevValueType, {emitEvent: false});
this.keyFilterFormGroup.get('value')?.setValue(value, {emitEvent: false});
}
} }
} );
); }
} }
if (valueType === EntityKeyValueType.BOOLEAN && this.isConstantKeyType) { if (valueType === EntityKeyValueType.BOOLEAN && this.isConstantKeyType && this.data.telemetryKeysOnly) {
this.keyFilterFormGroup.get('value').clearValidators(); this.keyFilterFormGroup.get('value').clearValidators();
this.keyFilterFormGroup.get('value').setValue(isBoolean(value) ? value : false);
this.keyFilterFormGroup.get('value').updateValueAndValidity(); this.keyFilterFormGroup.get('value').updateValueAndValidity();
} }
}); });

Loading…
Cancel
Save