Fix navigation issue
All checks were successful
FarmMaps.Develop/FarmMapsLib/develop This commit looks good

This commit is contained in:
Willem Dantuma 2020-02-20 17:38:05 +01:00
parent 1a3bbf26f2
commit f82125a486
3 changed files with 36 additions and 27 deletions

View File

@ -150,11 +150,11 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
this.compassHeading$ = this.deviceorientationService.getCurrentCompassHeading(); this.compassHeading$ = this.deviceorientationService.getCurrentCompassHeading();
this.styles$ = this.store.select(mapReducers.selectGetStyles); this.styles$ = this.store.select(mapReducers.selectGetStyles);
this.mapState$.pipe(withLatestFrom(this.queryState$)).subscribe((state) => { // this.mapState$.pipe(withLatestFrom(this.queryState$)).subscribe((state) => {
this.replaceUrl(state[0], state[1], true); // this.replaceUrl(state[0], state[1], true);
}); // });
this.query$.pipe(withLatestFrom(this.mapState$)).subscribe((state) => { this.query$.pipe(withLatestFrom(this.mapState$)).subscribe((state) => {
this.replaceUrl(state[1], state[0],false); this.replaceUrl(state[1], state[0],this.stateSetCount == 0);
}); });
this.initCustomStyles(); this.initCustomStyles();
} }
@ -210,17 +210,27 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
queryStateChanged = this.lastQueryState != queryState; queryStateChanged = this.lastQueryState != queryState;
this.lastQueryState = queryState; this.lastQueryState = queryState;
} }
this.zone.run(()=> {
if ( queryStateChanged) {
console.debug("Query state");
this.store.dispatch(new mapActions.SetQueryState(newQueryState));
} else if (mapStateChanged) {
console.debug("Map state");
this.store.dispatch(new mapActions.SetMapState(newMapState));
}
})
if (mapStateChanged && queryStateChanged) {
console.debug("Both states"); // if (mapStateChanged && queryStateChanged) {
this.store.dispatch(new mapActions.SetState(newMapState, newQueryState)); // console.debug("Both states");
} else if (mapStateChanged) { // this.store.dispatch(new mapActions.SetState(newMapState, newQueryState));
console.debug("Map state"); // } else if (mapStateChanged) {
this.store.dispatch(new mapActions.SetMapState(newMapState)); // console.debug("Map state");
} else if (queryStateChanged) { // this.store.dispatch(new mapActions.SetMapState(newMapState));
console.debug("Query state"); // } else if (queryStateChanged) {
this.store.dispatch(new mapActions.SetQueryState(newQueryState)); // console.debug("Query state");
} // this.store.dispatch(new mapActions.SetQueryState(newQueryState));
// }
this.stateSetCount += 1; this.stateSetCount += 1;
}); });
setTimeout(() => { setTimeout(() => {

View File

@ -139,19 +139,7 @@ export class MapEffects {
startSearchSucces$: Observable<Action> = this.actions$.pipe( startSearchSucces$: Observable<Action> = this.actions$.pipe(
ofType(mapActions.STARTSEARCHSUCCESS), ofType(mapActions.STARTSEARCHSUCCESS),
mergeMap((action: mapActions.StartSearchSuccess) => { mergeMap((action: mapActions.StartSearchSuccess) => {
if (action.query.bboxFilter) {
return [new commonActions.SetMenuVisible(false)]; return [new commonActions.SetMenuVisible(false)];
} else {
var extent = createEmpty();
if (extent) {
for (let f of action.features) {
extend(extent, (f as Feature).getGeometry().getExtent());
}
}
//return [];
return [new mapActions.SetExtent(extent),new commonActions.SetMenuVisible(false)];
}
})); }));
@Effect() @Effect()

View File

@ -10,6 +10,7 @@ import {commonActions} from '@farmmaps/common';
import { createSelector, createFeatureSelector } from '@ngrx/store'; import { createSelector, createFeatureSelector } from '@ngrx/store';
import {Feature} from 'ol'; import {Feature} from 'ol';
import { createEmpty, extend} from 'ol/extent';
import { ROUTER_NAVIGATION, RouterNavigationAction } from '@ngrx/router-store'; import { ROUTER_NAVIGATION, RouterNavigationAction } from '@ngrx/router-store';
@ -124,11 +125,21 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
} }
case mapActions.STARTSEARCHSUCCESS: { case mapActions.STARTSEARCHSUCCESS: {
let a = action as mapActions.StartSearchSuccess; let a = action as mapActions.StartSearchSuccess;
let extent = state.extent;
if (action.query.bboxFilter) {
extent = createEmpty();
if (extent) {
for (let f of action.features) {
extend(extent, (f as Feature).getGeometry().getExtent());
}
}
}
return tassign(state, { return tassign(state, {
panelVisible: true, panelVisible: true,
clearEnabled: true, clearEnabled: true,
searchMinified: true, searchMinified: true,
features: a.features features: a.features,
extent:extent
}); });
} }
case mapActions.SELECTFEATURE: { case mapActions.SELECTFEATURE: {