@@ -11,6 +11,7 @@ import axios from '@mapstore/framework/libs/ajax';
11
11
import uuid from "uuid" ;
12
12
import url from "url" ;
13
13
import get from 'lodash/get' ;
14
+ import pick from 'lodash/pick' ;
14
15
import {
15
16
getNewMapConfiguration ,
16
17
getNewGeoStoryConfig ,
@@ -26,16 +27,18 @@ import {
26
27
setResourceThumbnail ,
27
28
setLinkedResourcesByPk ,
28
29
removeLinkedResourcesByPk ,
29
- getDatasetTimeSettingsByPk
30
+ getDatasetTimeSettingsByPk ,
31
+ updateDataset
30
32
} from '@js/api/geonode/v2' ;
31
33
import { configureMap } from '@mapstore/framework/actions/config' ;
32
34
import { mapSelector } from '@mapstore/framework/selectors/map' ;
33
35
import { isMapInfoOpen } from '@mapstore/framework/selectors/mapInfo' ;
34
- import { getSelectedLayer } from '@mapstore/framework/selectors/layers' ;
36
+ import { getSelectedLayer , layerSettingSelector , getLayerFromId } from '@mapstore/framework/selectors/layers' ;
35
37
import { isLoggedIn } from '@mapstore/framework/selectors/security' ;
36
38
import {
37
39
browseData ,
38
- selectNode
40
+ selectNode ,
41
+ showSettings
39
42
} from '@mapstore/framework/actions/layers' ;
40
43
import {
41
44
updateStatus ,
@@ -57,7 +60,8 @@ import {
57
60
updateResource ,
58
61
setResourcePathParameters ,
59
62
MANAGE_LINKED_RESOURCE ,
60
- setMapViewerLinkedResource
63
+ setMapViewerLinkedResource ,
64
+ UPDATE_DATASET_LAYER_SETTINGS
61
65
} from '@js/actions/gnresource' ;
62
66
63
67
import {
@@ -95,7 +99,7 @@ import { styleServiceSelector } from '@mapstore/framework/selectors/styleeditor'
95
99
import { updateStyleService } from '@mapstore/framework/api/StyleEditor' ;
96
100
import { CLICK_ON_MAP , resizeMap , CHANGE_MAP_VIEW , zoomToExtent } from '@mapstore/framework/actions/map' ;
97
101
import { purgeMapInfoResults , closeIdentify , NEW_MAPINFO_REQUEST } from '@mapstore/framework/actions/mapInfo' ;
98
- import { saveError } from '@js/actions/gnsave' ;
102
+ import { saveError , saveSuccess , savingResource } from '@js/actions/gnsave' ;
99
103
import {
100
104
error as errorNotification ,
101
105
success as successNotification ,
@@ -145,9 +149,10 @@ const resourceTypes = {
145
149
. then ( ( response ) => {
146
150
const [ mapConfig , gnLayer , timeseries ] = response ;
147
151
const newLayer = resourceToLayerConfig ( gnLayer ) ;
152
+ const _gnLayer = { ...gnLayer , layerSettings : gnLayer . data } ;
148
153
149
- if ( ! newLayer ?. extendedParams ?. defaultStyle || page !== 'dataset_edit_style_viewer ' ) {
150
- return [ mapConfig , { ...gnLayer , timeseries} , newLayer ] ;
154
+ if ( ! newLayer ?. extendedParams ?. defaultStyle || page !== 'dataset_edit_layer_settings ' ) {
155
+ return [ mapConfig , { ..._gnLayer , timeseries} , newLayer ] ;
151
156
}
152
157
153
158
return getStyleProperties ( {
@@ -156,7 +161,7 @@ const resourceTypes = {
156
161
} ) . then ( ( updatedStyle ) => {
157
162
return [
158
163
mapConfig ,
159
- { ...gnLayer , timeseries} ,
164
+ { ..._gnLayer , timeseries} ,
160
165
{
161
166
...newLayer ,
162
167
availableStyles : [ {
@@ -204,9 +209,9 @@ const resourceTypes = {
204
209
browseData ( newLayer )
205
210
]
206
211
: [ ] ) ,
207
- ...( page === 'dataset_edit_style_viewer '
212
+ ...( page === 'dataset_edit_layer_settings '
208
213
? [
209
- setControlProperty ( 'visualStyleEditor' , 'enabled' , true ) ,
214
+ showSettings ( newLayer . id , "layers" , { opacity : newLayer . opacity ?? 1 } ) ,
210
215
updateAdditionalLayer ( newLayer . id , STYLE_OWNER_NAME , 'override' , { } ) ,
211
216
updateStatus ( 'edit' ) ,
212
217
resizeMap ( )
@@ -711,6 +716,51 @@ export const gnZoomToFitBounds = (action$) =>
711
716
} )
712
717
) ;
713
718
719
+ export const gnUpdateLayerSettings = ( action$ , { getState = ( ) => { } } = { } ) =>
720
+ action$ . ofType ( UPDATE_DATASET_LAYER_SETTINGS )
721
+ . switchMap ( ( ) => {
722
+ const state = getState ( ) ;
723
+ const { node, options} = layerSettingSelector ( state ) ?? { } ;
724
+ const layer = getLayerFromId ( state , node ) ;
725
+ const { layerSettings} = getResourceData ( state ) ?? { } ;
726
+ const initialData = state ?. gnresource ?. initialResource ?. data ?? { } ;
727
+ const settings = {
728
+ ...initialData ,
729
+ ...layerSettings ,
730
+ ...options ,
731
+ ...pick ( layer , [ 'fields' ] )
732
+ } ;
733
+ const body = { ...( settings . title && { title : settings . title } ) , data : settings } ;
734
+ return Observable . defer ( ( ) =>
735
+ updateDataset ( layer . pk , body )
736
+ )
737
+ . switchMap ( ( res ) => {
738
+ const { data, ...response } = res ?? { } ;
739
+ const gnLayer = { ...response , layerSettings : data } ;
740
+ return Observable . of (
741
+ updateResourceProperties ( gnLayer ) ,
742
+ successNotification ( {
743
+ title : "gnviewer.layerSettings.title" ,
744
+ message : 'gnviewer.layerSettings.updateSuccess'
745
+ } )
746
+ ) ;
747
+ } )
748
+ . let (
749
+ wrapStartStop (
750
+ savingResource ( true ) ,
751
+ saveSuccess ( ) ,
752
+ ( error ) => {
753
+ return Observable . of (
754
+ errorNotification ( {
755
+ title : "gnviewer.layerSettings.title" ,
756
+ message : 'gnviewer.layerSettings.updateError'
757
+ } ) ,
758
+ saveError ( error )
759
+ ) ;
760
+ }
761
+ )
762
+ ) ;
763
+ } ) ;
714
764
export default {
715
765
gnViewerRequestNewResourceConfig,
716
766
gnViewerRequestResourceConfig,
@@ -719,5 +769,6 @@ export default {
719
769
closeOpenPanels,
720
770
closeDatasetCatalogPanel,
721
771
gnManageLinkedResource,
722
- gnZoomToFitBounds
772
+ gnZoomToFitBounds,
773
+ gnUpdateLayerSettings
723
774
} ;
0 commit comments