@eeacms/volto-arcgis-block 0.1.227 → 0.1.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
+ ### [0.1.228](https://github.com/eea/volto-arcgis-block/compare/0.1.227...0.1.228) - 31 October 2023
8
+
7
9
  ### [0.1.227](https://github.com/eea/volto-arcgis-block/compare/0.1.226...0.1.227) - 30 October 2023
8
10
 
9
11
  #### :hammer_and_wrench: Others
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-arcgis-block",
3
- "version": "0.1.227",
3
+ "version": "0.1.228",
4
4
  "description": "volto-arcgis-block: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: CodeSyntax",
@@ -223,6 +223,55 @@ class LegendWidget extends React.Component {
223
223
  });
224
224
  }
225
225
 
226
+ /**
227
+ * Method that returns true or false if session storage has any visible active layer
228
+ */
229
+ enabledVisilelayers() {
230
+ let enabledVisilelayers = false;
231
+ let visiblelayersFromStorage = JSON.parse(sessionStorage.visibleLayers);
232
+ let visibleLayerKeys = Object.keys(visiblelayersFromStorage);
233
+ for (let i = 0; i < visibleLayerKeys.length; i++) {
234
+ let currentLayer = visibleLayerKeys[i];
235
+ if (visiblelayersFromStorage[currentLayer][1] === 'eye')
236
+ enabledVisilelayers = true;
237
+ }
238
+ return enabledVisilelayers;
239
+ }
240
+
241
+ /**
242
+ * Method to handle "No legend" message visibility
243
+ */
244
+ handleNoLegendMessage() {
245
+ const noLegendMessage = document.querySelectorAll(
246
+ '.esri-legend__message',
247
+ )[0];
248
+ if (sessionStorage.checkedLayers && sessionStorage.checkedLayers === '[]') {
249
+ // show no legend message
250
+ if (noLegendMessage) {
251
+ noLegendMessage.style.display = 'block';
252
+ }
253
+ } else if (
254
+ sessionStorage.visibleLayers &&
255
+ (this.enabledVisilelayers() || sessionStorage.visibleLayers === '{}')
256
+ ) {
257
+ // hide no legend message
258
+ if (noLegendMessage) {
259
+ noLegendMessage.style.display = 'none';
260
+ }
261
+ } else if (noLegendMessage) {
262
+ if (
263
+ sessionStorage.checkedLayers &&
264
+ sessionStorage.checkedLayers === '[]'
265
+ ) {
266
+ noLegendMessage.style.display = 'block';
267
+ } else if (sessionStorage.visibleLayers && !this.enabledVisilelayers()) {
268
+ noLegendMessage.style.display = 'block';
269
+ } else {
270
+ noLegendMessage.style.display = 'none';
271
+ }
272
+ }
273
+ }
274
+
226
275
  componentDidUpdate(prevState, prevProps) {
227
276
  if (prevState.loading !== this.state.loading) {
228
277
  if (this.state.loading === true) {
@@ -234,6 +283,7 @@ class LegendWidget extends React.Component {
234
283
  this.setState({ loading: false });
235
284
  }, 2000);
236
285
  }
286
+ this.handleNoLegendMessage();
237
287
  }
238
288
  }
239
289
 
@@ -2037,7 +2037,8 @@ class MenuWidget extends React.Component {
2037
2037
  this.addCustomItemToLegend(layer);
2038
2038
  } else {
2039
2039
  // show existing one
2040
- existingItem.style.display = 'block';
2040
+ if (!existingItem.innerText.includes('undefined'))
2041
+ existingItem.style.display = 'block';
2041
2042
  }
2042
2043
  } else {
2043
2044
  // hide legend item
@@ -2045,6 +2046,13 @@ class MenuWidget extends React.Component {
2045
2046
  existingItem.style.display = 'none';
2046
2047
  }
2047
2048
  }
2049
+ // hide no legend message
2050
+ const noLegendMessage = document.querySelectorAll(
2051
+ '.esri-legend__message',
2052
+ )[0];
2053
+ if (noLegendMessage) {
2054
+ noLegendMessage.style.display = 'none';
2055
+ }
2048
2056
  }
2049
2057
 
2050
2058
  addCustomItemToLegend(layer) {
@@ -2053,14 +2061,15 @@ class MenuWidget extends React.Component {
2053
2061
  let childDiv = legendDiv.firstChild;
2054
2062
 
2055
2063
  // create legend element
2056
- let legendItem = this.createStaticLegendImageNode(
2057
- layer.id,
2058
- layer.LayerTitle,
2059
- layer.StaticImageLegend,
2060
- );
2061
-
2062
- // append to Legend widet
2063
- childDiv.appendChild(legendItem);
2064
+ if (layer.LayerTitle !== undefined) {
2065
+ let legendItem = this.createStaticLegendImageNode(
2066
+ layer.id,
2067
+ layer.LayerTitle,
2068
+ layer.StaticImageLegend,
2069
+ );
2070
+ // append to Legend widet
2071
+ childDiv.appendChild(legendItem);
2072
+ }
2064
2073
 
2065
2074
  // hide no legend message
2066
2075
  const noLegendMessage = document.querySelectorAll(
@@ -3007,10 +3016,6 @@ class MenuWidget extends React.Component {
3007
3016
  } else if (layers.length > 0) {
3008
3017
  document.querySelector('.info-container').style.display = 'flex';
3009
3018
  }
3010
- if (!sessionStorage.getItem('hotspotFilterApplied')) {
3011
- this.props.mapViewer.closeActiveWidget();
3012
- }
3013
- this.renderHotspot();
3014
3019
  }
3015
3020
 
3016
3021
  getLayerTitle(layer) {
@@ -3219,12 +3224,6 @@ class MenuWidget extends React.Component {
3219
3224
  this.visibleLayers[elem.id] = ['fas', 'eye'];
3220
3225
  }
3221
3226
 
3222
- this.saveVisibility();
3223
- this.activeLayersJSON[elem.id] = this.addActiveLayer(elem, 0);
3224
- this.layersReorder();
3225
- this.saveLayerOrder();
3226
- this.checkInfoWidget();
3227
- this.setState({});
3228
3227
  if (this.productId.includes('333e4100b79045daa0ff16466ac83b7f')) {
3229
3228
  // global dynamic land cover
3230
3229
  if (this.visibleLayers[elem.id][1] === 'eye-slash') {
@@ -3242,6 +3241,13 @@ class MenuWidget extends React.Component {
3242
3241
  }
3243
3242
  }
3244
3243
  }
3244
+ this.saveVisibility();
3245
+ this.activeLayersJSON[elem.id] = this.addActiveLayer(elem, 0);
3246
+ this.layersReorder();
3247
+ this.saveLayerOrder();
3248
+ this.checkInfoWidget();
3249
+ this.toggleCustomLegendItem(this.layers[elem.id]);
3250
+ this.setState({});
3245
3251
  }
3246
3252
 
3247
3253
  componentDidUpdate(prevState, prevProps) {