@@ -12,6 +12,7 @@ import uuid from "uuid";
1212import url from "url" ;
1313import get from 'lodash/get' ;
1414import isNil from 'lodash/isNil' ;
15+
1516import {
1617 getNewMapConfiguration ,
1718 getNewGeoStoryConfig ,
@@ -33,12 +34,13 @@ import {
3334} from '@js/api/geonode/v2' ;
3435import { configureMap } from '@mapstore/framework/actions/config' ;
3536import { isMapInfoOpen } from '@mapstore/framework/selectors/mapInfo' ;
36- import { getSelectedLayer } from '@mapstore/framework/selectors/layers' ;
3737import { isLoggedIn , userSelector } from '@mapstore/framework/selectors/security' ;
3838import {
3939 browseData ,
4040 selectNode ,
41- showSettings
41+ showSettings ,
42+ updateNode ,
43+ hideSettings
4244} from '@mapstore/framework/actions/layers' ;
4345import {
4446 setSelectedResource ,
@@ -64,7 +66,8 @@ import {
6466 setMapViewerLinkedResource ,
6567 REQUEST_RESOURCE ,
6668 resourceLoading ,
67- resourceError
69+ resourceError ,
70+ setSelectedLayer
6871} from '@js/actions/gnresource' ;
6972
7073import {
@@ -94,7 +97,8 @@ import {
9497 canAddResource ,
9598 getResourceData ,
9699 getResourceId ,
97- getResourceThumbnail
100+ getResourceThumbnail ,
101+ getSelectedLayer
98102} from '@js/selectors/resource' ;
99103import { updateAdditionalLayer } from '@mapstore/framework/actions/additionallayers' ;
100104import { STYLE_OWNER_NAME } from '@mapstore/framework/utils/StyleEditorUtils' ;
@@ -425,15 +429,26 @@ const resourceTypes = {
425429} ;
426430
427431// collect all the reset action needed before changing a viewer
428- const getResetActions = ( isSameResource ) => [
429- resetControls ( ) ,
430- ...( ! isSameResource ? [ resetResourceState ( ) ] : [ ] ) ,
431- setControlProperty ( 'rightOverlay' , 'enabled' , false ) ,
432- setControlProperty ( FIT_BOUNDS_CONTROL , 'geometry' , null ) ,
433- // reset style editor state to avoid persistence service configuration in between resource pages
434- initStyleService ( ) ,
435- resetStyleEditor ( )
436- ] ;
432+ const getResetActions = ( state , isSameResource ) => {
433+ const initialResource = state ?. gnresource ?. initialResource ;
434+ const initialLayer = initialResource && initialResource . resource_type === ResourceTypes . DATASET && resourceToLayerConfig ( initialResource ) ;
435+ return [
436+ resetControls ( ) ,
437+ ...( ! isSameResource
438+ ? [ resetResourceState ( ) ]
439+ : [
440+ ...( initialResource ? [ setResource ( initialResource ) ] : [ ] ) ,
441+ ...( initialLayer ? [ setSelectedLayer ( initialLayer ) , updateNode ( initialLayer . layerId , 'layers' , initialLayer ) ] : [ ] )
442+ ]
443+ ) ,
444+ setControlProperty ( 'rightOverlay' , 'enabled' , false ) ,
445+ setControlProperty ( FIT_BOUNDS_CONTROL , 'geometry' , null ) ,
446+ // reset style editor state to avoid persistence service configuration in between resource pages
447+ initStyleService ( ) ,
448+ resetStyleEditor ( ) ,
449+ hideSettings ( )
450+ ] ;
451+ } ;
437452
438453export const gnViewerRequestNewResourceConfig = ( action$ , store ) =>
439454 action$ . ofType ( REQUEST_NEW_RESOURCE_CONFIG )
@@ -502,7 +517,7 @@ export const gnViewerRequestResourceConfig = (action$, store) =>
502517 const isSamePreviousResource = ! resourceData ?. [ '@ms-detail' ] && resourceData ?. pk === action . pk ;
503518 return Observable . concat (
504519 Observable . of (
505- ...getResetActions ( isSamePreviousResource ) ,
520+ ...getResetActions ( state , isSamePreviousResource ) ,
506521 loadingResourceConfig ( true ) ,
507522 setResourceType ( action . resourceType ) ,
508523 setResourcePathParameters ( action ?. options ?. params )
0 commit comments