@@ -12,7 +12,7 @@ import { compareMapChanges } from '@mapstore/framework/utils/MapUtils';
1212import { currentStorySelector } from '@mapstore/framework/selectors/geostory' ;
1313import { originalDataSelector } from '@mapstore/framework/selectors/dashboard' ;
1414import { widgetsConfig } from '@mapstore/framework/selectors/widgets' ;
15- import { ResourceTypes , RESOURCE_MANAGEMENT_PROPERTIES } from '@js/utils/ResourceUtils' ;
15+ import { ResourceTypes , RESOURCE_MANAGEMENT_PROPERTIES , resourceToLayerConfig } from '@js/utils/ResourceUtils' ;
1616import {
1717 getCurrentResourceDeleteLoading ,
1818 getCurrentResourceCopyLoading
@@ -228,6 +228,11 @@ function isMapCenterEqual(initialCenter = {}, currentCenter = {}) {
228228 return initialCenter . crs === currentCenter . crs && Math . abs ( initialCenter . x - currentCenter . x ) < CENTER_EPS && Math . abs ( initialCenter . y - currentCenter . y ) < CENTER_EPS ;
229229}
230230
231+ export function getInitialDatasetLayer ( state ) {
232+ const initialResource = state ?. gnresource ?. initialResource ;
233+ return initialResource && initialResource . resource_type === ResourceTypes . DATASET && resourceToLayerConfig ( omit ( initialResource , [ 'default_style' ] ) ) ;
234+ }
235+
231236function isResourceDataEqual ( state , initialData = { } , currentData = { } ) {
232237 const resourceType = state ?. gnresource ?. type ;
233238 if ( isEmpty ( initialData ) || isEmpty ( currentData ) ) {
@@ -300,11 +305,10 @@ function isResourceDataEqual(state, initialData = {}, currentData = {}) {
300305 const selectedLayerInitial = getSelectedLayer ( state ) ;
301306 const initialLayerData = { ...selectedLayerInitial , ...initialData } ;
302307
303- const isSettingsEqual = compareObjects ( currentData , initialLayerData ) ;
304- const isStyleEqual = selectedLayer ?. style === initialLayerData ?. style ;
305- const isAttributesEqual = ! isEmpty ( initialLayerData )
306- && ! isEmpty ( selectedLayer )
307- && isEqual ( initialLayerData ?. fields , selectedLayer . fields ) ;
308+ const isSettingsEqual = compareObjects ( omit ( currentData , [ 'style' , 'fields' ] ) , omit ( initialLayerData , [ 'style' , 'fields' ] ) ) ;
309+ const isStyleEqual = isEmpty ( selectedLayer ?. availableStyles ) || isEmpty ( selectedLayer ?. style ) ? true
310+ : selectedLayer ?. style === selectedLayer ?. availableStyles ?. [ 0 ] ?. name ;
311+ const isAttributesEqual = isEmpty ( selectedLayer ) ? true : ! isEmpty ( initialLayerData ) && isEqual ( initialLayerData ?. fields , selectedLayer . fields ) ;
308312
309313 return isSettingsEqual && isAttributesEqual && isStyleEqual ;
310314 }
0 commit comments