@esri/solutions-components 0.10.42 → 0.10.43
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/cjs/calcite-action-pad_2.cjs.entry.js +1 -1
- package/dist/cjs/calcite-block_5.cjs.entry.js +25 -26
- package/dist/cjs/{constants-51cf394f.js → constants-bed33322.js} +3 -11
- package/dist/cjs/crowdsource-reporter.cjs.entry.js +112 -49
- package/dist/cjs/{helpers-afcac967.js → helpers-0493759d.js} +1 -1
- package/dist/cjs/instant-apps-app-guide.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-ckeditor-wrapper_3.cjs.entry.js +3 -3
- package/dist/cjs/instant-apps-control-panel.cjs.entry.js +1 -1
- package/dist/cjs/instant-apps-create.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-export-views.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-export.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-interactive-legend-classic.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-interactive-legend-count_2.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-interactive-legend-group-legend-element-caption.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-interactive-legend-group-legend-element_5.cjs.entry.js +21 -7
- package/dist/cjs/instant-apps-interactive-legend.cjs.entry.js +3 -3
- package/dist/cjs/instant-apps-keyboard-shortcuts.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-language-switcher.cjs.entry.js +7 -7
- package/dist/cjs/instant-apps-language-translator.cjs.entry.js +6 -6
- package/dist/cjs/instant-apps-measurement.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-popover.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-scoreboard.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-sign-in.cjs.entry.js +2 -2
- package/dist/cjs/instant-apps-splash.cjs.entry.js +6 -5
- package/dist/cjs/instant-apps-time-filter.cjs.entry.js +2 -2
- package/dist/cjs/{loadModules-8567855e.js → loadModules-df8b13ca.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{locale-4a18a858.js → locale-4b820602.js} +1 -1
- package/dist/cjs/solution-contents_3.cjs.entry.js +1 -1
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/cjs/{utils-fa7ad44b.js → utils-3f10ea6b.js} +2 -2
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +112 -49
- package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +2 -2
- package/dist/components/crowdsource-reporter.js +112 -49
- package/dist/components/instant-apps-filter-list2.js +25 -26
- package/dist/components/instant-apps-interactive-legend-relationship2.js +19 -5
- package/dist/components/instant-apps-language-switcher.js +3 -3
- package/dist/components/instant-apps-language-translator2.js +4 -12
- package/dist/components/instant-apps-splash.js +4 -3
- package/dist/components/loadModules2.js +1 -1
- package/dist/components/solution-spatial-ref2.js +2 -2
- package/dist/components/utils4.js +1 -1
- package/dist/esm/calcite-action-pad_2.entry.js +1 -1
- package/dist/esm/calcite-block_5.entry.js +25 -26
- package/dist/esm/{constants-886c7c2c.js → constants-637a40f5.js} +3 -11
- package/dist/esm/crowdsource-reporter.entry.js +112 -49
- package/dist/esm/{helpers-91087955.js → helpers-91ca0f44.js} +1 -1
- package/dist/esm/instant-apps-app-guide.entry.js +2 -2
- package/dist/esm/instant-apps-ckeditor-wrapper_3.entry.js +3 -3
- package/dist/esm/instant-apps-control-panel.entry.js +1 -1
- package/dist/esm/instant-apps-create.entry.js +2 -2
- package/dist/esm/instant-apps-export-views.entry.js +2 -2
- package/dist/esm/instant-apps-export.entry.js +2 -2
- package/dist/esm/instant-apps-interactive-legend-classic.entry.js +2 -2
- package/dist/esm/instant-apps-interactive-legend-count_2.entry.js +2 -2
- package/dist/esm/instant-apps-interactive-legend-group-legend-element-caption.entry.js +2 -2
- package/dist/esm/instant-apps-interactive-legend-group-legend-element_5.entry.js +21 -7
- package/dist/esm/instant-apps-interactive-legend.entry.js +3 -3
- package/dist/esm/instant-apps-keyboard-shortcuts.entry.js +2 -2
- package/dist/esm/instant-apps-language-switcher.entry.js +7 -7
- package/dist/esm/instant-apps-language-translator.entry.js +6 -6
- package/dist/esm/instant-apps-measurement.entry.js +2 -2
- package/dist/esm/instant-apps-popover.entry.js +2 -2
- package/dist/esm/instant-apps-scoreboard.entry.js +2 -2
- package/dist/esm/instant-apps-sign-in.entry.js +2 -2
- package/dist/esm/instant-apps-splash.entry.js +6 -5
- package/dist/esm/instant-apps-time-filter.entry.js +2 -2
- package/dist/esm/{loadModules-03ba7abe.js → loadModules-d5a25252.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{locale-ce177eb8.js → locale-77038bee.js} +1 -1
- package/dist/esm/solution-contents_3.entry.js +1 -1
- package/dist/esm/solutions-components.js +1 -1
- package/dist/esm/{utils-3fc29543.js → utils-0a78d3c9.js} +2 -2
- package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-splash/instant-apps-splash.css +7 -0
- package/dist/solutions-components/{p-b739f26d.entry.js → p-053effee.entry.js} +1 -1
- package/dist/solutions-components/{p-af573e0d.js → p-09543b4e.js} +1 -1
- package/dist/solutions-components/p-1b1ff60a.entry.js +6 -0
- package/dist/solutions-components/{p-e4107150.entry.js → p-2291bf3f.entry.js} +1 -1
- package/dist/solutions-components/p-2cf41651.entry.js +6 -0
- package/dist/solutions-components/{p-fe3aea1a.entry.js → p-351c7cbf.entry.js} +1 -1
- package/dist/solutions-components/{p-90fc786f.entry.js → p-3d999f0f.entry.js} +1 -1
- package/dist/solutions-components/p-3fe6c230.entry.js +6 -0
- package/dist/solutions-components/p-4695cfab.js +6 -0
- package/dist/solutions-components/{p-43699470.entry.js → p-499489c5.entry.js} +1 -1
- package/dist/solutions-components/{p-5ff711ee.js → p-5104cc98.js} +1 -1
- package/dist/solutions-components/p-5e694bcc.entry.js +29 -0
- package/dist/solutions-components/{p-cbb86cf2.entry.js → p-6a3f2249.entry.js} +1 -1
- package/dist/solutions-components/{p-a7f56b28.entry.js → p-6e5ea1cb.entry.js} +1 -1
- package/dist/solutions-components/{p-9c170b30.entry.js → p-76a1236d.entry.js} +1 -1
- package/dist/solutions-components/{p-1e14b3d0.entry.js → p-78b6d3fe.entry.js} +1 -1
- package/dist/solutions-components/{p-c48be45f.entry.js → p-8a1a0f9b.entry.js} +1 -1
- package/dist/solutions-components/{p-5cbf3eed.entry.js → p-8d4a4498.entry.js} +1 -1
- package/dist/solutions-components/{p-4a02fd45.entry.js → p-9d9e0e74.entry.js} +1 -1
- package/dist/solutions-components/{p-50fb7f47.js → p-b49e1a78.js} +1 -1
- package/dist/solutions-components/{p-c551ffc5.entry.js → p-c399f2b8.entry.js} +1 -1
- package/dist/solutions-components/p-cb27611e.entry.js +6 -0
- package/dist/solutions-components/{p-4cd4cb85.js → p-d001e961.js} +1 -1
- package/dist/solutions-components/{p-523dcf4b.entry.js → p-d37a68f7.entry.js} +1 -1
- package/dist/solutions-components/{p-a2cf9fdc.entry.js → p-db7d5db8.entry.js} +1 -1
- package/dist/solutions-components/{p-6438d1ea.entry.js → p-e29e57db.entry.js} +1 -1
- package/dist/solutions-components/{p-a5b751e2.entry.js → p-e625aa69.entry.js} +1 -1
- package/dist/solutions-components/{p-2542d5c9.entry.js → p-e9fcc194.entry.js} +1 -1
- package/dist/solutions-components/{p-374ddead.entry.js → p-f4880179.entry.js} +1 -1
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +43 -17
- package/package.json +7 -7
- package/dist/solutions-components/p-3fc18283.entry.js +0 -6
- package/dist/solutions-components/p-442dd59c.entry.js +0 -6
- package/dist/solutions-components/p-5585dcd3.entry.js +0 -6
- package/dist/solutions-components/p-953afbb3.entry.js +0 -29
- package/dist/solutions-components/p-ceb1030b.js +0 -6
- package/dist/solutions-components/p-f728af86.entry.js +0 -6
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
const locale = require('./locale-
|
|
8
|
+
const locale = require('./locale-4b820602.js');
|
|
9
9
|
const index = require('./index-2b13a4d5.js');
|
|
10
10
|
|
|
11
11
|
exports.EInputType = void 0;
|
|
@@ -131,7 +131,7 @@ function initExternalCKEditorStyles() {
|
|
|
131
131
|
document.head.appendChild(style);
|
|
132
132
|
}
|
|
133
133
|
async function updateLastSave(resource) {
|
|
134
|
-
const data =
|
|
134
|
+
const data = store.get('portalItemResourceT9n');
|
|
135
135
|
const lastSave = Date.now();
|
|
136
136
|
store.set('lastSave', lastSave);
|
|
137
137
|
const dataStr = JSON.stringify(Object.assign(Object.assign({}, data), { lastSave }));
|
|
@@ -213,17 +213,17 @@ export class CrowdsourceReporter {
|
|
|
213
213
|
*/
|
|
214
214
|
_formElements = [];
|
|
215
215
|
/**
|
|
216
|
-
* string
|
|
216
|
+
* string: Previous selected layer id
|
|
217
217
|
*/
|
|
218
|
-
|
|
218
|
+
_prevSelectedLayerId;
|
|
219
219
|
/**
|
|
220
|
-
*
|
|
220
|
+
* ILayerExpression[]: current LayerExpressions based on the selected layer
|
|
221
221
|
*/
|
|
222
|
-
|
|
222
|
+
_currentLayerExpressions;
|
|
223
223
|
/**
|
|
224
|
-
* string:
|
|
224
|
+
* { [key: string]: string }: definitionExpressions for each layer
|
|
225
225
|
*/
|
|
226
|
-
|
|
226
|
+
_initDefExpressions;
|
|
227
227
|
//--------------------------------------------------------------------------
|
|
228
228
|
//
|
|
229
229
|
// Watch handlers
|
|
@@ -248,6 +248,7 @@ export class CrowdsourceReporter {
|
|
|
248
248
|
*/
|
|
249
249
|
async mapViewWatchHandler() {
|
|
250
250
|
await this.mapView.when(async () => {
|
|
251
|
+
this.setInitExpressions();
|
|
251
252
|
await this.setMapView();
|
|
252
253
|
});
|
|
253
254
|
}
|
|
@@ -326,15 +327,25 @@ export class CrowdsourceReporter {
|
|
|
326
327
|
this._layers = this.reportingOptions ? Object.keys(this.reportingOptions).filter((layerId) => {
|
|
327
328
|
return this.reportingOptions[layerId].visible;
|
|
328
329
|
}) : [];
|
|
330
|
+
this.setInitExpressions();
|
|
329
331
|
await this.setMapView();
|
|
330
332
|
});
|
|
331
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* StencilJS: Called before every render().
|
|
336
|
+
* Update the filter list's initial definition expressions when the filter list component is available
|
|
337
|
+
*/
|
|
338
|
+
componentWillRender() {
|
|
339
|
+
if (this._flowItems.includes('filter-panel')) {
|
|
340
|
+
void this._filterList?.updateInitDefExpressions({ initDefExpressions: this._initDefExpressions });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
332
343
|
/**
|
|
333
344
|
* Renders the component.
|
|
334
345
|
*/
|
|
335
346
|
render() {
|
|
336
347
|
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
|
337
|
-
return (h(Host, { key: '
|
|
348
|
+
return (h(Host, { key: 'f1dd6d85210210a73fff30a5d98370da1834be7b' }, this._reportSubmitted && h("calcite-alert", { key: 'b84760fcbf4bfcf0f038be272f74eda97ce17bd9', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '27aa04dd8575ad27898f7848bc2733a03a33e70f', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '3fc2721bed573ad10bbb1c81af126e2e8ca90b12', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '4993e5c5b52d650b094c2890d0e4516cc87ffb69', slot: "title" }, this._translations.error), h("div", { key: '272b17f4c0239d8b295d6f2c0c02f1ba236d840d', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '5b9e1a2bd129888ec0764ad9b05e5056653d3c33', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: 'bd428297f5fe85cbf7edc42c61c64c299d7954b7', slot: "message" }, this.commentSubmittedMessage || this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '2aa1927ca27f9ec15a16f8e68905a1cf203ef833', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '4bff5fb03586edf0f9ea21649d1de4c34034e539', slot: "title" }, this._translations.error), h("div", { key: '7ea6c71dbbac15c2f43242ba00c9e461177051a1', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '3aa6bfc19a1e82ab90d2ab42aa9a577b3a2b6d8f' }, h("calcite-shell", { key: 'f27355d4f655c0a0931158f38f0be3eb28f6c4d4', "content-behind": true }, this._getReporter()))));
|
|
338
349
|
}
|
|
339
350
|
//--------------------------------------------------------------------------
|
|
340
351
|
//
|
|
@@ -398,7 +409,6 @@ export class CrowdsourceReporter {
|
|
|
398
409
|
break;
|
|
399
410
|
case "filter-panel":
|
|
400
411
|
renderLists.push(this.getFilterPanel());
|
|
401
|
-
void this._restoreFilters();
|
|
402
412
|
break;
|
|
403
413
|
case "feature-details":
|
|
404
414
|
renderLists.push(this.getFeatureDetailsFlowItem());
|
|
@@ -445,20 +455,6 @@ export class CrowdsourceReporter {
|
|
|
445
455
|
return (h("calcite-popover", { autoClose: true, label: "", offsetDistance: 0, placement: this.isMobile ? "leading-start" : "bottom-start", pointerDisabled: true, referenceElement: "sort-popover" }, h("calcite-list", { "selection-mode": "single" }, h("calcite-list-item", { label: this._translations.sortNewest, onCalciteListItemSelect: () => { void this.sortOptionClick(this._selectedLayer.objectIdField, "desc", "sortNewest"); }, selected: this._updatedSortOption === "sortNewest", value: "sortNewest" }), h("calcite-list-item", { label: this._translations.sortOldest, onCalciteListItemSelect: () => { void this.sortOptionClick(this._selectedLayer.objectIdField, "asc", "sortOldest"); }, selected: this._updatedSortOption === "sortOldest", value: "sortOldest" }), canSortByVotes &&
|
|
446
456
|
h(Fragment, null, h("calcite-list-item", { label: this._translations.sortHighestVoted, onCalciteListItemSelect: () => { void this.sortOptionClick(this.reportingOptions[this._selectedLayerId].likeField, "desc", "sortHighestVoted"); }, selected: this._updatedSortOption === "sortHighestVoted", value: "sortHighestVoted" }), h("calcite-list-item", { label: this._translations.sortLowestVoted, onCalciteListItemSelect: () => { void this.sortOptionClick(this.reportingOptions[this._selectedLayerId].likeField, "asc", "sortLowestVoted"); }, selected: this._updatedSortOption === "sortLowestVoted", value: "sortLowestVoted" })))));
|
|
447
457
|
}
|
|
448
|
-
/**
|
|
449
|
-
* Restores the applied filters
|
|
450
|
-
* @protected
|
|
451
|
-
*/
|
|
452
|
-
_restoreFilters() {
|
|
453
|
-
// call the restore function when instant-apps-filter-list is ready
|
|
454
|
-
setTimeout(() => {
|
|
455
|
-
const canRestoreFilter = this._filterList && this._filterUrlParams && this._filterInitState;
|
|
456
|
-
if (canRestoreFilter) {
|
|
457
|
-
void this._filterList.restoreFilters(this._filterUrlParams[0], this._filterInitState);
|
|
458
|
-
}
|
|
459
|
-
this._filterInitState = null;
|
|
460
|
-
}, 200);
|
|
461
|
-
}
|
|
462
458
|
/**
|
|
463
459
|
* Reset the filter
|
|
464
460
|
* @protected
|
|
@@ -466,8 +462,6 @@ export class CrowdsourceReporter {
|
|
|
466
462
|
async _handleFilterListReset() {
|
|
467
463
|
//on reset filter list reset the filter states
|
|
468
464
|
this._filterActive = false;
|
|
469
|
-
this._filterUrlParams = null;
|
|
470
|
-
this._filterInitState = null;
|
|
471
465
|
}
|
|
472
466
|
/**
|
|
473
467
|
* Check if the layers definitionExpression has been modified and update the feature list depending on the applied filters
|
|
@@ -475,9 +469,7 @@ export class CrowdsourceReporter {
|
|
|
475
469
|
*/
|
|
476
470
|
async _handleFilterUpdate(active) {
|
|
477
471
|
this._showLoadingIndicator = true;
|
|
478
|
-
//if filters are applied the url params will be generated
|
|
479
472
|
this._filterActive = active;
|
|
480
|
-
this._filterUrlParams = this._filterList.urlParams.getAll('filter');
|
|
481
473
|
await this._featureList.refresh();
|
|
482
474
|
this._showLoadingIndicator = false;
|
|
483
475
|
}
|
|
@@ -644,10 +636,6 @@ export class CrowdsourceReporter {
|
|
|
644
636
|
if (evt.detail.layerId && evt.detail.layerName) {
|
|
645
637
|
await this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
646
638
|
}
|
|
647
|
-
// reset the applied filter when switching to another layer
|
|
648
|
-
if (this._selectedLayerId !== this._prevSelectedLayerId && this._filterActive) {
|
|
649
|
-
await this.resetFilter();
|
|
650
|
-
}
|
|
651
639
|
void this.updateNonVisibleLayersOnMap(true);
|
|
652
640
|
// get the form template elements to pass in create-feature to create a LEVELID field in feature-form
|
|
653
641
|
this._getFormElements();
|
|
@@ -719,28 +707,18 @@ export class CrowdsourceReporter {
|
|
|
719
707
|
};
|
|
720
708
|
this._updatedSortOption = "sortNewest";
|
|
721
709
|
await this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
710
|
+
void this.handleSelectedLayersFilter();
|
|
722
711
|
this._flowItems = [...this._flowItems, "feature-list"];
|
|
723
|
-
// reset the applied filter when switching to another layer
|
|
724
|
-
if (this._selectedLayerId !== this._prevSelectedLayerId && this._filterActive) {
|
|
725
|
-
await this.resetFilter();
|
|
726
|
-
}
|
|
727
712
|
this._prevSelectedLayerId = this._selectedLayerId;
|
|
728
713
|
}
|
|
729
|
-
/**
|
|
730
|
-
* Reset's the applied filter
|
|
731
|
-
* @protected
|
|
732
|
-
*/
|
|
733
|
-
async resetFilter() {
|
|
734
|
-
const prevLayer = await getLayerOrTable(this.mapView, this._prevSelectedLayerId);
|
|
735
|
-
prevLayer.definitionExpression = this._filterInitState.initDefExpressions[this._prevSelectedLayerId];
|
|
736
|
-
void this._handleFilterListReset();
|
|
737
|
-
}
|
|
738
714
|
/**
|
|
739
715
|
* On back from filter panel get the filter's init state
|
|
740
716
|
* @protected
|
|
741
717
|
*/
|
|
742
718
|
async backFromFilterPanel() {
|
|
743
|
-
this.
|
|
719
|
+
if (this._filterList != null) {
|
|
720
|
+
this._currentLayerExpressions = await this._filterList.getCurrentLayerExpressions();
|
|
721
|
+
}
|
|
744
722
|
await this._featureList.refresh();
|
|
745
723
|
this.backFromSelectedPanel();
|
|
746
724
|
}
|
|
@@ -855,9 +833,8 @@ export class CrowdsourceReporter {
|
|
|
855
833
|
* @protected
|
|
856
834
|
*/
|
|
857
835
|
getFeatureListFlowItem(layerId, layerName) {
|
|
858
|
-
const layerExpressions = this.layerExpressions?.filter((exp) => exp.id === this._selectedLayerId);
|
|
859
836
|
const canCreateReports = this._getLayersConfig(this._selectedLayerId)?.reporting && this._layerItemsHash[this._selectedLayerId].supportsAdd;
|
|
860
|
-
const showFilterIcon =
|
|
837
|
+
const showFilterIcon = this._currentLayerExpressions?.length > 0;
|
|
861
838
|
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: layerName, loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this._toggleSort(), h("calcite-action", { icon: "sort-ascending-arrow", id: "sort-popover", slot: "header-actions-end", text: this._translations.sort, title: this._translations.sort }), showFilterIcon && h("calcite-action", { icon: "filter", indicator: this._filterActive, onClick: () => { this._flowItems = [...this._flowItems, "filter-panel"]; }, slot: "header-actions-end", text: this._translations.filter, title: this._translations.filter }), this.isMobile && this.getActionToExpandCollapsePanel(), this.enableNewReports && canCreateReports &&
|
|
862
839
|
h("calcite-button", { appearance: "solid", onClick: this.navigateToCreateFeature.bind(this), slot: "footer", width: "full" }, this.reportButtonText ? this.reportButtonText : this._translations.createReportButtonText), h("calcite-panel", { "full-height": true }, h("feature-list", { applyLayerViewFilter: this.showMyReportsOnly, class: "height-full", highlightOnHover: true, locale: this.locale, mapView: this.mapView, noFeaturesFoundMsg: this._translations.featureErrorMsg, onFeatureSelect: this.onFeatureSelectFromList.bind(this), pageSize: 30, ref: el => this._featureList = el, reportingOptions: this.reportingOptions, selectedLayerId: layerId, showFeatureSymbol: this.showFeatureSymbol, sortingInfo: this._updatedSorting }))));
|
|
863
840
|
}
|
|
@@ -867,8 +844,7 @@ export class CrowdsourceReporter {
|
|
|
867
844
|
* @protected
|
|
868
845
|
*/
|
|
869
846
|
getFilterPanel() {
|
|
870
|
-
|
|
871
|
-
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._translations?.filterLayerTitle?.replace("{{title}}", this._selectedLayerName), loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromFilterPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("div", { class: "width-full", slot: "footer" }, h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "solid", class: "footer-top-button footer-button", disabled: !this._filterActive, onClick: () => { void this._filterList?.forceReset(); }, width: "full" }, this._translations.resetFilter), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromFilterPanel.bind(this), width: "full" }, this._translations.close))), h("calcite-panel", { "full-height": true }, h("instant-apps-filter-list", { autoUpdateUrl: false, closeBtnOnClick: () => undefined, comboboxOverlayPositioning: "fixed", layerExpressions: currentLayersExpressions, onFilterListReset: () => this._handleFilterListReset(), onFilterUpdate: () => this._handleFilterUpdate(this._filterList.filterCount > 0), ref: (el) => this._filterList = el, resetBtn: false, resetFiltersOnDisconnect: false, view: this.mapView, zoomBtn: false }))));
|
|
847
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._translations?.filterLayerTitle?.replace("{{title}}", this._selectedLayerName), loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromFilterPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("div", { class: "width-full", slot: "footer" }, h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "solid", class: "footer-top-button footer-button", disabled: !this._filterActive, onClick: this.resetFilterList.bind(this), width: "full" }, this._translations.resetFilter), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromFilterPanel.bind(this), width: "full" }, this._translations.close))), h("calcite-panel", { "full-height": true }, h("instant-apps-filter-list", { autoUpdateUrl: false, closeBtnOnClick: () => undefined, comboboxOverlayPositioning: "fixed", layerExpressions: this._currentLayerExpressions, onFilterListReset: () => this._handleFilterListReset(), onFilterUpdate: () => this._handleFilterUpdate(this._filterList.filterCount > 0), ref: (el) => this._filterList = el, resetBtn: false, resetFiltersOnDisconnect: false, view: this.mapView, zoomBtn: false }))));
|
|
872
848
|
}
|
|
873
849
|
/**
|
|
874
850
|
* Returns the calcite-flow item for feature details
|
|
@@ -928,6 +904,7 @@ export class CrowdsourceReporter {
|
|
|
928
904
|
else {
|
|
929
905
|
if (this._editableLayerIds.length > 1) {
|
|
930
906
|
void this.setSelectedLayer('', '');
|
|
907
|
+
void this.handlePrevLayersFilter();
|
|
931
908
|
}
|
|
932
909
|
this._currentFeatureId = '';
|
|
933
910
|
}
|
|
@@ -1184,7 +1161,8 @@ export class CrowdsourceReporter {
|
|
|
1184
1161
|
detail: this._editableLayerIds
|
|
1185
1162
|
};
|
|
1186
1163
|
await this.layerListLoaded(evt);
|
|
1187
|
-
|
|
1164
|
+
await this.setSelectedLayer(this._validLayers[0].id, this._validLayers[0].title);
|
|
1165
|
+
void this.handleSelectedLayersFilter();
|
|
1188
1166
|
}
|
|
1189
1167
|
/**
|
|
1190
1168
|
* Updates the share url for current selected feature
|
|
@@ -1244,6 +1222,91 @@ export class CrowdsourceReporter {
|
|
|
1244
1222
|
}
|
|
1245
1223
|
}
|
|
1246
1224
|
}
|
|
1225
|
+
/**
|
|
1226
|
+
* Handles updating the current layer expressions and definition expression for the selected layer
|
|
1227
|
+
* @protected
|
|
1228
|
+
*/
|
|
1229
|
+
async handleSelectedLayersFilter() {
|
|
1230
|
+
if (this._selectedLayer) {
|
|
1231
|
+
this._currentLayerExpressions = this.layerExpressions ? this.layerExpressions.filter(exp => exp.id === this._selectedLayerId) : [];
|
|
1232
|
+
this.setActiveDefinitionExpressions();
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
/**
|
|
1236
|
+
* Handles updating the previous layer's definition expression to it's initial definition expression
|
|
1237
|
+
* @protected
|
|
1238
|
+
*/
|
|
1239
|
+
async handlePrevLayersFilter() {
|
|
1240
|
+
if (this._prevSelectedLayerId) {
|
|
1241
|
+
const prevLayer = await getLayerOrTable(this.mapView, this._prevSelectedLayerId);
|
|
1242
|
+
if (prevLayer) {
|
|
1243
|
+
prevLayer.definitionExpression = this._initDefExpressions[this._prevSelectedLayerId];
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* Resets the selected layer's definition expression with the initial definition expression
|
|
1249
|
+
* @protected
|
|
1250
|
+
*/
|
|
1251
|
+
resetFilterList() {
|
|
1252
|
+
void this._filterList?.forceReset();
|
|
1253
|
+
if (this._selectedLayer != null) {
|
|
1254
|
+
this._selectedLayer.definitionExpression = this._initDefExpressions[this._selectedLayerId];
|
|
1255
|
+
this._filterActive = false;
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
/**
|
|
1259
|
+
* Sets the active definition expressions for the selected layer
|
|
1260
|
+
* @protected
|
|
1261
|
+
*/
|
|
1262
|
+
setActiveDefinitionExpressions() {
|
|
1263
|
+
if (this._selectedLayer == null) {
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1266
|
+
const defExpressions = [];
|
|
1267
|
+
if (this._currentLayerExpressions?.length > 0) {
|
|
1268
|
+
const layerExpression = this._currentLayerExpressions[0];
|
|
1269
|
+
for (const expression of layerExpression.expressions) {
|
|
1270
|
+
const { active, definitionExpression } = expression;
|
|
1271
|
+
if (active && definitionExpression) {
|
|
1272
|
+
defExpressions.push(`(${definitionExpression})`);
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
this._filterActive = defExpressions.length > 0;
|
|
1276
|
+
this.updateFilterLayerDefExpression(defExpressions, layerExpression.operator);
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
/**
|
|
1280
|
+
* Updates the selected layer's definition expression based on the active expressions
|
|
1281
|
+
* @protected
|
|
1282
|
+
*/
|
|
1283
|
+
updateFilterLayerDefExpression(defExpressions, operator) {
|
|
1284
|
+
const initDefExpression = this._initDefExpressions[this._selectedLayerId];
|
|
1285
|
+
const combinedExpressions = defExpressions?.length > 0 && initDefExpression != null
|
|
1286
|
+
? `(${defExpressions.join(operator)}) AND (${initDefExpression})`
|
|
1287
|
+
: defExpressions.length > 0
|
|
1288
|
+
? defExpressions.join(operator)
|
|
1289
|
+
: initDefExpression;
|
|
1290
|
+
this._selectedLayer.definitionExpression = combinedExpressions;
|
|
1291
|
+
}
|
|
1292
|
+
/**
|
|
1293
|
+
* Sets the initial definition expressions for all the feature layers
|
|
1294
|
+
* @protected
|
|
1295
|
+
*/
|
|
1296
|
+
setInitExpressions() {
|
|
1297
|
+
this._initDefExpressions = {};
|
|
1298
|
+
if (this.mapView == null) {
|
|
1299
|
+
return;
|
|
1300
|
+
}
|
|
1301
|
+
const map = this.mapView.map;
|
|
1302
|
+
map.allLayers.concat(map.allTables).forEach(layer => {
|
|
1303
|
+
if (layer.type !== "feature") {
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
const fl = layer;
|
|
1307
|
+
this._initDefExpressions[fl.id] = fl.definitionExpression;
|
|
1308
|
+
});
|
|
1309
|
+
}
|
|
1247
1310
|
static get is() { return "crowdsource-reporter"; }
|
|
1248
1311
|
static get originalStyleUrls() {
|
|
1249
1312
|
return {
|
|
@@ -75,7 +75,7 @@ export class SolutionSpatialRef {
|
|
|
75
75
|
}
|
|
76
76
|
render() {
|
|
77
77
|
this._updateUIFromStore();
|
|
78
|
-
return (h(Host, { key: '
|
|
78
|
+
return (h(Host, { key: 'b8775ad1a6a18c0b32d020c02d6f9fe13f5d578a' }, h("label", { key: 'd10fa03d4d127579eed4fec2c6c907dc46166bdf', class: "switch-label" }, h("calcite-switch", { key: 'ce47d98234008f377d674851ce77c68ebaa4fd71', checked: this.enabled, class: "spatial-ref-switch", onCalciteSwitchChange: (event) => this.enabled = event.target.checked, scale: "m" }), this._translations.enableSpatialReference), h("br", { key: '54dc5ccf3fec55650f62d8dbeb09071c8e88805c' }), h("div", { key: '03257e474d254e4d5a0dd10ac7ab6e8b88f85d54', class: "spatial-ref-component", id: "spatialRefDefn" }, this._renderFeatureServicesList(this.featureServices)), h("label", { key: 'fac415766affa3b1620ce6a5c3d5ef900b25944f', class: "switch-label spatial-ref-component" }, h("calcite-switch", { key: '611b69b0895267702a69a70436033274d3d28892', checked: this.enableDefault, class: "spatial-ref-switch", disabled: !this.enabled, onCalciteSwitchChange: (event) => this.enableDefault = event.target.checked, scale: "m" }), this._translations.enableDefaultSpatialReference)));
|
|
79
79
|
}
|
|
80
80
|
//--------------------------------------------------------------------------
|
|
81
81
|
//
|
|
@@ -345,7 +345,7 @@ export class SolutionSpatialRef {
|
|
|
345
345
|
},
|
|
346
346
|
"locale": {
|
|
347
347
|
"type": "string",
|
|
348
|
-
"mutable":
|
|
348
|
+
"mutable": true,
|
|
349
349
|
"complexType": {
|
|
350
350
|
"original": "string",
|
|
351
351
|
"resolved": "string",
|
|
@@ -248,17 +248,17 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
248
248
|
*/
|
|
249
249
|
_formElements = [];
|
|
250
250
|
/**
|
|
251
|
-
* string
|
|
251
|
+
* string: Previous selected layer id
|
|
252
252
|
*/
|
|
253
|
-
|
|
253
|
+
_prevSelectedLayerId;
|
|
254
254
|
/**
|
|
255
|
-
*
|
|
255
|
+
* ILayerExpression[]: current LayerExpressions based on the selected layer
|
|
256
256
|
*/
|
|
257
|
-
|
|
257
|
+
_currentLayerExpressions;
|
|
258
258
|
/**
|
|
259
|
-
* string:
|
|
259
|
+
* { [key: string]: string }: definitionExpressions for each layer
|
|
260
260
|
*/
|
|
261
|
-
|
|
261
|
+
_initDefExpressions;
|
|
262
262
|
//--------------------------------------------------------------------------
|
|
263
263
|
//
|
|
264
264
|
// Watch handlers
|
|
@@ -283,6 +283,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
283
283
|
*/
|
|
284
284
|
async mapViewWatchHandler() {
|
|
285
285
|
await this.mapView.when(async () => {
|
|
286
|
+
this.setInitExpressions();
|
|
286
287
|
await this.setMapView();
|
|
287
288
|
});
|
|
288
289
|
}
|
|
@@ -361,15 +362,25 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
361
362
|
this._layers = this.reportingOptions ? Object.keys(this.reportingOptions).filter((layerId) => {
|
|
362
363
|
return this.reportingOptions[layerId].visible;
|
|
363
364
|
}) : [];
|
|
365
|
+
this.setInitExpressions();
|
|
364
366
|
await this.setMapView();
|
|
365
367
|
});
|
|
366
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* StencilJS: Called before every render().
|
|
371
|
+
* Update the filter list's initial definition expressions when the filter list component is available
|
|
372
|
+
*/
|
|
373
|
+
componentWillRender() {
|
|
374
|
+
if (this._flowItems.includes('filter-panel')) {
|
|
375
|
+
void this._filterList?.updateInitDefExpressions({ initDefExpressions: this._initDefExpressions });
|
|
376
|
+
}
|
|
377
|
+
}
|
|
367
378
|
/**
|
|
368
379
|
* Renders the component.
|
|
369
380
|
*/
|
|
370
381
|
render() {
|
|
371
382
|
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
|
372
|
-
return (h(Host, { key: '
|
|
383
|
+
return (h(Host, { key: 'f1dd6d85210210a73fff30a5d98370da1834be7b' }, this._reportSubmitted && h("calcite-alert", { key: 'b84760fcbf4bfcf0f038be272f74eda97ce17bd9', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '27aa04dd8575ad27898f7848bc2733a03a33e70f', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '3fc2721bed573ad10bbb1c81af126e2e8ca90b12', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '4993e5c5b52d650b094c2890d0e4516cc87ffb69', slot: "title" }, this._translations.error), h("div", { key: '272b17f4c0239d8b295d6f2c0c02f1ba236d840d', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '5b9e1a2bd129888ec0764ad9b05e5056653d3c33', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: 'bd428297f5fe85cbf7edc42c61c64c299d7954b7', slot: "message" }, this.commentSubmittedMessage || this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '2aa1927ca27f9ec15a16f8e68905a1cf203ef833', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '4bff5fb03586edf0f9ea21649d1de4c34034e539', slot: "title" }, this._translations.error), h("div", { key: '7ea6c71dbbac15c2f43242ba00c9e461177051a1', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '3aa6bfc19a1e82ab90d2ab42aa9a577b3a2b6d8f' }, h("calcite-shell", { key: 'f27355d4f655c0a0931158f38f0be3eb28f6c4d4', "content-behind": true }, this._getReporter()))));
|
|
373
384
|
}
|
|
374
385
|
//--------------------------------------------------------------------------
|
|
375
386
|
//
|
|
@@ -433,7 +444,6 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
433
444
|
break;
|
|
434
445
|
case "filter-panel":
|
|
435
446
|
renderLists.push(this.getFilterPanel());
|
|
436
|
-
void this._restoreFilters();
|
|
437
447
|
break;
|
|
438
448
|
case "feature-details":
|
|
439
449
|
renderLists.push(this.getFeatureDetailsFlowItem());
|
|
@@ -480,20 +490,6 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
480
490
|
return (h("calcite-popover", { autoClose: true, label: "", offsetDistance: 0, placement: this.isMobile ? "leading-start" : "bottom-start", pointerDisabled: true, referenceElement: "sort-popover" }, h("calcite-list", { "selection-mode": "single" }, h("calcite-list-item", { label: this._translations.sortNewest, onCalciteListItemSelect: () => { void this.sortOptionClick(this._selectedLayer.objectIdField, "desc", "sortNewest"); }, selected: this._updatedSortOption === "sortNewest", value: "sortNewest" }), h("calcite-list-item", { label: this._translations.sortOldest, onCalciteListItemSelect: () => { void this.sortOptionClick(this._selectedLayer.objectIdField, "asc", "sortOldest"); }, selected: this._updatedSortOption === "sortOldest", value: "sortOldest" }), canSortByVotes &&
|
|
481
491
|
h(Fragment, null, h("calcite-list-item", { label: this._translations.sortHighestVoted, onCalciteListItemSelect: () => { void this.sortOptionClick(this.reportingOptions[this._selectedLayerId].likeField, "desc", "sortHighestVoted"); }, selected: this._updatedSortOption === "sortHighestVoted", value: "sortHighestVoted" }), h("calcite-list-item", { label: this._translations.sortLowestVoted, onCalciteListItemSelect: () => { void this.sortOptionClick(this.reportingOptions[this._selectedLayerId].likeField, "asc", "sortLowestVoted"); }, selected: this._updatedSortOption === "sortLowestVoted", value: "sortLowestVoted" })))));
|
|
482
492
|
}
|
|
483
|
-
/**
|
|
484
|
-
* Restores the applied filters
|
|
485
|
-
* @protected
|
|
486
|
-
*/
|
|
487
|
-
_restoreFilters() {
|
|
488
|
-
// call the restore function when instant-apps-filter-list is ready
|
|
489
|
-
setTimeout(() => {
|
|
490
|
-
const canRestoreFilter = this._filterList && this._filterUrlParams && this._filterInitState;
|
|
491
|
-
if (canRestoreFilter) {
|
|
492
|
-
void this._filterList.restoreFilters(this._filterUrlParams[0], this._filterInitState);
|
|
493
|
-
}
|
|
494
|
-
this._filterInitState = null;
|
|
495
|
-
}, 200);
|
|
496
|
-
}
|
|
497
493
|
/**
|
|
498
494
|
* Reset the filter
|
|
499
495
|
* @protected
|
|
@@ -501,8 +497,6 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
501
497
|
async _handleFilterListReset() {
|
|
502
498
|
//on reset filter list reset the filter states
|
|
503
499
|
this._filterActive = false;
|
|
504
|
-
this._filterUrlParams = null;
|
|
505
|
-
this._filterInitState = null;
|
|
506
500
|
}
|
|
507
501
|
/**
|
|
508
502
|
* Check if the layers definitionExpression has been modified and update the feature list depending on the applied filters
|
|
@@ -510,9 +504,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
510
504
|
*/
|
|
511
505
|
async _handleFilterUpdate(active) {
|
|
512
506
|
this._showLoadingIndicator = true;
|
|
513
|
-
//if filters are applied the url params will be generated
|
|
514
507
|
this._filterActive = active;
|
|
515
|
-
this._filterUrlParams = this._filterList.urlParams.getAll('filter');
|
|
516
508
|
await this._featureList.refresh();
|
|
517
509
|
this._showLoadingIndicator = false;
|
|
518
510
|
}
|
|
@@ -679,10 +671,6 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
679
671
|
if (evt.detail.layerId && evt.detail.layerName) {
|
|
680
672
|
await this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
681
673
|
}
|
|
682
|
-
// reset the applied filter when switching to another layer
|
|
683
|
-
if (this._selectedLayerId !== this._prevSelectedLayerId && this._filterActive) {
|
|
684
|
-
await this.resetFilter();
|
|
685
|
-
}
|
|
686
674
|
void this.updateNonVisibleLayersOnMap(true);
|
|
687
675
|
// get the form template elements to pass in create-feature to create a LEVELID field in feature-form
|
|
688
676
|
this._getFormElements();
|
|
@@ -754,28 +742,18 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
754
742
|
};
|
|
755
743
|
this._updatedSortOption = "sortNewest";
|
|
756
744
|
await this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
745
|
+
void this.handleSelectedLayersFilter();
|
|
757
746
|
this._flowItems = [...this._flowItems, "feature-list"];
|
|
758
|
-
// reset the applied filter when switching to another layer
|
|
759
|
-
if (this._selectedLayerId !== this._prevSelectedLayerId && this._filterActive) {
|
|
760
|
-
await this.resetFilter();
|
|
761
|
-
}
|
|
762
747
|
this._prevSelectedLayerId = this._selectedLayerId;
|
|
763
748
|
}
|
|
764
|
-
/**
|
|
765
|
-
* Reset's the applied filter
|
|
766
|
-
* @protected
|
|
767
|
-
*/
|
|
768
|
-
async resetFilter() {
|
|
769
|
-
const prevLayer = await getLayerOrTable(this.mapView, this._prevSelectedLayerId);
|
|
770
|
-
prevLayer.definitionExpression = this._filterInitState.initDefExpressions[this._prevSelectedLayerId];
|
|
771
|
-
void this._handleFilterListReset();
|
|
772
|
-
}
|
|
773
749
|
/**
|
|
774
750
|
* On back from filter panel get the filter's init state
|
|
775
751
|
* @protected
|
|
776
752
|
*/
|
|
777
753
|
async backFromFilterPanel() {
|
|
778
|
-
this.
|
|
754
|
+
if (this._filterList != null) {
|
|
755
|
+
this._currentLayerExpressions = await this._filterList.getCurrentLayerExpressions();
|
|
756
|
+
}
|
|
779
757
|
await this._featureList.refresh();
|
|
780
758
|
this.backFromSelectedPanel();
|
|
781
759
|
}
|
|
@@ -890,9 +868,8 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
890
868
|
* @protected
|
|
891
869
|
*/
|
|
892
870
|
getFeatureListFlowItem(layerId, layerName) {
|
|
893
|
-
const layerExpressions = this.layerExpressions?.filter((exp) => exp.id === this._selectedLayerId);
|
|
894
871
|
const canCreateReports = this._getLayersConfig(this._selectedLayerId)?.reporting && this._layerItemsHash[this._selectedLayerId].supportsAdd;
|
|
895
|
-
const showFilterIcon =
|
|
872
|
+
const showFilterIcon = this._currentLayerExpressions?.length > 0;
|
|
896
873
|
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: layerName, loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this._toggleSort(), h("calcite-action", { icon: "sort-ascending-arrow", id: "sort-popover", slot: "header-actions-end", text: this._translations.sort, title: this._translations.sort }), showFilterIcon && h("calcite-action", { icon: "filter", indicator: this._filterActive, onClick: () => { this._flowItems = [...this._flowItems, "filter-panel"]; }, slot: "header-actions-end", text: this._translations.filter, title: this._translations.filter }), this.isMobile && this.getActionToExpandCollapsePanel(), this.enableNewReports && canCreateReports &&
|
|
897
874
|
h("calcite-button", { appearance: "solid", onClick: this.navigateToCreateFeature.bind(this), slot: "footer", width: "full" }, this.reportButtonText ? this.reportButtonText : this._translations.createReportButtonText), h("calcite-panel", { "full-height": true }, h("feature-list", { applyLayerViewFilter: this.showMyReportsOnly, class: "height-full", highlightOnHover: true, locale: this.locale, mapView: this.mapView, noFeaturesFoundMsg: this._translations.featureErrorMsg, onFeatureSelect: this.onFeatureSelectFromList.bind(this), pageSize: 30, ref: el => this._featureList = el, reportingOptions: this.reportingOptions, selectedLayerId: layerId, showFeatureSymbol: this.showFeatureSymbol, sortingInfo: this._updatedSorting }))));
|
|
898
875
|
}
|
|
@@ -902,8 +879,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
902
879
|
* @protected
|
|
903
880
|
*/
|
|
904
881
|
getFilterPanel() {
|
|
905
|
-
|
|
906
|
-
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._translations?.filterLayerTitle?.replace("{{title}}", this._selectedLayerName), loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromFilterPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("div", { class: "width-full", slot: "footer" }, h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "solid", class: "footer-top-button footer-button", disabled: !this._filterActive, onClick: () => { void this._filterList?.forceReset(); }, width: "full" }, this._translations.resetFilter), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromFilterPanel.bind(this), width: "full" }, this._translations.close))), h("calcite-panel", { "full-height": true }, h("instant-apps-filter-list", { autoUpdateUrl: false, closeBtnOnClick: () => undefined, comboboxOverlayPositioning: "fixed", layerExpressions: currentLayersExpressions, onFilterListReset: () => this._handleFilterListReset(), onFilterUpdate: () => this._handleFilterUpdate(this._filterList.filterCount > 0), ref: (el) => this._filterList = el, resetBtn: false, resetFiltersOnDisconnect: false, view: this.mapView, zoomBtn: false }))));
|
|
882
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._translations?.filterLayerTitle?.replace("{{title}}", this._selectedLayerName), loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromFilterPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("div", { class: "width-full", slot: "footer" }, h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "solid", class: "footer-top-button footer-button", disabled: !this._filterActive, onClick: this.resetFilterList.bind(this), width: "full" }, this._translations.resetFilter), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromFilterPanel.bind(this), width: "full" }, this._translations.close))), h("calcite-panel", { "full-height": true }, h("instant-apps-filter-list", { autoUpdateUrl: false, closeBtnOnClick: () => undefined, comboboxOverlayPositioning: "fixed", layerExpressions: this._currentLayerExpressions, onFilterListReset: () => this._handleFilterListReset(), onFilterUpdate: () => this._handleFilterUpdate(this._filterList.filterCount > 0), ref: (el) => this._filterList = el, resetBtn: false, resetFiltersOnDisconnect: false, view: this.mapView, zoomBtn: false }))));
|
|
907
883
|
}
|
|
908
884
|
/**
|
|
909
885
|
* Returns the calcite-flow item for feature details
|
|
@@ -963,6 +939,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
963
939
|
else {
|
|
964
940
|
if (this._editableLayerIds.length > 1) {
|
|
965
941
|
void this.setSelectedLayer('', '');
|
|
942
|
+
void this.handlePrevLayersFilter();
|
|
966
943
|
}
|
|
967
944
|
this._currentFeatureId = '';
|
|
968
945
|
}
|
|
@@ -1219,7 +1196,8 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
1219
1196
|
detail: this._editableLayerIds
|
|
1220
1197
|
};
|
|
1221
1198
|
await this.layerListLoaded(evt);
|
|
1222
|
-
|
|
1199
|
+
await this.setSelectedLayer(this._validLayers[0].id, this._validLayers[0].title);
|
|
1200
|
+
void this.handleSelectedLayersFilter();
|
|
1223
1201
|
}
|
|
1224
1202
|
/**
|
|
1225
1203
|
* Updates the share url for current selected feature
|
|
@@ -1279,6 +1257,91 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
|
|
|
1279
1257
|
}
|
|
1280
1258
|
}
|
|
1281
1259
|
}
|
|
1260
|
+
/**
|
|
1261
|
+
* Handles updating the current layer expressions and definition expression for the selected layer
|
|
1262
|
+
* @protected
|
|
1263
|
+
*/
|
|
1264
|
+
async handleSelectedLayersFilter() {
|
|
1265
|
+
if (this._selectedLayer) {
|
|
1266
|
+
this._currentLayerExpressions = this.layerExpressions ? this.layerExpressions.filter(exp => exp.id === this._selectedLayerId) : [];
|
|
1267
|
+
this.setActiveDefinitionExpressions();
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
/**
|
|
1271
|
+
* Handles updating the previous layer's definition expression to it's initial definition expression
|
|
1272
|
+
* @protected
|
|
1273
|
+
*/
|
|
1274
|
+
async handlePrevLayersFilter() {
|
|
1275
|
+
if (this._prevSelectedLayerId) {
|
|
1276
|
+
const prevLayer = await getLayerOrTable(this.mapView, this._prevSelectedLayerId);
|
|
1277
|
+
if (prevLayer) {
|
|
1278
|
+
prevLayer.definitionExpression = this._initDefExpressions[this._prevSelectedLayerId];
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
/**
|
|
1283
|
+
* Resets the selected layer's definition expression with the initial definition expression
|
|
1284
|
+
* @protected
|
|
1285
|
+
*/
|
|
1286
|
+
resetFilterList() {
|
|
1287
|
+
void this._filterList?.forceReset();
|
|
1288
|
+
if (this._selectedLayer != null) {
|
|
1289
|
+
this._selectedLayer.definitionExpression = this._initDefExpressions[this._selectedLayerId];
|
|
1290
|
+
this._filterActive = false;
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
/**
|
|
1294
|
+
* Sets the active definition expressions for the selected layer
|
|
1295
|
+
* @protected
|
|
1296
|
+
*/
|
|
1297
|
+
setActiveDefinitionExpressions() {
|
|
1298
|
+
if (this._selectedLayer == null) {
|
|
1299
|
+
return;
|
|
1300
|
+
}
|
|
1301
|
+
const defExpressions = [];
|
|
1302
|
+
if (this._currentLayerExpressions?.length > 0) {
|
|
1303
|
+
const layerExpression = this._currentLayerExpressions[0];
|
|
1304
|
+
for (const expression of layerExpression.expressions) {
|
|
1305
|
+
const { active, definitionExpression } = expression;
|
|
1306
|
+
if (active && definitionExpression) {
|
|
1307
|
+
defExpressions.push(`(${definitionExpression})`);
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
this._filterActive = defExpressions.length > 0;
|
|
1311
|
+
this.updateFilterLayerDefExpression(defExpressions, layerExpression.operator);
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1314
|
+
/**
|
|
1315
|
+
* Updates the selected layer's definition expression based on the active expressions
|
|
1316
|
+
* @protected
|
|
1317
|
+
*/
|
|
1318
|
+
updateFilterLayerDefExpression(defExpressions, operator) {
|
|
1319
|
+
const initDefExpression = this._initDefExpressions[this._selectedLayerId];
|
|
1320
|
+
const combinedExpressions = defExpressions?.length > 0 && initDefExpression != null
|
|
1321
|
+
? `(${defExpressions.join(operator)}) AND (${initDefExpression})`
|
|
1322
|
+
: defExpressions.length > 0
|
|
1323
|
+
? defExpressions.join(operator)
|
|
1324
|
+
: initDefExpression;
|
|
1325
|
+
this._selectedLayer.definitionExpression = combinedExpressions;
|
|
1326
|
+
}
|
|
1327
|
+
/**
|
|
1328
|
+
* Sets the initial definition expressions for all the feature layers
|
|
1329
|
+
* @protected
|
|
1330
|
+
*/
|
|
1331
|
+
setInitExpressions() {
|
|
1332
|
+
this._initDefExpressions = {};
|
|
1333
|
+
if (this.mapView == null) {
|
|
1334
|
+
return;
|
|
1335
|
+
}
|
|
1336
|
+
const map = this.mapView.map;
|
|
1337
|
+
map.allLayers.concat(map.allTables).forEach(layer => {
|
|
1338
|
+
if (layer.type !== "feature") {
|
|
1339
|
+
return;
|
|
1340
|
+
}
|
|
1341
|
+
const fl = layer;
|
|
1342
|
+
this._initDefExpressions[fl.id] = fl.definitionExpression;
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1282
1345
|
static get watchers() { return {
|
|
1283
1346
|
"isMobile": ["isMobileWatchHandler"],
|
|
1284
1347
|
"locale": ["localeWatchHandler"],
|