@eeacms/volto-eea-map 0.1.25 → 0.1.26

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,21 @@ 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.26](https://github.com/eea/volto-eea-map/compare/0.1.25...0.1.26) - 4 October 2022
8
+
9
+ #### :hammer_and_wrench: Others
10
+
11
+ - add integration to cypress [andreiggr - [`b92ab76`](https://github.com/eea/volto-eea-map/commit/b92ab764603088013894a0be6f84824fb6586464)]
12
+ - fix plugins cypress [andreiggr - [`61e3194`](https://github.com/eea/volto-eea-map/commit/61e319434b1e877dbb4fd29d5ca3d2028d9b5e0b)]
13
+ - use volto vers from env [andreiggr - [`52db93f`](https://github.com/eea/volto-eea-map/commit/52db93f8561e6b90e5d7569b3005e3ebb5274b26)]
14
+ - replace all alpha with specific alpha version [andreiggr - [`f0f1802`](https://github.com/eea/volto-eea-map/commit/f0f18026298e1cc061d62d82e320bf2066496c77)]
15
+ - update jenkins dependencies [andreiggr - [`d2bc043`](https://github.com/eea/volto-eea-map/commit/d2bc043f4039192d0b18bccb0c26ae8cae3d1089)]
16
+ - use specific volto alpha version [andreiggr - [`209988d`](https://github.com/eea/volto-eea-map/commit/209988df8e23fb5bc4631b8326740ea9d2969195)]
17
+ - Raster layer different centering mechanism [andreiggr - [`74c5fa5`](https://github.com/eea/volto-eea-map/commit/74c5fa57522197e621c9c4ba05f6b9cbed2b0e8f)]
18
+ - show raster layer [andreiggr - [`3193689`](https://github.com/eea/volto-eea-map/commit/3193689982db041ac343389e456db7a79447361d)]
19
+ - changes for hide layer in legend [andreiggr - [`5176df9`](https://github.com/eea/volto-eea-map/commit/5176df9971efb308f1e02f510021bf42d9a7c05c)]
20
+ - clean code [andreiggr - [`be3b1b8`](https://github.com/eea/volto-eea-map/commit/be3b1b86db7e5b243d3650cda17332bbbc70c71b)]
21
+ - hide layer in legend [andreiggr - [`675f1ba`](https://github.com/eea/volto-eea-map/commit/675f1ba4aec7037b2a7c28b73a075c0a93616546)]
7
22
  ### [0.1.25](https://github.com/eea/volto-eea-map/compare/0.1.24...0.1.25) - 27 September 2022
8
23
 
9
24
  #### :hammer_and_wrench: Others
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-eea-map",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "@eeacms/volto-eea-map: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -31,7 +31,8 @@
31
31
  "devDependencies": {
32
32
  "@cypress/code-coverage": "^3.9.5",
33
33
  "babel-plugin-transform-class-properties": "^6.24.1",
34
- "cypress": "10.3.1"
34
+ "cypress": "10.3.1",
35
+ "md5": "^2.3.0"
35
36
  },
36
37
  "scripts": {
37
38
  "release": "release-it",
@@ -17,6 +17,50 @@ const MODULES = [
17
17
  'esri/widgets/ScaleBar',
18
18
  ];
19
19
 
20
+ //TODO: set group layers sublayers, for direct group import. Maybe also
21
+ // const setGroupLayers = async (ids, data, modules) => {
22
+ // const { map_service_url, sublayerDatalayer, fullLayer, query = '' } =
23
+ // data || {};
24
+ // const { FeatureLayer, MapImageLayer, GroupLayer } = modules;
25
+
26
+ // const glLayers = await Promise.all(
27
+ // ids.map(async (id) => {
28
+ // const sublayerUrl = `${map_service_url}/${id}`;
29
+ // let sublayerData = await fetchArcGISData(sublayerUrl);
30
+ // let sublayer;
31
+ // switch (sublayerData.type) {
32
+ // case 'Raster Layer':
33
+ // sublayer = new MapImageLayer({
34
+ // url: map_service_url,
35
+ // minScale: sublayerData?.minScale,
36
+ // maxScale: sublayerData?.maxScale,
37
+ // sublayers: [
38
+ // {
39
+ // id: sublayerData.id,
40
+ // visible: true,
41
+ // definitionExpression: query ? formatQuery(query, 'sql') : '',
42
+ // },
43
+ // ],
44
+ // });
45
+ // break;
46
+ // case 'Feature Layer':
47
+ // sublayer = new FeatureLayer({
48
+ // layerId: sublayerData.id,
49
+ // url: `${map_service_url}/${sublayerData.id}`,
50
+ // definitionExpression: query ? formatQuery(query, 'sql') : '',
51
+ // minScale: sublayerData?.minScale,
52
+ // maxScale: sublayerData?.maxScale,
53
+ // });
54
+ // break;
55
+ // default:
56
+ // break;
57
+ // }
58
+ // return sublayer;
59
+ // }),
60
+ // );
61
+ // return glLayers;
62
+ // };
63
+
20
64
  const Webmap = (props) => {
21
65
  const { editMode, height, id } = props;
22
66
 
@@ -101,8 +145,16 @@ const Webmap = (props) => {
101
145
  case 'Raster Layer':
102
146
  mapLayer = new MapImageLayer({
103
147
  url: map_service_url,
104
- minScale: layer?.minScale,
105
- maxScale: layer?.maxScale,
148
+ sublayers: [
149
+ {
150
+ id: layer.id,
151
+ minScale: layer?.minScale,
152
+ maxScale: layer?.maxScale,
153
+ definitionExpression: query
154
+ ? formatQuery(query, 'sql')
155
+ : '',
156
+ },
157
+ ],
106
158
  });
107
159
  break;
108
160
  case 'Feature Layer':
@@ -116,8 +168,15 @@ const Webmap = (props) => {
116
168
  maxScale: layer?.maxScale,
117
169
  });
118
170
  break;
119
- case 'Group Layer':
120
- mapLayer = new GroupLayer({ url });
171
+ //// case 'Group Layer':
172
+ // mapLayer = new GroupLayer({ title: layer.title });
173
+ // // mapLayer.addMany(
174
+ // // setGroupLayers(
175
+ // // layer.sublayersIds,
176
+ // // { map_service_url, layer, fullLayer, query },
177
+ // // modules,
178
+ // // ),
179
+ // // );
121
180
  break;
122
181
  default:
123
182
  break;
@@ -152,13 +211,20 @@ const Webmap = (props) => {
152
211
 
153
212
  if (layers && layers[0] && general && general.centerOnExtent) {
154
213
  const firstLayer = layers[0];
155
- firstLayer
156
- .when(() => {
157
- return firstLayer.queryExtent();
158
- })
159
- .then((response) => {
160
- view.goTo(response.extent);
214
+ if (firstLayer.type === 'feature') {
215
+ firstLayer
216
+ .when(() => {
217
+ return firstLayer.queryExtent();
218
+ })
219
+ .then((response) => {
220
+ view.goTo(response.extent);
221
+ });
222
+ }
223
+ if (firstLayer.type === 'map-image') {
224
+ firstLayer.when(() => {
225
+ view.goTo(firstLayer.fullExtent);
161
226
  });
227
+ }
162
228
  }
163
229
 
164
230
  const zoomPosition =
@@ -39,6 +39,7 @@ const VisualizationEditorWidget = (props) => {
39
39
  print_position: 'top-right',
40
40
  zoom_position: 'top-right',
41
41
  centerOnExtent: true,
42
+ scalebar: 'metric',
42
43
  },
43
44
  });
44
45
  }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Icon } from '@plone/volto/components';
3
- import { Input, Select, Button, Grid } from 'semantic-ui-react';
3
+ import { Input, Select, Button, Grid, Checkbox } from 'semantic-ui-react';
4
4
  import { QueryBuilder } from 'react-querybuilder';
5
5
  import 'react-querybuilder/dist/query-builder.css';
6
6
 
@@ -31,6 +31,7 @@ const LayerSelectWidget = (props) => {
31
31
  fields = [],
32
32
  query = '',
33
33
  description = '',
34
+ hide = false,
34
35
  } = value;
35
36
 
36
37
  const [mapData, setMapData] = React.useState(map_data);
@@ -53,11 +54,18 @@ const LayerSelectWidget = (props) => {
53
54
  setMapData(mapData);
54
55
  setServiceUrlError('');
55
56
  if (mapData.layers && mapData.layers.length > 0) {
56
- setAvailableLayers(
57
- mapData.layers.map((layer, i) => {
58
- return { key: layer.id, value: layer, text: layer.name };
59
- }),
60
- );
57
+ const mappedLayers = mapData.layers
58
+ .filter(
59
+ (layer) => layer && layer.type && layer.type !== 'Group Layer',
60
+ )
61
+ .map((layer, i) => {
62
+ return {
63
+ key: layer.id,
64
+ value: layer,
65
+ text: `${layer.name} (${layer.type})`,
66
+ };
67
+ });
68
+ setAvailableLayers(mappedLayers);
61
69
  }
62
70
  onChange(id, {
63
71
  ...value,
@@ -66,6 +74,7 @@ const LayerSelectWidget = (props) => {
66
74
  available_layers: availableLayers,
67
75
  map_data: mapData,
68
76
  description,
77
+ hide,
69
78
  });
70
79
  } catch (e) {
71
80
  setCheckColor('youtube');
@@ -183,6 +192,14 @@ const LayerSelectWidget = (props) => {
183
192
  setSelectedLayer(layer);
184
193
  setMapData(map_data);
185
194
  };
195
+
196
+ const handleHideInLegend = (v) => {
197
+ onChange(id, {
198
+ ...value,
199
+ hide: v,
200
+ });
201
+ };
202
+
186
203
  return (
187
204
  <div
188
205
  style={{
@@ -266,7 +283,7 @@ const LayerSelectWidget = (props) => {
266
283
  </Grid.Row>
267
284
  </div>
268
285
  )}
269
- {availableLayers && availableLayers.length > 0 && (
286
+ {availableLayers && availableLayers.length > 0 && selectedLayer && (
270
287
  <div className="spaced-row">
271
288
  <Grid.Row stretched>
272
289
  <h5 style={{ padding: '0', margin: '15px 0px 5px 0px' }}>
@@ -285,6 +302,14 @@ const LayerSelectWidget = (props) => {
285
302
  />
286
303
  </div>
287
304
  </Grid.Row>
305
+ <Grid.Row stretched>
306
+ <h5>Hide in legend:</h5>{' '}
307
+ <Checkbox
308
+ label="Layer will be hidden in legend"
309
+ checked={hide}
310
+ onChange={(e, { checked }) => handleHideInLegend(checked)}
311
+ />
312
+ </Grid.Row>
288
313
  </div>
289
314
  )}
290
315
  {availableLayers && fields && fields.length > 0 && (
@@ -107,8 +107,12 @@ const LegendWidget = (props) => {
107
107
  ? layers?.map_layers.slice(0, 3)
108
108
  : layers?.map_layers;
109
109
 
110
+ const visible_layers = map_layers
111
+ ? map_layers.filter((l) => !l?.map_layer?.hide)
112
+ : '';
113
+
110
114
  const legendColumns =
111
- map_layers && setLegendColumns(map_layers.length, device);
115
+ visible_layers && setLegendColumns(visible_layers.length, device);
112
116
  return (
113
117
  <>
114
118
  <div className="legend-container">
@@ -123,16 +127,16 @@ const LegendWidget = (props) => {
123
127
  </h3>
124
128
  </button>
125
129
  <Grid columns={legendColumns}>
126
- {(!map_layers || map_layers.length === 0) && (
130
+ {(!visible_layers || visible_layers.length === 0) && (
127
131
  <p>
128
132
  No layer found for legend. Please add a map layer from editor.
129
133
  </p>
130
134
  )}
131
135
  {expand && (
132
136
  <Grid.Row divided>
133
- {map_layers &&
134
- map_layers.length > 0 &&
135
- map_layers.map((l, i) => (
137
+ {visible_layers &&
138
+ visible_layers.length > 0 &&
139
+ visible_layers.map((l, i) => (
136
140
  <LayerLegend
137
141
  key={i}
138
142
  data={l.map_layer}