Merge branch 'feature/fix_zoom_issue_after_edit_take2' into develop
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				FarmMaps.Develop/FarmMapsLib/develop This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	FarmMaps.Develop/FarmMapsLib/develop This commit looks good
				
			This commit is contained in:
		@@ -128,29 +128,21 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
 | 
			
		||||
    this.store.dispatch(new mapActions.Init());   
 | 
			
		||||
    this.selectedFeatures$.next({x:0,y:0,features:[]});
 | 
			
		||||
    this.selectedFeatures$.next(null);
 | 
			
		||||
    this.query$.pipe(withLatestFrom(this.mapState$),withLatestFrom(this.setStateCount$)).subscribe((state) => {
 | 
			
		||||
      let queryState = state[0][0];
 | 
			
		||||
      let mapState = state[0][1];      
 | 
			
		||||
      let urlparts=[];
 | 
			
		||||
 | 
			
		||||
      // TODO: fix this properly move the action to a separte column in itemtypes
 | 
			
		||||
      if(queryState.itemType && queryState.itemCode) {
 | 
			
		||||
        let itemType = this.itemTypeService.itemTypes[queryState.itemType];
 | 
			
		||||
        if (itemType.viewer == "edit_in_editor" && itemType.editor) {
 | 
			
		||||
          urlparts.push('/editor');
 | 
			
		||||
          urlparts.push(itemType.editor);
 | 
			
		||||
          urlparts.push('item');
 | 
			
		||||
          urlparts.push(queryState.itemCode);               
 | 
			
		||||
        }       
 | 
			
		||||
      }   
 | 
			
		||||
      if(state[1]>0) {
 | 
			
		||||
        if(urlparts.length>0) {
 | 
			
		||||
           this.router.navigate(urlparts);   
 | 
			
		||||
        } else {
 | 
			
		||||
           this.replaceUrl(mapState, queryState,false); 
 | 
			
		||||
        } 
 | 
			
		||||
    this.query$.pipe(withLatestFrom(this.mapState$),withLatestFrom(this.setStateCount$)).subscribe(([[queryState,mapState],setStateCount]) =>{
 | 
			
		||||
      if(setStateCount>0) {
 | 
			
		||||
        this.replaceUrl(mapState,queryState,false);
 | 
			
		||||
      }
 | 
			
		||||
    });   
 | 
			
		||||
    this.mapState$.pipe(withLatestFrom(this.queryState$),withLatestFrom(this.setStateCount$)).subscribe(([[mapState,queryState],setStateCount]) =>{
 | 
			
		||||
      if(setStateCount>0) {
 | 
			
		||||
        this.replaceUrl(mapState,queryState,true);
 | 
			
		||||
      }
 | 
			
		||||
    });    
 | 
			
		||||
    this.queryState$.pipe(withLatestFrom(this.mapState$),withLatestFrom(this.setStateCount$)).subscribe(([[queryState,mapState],setStateCount]) =>{
 | 
			
		||||
      if(setStateCount>0) {
 | 
			
		||||
        this.replaceUrl(mapState,queryState,true);
 | 
			
		||||
      }
 | 
			
		||||
    }) 
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  initCustomStyles() {
 | 
			
		||||
@@ -207,13 +199,10 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
        this.zone.run(()=> {
 | 
			
		||||
          if ( queryStateChanged && mapStateChanged) {
 | 
			
		||||
            console.debug("Both states");
 | 
			
		||||
            this.store.dispatch(new mapActions.SetState(newMapState,newQueryState));
 | 
			
		||||
          } else 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));
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
@@ -222,7 +211,6 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
 | 
			
		||||
    setTimeout(() => {
 | 
			
		||||
      this.map.instance.updateSize();
 | 
			
		||||
    }, 500);
 | 
			
		||||
    console.debug("Afterviewinit");   
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  handleSearchCollapse(event) {
 | 
			
		||||
@@ -254,7 +242,6 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
 | 
			
		||||
  } 
 | 
			
		||||
 | 
			
		||||
  replaceUrl(mapState: IMapState, queryState: IQueryState, replace: boolean = true) {
 | 
			
		||||
      console.debug(`Replace url : Baselayer(${mapState.baseLayerCode}) Querystate(${this.serializeService.serialize(queryState)})`);
 | 
			
		||||
      let parts =["."];
 | 
			
		||||
      parts.push(mapState.xCenter.toFixed(5));
 | 
			
		||||
      parts.push(mapState.yCenter.toFixed(5));
 | 
			
		||||
@@ -278,10 +265,10 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
 | 
			
		||||
      let mapState: IMapState = { xCenter: center[0], yCenter: center[1], zoom: zoom, rotation: rotation, baseLayerCode: null };
 | 
			
		||||
      let state = { mapState: mapState, extent: extent };
 | 
			
		||||
      let source = from([state]);
 | 
			
		||||
      source.pipe(withLatestFrom(this.selectedBaseLayer$), withLatestFrom(this.queryState$)).subscribe(([[state, baselayer], queryState]) => {
 | 
			
		||||
        if (mapState && baselayer && queryState) {
 | 
			
		||||
      source.pipe(withLatestFrom(this.selectedBaseLayer$)).subscribe(([state, baselayer]) => {
 | 
			
		||||
        if (mapState && baselayer) {
 | 
			
		||||
          let newMapState = tassign(state.mapState, { baseLayerCode: baselayer.item.code });
 | 
			
		||||
          this.replaceUrl(newMapState, tassign(queryState, { bbox: queryState.bboxFilter ? state.extent : queryState.bbox }));
 | 
			
		||||
          this.store.dispatch(new mapActions.SetMapState(newMapState));
 | 
			
		||||
          this.store.dispatch(new mapActions.SetViewExtent(state.extent));
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,10 @@ import {FeatureIconService} from '../services/feature-icon.service';
 | 
			
		||||
 | 
			
		||||
import * as style from 'ol/style';
 | 
			
		||||
 | 
			
		||||
import { ItemTypeService } from '@farmmaps/common';
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class MapEffects {
 | 
			
		||||
@@ -252,7 +256,22 @@ export class MapEffects {
 | 
			
		||||
    switchMap((action: mapActions.SetQueryState) => {
 | 
			
		||||
        var newAction:Action;
 | 
			
		||||
        if (action.queryState.itemCode && action.queryState.itemCode != "") {
 | 
			
		||||
          newAction= new mapActions.SelectItem(action.queryState.itemCode);
 | 
			
		||||
          let urlparts=[];
 | 
			
		||||
          if(action.queryState.itemType && action.queryState.itemType!= "") {
 | 
			
		||||
            let itemType = this.itemTypeService$.itemTypes[action.queryState.itemType];
 | 
			
		||||
            if (itemType.viewer == "edit_in_editor" && itemType.editor) {
 | 
			
		||||
              urlparts.push('/editor');
 | 
			
		||||
              urlparts.push(itemType.editor);
 | 
			
		||||
              urlparts.push('item');
 | 
			
		||||
              urlparts.push(action.queryState.itemCode);               
 | 
			
		||||
            }    
 | 
			
		||||
          }
 | 
			
		||||
          if(urlparts.length==0 ) {
 | 
			
		||||
            newAction= new mapActions.SelectItem(action.queryState.itemCode);
 | 
			
		||||
          } else {
 | 
			
		||||
            this.router$.navigate(urlparts);
 | 
			
		||||
            return [];
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          newAction= new mapActions.StartSearch(action.queryState);
 | 
			
		||||
        }
 | 
			
		||||
@@ -272,7 +291,7 @@ export class MapEffects {
 | 
			
		||||
      return of(newAction);
 | 
			
		||||
    }));
 | 
			
		||||
 | 
			
		||||
  constructor(private actions$: Actions, private store$: Store<mapReducers.State>, private folderService$: FolderService, private itemService$: ItemService,private featureIconService$:FeatureIconService) {
 | 
			
		||||
    constructor(private actions$: Actions, private store$: Store<mapReducers.State>, private folderService$: FolderService, private itemService$: ItemService,private featureIconService$:FeatureIconService,private itemTypeService$:ItemTypeService,private router$:Router) {
 | 
			
		||||
    this._geojsonFormat = new GeoJSON();
 | 
			
		||||
    this._wktFormat = new WKT();
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user