@eeacms/volto-arcgis-block 0.1.410 → 0.1.412
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,14 @@ 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.412](https://github.com/eea/volto-arcgis-block/compare/0.1.411...0.1.412) - 26 November 2025
|
|
8
|
+
|
|
9
|
+
#### :hammer_and_wrench: Others
|
|
10
|
+
|
|
11
|
+
- (task): Refactor error report widget to support multiple clicks on the map view refreshing data after each click [Unai Bolivar - [`dba002b`](https://github.com/eea/volto-arcgis-block/commit/dba002b28c1a7a31c0c4e3fa1d044a3e1919b11d)]
|
|
12
|
+
- (task): Improved the Error Report Widget mechanism for layer data retrieval to reflect accurate data and exclude nuts layers [Unai Bolivar - [`8100ae2`](https://github.com/eea/volto-arcgis-block/commit/8100ae2474a1c746c414ea46dc7259526ff9abc9)]
|
|
13
|
+
### [0.1.411](https://github.com/eea/volto-arcgis-block/compare/0.1.410...0.1.411) - 26 November 2025
|
|
14
|
+
|
|
7
15
|
### [0.1.410](https://github.com/eea/volto-arcgis-block/compare/0.1.409...0.1.410) - 25 November 2025
|
|
8
16
|
|
|
9
17
|
#### :hammer_and_wrench: Others
|
package/package.json
CHANGED
|
@@ -352,7 +352,7 @@ class BookmarkWidget extends React.Component {
|
|
|
352
352
|
? bookmarks.selectedHotspotFilter
|
|
353
353
|
: null,
|
|
354
354
|
};
|
|
355
|
-
let filename = 'bookmark_' + selectedBookmark.items
|
|
355
|
+
let filename = 'bookmark_' + selectedBookmark.items?.name;
|
|
356
356
|
const blob = new Blob(
|
|
357
357
|
[JSON.stringify(selectedBookmark)],
|
|
358
358
|
{
|
|
@@ -1198,22 +1198,28 @@ class BookmarkWidget extends React.Component {
|
|
|
1198
1198
|
);
|
|
1199
1199
|
} catch (e) {}
|
|
1200
1200
|
this.loadBookmarksToWidget();
|
|
1201
|
-
this.Bookmarks
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1201
|
+
if (this.Bookmarks && this.Bookmarks.bookmarks) {
|
|
1202
|
+
const mapped = this.sessionBookmarks.map((bm) => {
|
|
1203
|
+
if (bm && bm.extent) {
|
|
1204
|
+
const { extent, ...rest } = bm;
|
|
1205
|
+
let geometry;
|
|
1206
|
+
if (extent && typeof extent === 'object') {
|
|
1207
|
+
geometry = extent.type ? extent : new Extent(extent);
|
|
1208
|
+
}
|
|
1209
|
+
return {
|
|
1210
|
+
...rest,
|
|
1211
|
+
viewpoint: { targetGeometry: geometry },
|
|
1212
|
+
};
|
|
1207
1213
|
}
|
|
1208
|
-
return
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
}
|
|
1214
|
+
return bm;
|
|
1215
|
+
});
|
|
1216
|
+
this.Bookmarks.bookmarks.removeAll();
|
|
1217
|
+
mapped.forEach((item) => this.Bookmarks.bookmarks.add(item));
|
|
1218
|
+
this.sessionBookmarks = [];
|
|
1219
|
+
this.Bookmarks.bookmarks.items.forEach((bookmark) => {
|
|
1220
|
+
this.sessionBookmarks.push(bookmark);
|
|
1221
|
+
});
|
|
1222
|
+
}
|
|
1217
1223
|
};
|
|
1218
1224
|
reader.readAsText(file);
|
|
1219
1225
|
}
|
|
@@ -85,163 +85,84 @@ class ErrorReport extends React.Component {
|
|
|
85
85
|
} catch {}
|
|
86
86
|
this.setState({
|
|
87
87
|
latlong: { x: pt.latitude.toFixed(4), y: pt.longitude.toFixed(4) },
|
|
88
|
-
selecting: false,
|
|
89
88
|
datasets: ds,
|
|
90
89
|
instructionsText:
|
|
91
90
|
"The error report data has been added to your clipboard. Click the 'Service Desk' button and paste the clipboard content inside the Helpdesk's message box",
|
|
92
91
|
});
|
|
93
|
-
handler.remove();
|
|
94
92
|
}.bind(this),
|
|
95
93
|
);
|
|
96
94
|
this.setState({ selecting: handler });
|
|
97
95
|
}
|
|
98
96
|
|
|
97
|
+
getLayerTitle(layer) {
|
|
98
|
+
let title;
|
|
99
|
+
if (layer.ViewService && layer.ViewService.toLowerCase().includes('cdse')) {
|
|
100
|
+
title = layer.title;
|
|
101
|
+
} else if (layer.url.toLowerCase().includes('wmts')) {
|
|
102
|
+
title = layer._wmtsTitle;
|
|
103
|
+
} else if (layer.url.toLowerCase().toLowerCase().endsWith('mapserver')) {
|
|
104
|
+
title = layer.title;
|
|
105
|
+
} else {
|
|
106
|
+
if (layer.sublayers) {
|
|
107
|
+
title = layer.sublayers.items[0].title;
|
|
108
|
+
} else if (layer.activeLayer) {
|
|
109
|
+
title = layer.activeLayer.title;
|
|
110
|
+
} else {
|
|
111
|
+
title = layer.title;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return title;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
getLayerName(layer) {
|
|
118
|
+
let title;
|
|
119
|
+
if (layer.sublayers) {
|
|
120
|
+
title = layer.sublayers.items[0].name;
|
|
121
|
+
} else if (layer.activeLayer) {
|
|
122
|
+
title = layer.activeLayer.name;
|
|
123
|
+
} else {
|
|
124
|
+
title = layer.name;
|
|
125
|
+
}
|
|
126
|
+
return title;
|
|
127
|
+
}
|
|
128
|
+
|
|
99
129
|
getCheckedDatasets() {
|
|
100
|
-
let
|
|
130
|
+
let items = [];
|
|
101
131
|
try {
|
|
102
|
-
let
|
|
103
|
-
let
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (typeof cl === 'string') {
|
|
109
|
-
try {
|
|
110
|
-
cl = JSON.parse(cl);
|
|
111
|
-
} catch {}
|
|
112
|
-
}
|
|
113
|
-
if (Array.isArray(cl)) {
|
|
114
|
-
checked = [...new Set(cl)].filter((v) => v);
|
|
115
|
-
}
|
|
132
|
+
let view = this.props.view;
|
|
133
|
+
let coll = view && view.map && view.map.layers;
|
|
134
|
+
if (coll && coll.items) {
|
|
135
|
+
items = coll.items;
|
|
136
|
+
} else if (coll && coll.toArray) {
|
|
137
|
+
items = coll.toArray();
|
|
116
138
|
}
|
|
117
139
|
} catch {}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
let cl = ss;
|
|
123
|
-
if (typeof ss === 'string') {
|
|
124
|
-
try {
|
|
125
|
-
cl = JSON.parse(ss);
|
|
126
|
-
} catch {}
|
|
127
|
-
}
|
|
128
|
-
if (Array.isArray(cl)) {
|
|
129
|
-
checked = [...new Set(cl)].filter((v) => v);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
} catch {}
|
|
133
|
-
}
|
|
134
|
-
if (checked.length) {
|
|
135
|
-
let titles = [];
|
|
140
|
+
let layers = items.filter((a) => a && a.visible && a.title !== 'nuts');
|
|
141
|
+
let titles = [];
|
|
142
|
+
layers.forEach((layer) => {
|
|
143
|
+
let title;
|
|
136
144
|
try {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
let v = String(val);
|
|
148
|
-
let e = null;
|
|
149
|
-
try {
|
|
150
|
-
e = document.querySelector('[data-layer-id="' + esc(v) + '"]');
|
|
151
|
-
} catch {}
|
|
152
|
-
if (!e) {
|
|
153
|
-
try {
|
|
154
|
-
e = document.querySelector('[data-id="' + esc(v) + '"]');
|
|
155
|
-
} catch {}
|
|
156
|
-
}
|
|
157
|
-
if (!e) {
|
|
158
|
-
try {
|
|
159
|
-
let sel1 = 'input[type="checkbox"][value="' + esc(v) + '"]';
|
|
160
|
-
e = document.querySelector(sel1);
|
|
161
|
-
} catch {}
|
|
162
|
-
}
|
|
163
|
-
if (!e) {
|
|
164
|
-
try {
|
|
165
|
-
let sel2 = 'input[type="checkbox"][id*="' + esc(v) + '"]';
|
|
166
|
-
e = document.querySelector(sel2);
|
|
167
|
-
} catch {}
|
|
168
|
-
}
|
|
169
|
-
if (e && e.tagName && e.tagName.toLowerCase() === 'input') {
|
|
170
|
-
let id = e.id;
|
|
171
|
-
if (id) {
|
|
172
|
-
try {
|
|
173
|
-
let selLab = 'label[for="' + esc(id) + '"]';
|
|
174
|
-
let lab = document.querySelector(selLab);
|
|
175
|
-
if (lab && lab.textContent) return lab.textContent.trim();
|
|
176
|
-
} catch {}
|
|
177
|
-
}
|
|
178
|
-
try {
|
|
179
|
-
let cont = e.closest('.toc-item,.ccl-tree__item,.layer-item');
|
|
180
|
-
if (cont) {
|
|
181
|
-
let selT =
|
|
182
|
-
'.toc-item-title,.ccl-tree__label,.layer-title,.title';
|
|
183
|
-
|
|
184
|
-
let lab = cont.querySelector(selT);
|
|
185
|
-
if (lab && lab.textContent) return lab.textContent.trim();
|
|
145
|
+
if (this && this.props && this.props.hotspotData) {
|
|
146
|
+
let layerId = this.getLayerName(layer);
|
|
147
|
+
outerLoop: for (let key in this.props.hotspotData) {
|
|
148
|
+
let item = this.props.hotspotData[key];
|
|
149
|
+
for (let prop in item) {
|
|
150
|
+
if (prop === layerId) {
|
|
151
|
+
if (this.props.hotspotData[key][prop].Title !== undefined) {
|
|
152
|
+
title = this.props.hotspotData[key][prop].Title;
|
|
153
|
+
break outerLoop;
|
|
154
|
+
}
|
|
186
155
|
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (e) {
|
|
190
|
-
try {
|
|
191
|
-
let sel3 = '.toc-item-title,.ccl-tree__label,.layer-title,.title';
|
|
192
|
-
let lab = e.querySelector(sel3);
|
|
193
|
-
if (lab && lab.textContent) return lab.textContent.trim();
|
|
194
|
-
} catch {}
|
|
195
|
-
try {
|
|
196
|
-
let t = e.getAttribute('data-title');
|
|
197
|
-
if (t) return t;
|
|
198
|
-
} catch {}
|
|
199
|
-
try {
|
|
200
|
-
if (e.textContent) return e.textContent.trim();
|
|
201
|
-
} catch {}
|
|
156
|
+
}
|
|
202
157
|
}
|
|
203
|
-
return null;
|
|
204
|
-
};
|
|
205
|
-
checked.forEach(function (v) {
|
|
206
|
-
let t = findTitleFor(v);
|
|
207
|
-
if (t) titles.push(t);
|
|
208
|
-
});
|
|
209
|
-
} catch {}
|
|
210
|
-
if (titles.length) return [...new Set(titles)];
|
|
211
|
-
let all = [];
|
|
212
|
-
try {
|
|
213
|
-
let coll =
|
|
214
|
-
this.props.view &&
|
|
215
|
-
this.props.view.map &&
|
|
216
|
-
this.props.view.map.allLayers;
|
|
217
|
-
if (coll && coll.items) {
|
|
218
|
-
all = coll.items;
|
|
219
|
-
} else if (coll && coll.toArray) {
|
|
220
|
-
all = coll.toArray();
|
|
221
158
|
}
|
|
222
159
|
} catch {}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
try {
|
|
226
|
-
all.forEach(function (l) {
|
|
227
|
-
if (l && l.id) byId[l.id] = l.title || l.id;
|
|
228
|
-
if (l && l.title) byTitle[l.title] = l.title;
|
|
229
|
-
});
|
|
230
|
-
} catch {}
|
|
231
|
-
let titles2 = [];
|
|
232
|
-
checked.forEach(function (v) {
|
|
233
|
-
if (byTitle[v]) titles2.push(byTitle[v]);
|
|
234
|
-
else if (byId[v]) titles2.push(byId[v]);
|
|
235
|
-
});
|
|
236
|
-
if (titles2.length) return [...new Set(titles2)];
|
|
237
|
-
}
|
|
238
|
-
let layers = [];
|
|
239
|
-
this.props.view.map.layers.forEach(function (l) {
|
|
240
|
-
if (l.visible) {
|
|
241
|
-
layers.push(l.title || l.id || 'layer');
|
|
160
|
+
if (!title) {
|
|
161
|
+
title = this.getLayerTitle(layer);
|
|
242
162
|
}
|
|
163
|
+
if (title) titles.push(title);
|
|
243
164
|
});
|
|
244
|
-
return
|
|
165
|
+
return [...new Set(titles)];
|
|
245
166
|
}
|
|
246
167
|
|
|
247
168
|
serviceDeskRedirect() {
|