From 699a09bef62081be46993516de6e7bde45b28859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr> Date: Wed, 5 Oct 2022 21:53:15 +0200 Subject: [PATCH] Fixed bugs => cone-search --- .../components/cone-search.component.html | 5 ++- .../components/cone-search.component.spec.ts | 10 +++--- .../components/cone-search.component.ts | 10 ++---- .../components/dec.component.spec.ts | 4 +-- .../cone-search/components/dec.component.ts | 10 +++--- .../components/ra.component.spec.ts | 4 +-- .../cone-search/components/ra.component.ts | 10 +++--- .../components/resolver.component.ts | 1 - .../position/cone-search-panel.component.html | 1 - .../position/cone-search-panel.component.ts | 1 - .../containers/position.component.html | 1 - .../containers/position.component.ts | 2 -- .../criteria/cone-search-tab.component.html | 1 - .../criteria/cone-search-tab.component.ts | 1 - .../search/containers/criteria.component.html | 1 - .../search/containers/criteria.component.ts | 2 -- .../store/effects/cone-search.effects.spec.ts | 8 ++++- .../store/effects/cone-search.effects.ts | 33 ++++++++++++++++--- .../reducers/cone-search.reducer.spec.ts | 1 - .../store/reducers/cone-search.reducer.ts | 6 ++-- 20 files changed, 63 insertions(+), 49 deletions(-) diff --git a/client/src/app/instance/cone-search/components/cone-search.component.html b/client/src/app/instance/cone-search/components/cone-search.component.html index ddec1bfa..0d5da742 100644 --- a/client/src/app/instance/cone-search/components/cone-search.component.html +++ b/client/src/app/instance/cone-search/components/cone-search.component.html @@ -2,7 +2,6 @@ <div class="col"> <app-resolver [coneSearch]="coneSearch" - [resolver]="resolver" [resolverIsLoading]="resolverIsLoading" [resolverIsLoaded]="resolverIsLoaded" (retrieveCoordinates)="retrieveCoordinates.emit($event)"> @@ -11,7 +10,7 @@ </div> <div class="row"> <div class="col pb-4"> - <app-ra [form]="form" [unit]="unit" [resolver]="resolver"> + <app-ra [form]="form" [unit]="unit" [coneSearch]="coneSearch"> </app-ra> </div> <div class="col-auto p-0 align-self-center"> @@ -20,7 +19,7 @@ </button> </div> <div class="col"> - <app-dec [form]="form" [unit]="unit" [resolver]="resolver"> + <app-dec [form]="form" [unit]="unit" [coneSearch]="coneSearch"> </app-dec> </div> <div class="col-12"> diff --git a/client/src/app/instance/cone-search/components/cone-search.component.spec.ts b/client/src/app/instance/cone-search/components/cone-search.component.spec.ts index adbf2b5c..2b23602a 100644 --- a/client/src/app/instance/cone-search/components/cone-search.component.spec.ts +++ b/client/src/app/instance/cone-search/components/cone-search.component.spec.ts @@ -91,7 +91,7 @@ describe('[Instance][ConeSearch][Components] ConeSearchComponent', () => { const spy = jest.spyOn(testedComponent, 'ngOnChanges'); testHostComponent.resolver = { name: 'myObject', ra: 1, dec: 2 }; testHostFixture.detectChanges(); - expect(spy).toHaveBeenCalledTimes(1); + expect(spy).toHaveBeenCalledTimes(0); expect(testedComponent.unit).toEqual('degree'); expect(testedComponent.form.controls.ra.enabled).toBeTruthy(); expect(testedComponent.form.controls.dec.enabled).toBeTruthy(); @@ -99,15 +99,15 @@ describe('[Instance][ConeSearch][Components] ConeSearchComponent', () => { testHostComponent.coneSearch = { ra: 1, dec: 2, radius: 3 }; testHostFixture.detectChanges(); - expect(spy).toHaveBeenCalledTimes(2); - expect(testedComponent.form.controls.ra.value).toEqual(1); - expect(testedComponent.form.controls.dec.value).toEqual(2); + expect(spy).toHaveBeenCalledTimes(1); + expect(testedComponent.form.controls.ra.value).toEqual(null); + expect(testedComponent.form.controls.dec.value).toEqual(null); expect(testedComponent.form.controls.radius.value).toEqual(3); testHostComponent.coneSearch = undefined; testedComponent.unit = 'hms'; testHostFixture.detectChanges(); - expect(spy).toHaveBeenCalledTimes(3); + expect(spy).toHaveBeenCalledTimes(2); expect(testedComponent.form.controls.ra_hms.enabled).toBeTruthy(); expect(testedComponent.form.controls.dec_dms.enabled).toBeTruthy(); }); diff --git a/client/src/app/instance/cone-search/components/cone-search.component.ts b/client/src/app/instance/cone-search/components/cone-search.component.ts index 72c5541b..5ded610d 100644 --- a/client/src/app/instance/cone-search/components/cone-search.component.ts +++ b/client/src/app/instance/cone-search/components/cone-search.component.ts @@ -12,7 +12,7 @@ import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms import { debounceTime, Subscription } from 'rxjs'; -import { ConeSearch, Resolver } from 'src/app/instance/store/models'; +import { ConeSearch } from 'src/app/instance/store/models'; import { nanValidator, rangeValidator } from '../validators'; /** @@ -27,7 +27,6 @@ import { nanValidator, rangeValidator } from '../validators'; }) export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy { @Input() coneSearch: ConeSearch; - @Input() resolver: Resolver; @Input() resolverIsLoading: boolean; @Input() resolverIsLoaded: boolean; @Output() retrieveCoordinates: EventEmitter<string> = new EventEmitter(); @@ -65,10 +64,6 @@ export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy { } ngOnChanges(changes: SimpleChanges): void { - if (changes.resolver && changes.resolver.currentValue) { - this.unit = 'degree'; - } - if (changes.coneSearch && !changes.coneSearch.currentValue) { if (this.unit == 'degree') { this.form.controls.ra.enable(); @@ -83,7 +78,8 @@ export class ConeSearchComponent implements OnChanges, OnInit, OnDestroy { } if (changes.coneSearch && changes.coneSearch.currentValue) { - this.form.patchValue(this.coneSearch); + const radius = changes.coneSearch.currentValue.radius; + this.form.controls.radius.setValue(radius); } } diff --git a/client/src/app/instance/cone-search/components/dec.component.spec.ts b/client/src/app/instance/cone-search/components/dec.component.spec.ts index ddc5a64b..407b3b14 100644 --- a/client/src/app/instance/cone-search/components/dec.component.spec.ts +++ b/client/src/app/instance/cone-search/components/dec.component.spec.ts @@ -94,8 +94,8 @@ describe('[Instance][ConeSearch][Components] DecComponent', () => { expect(testedComponent.form.controls.dec.enabled).toBeTruthy(); testHostComponent.resolver = { ra: 1, dec: 2, name: 'myObject' }; testHostFixture.detectChanges(); - expect(spy).toHaveBeenCalledTimes(3); - expect(testedComponent.form.controls.dec.value).toEqual(2); + expect(spy).toHaveBeenCalledTimes(2); + expect(testedComponent.form.controls.dec.value).toEqual(32.87); }); it('#getDecDmsForm() should return DEC DMS form control', () => { diff --git a/client/src/app/instance/cone-search/components/dec.component.ts b/client/src/app/instance/cone-search/components/dec.component.ts index 501be2ea..7d8c3180 100644 --- a/client/src/app/instance/cone-search/components/dec.component.ts +++ b/client/src/app/instance/cone-search/components/dec.component.ts @@ -13,7 +13,7 @@ import { UntypedFormGroup } from '@angular/forms'; import { Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; -import { Resolver } from 'src/app/instance/store/models'; +import { ConeSearch } from 'src/app/instance/store/models'; /** * @class @@ -32,7 +32,7 @@ import { Resolver } from 'src/app/instance/store/models'; export class DecComponent implements OnInit, OnDestroy, OnChanges { @Input() form: UntypedFormGroup; @Input() unit: string; - @Input() resolver: Resolver; + @Input() coneSearch: ConeSearch; public decControlSubscription: Subscription public decDmsSubscription: Subscription; @@ -61,8 +61,10 @@ export class DecComponent implements OnInit, OnDestroy, OnChanges { } } - if (changes.resolver && changes.resolver.currentValue) { - this.form.controls.dec.setValue(changes.resolver.currentValue.dec); + if (changes.coneSearch && changes.coneSearch.currentValue) { + const dec = changes.coneSearch.currentValue.dec; + this.form.controls.dec.setValue(changes.coneSearch.currentValue.dec); + this.deg2DMS(dec); } } diff --git a/client/src/app/instance/cone-search/components/ra.component.spec.ts b/client/src/app/instance/cone-search/components/ra.component.spec.ts index 1ecb7b16..7a05acd6 100644 --- a/client/src/app/instance/cone-search/components/ra.component.spec.ts +++ b/client/src/app/instance/cone-search/components/ra.component.spec.ts @@ -94,8 +94,8 @@ describe('[Instance][ConeSearch][Components] RaComponent', () => { expect(testedComponent.form.controls.ra.enabled).toBeTruthy(); testHostComponent.resolver = { ra: 1, dec: 2, name: 'myObject' }; testHostFixture.detectChanges(); - expect(spy).toHaveBeenCalledTimes(3); - expect(testedComponent.form.controls.ra.value).toEqual(1); + expect(spy).toHaveBeenCalledTimes(2); + expect(testedComponent.form.controls.ra.value).toEqual(78.2); }); it('#getRaHmsForm() should return RA HMS form control', () => { diff --git a/client/src/app/instance/cone-search/components/ra.component.ts b/client/src/app/instance/cone-search/components/ra.component.ts index 6314f603..a177faac 100644 --- a/client/src/app/instance/cone-search/components/ra.component.ts +++ b/client/src/app/instance/cone-search/components/ra.component.ts @@ -13,7 +13,7 @@ import { UntypedFormGroup } from '@angular/forms'; import { Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; -import { Resolver } from 'src/app/instance/store/models'; +import { ConeSearch } from 'src/app/instance/store/models'; /** * @class @@ -32,7 +32,7 @@ import { Resolver } from 'src/app/instance/store/models'; export class RaComponent implements OnInit, OnDestroy, OnChanges { @Input() form: UntypedFormGroup; @Input() unit: string; - @Input() resolver: Resolver; + @Input() coneSearch: ConeSearch; public raControlSubscription: Subscription; public raHmsFormSubscription: Subscription; @@ -61,8 +61,10 @@ export class RaComponent implements OnInit, OnDestroy, OnChanges { } } - if (changes.resolver && changes.resolver.currentValue) { - this.form.controls.ra.setValue(changes.resolver.currentValue.ra); + if (changes.coneSearch && changes.coneSearch.currentValue) { + const ra = changes.coneSearch.currentValue.ra; + this.form.controls.ra.setValue(changes.coneSearch.currentValue.ra); + this.deg2HMS(ra); } } diff --git a/client/src/app/instance/cone-search/components/resolver.component.ts b/client/src/app/instance/cone-search/components/resolver.component.ts index d9add2b4..fab84821 100644 --- a/client/src/app/instance/cone-search/components/resolver.component.ts +++ b/client/src/app/instance/cone-search/components/resolver.component.ts @@ -23,7 +23,6 @@ import { ConeSearch, Resolver } from 'src/app/instance/store/models'; }) export class ResolverComponent { @Input() coneSearch: ConeSearch; - @Input() resolver: Resolver; @Input() resolverIsLoading: boolean; @Input() resolverIsLoaded: boolean; @Output() retrieveCoordinates: EventEmitter<string> = new EventEmitter(); diff --git a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html index e3609229..52e4398f 100644 --- a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html +++ b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.html @@ -6,7 +6,6 @@ <div class="col"> <app-cone-search [coneSearch]="coneSearch" - [resolver]="resolver" [resolverIsLoading]="resolverIsLoading" [resolverIsLoaded]="resolverIsLoaded" (retrieveCoordinates)="retrieveCoordinates.emit($event)" diff --git a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.ts b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.ts index a032eda0..f2096f26 100644 --- a/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.ts +++ b/client/src/app/instance/search-multiple/components/position/cone-search-panel.component.ts @@ -18,7 +18,6 @@ import { ConeSearch, Resolver, coneSearchToString } from 'src/app/instance/store }) export class ConeSearchPanelComponent { @Input() coneSearch: ConeSearch; - @Input() resolver: Resolver; @Input() resolverIsLoading: boolean; @Input() resolverIsLoaded: boolean; @Output() addConeSearch: EventEmitter<ConeSearch> = new EventEmitter(); diff --git a/client/src/app/instance/search-multiple/containers/position.component.html b/client/src/app/instance/search-multiple/containers/position.component.html index 65578260..262c9e22 100644 --- a/client/src/app/instance/search-multiple/containers/position.component.html +++ b/client/src/app/instance/search-multiple/containers/position.component.html @@ -9,7 +9,6 @@ <app-cone-search-panel [coneSearch]="coneSearch | async" - [resolver]="resolver | async" [resolverIsLoading]="resolverIsLoading | async" [resolverIsLoaded]="resolverIsLoaded | async" (addConeSearch)="addConeSearch($event)" diff --git a/client/src/app/instance/search-multiple/containers/position.component.ts b/client/src/app/instance/search-multiple/containers/position.component.ts index d1d57eba..7d883f8c 100644 --- a/client/src/app/instance/search-multiple/containers/position.component.ts +++ b/client/src/app/instance/search-multiple/containers/position.component.ts @@ -30,13 +30,11 @@ import * as coneSearchSelector from '../../store/selectors/cone-search.selector' templateUrl: 'position.component.html' }) export class PositionComponent extends AbstractSearchMultipleComponent implements OnInit { - public resolver: Observable<Resolver>; public resolverIsLoading: Observable<boolean>; public resolverIsLoaded: Observable<boolean>; constructor(protected store: Store<{ }>) { super(store); - this.resolver = this.store.select(coneSearchSelector.selectResolver); this.resolverIsLoading = this.store.select(coneSearchSelector.selectResolverIsLoading); this.resolverIsLoaded = this.store.select(coneSearchSelector.selectResolverIsLoaded); } diff --git a/client/src/app/instance/search/components/criteria/cone-search-tab.component.html b/client/src/app/instance/search/components/criteria/cone-search-tab.component.html index 48eedf4b..d0991f52 100644 --- a/client/src/app/instance/search/components/criteria/cone-search-tab.component.html +++ b/client/src/app/instance/search/components/criteria/cone-search-tab.component.html @@ -16,7 +16,6 @@ <div class="col"> <app-cone-search [coneSearch]="coneSearch" - [resolver]="resolver" [resolverIsLoading]="resolverIsLoading" [resolverIsLoaded]="resolverIsLoaded" (retrieveCoordinates)="retrieveCoordinates.emit($event)" diff --git a/client/src/app/instance/search/components/criteria/cone-search-tab.component.ts b/client/src/app/instance/search/components/criteria/cone-search-tab.component.ts index d7384306..3df09dba 100644 --- a/client/src/app/instance/search/components/criteria/cone-search-tab.component.ts +++ b/client/src/app/instance/search/components/criteria/cone-search-tab.component.ts @@ -26,7 +26,6 @@ export class ConeSearchTabComponent { @Input() datasetList: Dataset[]; @Input() coneSearch: ConeSearch; @Input() coneSearchConfig: ConeSearchConfig; - @Input() resolver: Resolver; @Input() resolverIsLoading: boolean; @Input() resolverIsLoaded: boolean; @Output() addConeSearch: EventEmitter<ConeSearch> = new EventEmitter(); diff --git a/client/src/app/instance/search/containers/criteria.component.html b/client/src/app/instance/search/containers/criteria.component.html index 9da1006f..17e9d847 100644 --- a/client/src/app/instance/search/containers/criteria.component.html +++ b/client/src/app/instance/search/containers/criteria.component.html @@ -22,7 +22,6 @@ [datasetList]="datasetList | async" [coneSearch]="coneSearch | async" [coneSearchConfig]="coneSearchConfig | async" - [resolver]="resolver | async" [resolverIsLoading]="resolverIsLoading | async" [resolverIsLoaded]="resolverIsLoaded | async" (addConeSearch)="addConeSearch($event)" diff --git a/client/src/app/instance/search/containers/criteria.component.ts b/client/src/app/instance/search/containers/criteria.component.ts index 4f4ad8ee..cb0d816c 100644 --- a/client/src/app/instance/search/containers/criteria.component.ts +++ b/client/src/app/instance/search/containers/criteria.component.ts @@ -34,7 +34,6 @@ import * as coneSearchConfigSelector from 'src/app/metamodel/selectors/cone-sear export class CriteriaComponent extends AbstractSearchComponent { public instance: Observable<Instance>; public dataset: Observable<Dataset>; - public resolver: Observable<Resolver>; public resolverIsLoading: Observable<boolean>; public resolverIsLoaded: Observable<boolean>; public coneSearchConfig: Observable<ConeSearchConfig>; @@ -45,7 +44,6 @@ export class CriteriaComponent extends AbstractSearchComponent { super(store); this.instance = store.select(instanceSelector.selectInstanceByRouteName); this.dataset = store.select(datasetSelector.selectDatasetByRouteName); - this.resolver = this.store.select(coneSearchSelector.selectResolver); this.resolverIsLoading = this.store.select(coneSearchSelector.selectResolverIsLoading); this.resolverIsLoaded = this.store.select(coneSearchSelector.selectResolverIsLoaded); this.coneSearchConfig = store.select(coneSearchConfigSelector.selectConeSearchConfig); diff --git a/client/src/app/instance/store/effects/cone-search.effects.spec.ts b/client/src/app/instance/store/effects/cone-search.effects.spec.ts index cf86c8d2..1033c5b6 100644 --- a/client/src/app/instance/store/effects/cone-search.effects.spec.ts +++ b/client/src/app/instance/store/effects/cone-search.effects.spec.ts @@ -2,6 +2,7 @@ import { TestBed } from '@angular/core/testing'; import { provideMockActions } from '@ngrx/effects/testing'; import { EffectsMetadata, getEffectsMetadata } from '@ngrx/effects'; +import { provideMockStore } from '@ngrx/store/testing'; import { Observable } from 'rxjs'; import { cold, hot } from 'jasmine-marbles'; import { ToastrService } from 'ngx-toastr'; @@ -10,6 +11,7 @@ import { ConeSearchEffects } from './cone-search.effects'; import { ConeSearchService } from '../services/cone-search.service'; import * as coneSearchActions from '../actions/cone-search.actions'; import { Resolver } from '../models'; +import * as fromConeSearch from 'src/app/instance/store/reducers/cone-search.reducer'; describe('[Instance][Store] ConeSearchEffects', () => { let actions = new Observable(); @@ -17,6 +19,9 @@ describe('[Instance][Store] ConeSearchEffects', () => { let metadata: EffectsMetadata<ConeSearchEffects>; let coneSearchService: ConeSearchService; let toastr: ToastrService; + const initialState = { + coneSearch: { ...fromConeSearch.initialState } + }; beforeEach(() => { TestBed.configureTestingModule({ @@ -24,7 +29,8 @@ describe('[Instance][Store] ConeSearchEffects', () => { ConeSearchEffects, { provide: ConeSearchService, useValue: { retrieveCoordinates: jest.fn() }}, { provide: ToastrService, useValue: { error: jest.fn() } }, - provideMockActions(() => actions) + provideMockActions(() => actions), + provideMockStore({ initialState }) ] }).compileComponents(); effects = TestBed.inject(ConeSearchEffects); diff --git a/client/src/app/instance/store/effects/cone-search.effects.ts b/client/src/app/instance/store/effects/cone-search.effects.ts index cf074734..d8606c24 100644 --- a/client/src/app/instance/store/effects/cone-search.effects.ts +++ b/client/src/app/instance/store/effects/cone-search.effects.ts @@ -9,13 +9,15 @@ import { Injectable } from '@angular/core'; -import { Actions, createEffect, ofType } from '@ngrx/effects'; +import { Actions, createEffect, ofType, concatLatestFrom } from '@ngrx/effects'; +import { Store } from '@ngrx/store'; import { of } from 'rxjs'; import { map, tap, mergeMap, catchError } from 'rxjs/operators'; import { ToastrService } from 'ngx-toastr'; import * as coneSearchActions from '../actions/cone-search.actions'; import { ConeSearchService } from '../services/cone-search.service'; +import * as coneSearchSelector from '../selectors/cone-search.selector'; /** * @class @@ -23,14 +25,13 @@ import { ConeSearchService } from '../services/cone-search.service'; */ @Injectable() export class ConeSearchEffects { - /** * Calls actions to retrieve object coordinates. */ retrieveCoordinates$ = createEffect((): any => this.actions$.pipe( ofType(coneSearchActions.retrieveCoordinates), - mergeMap((action) => this.coneSearchService.retrieveCoordinates(action.name) + mergeMap(action => this.coneSearchService.retrieveCoordinates(action.name) .pipe( map(response => { const parser = new DOMParser(); @@ -42,7 +43,7 @@ export class ConeSearchEffects { const ra = +xml.getElementsByTagName('jradeg')[0].childNodes[0].nodeValue; const dec = +xml.getElementsByTagName('jdedeg')[0].childNodes[0].nodeValue; const resolver = { name, ra, dec }; - return coneSearchActions.retrieveCoordinatesSuccess({ resolver }); + return coneSearchActions.retrieveCoordinatesSuccess({ resolver }) }), catchError(() => of(coneSearchActions.retrieveCoordinatesFail())) ) @@ -50,6 +51,27 @@ export class ConeSearchEffects { ) ); + /** + * Calls actions to retrieve object coordinates. + */ + retrieveCoordinatesSuccess$ = createEffect((): any => + this.actions$.pipe( + ofType(coneSearchActions.retrieveCoordinatesSuccess), + concatLatestFrom(() => this.store.select(coneSearchSelector.selectConeSearch)), + map(([action, coneSearch]) => { + const radius = (coneSearch) ? coneSearch.radius : 2; + const updatedConeSearch = { + ra: action.resolver.ra, + dec: action.resolver.dec, + radius + }; + return coneSearchActions.updateConeSearch({ + coneSearch: updatedConeSearch + }); + }) + ) + ); + /** * Displays retrieve object coordinates error notification. */ @@ -63,6 +85,7 @@ export class ConeSearchEffects { constructor( private actions$: Actions, private coneSearchService: ConeSearchService, - private toastr: ToastrService + private toastr: ToastrService, + private store: Store<{ }> ) {} } diff --git a/client/src/app/instance/store/reducers/cone-search.reducer.spec.ts b/client/src/app/instance/store/reducers/cone-search.reducer.spec.ts index fefb4582..dabdd073 100644 --- a/client/src/app/instance/store/reducers/cone-search.reducer.spec.ts +++ b/client/src/app/instance/store/reducers/cone-search.reducer.spec.ts @@ -60,7 +60,6 @@ describe('[Instance][Store] ConeSearch reducer', () => { const state = fromConeSearch.coneSearchReducer(initialState, action); expect(state.coneSearch).toBeNull(); - expect(state.resolver).toBe(resolver); expect(state.resolverIsLoading).toBeFalsy(); expect(state.resolverIsLoaded).toBeTruthy(); expect(state).not.toBe(initialState); diff --git a/client/src/app/instance/store/reducers/cone-search.reducer.ts b/client/src/app/instance/store/reducers/cone-search.reducer.ts index 87d4d1f8..c76d8620 100644 --- a/client/src/app/instance/store/reducers/cone-search.reducer.ts +++ b/client/src/app/instance/store/reducers/cone-search.reducer.ts @@ -42,17 +42,15 @@ export const coneSearchReducer = createReducer( coneSearch })), on(coneSearchActions.deleteConeSearch, state => ({ - ...state, - coneSearch: null + ...initialState })), on(coneSearchActions.retrieveCoordinates, state => ({ ...state, resolverIsLoading: true, resolverIsLoaded: false })), - on(coneSearchActions.retrieveCoordinatesSuccess, (state, { resolver }) => ({ + on(coneSearchActions.retrieveCoordinatesSuccess, state => ({ ...state, - resolver, resolverIsLoading: false, resolverIsLoaded: true })), -- GitLab