@@ -34,7 +34,9 @@ export default class MapStore {
3434
3535 public static proModeButtonEnabled = ref ( true ) ;
3636
37- public static displayConfiguration : Ref < DisplayConfiguration > = ref ( { default_displayed_layers : [ ] , enabled_ui : [ 'Collections' , 'Datasets' , 'Metadata' ] , default_tab : 'Scenarios' } ) ;
37+ public static displayConfiguration : Ref < DisplayConfiguration > = ref (
38+ { default_displayed_layers : [ ] , enabled_ui : [ 'Collections' , 'Datasets' , 'Metadata' ] , default_tab : 'Scenarios' } ,
39+ ) ;
3840
3941 // Ability to toggle proMode so Staff users can see what other users see.
4042 public static proMode = computed ( ( ) => MapStore . userIsStaff . value && MapStore . proModeButtonEnabled . value ) ;
@@ -106,14 +108,57 @@ export default class MapStore {
106108 MapStore . mapLayersByDataset [ datasetId ] = await UVdatApi . getDatasetLayers ( datasetId ) ;
107109 }
108110
109- public static async getDisplayConfiguration ( ) {
111+ public static async getDisplayConfiguration ( initial = false ) {
110112 MapStore . displayConfiguration . value = await UVdatApi . getDisplayConfiguration ( ) ;
113+ // Loading first time process default map layers
114+ if ( initial && MapStore . displayConfiguration . value . default_displayed_layers . length ) {
115+ const datasetIds = MapStore . displayConfiguration . value . default_displayed_layers . map ( ( item ) => item . dataset_id ) ;
116+ const datasetIdLayers = await UVdatApi . getDatasetsLayers ( datasetIds ) ;
117+ const layerByDataset : Record < number , ( VectorMapLayer | RasterMapLayer | NetCDFData ) [ ] > = { } ;
118+ const toggleLayers : ( VectorMapLayer | RasterMapLayer | NetCDFLayer ) [ ] = [ ] ;
119+ const enabledLayers = MapStore . displayConfiguration . value . default_displayed_layers ;
120+ datasetIdLayers . forEach ( ( item ) => {
121+ if ( item . dataset_id !== undefined ) {
122+ if ( layerByDataset [ item . dataset_id ] === undefined ) {
123+ layerByDataset [ item . dataset_id ] = [ ] ;
124+ }
125+ layerByDataset [ item . dataset_id ] . push ( item ) ;
126+ }
127+ enabledLayers . forEach ( ( enabledLayer ) => {
128+ if ( item . type === 'netcdf' ) {
129+ if ( enabledLayer . dataset_id === item . dataset_id ) {
130+ const netCDFLayers = ( ( item as NetCDFData ) . layers ) ;
131+ for ( let i = 0 ; i < netCDFLayers . length ; i += 1 ) {
132+ const layer = netCDFLayers [ i ] ;
133+ if ( layer . id === enabledLayer . id ) {
134+ toggleLayers . push ( layer ) ;
135+ }
136+ }
137+ }
138+ } else if (
139+ enabledLayer . type === item . type
140+ && enabledLayer . id === item . id
141+ && enabledLayer . dataset_id === item . dataset_id ) {
142+ toggleLayers . push ( item ) ;
143+ }
144+ } ) ;
145+ } ) ;
146+ Object . keys ( layerByDataset ) . forEach ( ( datasetIdKey ) => {
147+ const datasetId = parseInt ( datasetIdKey , 10 ) ;
148+ if ( ! Number . isNaN ( datasetId ) ) {
149+ MapStore . mapLayersByDataset [ datasetId ] = layerByDataset [ datasetId ] ;
150+ }
151+ } ) ;
152+ // Now we enable these default layers
153+ return toggleLayers ;
154+ }
155+ return [ ] ;
111156 }
112157
113158 public static mapLayerFeatureGraphs = computed ( ( ) => {
114159 const foundMapLayerFeatureGraphs : { name : string , id : number ; graphs : VectorFeatureTableGraph [ ] } [ ] = [ ] ;
115160 MapStore . selectedVectorMapLayers . value . forEach ( ( item ) => {
116- if ( item . default_style . mapLayerFeatureTableGraphs && item . default_style . mapLayerFeatureTableGraphs . length ) {
161+ if ( item . default_style ? .mapLayerFeatureTableGraphs && item . default_style . mapLayerFeatureTableGraphs . length ) {
117162 foundMapLayerFeatureGraphs . push ( {
118163 name : item . name ,
119164 id : item . id ,
@@ -140,7 +185,7 @@ export default class MapStore {
140185 public static mapLayerVectorSearchable = computed ( ( ) => {
141186 const foundMapLayerSearchable : { name : string , id : number ; searchSettings : SearchableVectorData } [ ] = [ ] ;
142187 MapStore . selectedVectorMapLayers . value . forEach ( ( item ) => {
143- if ( item . default_style . searchableVectorFeatureData ) {
188+ if ( item . default_style ? .searchableVectorFeatureData ) {
144189 foundMapLayerSearchable . push ( {
145190 name : item . name ,
146191 id : item . id ,
0 commit comments