SI-2907-Initiale-Darstellung-des-Stoerungsortes - adapt logic - adapt unit tests Signed-off-by: Dennis Schmitt <dennis.schmitt@pta.de>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts index 8b24c31..7cb22ff 100644 --- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts +++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.spec.ts
@@ -52,6 +52,7 @@ setBranchState() {}, setFormStateDirty() {}, setFormStatePristine() {}, + setFaultLocationArea() {}, gridFailureDetailsFormState$: of({ ...INITIAL_STATE, gridFailureDetailsFormResponse } as any), currentFormState: INITIAL_STATE, disableStationAttributes: false, @@ -165,6 +166,7 @@ postcode: 777 as any, branch: Globals.BUSINESS_RULE_FIELDS.branch.power, voltageLevel: Globals.FAILURE_LOCATION_NS, + faultLocationArea: 'address' as any, } as any, }); (component as any)._initialFailureLocationState(); @@ -189,6 +191,7 @@ stationIds: ['1'], branch: Globals.BUSINESS_RULE_FIELDS.branch.power, voltageLevel: Globals.FAILURE_LOCATION_MS, + faultLocationArea: 'station' as any, } as any, }); (component as any)._initialFailureLocationState(); @@ -210,6 +213,7 @@ latitude: 11 as any, longitude: 12 as any, voltageLevel: Globals.FAILURE_LOCATION_MS, + faultLocationArea: 'map' as any, branch: Globals.BUSINESS_RULE_FIELDS.branch.power, } as any, @@ -234,6 +238,7 @@ postcode: 7373 as any, branch: Globals.BUSINESS_RULE_FIELDS.branch.power, voltageLevel: Globals.FAILURE_LOCATION_NS, + faultLocationArea: 'address' as any, } as any, }); (component as any)._initialFailureLocationState(); @@ -249,21 +254,17 @@ }); it('should disable unnecessary required properties when setLocation was called', () => { - const spy = spyOn(gridFailureSandbox, 'setViewStateForReqProps'); component.gridFailureDetailsSandbox.gridFailureDetailsFormState$ = of(INITIAL_STATE, { ...component.gridFailureDetailsSandbox.currentFormState, value: { id: 1 as any, - housenumber: 44 as any, - radius: null as any, - latitude: 11 as any, - longitude: 12 as any, + faultLocationArea: 'address' as any, branch: Globals.BUSINESS_RULE_FIELDS.branch.power, } as any, }); component.setLocation(); - expect(spy).toHaveBeenCalled(); + expect(component.failureLocationView).toBe('NS'); }); it('should reset selected station if no value exists', () => {
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts index 3bfe548..dd67a84 100644 --- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts +++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.ts
@@ -13,7 +13,7 @@ import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core'; import { GridFailureDetailsSandbox } from '@grid-failure-information-app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox'; -import { ModeEnum, RolesEnum, StateEnum, VoltageLevelEnum } from '@grid-failure-information-app/shared/constants/enums'; +import { ModeEnum, RolesEnum, StateEnum, VoltageLevelEnum, FaultLocationAreaEnum } from '@grid-failure-information-app/shared/constants/enums'; import { Globals } from '@grid-failure-information-app/shared/constants/globals'; import { GridFailure } from '@grid-failure-information-app/shared/models/grid-failure.model'; import * as store from '@grid-failure-information-app/shared/store'; @@ -114,29 +114,28 @@ const branch = this.gridFailureDetailsSandbox.branches.find(b => b.id === branchId); this.gridFailureDetailsSandbox.setBranchState(branch); } - public setLocation(versionNumber?: string) { + public setLocation() { this.gridFailureDetailsSandbox.gridFailureDetailsFormState$ .pipe( - map(form => form.value), - skipWhile(item => (!item.id && !item.branch) || (!!versionNumber && item.versionNumber !== +versionNumber)), + map(form => form.value.faultLocationArea), + skipWhile(faultLocationArea => !faultLocationArea), take(1) ) - .subscribe(v => { - const version = unboxProperties<GridFailure>(v); - const isBranchTelecom = version.branch === Globals.BUSINESS_RULE_FIELDS.branch.telecommunication; - const isBranchPower = version.branch === Globals.BUSINESS_RULE_FIELDS.branch.power; - const isBranchPowerMS = isBranchPower && version.voltageLevel === Globals.FAILURE_LOCATION_MS; + .subscribe(faultLocationArea => { + switch (faultLocationArea) { + case FaultLocationAreaEnum.Address: + this.failureLocationView = Globals.FAILURE_LOCATION_NS; + break; + case FaultLocationAreaEnum.Station: + this.failureLocationView = Globals.FAILURE_LOCATION_MS; + break; + case FaultLocationAreaEnum.Map: + this.failureLocationView = Globals.FAILURE_LOCATION_MAP; + break; - if (!!version.postcode) { - this.failureLocationView = Globals.FAILURE_LOCATION_NS; - } else if (!!unbox(version.stationIds) && !!unbox(version.stationIds).length) { - this.failureLocationView = Globals.FAILURE_LOCATION_MS; - } else if (!!version.latitude && (!unbox(version.stationIds) || !unbox(version.stationIds).length)) { - this.failureLocationView = Globals.FAILURE_LOCATION_MAP; - } else if (isBranchPowerMS || isBranchTelecom) { - this.failureLocationView = Globals.FAILURE_LOCATION_MS; - } else { - this.failureLocationView = Globals.FAILURE_LOCATION_NS; + default: + this.failureLocationView = Globals.FAILURE_LOCATION_NS; + break; } this.gridFailureDetailsSandbox.currentFormState.isEnabled && this.gridFailureDetailsSandbox.setViewStateForReqProps(this.failureLocationView); }); @@ -219,11 +218,13 @@ } isLocationRegionActiveForAddress(): boolean { const ret = this.failureLocationView && this.failureLocationView !== Globals.FAILURE_LOCATION_NS; + this.gridFailureDetailsSandbox.setFaultLocationArea(FaultLocationAreaEnum.Address); return ret; } setLocationRegionToStation() { if (this.isLocationRegionActiveForStation()) { this.failureLocationView = Globals.FAILURE_LOCATION_MS; + this.gridFailureDetailsSandbox.setFaultLocationArea(FaultLocationAreaEnum.Station); this.setLocationRegion(); } } @@ -234,6 +235,7 @@ setLocationRegionToMap() { if (this.isLocationRegionActiveForMap()) { this.failureLocationView = Globals.FAILURE_LOCATION_MAP; + this.gridFailureDetailsSandbox.setFaultLocationArea(FaultLocationAreaEnum.Map); this.setLocationRegion(); } }
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts index f3ed03e..782f007 100644 --- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts +++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
@@ -281,6 +281,10 @@ }); } + public setFaultLocationArea(area: string) { + this.appState$.dispatch(new SetValueAction(INITIAL_STATE.controls.faultLocationArea.id, area)); + } + public setPublishedState(): void { if (this.selectedPublicationChannels.length === 0) { this._utilService.displayNotification('PublicationRequiresAtLeastOneChannel', 'alert');
diff --git a/projects/grid-failure-information-app/src/app/shared/constants/enums.ts b/projects/grid-failure-information-app/src/app/shared/constants/enums.ts index 900f65a..d3a2444 100644 --- a/projects/grid-failure-information-app/src/app/shared/constants/enums.ts +++ b/projects/grid-failure-information-app/src/app/shared/constants/enums.ts
@@ -88,3 +88,9 @@ SHOW = 'show', HIDE = 'hide', } + +export enum FaultLocationAreaEnum { + Address = 'address', + Station = 'station', + Map = 'map', +}
diff --git a/projects/grid-failure-information-app/src/app/shared/models/grid-failure.model.ts b/projects/grid-failure-information-app/src/app/shared/models/grid-failure.model.ts index 48cf0ea..6fcdf2a 100644 --- a/projects/grid-failure-information-app/src/app/shared/models/grid-failure.model.ts +++ b/projects/grid-failure-information-app/src/app/shared/models/grid-failure.model.ts
@@ -74,6 +74,7 @@ public failureInformationCondensedId: string = null; public addressPolygonPoints: Array<[Number, Number]> | Boxed<Array<[Number, Number]>> = null; public description: string = null; + public faultLocationArea: string = null; public constructor(data: any = null) { super(data);