@esri/solutions-components 0.10.42 → 0.10.43
Sign up to get free protection for your applications and to get access to all the features.
- 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"],
|