@esri/solutions-components 0.5.7 → 0.5.9
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/dist/assets/t9n/buffer-tools/resources_ar.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_bg.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_bs.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_ca.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_cs.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_da.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_de.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_el.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_es.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_et.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_fi.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_fr.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_he.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_hr.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_hu.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_id.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_it.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_ja.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_ko.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_lt.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_lv.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_nb.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_nl.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_pl.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_pt-BR.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_pt-PT.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_ro.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_ru.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_sk.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_sl.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_sr.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_sv.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_th.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_tr.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_uk.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_vi.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_zh-CN.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_zh-HK.json +4 -4
- package/dist/assets/t9n/buffer-tools/resources_zh-TW.json +4 -4
- package/dist/assets/t9n/map-draw-tools/resources_ar.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_bg.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_bs.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_ca.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_cs.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_da.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_de.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_el.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_es.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_et.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_fi.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_fr.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_he.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_hr.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_hu.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_id.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_it.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_ja.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_ko.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_lt.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_lv.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_nb.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_nl.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_pl.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_pt-BR.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_pt-PT.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_ro.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_ru.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_sk.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_sl.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_sr.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_sv.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_th.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_tr.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_uk.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_vi.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_zh-CN.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_zh-HK.json +3 -3
- package/dist/assets/t9n/map-draw-tools/resources_zh-TW.json +3 -3
- package/dist/assets/t9n/map-select-tools/resources_ar.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_bg.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_bs.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_ca.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_cs.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_da.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_de.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_el.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_es.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_et.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_fi.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_fr.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_he.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_hr.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_hu.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_id.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_it.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_ja.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_ko.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_lt.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_lv.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_nb.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_nl.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_pl.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_pt-BR.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_pt-PT.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_ro.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_ru.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_sk.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_sl.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_sr.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_sv.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_th.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_tr.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_uk.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_vi.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_zh-CN.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_zh-HK.json +13 -11
- package/dist/assets/t9n/map-select-tools/resources_zh-TW.json +13 -11
- package/dist/assets/t9n/pdf-download/resources_ar.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_bg.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_bs.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_ca.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_cs.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_da.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_de.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_el.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_es.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_et.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_fi.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_fr.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_he.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_hr.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_hu.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_id.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_it.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_ja.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_ko.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_lt.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_lv.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_nb.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_nl.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_pl.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_pt-BR.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_pt-PT.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_ro.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_ru.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_sk.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_sl.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_sr.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_sv.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_th.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_tr.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_uk.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_vi.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_zh-CN.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_zh-HK.json +1 -1
- package/dist/assets/t9n/pdf-download/resources_zh-TW.json +1 -1
- package/dist/assets/t9n/public-notification/resources.json +11 -9
- package/dist/assets/t9n/public-notification/resources_ar.json +39 -38
- package/dist/assets/t9n/public-notification/resources_bg.json +39 -38
- package/dist/assets/t9n/public-notification/resources_bs.json +39 -38
- package/dist/assets/t9n/public-notification/resources_ca.json +39 -38
- package/dist/assets/t9n/public-notification/resources_cs.json +39 -38
- package/dist/assets/t9n/public-notification/resources_da.json +39 -38
- package/dist/assets/t9n/public-notification/resources_de.json +39 -38
- package/dist/assets/t9n/public-notification/resources_el.json +39 -38
- package/dist/assets/t9n/public-notification/resources_en.json +11 -9
- package/dist/assets/t9n/public-notification/resources_es.json +39 -38
- package/dist/assets/t9n/public-notification/resources_et.json +39 -38
- package/dist/assets/t9n/public-notification/resources_fi.json +39 -38
- package/dist/assets/t9n/public-notification/resources_fr.json +39 -38
- package/dist/assets/t9n/public-notification/resources_he.json +39 -38
- package/dist/assets/t9n/public-notification/resources_hr.json +39 -38
- package/dist/assets/t9n/public-notification/resources_hu.json +39 -38
- package/dist/assets/t9n/public-notification/resources_id.json +39 -38
- package/dist/assets/t9n/public-notification/resources_it.json +39 -38
- package/dist/assets/t9n/public-notification/resources_ja.json +39 -38
- package/dist/assets/t9n/public-notification/resources_ko.json +39 -38
- package/dist/assets/t9n/public-notification/resources_lt.json +39 -38
- package/dist/assets/t9n/public-notification/resources_lv.json +39 -38
- package/dist/assets/t9n/public-notification/resources_nb.json +39 -38
- package/dist/assets/t9n/public-notification/resources_nl.json +39 -38
- package/dist/assets/t9n/public-notification/resources_pl.json +39 -38
- package/dist/assets/t9n/public-notification/resources_pt-BR.json +39 -38
- package/dist/assets/t9n/public-notification/resources_pt-PT.json +39 -38
- package/dist/assets/t9n/public-notification/resources_ro.json +39 -38
- package/dist/assets/t9n/public-notification/resources_ru.json +39 -38
- package/dist/assets/t9n/public-notification/resources_sk.json +39 -38
- package/dist/assets/t9n/public-notification/resources_sl.json +39 -38
- package/dist/assets/t9n/public-notification/resources_sr.json +39 -38
- package/dist/assets/t9n/public-notification/resources_sv.json +39 -38
- package/dist/assets/t9n/public-notification/resources_th.json +39 -38
- package/dist/assets/t9n/public-notification/resources_tr.json +39 -38
- package/dist/assets/t9n/public-notification/resources_uk.json +39 -38
- package/dist/assets/t9n/public-notification/resources_vi.json +39 -38
- package/dist/assets/t9n/public-notification/resources_zh-CN.json +39 -38
- package/dist/assets/t9n/public-notification/resources_zh-HK.json +39 -38
- package/dist/assets/t9n/public-notification/resources_zh-TW.json +39 -38
- package/dist/assets/t9n/refine-selection/resources.json +3 -1
- package/dist/assets/t9n/refine-selection/resources_en.json +3 -1
- package/dist/cjs/calcite-input-text_5.cjs.entry.js +3 -3
- package/dist/cjs/{downloadUtils-06876768.js → downloadUtils-4ef4b28b.js} +87 -21
- package/dist/cjs/{index.es-d07646b4.js → index.es-cbe67d5b.js} +1 -1
- package/dist/cjs/layer-table_2.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/public-notification.cjs.entry.js +2 -2
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/components/public-notification/public-notification.js +2 -2
- package/dist/collection/components/refine-selection/refine-selection.css +106 -85
- package/dist/collection/components/refine-selection/refine-selection.js +1 -1
- package/dist/collection/utils/downloadUtils.js +86 -20
- package/dist/collection/utils/downloadUtils.ts +139 -27
- package/dist/components/downloadUtils.js +86 -20
- package/dist/components/public-notification.js +2 -2
- package/dist/components/refine-selection2.js +36 -24
- package/dist/esm/calcite-input-text_5.entry.js +3 -3
- package/dist/esm/{downloadUtils-046ce0aa.js → downloadUtils-2ebeb46d.js} +87 -21
- package/dist/esm/{index.es-3fd0e8f6.js → index.es-6dd27a48.js} +1 -1
- package/dist/esm/layer-table_2.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/public-notification.entry.js +2 -2
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/{p-2e0db581.js → p-657caece.js} +11 -11
- package/dist/solutions-components/{p-1b08d9d6.entry.js → p-6f27bea2.entry.js} +2 -2
- package/dist/solutions-components/{p-99aec087.js → p-ad82c173.js} +1 -1
- package/dist/solutions-components/p-db82a9ce.entry.js +6 -0
- package/dist/solutions-components/{p-1850a763.entry.js → p-deb90ce7.entry.js} +1 -1
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/downloadUtils.ts +139 -27
- package/dist/types/utils/downloadUtils.d.ts +21 -0
- package/package.json +1 -1
- package/dist/solutions-components/p-f66a7ea7.entry.js +0 -6
|
@@ -196,6 +196,38 @@ export function _createFilename(selectionSetNames) {
|
|
|
196
196
|
const title = selectionSetNames.length > 0 ? selectionSetNames.join(", ") : "download";
|
|
197
197
|
return title;
|
|
198
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Creates relationship queries for each relationship flag in a popup.
|
|
201
|
+
* @param layer Layer whose popup is to be examined
|
|
202
|
+
* @return Hash of relationships by their id, or null if there are no relationship flags in the
|
|
203
|
+
* popup; each relationship has the properties layer and relatedQuery for the related layer
|
|
204
|
+
* and the query for that layer
|
|
205
|
+
*/
|
|
206
|
+
export function _createRelationshipQueries(layer) {
|
|
207
|
+
const relationships = {};
|
|
208
|
+
const relationshipFieldPattern = /\{relationships\/\d+\//gm;
|
|
209
|
+
const relationshipIdPattern = /\d+/;
|
|
210
|
+
// Test if this popup has any relationship references
|
|
211
|
+
const matches = layer.popupTemplate.content[0].text.match(relationshipFieldPattern);
|
|
212
|
+
if (matches) {
|
|
213
|
+
matches.forEach(match => {
|
|
214
|
+
// Add a query to a found relationship if we don't already have one
|
|
215
|
+
const id = match.match(relationshipIdPattern)[0];
|
|
216
|
+
if (!relationships.hasOwnProperty(id)) {
|
|
217
|
+
const relatedQuery = {
|
|
218
|
+
outFields: ['*'],
|
|
219
|
+
relationshipId: id,
|
|
220
|
+
returnGeometry: false
|
|
221
|
+
};
|
|
222
|
+
relationships[id] = {
|
|
223
|
+
layer,
|
|
224
|
+
relatedQuery
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return relationships;
|
|
230
|
+
}
|
|
199
231
|
/**
|
|
200
232
|
* Prepares an attribute's value by applying domain and type information.
|
|
201
233
|
*
|
|
@@ -256,7 +288,7 @@ function _prepareAttributeValue(attributeValue, attributeType, attributeDomain,
|
|
|
256
288
|
* @returns Promise resolving when function is done
|
|
257
289
|
*/
|
|
258
290
|
async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLayerPopup = true, includeHeaderNames = false) {
|
|
259
|
-
var _a, _b, _c, _d;
|
|
291
|
+
var _a, _b, _c, _d, _e, _f;
|
|
260
292
|
const [intl] = await loadModules(["esri/intl"]);
|
|
261
293
|
// Get the features to export
|
|
262
294
|
const featureSet = await queryFeaturesByID(ids, layer);
|
|
@@ -270,6 +302,7 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
270
302
|
const attributeFormats = {};
|
|
271
303
|
// Get the label formatting, if any
|
|
272
304
|
let labelFormat;
|
|
305
|
+
let relationshipQueries = {};
|
|
273
306
|
let arcadeExecutors = {};
|
|
274
307
|
if (layer.popupEnabled) {
|
|
275
308
|
layer.popupTemplate.fieldInfos.forEach(
|
|
@@ -298,6 +331,8 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
298
331
|
}
|
|
299
332
|
else if (formatUsingLayerPopup && ((_d = (_c = layer.popupTemplate) === null || _c === void 0 ? void 0 : _c.content[0]) === null || _d === void 0 ? void 0 : _d.type) === "text") {
|
|
300
333
|
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
334
|
+
// Do we need any relationship queries?
|
|
335
|
+
relationshipQueries = _createRelationshipQueries(layer);
|
|
301
336
|
// Do we need any Arcade executors?
|
|
302
337
|
arcadeExecutors = await _createArcadeExecutors(labelFormat, layer);
|
|
303
338
|
}
|
|
@@ -309,33 +344,64 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
309
344
|
const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
|
|
310
345
|
const attributeRegExp = /\{\w+\}/g;
|
|
311
346
|
// Find the label fields that we need to replace with values
|
|
312
|
-
const arcadeExpressionMatches = labelFormat.match(arcadeExpressionRegExp);
|
|
313
|
-
const attributeMatches = labelFormat.match(attributeRegExp);
|
|
347
|
+
const arcadeExpressionMatches = (_e = labelFormat.match(arcadeExpressionRegExp)) !== null && _e !== void 0 ? _e : [];
|
|
348
|
+
const attributeMatches = (_f = labelFormat.match(attributeRegExp)) !== null && _f !== void 0 ? _f : [];
|
|
314
349
|
// Convert feature attributes into an array of labels
|
|
315
|
-
|
|
350
|
+
const relationshipKeys = Object.keys(relationshipQueries);
|
|
351
|
+
labels = await Promise.all(featureSet.features.map(async (feature) => {
|
|
316
352
|
let labelPrep = labelFormat;
|
|
317
|
-
// Replace Arcade expressions
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
353
|
+
// Replace Arcade expressions in this feature
|
|
354
|
+
arcadeExpressionMatches.forEach((match) => {
|
|
355
|
+
const expressionName = match.substring(match.indexOf("/") + 1, match.length - 1);
|
|
356
|
+
const value = arcadeExecutors[expressionName].execute({ "$feature": feature });
|
|
357
|
+
labelPrep = labelPrep.replace(match, value);
|
|
358
|
+
});
|
|
359
|
+
// Replace relationship expressions in this feature
|
|
360
|
+
const relatedFeatureQueries = [];
|
|
361
|
+
const relationshipIds = [];
|
|
362
|
+
relationshipKeys.forEach((relationshipId) => {
|
|
363
|
+
const relationship = relationshipQueries[relationshipId];
|
|
364
|
+
const objectId = feature.attributes[relationship.layer.objectIdField];
|
|
365
|
+
const relatedQuery = Object.assign(Object.assign({}, relationship.relatedQuery), { objectIds: [objectId] });
|
|
366
|
+
relatedFeatureQueries.push(relationship.layer.queryRelatedFeatures(relatedQuery));
|
|
367
|
+
relationshipIds.push(relationshipId);
|
|
368
|
+
});
|
|
369
|
+
// Wait for all of the queries for related records for this label
|
|
370
|
+
const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
|
|
371
|
+
relatedFeatureQueryResults.forEach((relatedFeatureQueryResult, i) => {
|
|
372
|
+
// We have an object with FeatureSets grouped by source layer or table objectIds
|
|
373
|
+
const relationshipId = relationshipIds[i];
|
|
374
|
+
// Run through the source layer or table objectIds
|
|
375
|
+
Object.keys(relatedFeatureQueryResult).forEach(relatedFeatureSetId => {
|
|
376
|
+
// We have a feature set
|
|
377
|
+
const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
|
|
378
|
+
// Get the values from each feature and replace them in the label
|
|
379
|
+
relatedFeatures.forEach(feature => {
|
|
380
|
+
// Merge the base and related feature attributes and create the label
|
|
381
|
+
// Prefix related feature's attributes with "relationships/<id>/" to match popup
|
|
382
|
+
const rePrefix = "\{relationships/" + relationshipId + "/";
|
|
383
|
+
const reSuffix = "\}";
|
|
384
|
+
const attributes = feature.attributes;
|
|
385
|
+
Object.keys(attributes).forEach(attributeName => {
|
|
386
|
+
// Replace the value using the attribute name as a relationship
|
|
387
|
+
const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
|
|
388
|
+
labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
|
|
389
|
+
});
|
|
390
|
+
});
|
|
331
391
|
});
|
|
332
|
-
}
|
|
392
|
+
});
|
|
393
|
+
// Replace non-Arcade fields in this feature
|
|
394
|
+
attributeMatches.forEach((match) => {
|
|
395
|
+
const attributeName = match.substring(1, match.length - 1);
|
|
396
|
+
const value = _prepareAttributeValue(feature.attributes[attributeName], attributeTypes[attributeName], attributeDomains[attributeName], attributeFormats[attributeName], intl);
|
|
397
|
+
labelPrep = labelPrep.replace(match, value);
|
|
398
|
+
});
|
|
333
399
|
// Split label into lines
|
|
334
400
|
let label = labelPrep.split(lineSeparatorChar);
|
|
335
401
|
// Trim lines
|
|
336
402
|
label = label.map(line => line.trim());
|
|
337
403
|
return label;
|
|
338
|
-
});
|
|
404
|
+
}));
|
|
339
405
|
}
|
|
340
406
|
else {
|
|
341
407
|
// Export all attributes
|
|
@@ -43,6 +43,25 @@ interface IAttributeTypes {
|
|
|
43
43
|
[attributeName: string]: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
interface ILayerRelationshipQuery {
|
|
47
|
+
layer: __esri.FeatureLayer;
|
|
48
|
+
relatedQuery: IRelatedFeaturesQuery;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface ILayerRelationshipQueryHash {
|
|
52
|
+
[relationshipId: string]: ILayerRelationshipQuery;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Class RelationshipQuery doesn't appear to work, and so since
|
|
56
|
+
// https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#queryRelatedFeatures
|
|
57
|
+
// says that the relationshipQuery argument is autocast, we'll set up a variant for the class
|
|
58
|
+
interface IRelatedFeaturesQuery {
|
|
59
|
+
outFields: string[];
|
|
60
|
+
relationshipId: string;
|
|
61
|
+
returnGeometry: boolean;
|
|
62
|
+
objectIds?: number;
|
|
63
|
+
}
|
|
64
|
+
|
|
46
65
|
const lineSeparatorChar = "|";
|
|
47
66
|
|
|
48
67
|
//#endregion
|
|
@@ -278,6 +297,44 @@ export function _createFilename(
|
|
|
278
297
|
return title;
|
|
279
298
|
}
|
|
280
299
|
|
|
300
|
+
/**
|
|
301
|
+
* Creates relationship queries for each relationship flag in a popup.
|
|
302
|
+
* @param layer Layer whose popup is to be examined
|
|
303
|
+
* @return Hash of relationships by their id, or null if there are no relationship flags in the
|
|
304
|
+
* popup; each relationship has the properties layer and relatedQuery for the related layer
|
|
305
|
+
* and the query for that layer
|
|
306
|
+
*/
|
|
307
|
+
export function _createRelationshipQueries(
|
|
308
|
+
layer: __esri.FeatureLayer,
|
|
309
|
+
): ILayerRelationshipQueryHash {
|
|
310
|
+
|
|
311
|
+
const relationships: ILayerRelationshipQueryHash = {};
|
|
312
|
+
const relationshipFieldPattern = /\{relationships\/\d+\//gm;
|
|
313
|
+
const relationshipIdPattern = /\d+/;
|
|
314
|
+
|
|
315
|
+
// Test if this popup has any relationship references
|
|
316
|
+
const matches = layer.popupTemplate.content[0].text.match(relationshipFieldPattern);
|
|
317
|
+
if (matches) {
|
|
318
|
+
matches.forEach(match => {
|
|
319
|
+
// Add a query to a found relationship if we don't already have one
|
|
320
|
+
const id = match.match(relationshipIdPattern)[0];
|
|
321
|
+
if (!relationships.hasOwnProperty(id)) {
|
|
322
|
+
const relatedQuery: IRelatedFeaturesQuery = {
|
|
323
|
+
outFields: ['*'],
|
|
324
|
+
relationshipId: id,
|
|
325
|
+
returnGeometry: false
|
|
326
|
+
};
|
|
327
|
+
relationships[id] = {
|
|
328
|
+
layer,
|
|
329
|
+
relatedQuery
|
|
330
|
+
} as ILayerRelationshipQuery;
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return relationships;
|
|
336
|
+
}
|
|
337
|
+
|
|
281
338
|
/**
|
|
282
339
|
* Prepares an attribute's value by applying domain and type information.
|
|
283
340
|
*
|
|
@@ -369,6 +426,7 @@ async function _prepareLabels(
|
|
|
369
426
|
|
|
370
427
|
// Get the label formatting, if any
|
|
371
428
|
let labelFormat: string;
|
|
429
|
+
let relationshipQueries: ILayerRelationshipQueryHash = {};
|
|
372
430
|
let arcadeExecutors: IArcadeExecutors = {};
|
|
373
431
|
if (layer.popupEnabled) {
|
|
374
432
|
layer.popupTemplate.fieldInfos.forEach(
|
|
@@ -401,6 +459,9 @@ async function _prepareLabels(
|
|
|
401
459
|
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "text") {
|
|
402
460
|
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
403
461
|
|
|
462
|
+
// Do we need any relationship queries?
|
|
463
|
+
relationshipQueries = _createRelationshipQueries(layer);
|
|
464
|
+
|
|
404
465
|
// Do we need any Arcade executors?
|
|
405
466
|
arcadeExecutors = await _createArcadeExecutors(labelFormat, layer);
|
|
406
467
|
}
|
|
@@ -414,37 +475,88 @@ async function _prepareLabels(
|
|
|
414
475
|
const attributeRegExp = /\{\w+\}/g;
|
|
415
476
|
|
|
416
477
|
// Find the label fields that we need to replace with values
|
|
417
|
-
const arcadeExpressionMatches = labelFormat.match(arcadeExpressionRegExp);
|
|
418
|
-
const attributeMatches = labelFormat.match(attributeRegExp);
|
|
478
|
+
const arcadeExpressionMatches = labelFormat.match(arcadeExpressionRegExp) ?? [];
|
|
479
|
+
const attributeMatches = labelFormat.match(attributeRegExp) ?? [];
|
|
419
480
|
|
|
420
481
|
// Convert feature attributes into an array of labels
|
|
421
|
-
|
|
422
|
-
|
|
482
|
+
const relationshipKeys = Object.keys(relationshipQueries);
|
|
483
|
+
labels = await Promise.all(featureSet.features.map(
|
|
484
|
+
async feature => {
|
|
423
485
|
let labelPrep = labelFormat;
|
|
424
486
|
|
|
425
|
-
// Replace Arcade expressions
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
(match
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
487
|
+
// Replace Arcade expressions in this feature
|
|
488
|
+
arcadeExpressionMatches.forEach(
|
|
489
|
+
(match: string) => {
|
|
490
|
+
const expressionName = match.substring(match.indexOf("/") + 1, match.length - 1);
|
|
491
|
+
const value = arcadeExecutors[expressionName].execute({"$feature": feature});
|
|
492
|
+
labelPrep = labelPrep.replace(match, value);
|
|
493
|
+
}
|
|
494
|
+
)
|
|
495
|
+
|
|
496
|
+
// Replace relationship expressions in this feature
|
|
497
|
+
const relatedFeatureQueries = [] as Promise<__esri.FeatureSet>[];
|
|
498
|
+
const relationshipIds = [] as string[];
|
|
499
|
+
relationshipKeys.forEach(
|
|
500
|
+
(relationshipId) => {
|
|
501
|
+
const relationship = relationshipQueries[relationshipId];
|
|
502
|
+
const objectId = feature.attributes[relationship.layer.objectIdField];
|
|
503
|
+
const relatedQuery = {
|
|
504
|
+
...relationship.relatedQuery,
|
|
505
|
+
objectIds: [objectId]
|
|
506
|
+
};
|
|
507
|
+
relatedFeatureQueries.push(relationship.layer.queryRelatedFeatures(relatedQuery as any));
|
|
508
|
+
relationshipIds.push(relationshipId);
|
|
509
|
+
}
|
|
510
|
+
);
|
|
435
511
|
|
|
436
|
-
//
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
512
|
+
// Wait for all of the queries for related records for this label
|
|
513
|
+
const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
|
|
514
|
+
relatedFeatureQueryResults.forEach(
|
|
515
|
+
(relatedFeatureQueryResult, i) => {
|
|
516
|
+
// We have an object with FeatureSets grouped by source layer or table objectIds
|
|
517
|
+
const relationshipId = relationshipIds[i];
|
|
518
|
+
|
|
519
|
+
// Run through the source layer or table objectIds
|
|
520
|
+
Object.keys(relatedFeatureQueryResult).forEach(
|
|
521
|
+
relatedFeatureSetId => {
|
|
522
|
+
// We have a feature set
|
|
523
|
+
const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
|
|
524
|
+
|
|
525
|
+
// Get the values from each feature and replace them in the label
|
|
526
|
+
relatedFeatures.forEach(
|
|
527
|
+
feature => {
|
|
528
|
+
// Merge the base and related feature attributes and create the label
|
|
529
|
+
// Prefix related feature's attributes with "relationships/<id>/" to match popup
|
|
530
|
+
const rePrefix = "\{relationships/" + relationshipId + "/";
|
|
531
|
+
const reSuffix = "\}";
|
|
532
|
+
|
|
533
|
+
const attributes = feature.attributes;
|
|
534
|
+
Object.keys(attributes).forEach(
|
|
535
|
+
attributeName => {
|
|
536
|
+
// Replace the value using the attribute name as a relationship
|
|
537
|
+
const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
|
|
538
|
+
labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
|
|
539
|
+
}
|
|
540
|
+
);
|
|
541
|
+
}
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
);
|
|
547
|
+
|
|
548
|
+
// Replace non-Arcade fields in this feature
|
|
549
|
+
attributeMatches.forEach(
|
|
550
|
+
(match: string) => {
|
|
551
|
+
const attributeName = match.substring(1, match.length - 1);
|
|
552
|
+
|
|
553
|
+
const value = _prepareAttributeValue(feature.attributes[attributeName],
|
|
554
|
+
attributeTypes[attributeName], attributeDomains[attributeName],
|
|
555
|
+
attributeFormats[attributeName], intl);
|
|
556
|
+
labelPrep = labelPrep.replace(match, value);
|
|
557
|
+
|
|
558
|
+
}
|
|
559
|
+
)
|
|
448
560
|
|
|
449
561
|
// Split label into lines
|
|
450
562
|
let label = labelPrep.split(lineSeparatorChar);
|
|
@@ -454,7 +566,7 @@ async function _prepareLabels(
|
|
|
454
566
|
|
|
455
567
|
return label;
|
|
456
568
|
}
|
|
457
|
-
);
|
|
569
|
+
));
|
|
458
570
|
|
|
459
571
|
} else {
|
|
460
572
|
// Export all attributes
|
|
@@ -2425,6 +2425,38 @@ function _createFilename(selectionSetNames) {
|
|
|
2425
2425
|
const title = selectionSetNames.length > 0 ? selectionSetNames.join(", ") : "download";
|
|
2426
2426
|
return title;
|
|
2427
2427
|
}
|
|
2428
|
+
/**
|
|
2429
|
+
* Creates relationship queries for each relationship flag in a popup.
|
|
2430
|
+
* @param layer Layer whose popup is to be examined
|
|
2431
|
+
* @return Hash of relationships by their id, or null if there are no relationship flags in the
|
|
2432
|
+
* popup; each relationship has the properties layer and relatedQuery for the related layer
|
|
2433
|
+
* and the query for that layer
|
|
2434
|
+
*/
|
|
2435
|
+
function _createRelationshipQueries(layer) {
|
|
2436
|
+
const relationships = {};
|
|
2437
|
+
const relationshipFieldPattern = /\{relationships\/\d+\//gm;
|
|
2438
|
+
const relationshipIdPattern = /\d+/;
|
|
2439
|
+
// Test if this popup has any relationship references
|
|
2440
|
+
const matches = layer.popupTemplate.content[0].text.match(relationshipFieldPattern);
|
|
2441
|
+
if (matches) {
|
|
2442
|
+
matches.forEach(match => {
|
|
2443
|
+
// Add a query to a found relationship if we don't already have one
|
|
2444
|
+
const id = match.match(relationshipIdPattern)[0];
|
|
2445
|
+
if (!relationships.hasOwnProperty(id)) {
|
|
2446
|
+
const relatedQuery = {
|
|
2447
|
+
outFields: ['*'],
|
|
2448
|
+
relationshipId: id,
|
|
2449
|
+
returnGeometry: false
|
|
2450
|
+
};
|
|
2451
|
+
relationships[id] = {
|
|
2452
|
+
layer,
|
|
2453
|
+
relatedQuery
|
|
2454
|
+
};
|
|
2455
|
+
}
|
|
2456
|
+
});
|
|
2457
|
+
}
|
|
2458
|
+
return relationships;
|
|
2459
|
+
}
|
|
2428
2460
|
/**
|
|
2429
2461
|
* Prepares an attribute's value by applying domain and type information.
|
|
2430
2462
|
*
|
|
@@ -2485,7 +2517,7 @@ function _prepareAttributeValue(attributeValue, attributeType, attributeDomain,
|
|
|
2485
2517
|
* @returns Promise resolving when function is done
|
|
2486
2518
|
*/
|
|
2487
2519
|
async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLayerPopup = true, includeHeaderNames = false) {
|
|
2488
|
-
var _a, _b, _c, _d;
|
|
2520
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2489
2521
|
const [intl] = await loadModules(["esri/intl"]);
|
|
2490
2522
|
// Get the features to export
|
|
2491
2523
|
const featureSet = await queryFeaturesByID(ids, layer);
|
|
@@ -2499,6 +2531,7 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
2499
2531
|
const attributeFormats = {};
|
|
2500
2532
|
// Get the label formatting, if any
|
|
2501
2533
|
let labelFormat;
|
|
2534
|
+
let relationshipQueries = {};
|
|
2502
2535
|
let arcadeExecutors = {};
|
|
2503
2536
|
if (layer.popupEnabled) {
|
|
2504
2537
|
layer.popupTemplate.fieldInfos.forEach(
|
|
@@ -2527,6 +2560,8 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
2527
2560
|
}
|
|
2528
2561
|
else if (formatUsingLayerPopup && ((_d = (_c = layer.popupTemplate) === null || _c === void 0 ? void 0 : _c.content[0]) === null || _d === void 0 ? void 0 : _d.type) === "text") {
|
|
2529
2562
|
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
2563
|
+
// Do we need any relationship queries?
|
|
2564
|
+
relationshipQueries = _createRelationshipQueries(layer);
|
|
2530
2565
|
// Do we need any Arcade executors?
|
|
2531
2566
|
arcadeExecutors = await _createArcadeExecutors(labelFormat, layer);
|
|
2532
2567
|
}
|
|
@@ -2538,33 +2573,64 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
|
|
|
2538
2573
|
const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
|
|
2539
2574
|
const attributeRegExp = /\{\w+\}/g;
|
|
2540
2575
|
// Find the label fields that we need to replace with values
|
|
2541
|
-
const arcadeExpressionMatches = labelFormat.match(arcadeExpressionRegExp);
|
|
2542
|
-
const attributeMatches = labelFormat.match(attributeRegExp);
|
|
2576
|
+
const arcadeExpressionMatches = (_e = labelFormat.match(arcadeExpressionRegExp)) !== null && _e !== void 0 ? _e : [];
|
|
2577
|
+
const attributeMatches = (_f = labelFormat.match(attributeRegExp)) !== null && _f !== void 0 ? _f : [];
|
|
2543
2578
|
// Convert feature attributes into an array of labels
|
|
2544
|
-
|
|
2579
|
+
const relationshipKeys = Object.keys(relationshipQueries);
|
|
2580
|
+
labels = await Promise.all(featureSet.features.map(async (feature) => {
|
|
2545
2581
|
let labelPrep = labelFormat;
|
|
2546
|
-
// Replace Arcade expressions
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2582
|
+
// Replace Arcade expressions in this feature
|
|
2583
|
+
arcadeExpressionMatches.forEach((match) => {
|
|
2584
|
+
const expressionName = match.substring(match.indexOf("/") + 1, match.length - 1);
|
|
2585
|
+
const value = arcadeExecutors[expressionName].execute({ "$feature": feature });
|
|
2586
|
+
labelPrep = labelPrep.replace(match, value);
|
|
2587
|
+
});
|
|
2588
|
+
// Replace relationship expressions in this feature
|
|
2589
|
+
const relatedFeatureQueries = [];
|
|
2590
|
+
const relationshipIds = [];
|
|
2591
|
+
relationshipKeys.forEach((relationshipId) => {
|
|
2592
|
+
const relationship = relationshipQueries[relationshipId];
|
|
2593
|
+
const objectId = feature.attributes[relationship.layer.objectIdField];
|
|
2594
|
+
const relatedQuery = Object.assign(Object.assign({}, relationship.relatedQuery), { objectIds: [objectId] });
|
|
2595
|
+
relatedFeatureQueries.push(relationship.layer.queryRelatedFeatures(relatedQuery));
|
|
2596
|
+
relationshipIds.push(relationshipId);
|
|
2597
|
+
});
|
|
2598
|
+
// Wait for all of the queries for related records for this label
|
|
2599
|
+
const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
|
|
2600
|
+
relatedFeatureQueryResults.forEach((relatedFeatureQueryResult, i) => {
|
|
2601
|
+
// We have an object with FeatureSets grouped by source layer or table objectIds
|
|
2602
|
+
const relationshipId = relationshipIds[i];
|
|
2603
|
+
// Run through the source layer or table objectIds
|
|
2604
|
+
Object.keys(relatedFeatureQueryResult).forEach(relatedFeatureSetId => {
|
|
2605
|
+
// We have a feature set
|
|
2606
|
+
const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
|
|
2607
|
+
// Get the values from each feature and replace them in the label
|
|
2608
|
+
relatedFeatures.forEach(feature => {
|
|
2609
|
+
// Merge the base and related feature attributes and create the label
|
|
2610
|
+
// Prefix related feature's attributes with "relationships/<id>/" to match popup
|
|
2611
|
+
const rePrefix = "\{relationships/" + relationshipId + "/";
|
|
2612
|
+
const reSuffix = "\}";
|
|
2613
|
+
const attributes = feature.attributes;
|
|
2614
|
+
Object.keys(attributes).forEach(attributeName => {
|
|
2615
|
+
// Replace the value using the attribute name as a relationship
|
|
2616
|
+
const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
|
|
2617
|
+
labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
|
|
2618
|
+
});
|
|
2619
|
+
});
|
|
2560
2620
|
});
|
|
2561
|
-
}
|
|
2621
|
+
});
|
|
2622
|
+
// Replace non-Arcade fields in this feature
|
|
2623
|
+
attributeMatches.forEach((match) => {
|
|
2624
|
+
const attributeName = match.substring(1, match.length - 1);
|
|
2625
|
+
const value = _prepareAttributeValue(feature.attributes[attributeName], attributeTypes[attributeName], attributeDomains[attributeName], attributeFormats[attributeName], intl);
|
|
2626
|
+
labelPrep = labelPrep.replace(match, value);
|
|
2627
|
+
});
|
|
2562
2628
|
// Split label into lines
|
|
2563
2629
|
let label = labelPrep.split(lineSeparatorChar);
|
|
2564
2630
|
// Trim lines
|
|
2565
2631
|
label = label.map(line => line.trim());
|
|
2566
2632
|
return label;
|
|
2567
|
-
});
|
|
2633
|
+
}));
|
|
2568
2634
|
}
|
|
2569
2635
|
else {
|
|
2570
2636
|
// Export all attributes
|
|
@@ -430,7 +430,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class extends HTML
|
|
|
430
430
|
*/
|
|
431
431
|
_getSelectPage() {
|
|
432
432
|
const noticeText = this._translations.selectSearchTip;
|
|
433
|
-
return (h("calcite-panel", null, this._getLabel(this._translations.stepTwoFull, true), this._getNotice(noticeText), h("div",
|
|
433
|
+
return (h("calcite-panel", null, this._getLabel(this._translations.stepTwoFull, true), this._getNotice(noticeText), h("div", null, h("map-select-tools", { bufferColor: this.bufferColor, bufferOutlineColor: this.bufferOutlineColor, class: "font-bold", customLabelEnabled: this.customLabelEnabled, defaultBufferDistance: this.defaultBufferDistance, defaultBufferUnit: this.defaultBufferUnit, enabledLayerIds: this.selectionLayerIds, isUpdate: !!this._activeSelection, mapView: this.mapView, noResultText: this.noResultText, onSelectionSetChange: (evt) => this._updateForSelection(evt), ref: (el) => { this._selectTools = el; }, searchConfiguration: this._searchConfiguration, selectionSet: this._activeSelection, sketchLineSymbol: this.sketchLineSymbol, sketchPointSymbol: this.sketchPointSymbol, sketchPolygonSymbol: this.sketchPolygonSymbol })), this._getPageNavButtons(this._translations.done, this._numSelected === 0, () => { void this._saveSelection(); }, this._translations.cancel, false, () => { void this._home(); })));
|
|
434
434
|
}
|
|
435
435
|
/**
|
|
436
436
|
* Create the main download page that has the shared aspects of both PDF and CSV
|
|
@@ -442,7 +442,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class extends HTML
|
|
|
442
442
|
_getExportPage() {
|
|
443
443
|
const hasSelections = this._hasSelections(this.showRefineSelection);
|
|
444
444
|
const numDuplicates = this._getNumDuplicates(this._getSelectedIds());
|
|
445
|
-
return (h("calcite-panel", null, h("div", null, this._getLabel(this._translations.export, false), hasSelections ? (h("div", null, this._getNotice(this._translations.exportTip, "padding-sides-1"), this._getLabel(this._translations.
|
|
445
|
+
return (h("calcite-panel", null, h("div", null, this._getLabel(this._translations.export, false), hasSelections ? (h("div", null, this._getNotice(this._translations.exportTip, "padding-sides-1"), this._getLabel(this._translations.exportListsLabel), this._getExportSelectionLists(), h("div", { class: "padding-sides-1" }, h("div", { class: "display-flex" }, h("calcite-label", { layout: "inline" }, h("calcite-checkbox", { ref: (el) => { this._removeDuplicates = el; } }), h("div", { class: "display-flex" }, this._translations.removeDuplicate, h("div", { class: "info-message padding-start-1-2" }, h("calcite-input-message", { class: "info-blue margin-top-0", scale: "m" }, ` ${this._translations.numDuplicates.replace("{{n}}", numDuplicates.toString())}`)))), h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "remove-duplicates-icon", scale: "s" })), h("calcite-popover", { closable: true, label: "", referenceElement: "remove-duplicates-icon" }, h("span", { class: "tooltip-message" }, this._translations.duplicatesTip))), h("div", { class: "border-bottom" }), h("div", { class: "padding-top-sides-1" }, h("calcite-segmented-control", { class: "w-100", onCalciteSegmentedControlChange: (evt) => this._exportTypeChange(evt) }, h("calcite-segmented-control-item", { checked: this._exportType === EExportType.PDF, class: "w-50 end-border", value: EExportType.PDF }, this._translations.pdf), h("calcite-segmented-control-item", { checked: this._exportType === EExportType.CSV, class: "w-50", value: EExportType.CSV }, this._translations.csv))), h("div", { class: "padding-bottom-1" }, this._getExportOptions()), h("div", { class: "padding-1 display-flex" }, h("calcite-button", { disabled: !this._downloadActive, onClick: () => void this._export(), width: "full" }, this._translations.export)))) : (this._getNotice(this._translations.downloadNoLists, "padding-sides-1 padding-bottom-1")))));
|
|
446
446
|
}
|
|
447
447
|
/**
|
|
448
448
|
* Store the user selected export type CSV || PDF
|