@esri/solutions-components 0.8.4 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/t9n/crowdsource-reporter/resources.json +5 -6
- package/dist/assets/t9n/crowdsource-reporter/resources_en.json +5 -6
- package/dist/assets/t9n/feature-list/resources.json +1 -1
- package/dist/assets/t9n/feature-list/resources_en.json +1 -1
- package/dist/assets/t9n/public-notification/resources.json +3 -1
- package/dist/assets/t9n/public-notification/resources_en.json +3 -1
- package/dist/cjs/buffer-tools_3.cjs.entry.js +2 -2
- package/dist/cjs/calcite-alert_4.cjs.entry.js +2 -2
- package/dist/cjs/calcite-combobox_5.cjs.entry.js +2 -2
- package/dist/cjs/calcite-flow_5.cjs.entry.js +163 -16
- package/dist/cjs/card-manager_3.cjs.entry.js +41 -2
- package/dist/cjs/crowdsource-manager.cjs.entry.js +2 -1
- package/dist/cjs/crowdsource-reporter.cjs.entry.js +120 -38
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
- package/dist/cjs/public-notification.cjs.entry.js +110 -4
- package/dist/cjs/{publicNotificationStore-ef379d11.js → publicNotificationStore-e790601d.js} +2 -2
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/create-feature/create-feature.css +9 -0
- package/dist/collection/components/create-feature/create-feature.js +134 -6
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +19 -1
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +5 -0
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +120 -38
- package/dist/collection/components/feature-list/feature-list.js +93 -5
- package/dist/collection/components/info-card/info-card.css +1 -1
- package/dist/collection/components/info-card/info-card.js +1 -1
- package/dist/collection/components/layer-list/layer-list.js +6 -6
- package/dist/collection/components/map-card/map-card.js +27 -2
- package/dist/collection/components/map-draw-tools/map-draw-tools.js +1 -1
- package/dist/collection/components/map-layer-picker/map-layer-picker.js +1 -1
- package/dist/collection/components/map-select-tools/map-select-tools.js +1 -1
- package/dist/collection/components/public-notification/public-notification.js +110 -3
- package/dist/collection/demos/crowdsource-reporter.html +1 -1
- package/dist/collection/utils/interfaces.ts +7 -0
- package/dist/collection/utils/publicNotificationStore.js +2 -2
- package/dist/collection/utils/publicNotificationStore.ts +3 -2
- package/dist/components/create-feature2.js +111 -7
- package/dist/components/crowdsource-manager.js +3 -1
- package/dist/components/crowdsource-reporter.js +121 -39
- package/dist/components/feature-list2.js +54 -6
- package/dist/components/info-card2.js +2 -2
- package/dist/components/layer-list2.js +6 -6
- package/dist/components/map-card2.js +42 -2
- package/dist/components/map-draw-tools2.js +1 -1
- package/dist/components/map-layer-picker2.js +1 -1
- package/dist/components/map-select-tools2.js +1 -1
- package/dist/components/public-notification.js +110 -3
- package/dist/components/publicNotificationStore.js +2 -2
- package/dist/esm/buffer-tools_3.entry.js +2 -2
- package/dist/esm/calcite-alert_4.entry.js +3 -3
- package/dist/esm/calcite-combobox_5.entry.js +3 -3
- package/dist/esm/calcite-flow_5.entry.js +164 -17
- package/dist/esm/card-manager_3.entry.js +43 -4
- package/dist/esm/crowdsource-manager.entry.js +3 -2
- package/dist/esm/crowdsource-reporter.entry.js +121 -39
- package/dist/esm/{downloadUtils-0c13073b.js → downloadUtils-0c1e4d7b.js} +2 -2
- package/dist/esm/{index.es-ad250bc6.js → index.es-286e3cfa.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-select-tools_3.entry.js +4 -4
- package/dist/esm/{mapViewUtils-20504620.js → mapViewUtils-253178f1.js} +1 -1
- package/dist/esm/public-notification.entry.js +112 -6
- package/dist/esm/{publicNotificationStore-3bf4de75.js → publicNotificationStore-223faed2.js} +2 -2
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/demos/crowdsource-reporter.html +1 -1
- package/dist/solutions-components/p-15f9624a.entry.js +6 -0
- package/dist/solutions-components/{p-955647ea.entry.js → p-1ea5e061.entry.js} +2 -2
- package/dist/solutions-components/{p-590a2a26.js → p-212b02e7.js} +1 -1
- package/dist/solutions-components/p-238d3b5f.entry.js +6 -0
- package/dist/solutions-components/p-273d833b.entry.js +6 -0
- package/dist/solutions-components/{p-cc280aa1.js → p-322868ec.js} +1 -1
- package/dist/solutions-components/{p-1d3a1794.js → p-331b5d1e.js} +2 -2
- package/dist/solutions-components/{p-c897e3eb.js → p-3af79063.js} +1 -1
- package/dist/solutions-components/p-45ed16d5.entry.js +6 -0
- package/dist/solutions-components/p-80b11ec1.entry.js +17 -0
- package/dist/solutions-components/{p-5c7e3941.entry.js → p-813fd8a4.entry.js} +2 -2
- package/dist/solutions-components/{p-ff302d95.entry.js → p-d136eab0.entry.js} +2 -2
- package/dist/solutions-components/p-e0446d5b.entry.js +6 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/interfaces.ts +7 -0
- package/dist/solutions-components/utils/publicNotificationStore.ts +3 -2
- package/dist/types/components/create-feature/create-feature.d.ts +43 -1
- package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +4 -0
- package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +31 -10
- package/dist/types/components/feature-list/feature-list.d.ts +31 -0
- package/dist/types/components/layer-list/layer-list.d.ts +3 -3
- package/dist/types/components/map-card/map-card.d.ts +8 -0
- package/dist/types/components/public-notification/public-notification.d.ts +48 -0
- package/dist/types/components.d.ts +37 -0
- package/dist/types/utils/interfaces.d.ts +6 -0
- package/dist/types/utils/publicNotificationStore.d.ts +2 -1
- package/package.json +2 -1
- package/dist/solutions-components/p-6512dc44.entry.js +0 -6
- package/dist/solutions-components/p-65ad1625.entry.js +0 -6
- package/dist/solutions-components/p-989bf0bf.entry.js +0 -6
- package/dist/solutions-components/p-a0611720.entry.js +0 -6
- package/dist/solutions-components/p-efe1694a.entry.js +0 -17
- package/dist/solutions-components/p-f3467807.entry.js +0 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"createReportButtonText": "Create a Report",
|
|
3
3
|
"share": "Share",
|
|
4
4
|
"sort": "Sort",
|
|
5
5
|
"filter": "Filter",
|
|
@@ -12,11 +12,10 @@
|
|
|
12
12
|
"error": "Error",
|
|
13
13
|
"invalidConfigurationErrorMsg": "Invalid configuration",
|
|
14
14
|
"noLayerToDisplayErrorMsg": "Configured web map don't have any editable feature layer.",
|
|
15
|
-
"chooseCategoryMsg": "
|
|
16
|
-
"featureErrorMsg": "
|
|
17
|
-
"featureEditFormInfoMsg": "Please provide the details
|
|
15
|
+
"chooseCategoryMsg": "Please choose a category.",
|
|
16
|
+
"featureErrorMsg": "No records found.",
|
|
17
|
+
"featureEditFormInfoMsg": "Please provide the details.",
|
|
18
18
|
"currentLocationMsg": "Use my current location",
|
|
19
|
-
"addLocationMsg": "
|
|
20
|
-
"reportSubmit": "Report Submitted.",
|
|
19
|
+
"addLocationMsg": "Please add a location.",
|
|
21
20
|
"submitMsg": "Thank you! Your report was successfully submitted."
|
|
22
21
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"createReportButtonText": "Create a Report",
|
|
3
3
|
"share": "Share",
|
|
4
4
|
"sort": "Sort",
|
|
5
5
|
"filter": "Filter",
|
|
@@ -12,11 +12,10 @@
|
|
|
12
12
|
"error": "Error",
|
|
13
13
|
"invalidConfigurationErrorMsg": "Invalid configuration",
|
|
14
14
|
"noLayerToDisplayErrorMsg": "Configured web map don't have any editable feature layer.",
|
|
15
|
-
"chooseCategoryMsg": "
|
|
16
|
-
"featureErrorMsg": "
|
|
17
|
-
"featureEditFormInfoMsg": "Please provide the details
|
|
15
|
+
"chooseCategoryMsg": "Please choose a category.",
|
|
16
|
+
"featureErrorMsg": "No records found.",
|
|
17
|
+
"featureEditFormInfoMsg": "Please provide the details.",
|
|
18
18
|
"currentLocationMsg": "Use my current location",
|
|
19
|
-
"addLocationMsg": "
|
|
20
|
-
"reportSubmit": "Report Submitted.",
|
|
19
|
+
"addLocationMsg": "Please add a location.",
|
|
21
20
|
"submitMsg": "Thank you! Your report was successfully submitted."
|
|
22
21
|
}
|
|
@@ -38,5 +38,7 @@
|
|
|
38
38
|
"refineTip": "Refine and finalize your lists by using sketch tools to add or remove selected features.",
|
|
39
39
|
"refineTipNoSelections": "There are no selections to refine. Go to My lists to create a list of features.",
|
|
40
40
|
"duplicatesTip": "Duplicate features are always removed. When enabled, pop-ups from each layer will be compared and any duplicate pop-up information will be removed.",
|
|
41
|
-
"exportListsLabel": "My lists"
|
|
41
|
+
"exportListsLabel": "My lists",
|
|
42
|
+
"listGraphics": "List graphics",
|
|
43
|
+
"listGraphicsTip": "Include any graphics like search buffers or graphics from the sketch tools in the map export."
|
|
42
44
|
}
|
|
@@ -38,5 +38,7 @@
|
|
|
38
38
|
"refineTip": "Refine and finalize your lists by using sketch tools to add or remove selected features.",
|
|
39
39
|
"refineTipNoSelections": "There are no selections to refine. Go to My lists to create a list of features.",
|
|
40
40
|
"duplicatesTip": "Duplicate features are always removed. When enabled, pop-ups from each layer will be compared and any duplicate pop-up information will be removed.",
|
|
41
|
-
"exportListsLabel": "My lists"
|
|
41
|
+
"exportListsLabel": "My lists",
|
|
42
|
+
"listGraphics": "List graphics",
|
|
43
|
+
"listGraphicsTip": "Include any graphics like search buffers or graphics from the sketch tools in the map export."
|
|
42
44
|
}
|
|
@@ -11,7 +11,7 @@ const index = require('./index-105cf2b9.js');
|
|
|
11
11
|
const locale = require('./locale-3d0a4bc2.js');
|
|
12
12
|
const dom = require('./dom-c9c2c835.js');
|
|
13
13
|
const interfaces = require('./interfaces-7cd0a48a.js');
|
|
14
|
-
const publicNotificationStore = require('./publicNotificationStore-
|
|
14
|
+
const publicNotificationStore = require('./publicNotificationStore-e790601d.js');
|
|
15
15
|
require('./esri-loader-ce6c3d3d.js');
|
|
16
16
|
require('./_commonjsHelpers-480c2e77.js');
|
|
17
17
|
require('./guid-ae73cd27.js');
|
|
@@ -468,7 +468,7 @@ const MapDrawTools = class {
|
|
|
468
468
|
}
|
|
469
469
|
else {
|
|
470
470
|
this._sketchGraphicsLayer = new this.GraphicsLayer({ title, listMode: "hide" });
|
|
471
|
-
publicNotificationStore.state.managedLayers
|
|
471
|
+
publicNotificationStore.state.managedLayers[title] = "sketch";
|
|
472
472
|
this.mapView.map.layers.add(this._sketchGraphicsLayer);
|
|
473
473
|
}
|
|
474
474
|
if (this.graphics && this.graphics.length > 0) {
|
|
@@ -668,7 +668,7 @@ const EditCard = class {
|
|
|
668
668
|
};
|
|
669
669
|
EditCard.style = editCardCss;
|
|
670
670
|
|
|
671
|
-
const infoCardCss = ":host{display:block;--calcite-label-margin-bottom:0}.padding-1-2{padding:0.5rem}.display-none{display:none !important}.display-flex{display:flex}.position-absolute{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.esri-features__footer{display:none !important}.button-container{justify-content:space-between;align-items:center}.top-border{border-top:1px solid var(--calcite-color-border-1)}.min-width-100{min-width:100px}.width-100{width:100%}.esri-features__container{padding:0.5rem !important;background-color:var(--calcite-color-foreground-1) !important;height:100% !important}.overflow-hidden{overflow:hidden}.height-40{height:40px}.end-border{border-inline-end:1px solid var(--calcite-color-border-1)}.font-bold{font-weight:bold}.visibility-hidden{visibility:hidden;height:0px}.padding-inline-start-1{padding-inline-start:1rem}.border-width-0{border-width:0px}";
|
|
671
|
+
const infoCardCss = ":host{display:block;--calcite-label-margin-bottom:0}.padding-1-2{padding:0.5rem}.display-none{display:none !important}.display-flex{display:flex}.position-absolute{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.feature-node .esri-features__footer{display:none !important}.button-container{justify-content:space-between;align-items:center}.top-border{border-top:1px solid var(--calcite-color-border-1)}.min-width-100{min-width:100px}.width-100{width:100%}.esri-features__container{padding:0.5rem !important;background-color:var(--calcite-color-foreground-1) !important;height:100% !important}.overflow-hidden{overflow:hidden}.height-40{height:40px}.end-border{border-inline-end:1px solid var(--calcite-color-border-1)}.font-bold{font-weight:bold}.visibility-hidden{visibility:hidden;height:0px}.padding-inline-start-1{padding-inline-start:1rem}.border-width-0{border-width:0px}";
|
|
672
672
|
|
|
673
673
|
const InfoCard = class {
|
|
674
674
|
constructor(hostRef) {
|
|
@@ -791,7 +791,7 @@ const InfoCard = class {
|
|
|
791
791
|
const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
|
|
792
792
|
const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
|
|
793
793
|
const deleteEnabled = ((_e = this._layer) === null || _e === void 0 ? void 0 : _e.editingEnabled) && ((_h = (_g = (_f = this._layer) === null || _f === void 0 ? void 0 : _f.capabilities) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.supportsDelete);
|
|
794
|
-
return (index.h(index.Host, null, index.h("calcite-shell", null, this._getHeader(), index.h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), index.h("div", { class: "esri-widget " + featureNodeClass, id: "features-node" }), index.h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
|
|
794
|
+
return (index.h(index.Host, null, index.h("calcite-shell", null, this._getHeader(), index.h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), index.h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), index.h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
|
|
795
795
|
index.h("div", { class: "display-flex top-border padding-1-2" }, index.h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (index.h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-edit" }, index.h("span", null, this._translations.edit)), this.isMobile ? (index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-delete" }, index.h("span", null, this._translations.delete))) : undefined), !nextBackDisabled && index.h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, index.h("div", { class: "min-width-100" }, index.h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-back", onClick: () => this._back(), width: "full" }, this._translations.back), index.h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-back" }, index.h("span", null, this._translations.back))), index.h("div", null, index.h("calcite-action", { icon: "list", onClick: () => this._toggleListView(), scale: "s", text: this._count, textEnabled: true })), index.h("div", { class: "min-width-100" }, index.h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-next", onClick: () => this._next(), width: "full" }, this._translations.next), index.h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-next" }, index.h("span", null, this._translations.next))))), index.h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), index.h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, index.h("div", { slot: "title" }, this._translations.editDisabled), index.h("div", { slot: "message" }, this._translations.enableEditing)))));
|
|
796
796
|
}
|
|
797
797
|
//--------------------------------------------------------------------------
|
|
@@ -27,7 +27,7 @@ const debounce = require('./debounce-30afab47.js');
|
|
|
27
27
|
const key = require('./key-c5504030.js');
|
|
28
28
|
const locale$1 = require('./locale-3d0a4bc2.js');
|
|
29
29
|
const mapViewUtils = require('./mapViewUtils-3e0fa457.js');
|
|
30
|
-
const publicNotificationStore = require('./publicNotificationStore-
|
|
30
|
+
const publicNotificationStore = require('./publicNotificationStore-e790601d.js');
|
|
31
31
|
require('./resources-9447c777.js');
|
|
32
32
|
require('./browser-d08a5f99.js');
|
|
33
33
|
require('./esri-loader-ce6c3d3d.js');
|
|
@@ -2069,7 +2069,7 @@ const MapLayerPicker = class {
|
|
|
2069
2069
|
_validLayer(id) {
|
|
2070
2070
|
var _a;
|
|
2071
2071
|
const name = (_a = this._layerNameHash[id]) === null || _a === void 0 ? void 0 : _a.name;
|
|
2072
|
-
return name && publicNotificationStore.state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
|
|
2072
|
+
return name && Object.keys(publicNotificationStore.state.managedLayers).indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
|
|
2073
2073
|
this.enabledLayerIds.indexOf(id) > -1 : true);
|
|
2074
2074
|
}
|
|
2075
2075
|
/**
|
|
@@ -340,7 +340,7 @@ const FlowItem = class {
|
|
|
340
340
|
};
|
|
341
341
|
FlowItem.style = flowItemCss;
|
|
342
342
|
|
|
343
|
-
const createFeatureCss = ":host{display:block}.esri-editor__panel-toolbar{display:none !important}.esri-editor__update-actions{display:none !important}.esri-editor__panel-content{padding-block:0px !important}.esri-editor .esri-item-list__group__header{display:none !important}.esri-editor__panel-content__section .esri-widget__heading{display:none !important}.esri-editor .esri-item-list__filter-container--sticky{padding-block:0px !important;padding-inline:10px !important}";
|
|
343
|
+
const createFeatureCss = ":host{display:block}.esri-editor__panel-toolbar{display:none !important}.esri-editor__update-actions{display:none !important}.esri-editor__panel-content{padding-block:0px !important}.esri-editor .esri-item-list__group__header{display:none !important}.esri-editor__panel-content__section .esri-widget__heading{display:none !important}.esri-editor .esri-item-list__filter-container--sticky{padding-block:0px !important;padding-inline:10px !important}.search-widget{width:92% !important;margin:5px 0 20px 14px}.display-none{display:none !important}";
|
|
344
344
|
|
|
345
345
|
const CreateFeature = class {
|
|
346
346
|
constructor(hostRef) {
|
|
@@ -352,6 +352,8 @@ const CreateFeature = class {
|
|
|
352
352
|
this.mapView = undefined;
|
|
353
353
|
this.selectedLayerId = undefined;
|
|
354
354
|
this.customizeSubmit = false;
|
|
355
|
+
this.searchConfiguration = undefined;
|
|
356
|
+
this.showSearchWidget = undefined;
|
|
355
357
|
}
|
|
356
358
|
//--------------------------------------------------------------------------
|
|
357
359
|
//
|
|
@@ -411,7 +413,8 @@ const CreateFeature = class {
|
|
|
411
413
|
* Renders the component.
|
|
412
414
|
*/
|
|
413
415
|
render() {
|
|
414
|
-
|
|
416
|
+
const showSearchWidget = this.showSearchWidget ? '' : 'display-none';
|
|
417
|
+
return (index.h(index.Fragment, null, index.h("div", { id: "feature-form" }), index.h("div", { class: `search-widget ${showSearchWidget}`, id: "search-widget-ref" })));
|
|
415
418
|
}
|
|
416
419
|
//--------------------------------------------------------------------------
|
|
417
420
|
//
|
|
@@ -419,11 +422,12 @@ const CreateFeature = class {
|
|
|
419
422
|
//
|
|
420
423
|
//--------------------------------------------------------------------------
|
|
421
424
|
/**
|
|
422
|
-
* Init Editor widget and
|
|
425
|
+
* Init Editor widget and Search widget
|
|
423
426
|
*/
|
|
424
427
|
async init() {
|
|
425
428
|
if (this.mapView && this.selectedLayerId) {
|
|
426
429
|
await this.createEditorWidget();
|
|
430
|
+
await this.createSearchWidget();
|
|
427
431
|
}
|
|
428
432
|
}
|
|
429
433
|
/**
|
|
@@ -432,12 +436,14 @@ const CreateFeature = class {
|
|
|
432
436
|
* @protected
|
|
433
437
|
*/
|
|
434
438
|
async initModules() {
|
|
435
|
-
const [Editor, reactiveUtils] = await locale$1.loadModules([
|
|
439
|
+
const [Editor, reactiveUtils, Search] = await locale$1.loadModules([
|
|
436
440
|
"esri/widgets/Editor",
|
|
437
|
-
"esri/core/reactiveUtils"
|
|
441
|
+
"esri/core/reactiveUtils",
|
|
442
|
+
"esri/widgets/Search"
|
|
438
443
|
]);
|
|
439
444
|
this.Editor = Editor;
|
|
440
445
|
this.reactiveUtils = reactiveUtils;
|
|
446
|
+
this.Search = Search;
|
|
441
447
|
}
|
|
442
448
|
/**
|
|
443
449
|
* Display editor widget to create the new feature
|
|
@@ -491,6 +497,13 @@ const CreateFeature = class {
|
|
|
491
497
|
}
|
|
492
498
|
});
|
|
493
499
|
this._editor.viewModel.addHandles(handle);
|
|
500
|
+
//Add handle to watch editor viewmodel state and then show the search widget
|
|
501
|
+
const formHandle = this.reactiveUtils.watch(() => this._editor.viewModel.state, (state) => {
|
|
502
|
+
if (state === 'creating-features') {
|
|
503
|
+
this.showSearchWidget = true;
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
this._editor.viewModel.addHandles(formHandle);
|
|
494
507
|
}
|
|
495
508
|
/**
|
|
496
509
|
* Start creating the feature
|
|
@@ -509,6 +522,7 @@ const CreateFeature = class {
|
|
|
509
522
|
//on sketch complete emit the event
|
|
510
523
|
this._editor.viewModel.sketchViewModel.on("create", (evt) => {
|
|
511
524
|
if (evt.state === "complete") {
|
|
525
|
+
this.showSearchWidget = false;
|
|
512
526
|
this.drawComplete.emit();
|
|
513
527
|
}
|
|
514
528
|
});
|
|
@@ -525,6 +539,94 @@ const CreateFeature = class {
|
|
|
525
539
|
this.hideEditorsElements();
|
|
526
540
|
}
|
|
527
541
|
}
|
|
542
|
+
/**
|
|
543
|
+
* Display search widget to search location
|
|
544
|
+
* @protected
|
|
545
|
+
*/
|
|
546
|
+
async createSearchWidget() {
|
|
547
|
+
let searchOptions = {
|
|
548
|
+
view: this.mapView,
|
|
549
|
+
};
|
|
550
|
+
if (this.searchConfiguration) {
|
|
551
|
+
const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
|
|
552
|
+
searchOptions = Object.assign({}, searchConfiguration);
|
|
553
|
+
}
|
|
554
|
+
this._search = new this.Search(searchOptions);
|
|
555
|
+
this._search.container = 'search-widget-ref';
|
|
556
|
+
this._search.popupEnabled = false;
|
|
557
|
+
this._search.resultGraphicEnabled = false;
|
|
558
|
+
const layer = await mapViewUtils.getLayerOrTable(this.mapView, this.selectedLayerId);
|
|
559
|
+
let pointGeometry = null;
|
|
560
|
+
// on search get the geometry of the searched location and pass it in sketchViewModel and go to featureForm page
|
|
561
|
+
this._search.on('search-complete', (e) => {
|
|
562
|
+
var _a;
|
|
563
|
+
void this.mapView.goTo(e.results[0].results[0].extent);
|
|
564
|
+
if (layer.geometryType === 'point') {
|
|
565
|
+
pointGeometry = (_a = e.results[0].results[0]) === null || _a === void 0 ? void 0 : _a.feature.geometry;
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
//Add handle to watch if search viewModel state is ready
|
|
569
|
+
const createFeatureHandle = this.reactiveUtils.watch(() => this._search.viewModel.state, (state) => {
|
|
570
|
+
if (state === 'ready') {
|
|
571
|
+
setTimeout(() => {
|
|
572
|
+
if (this._editor.viewModel.sketchViewModel.createGraphic && pointGeometry) {
|
|
573
|
+
this._editor.viewModel.sketchViewModel.createGraphic.set('geometry', pointGeometry);
|
|
574
|
+
this._editor.viewModel.sketchViewModel.complete();
|
|
575
|
+
this.hideEditorsElements();
|
|
576
|
+
}
|
|
577
|
+
}, 100);
|
|
578
|
+
}
|
|
579
|
+
});
|
|
580
|
+
this._search.viewModel.addHandles(createFeatureHandle);
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Initialize the search widget based on user defined configuration
|
|
584
|
+
*
|
|
585
|
+
* @param searchConfiguration search configuration defined by the user
|
|
586
|
+
* @param view the current map view
|
|
587
|
+
*
|
|
588
|
+
* @protected
|
|
589
|
+
*/
|
|
590
|
+
_getSearchConfig(searchConfiguration, view) {
|
|
591
|
+
const INCLUDE_DEFAULT_SOURCES = "includeDefaultSources";
|
|
592
|
+
const sources = searchConfiguration.sources;
|
|
593
|
+
if ((sources === null || sources === void 0 ? void 0 : sources.length) > 0) {
|
|
594
|
+
searchConfiguration[INCLUDE_DEFAULT_SOURCES] = false;
|
|
595
|
+
sources.forEach((source) => {
|
|
596
|
+
var _a, _b;
|
|
597
|
+
const isLayerSource = source.hasOwnProperty("layer");
|
|
598
|
+
if (isLayerSource) {
|
|
599
|
+
const layerSource = source;
|
|
600
|
+
const layerId = (_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id;
|
|
601
|
+
const layerFromMap = layerId ? view.map.findLayerById(layerId) : null;
|
|
602
|
+
const layerUrl = (_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url;
|
|
603
|
+
if (layerFromMap) {
|
|
604
|
+
layerSource.layer = layerFromMap;
|
|
605
|
+
}
|
|
606
|
+
else if (layerUrl) {
|
|
607
|
+
layerSource.layer = new this.FeatureLayer(layerUrl);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
});
|
|
611
|
+
sources === null || sources === void 0 ? void 0 : sources.forEach((source) => {
|
|
612
|
+
const isLocatorSource = source.hasOwnProperty("locator");
|
|
613
|
+
if (isLocatorSource) {
|
|
614
|
+
const locatorSource = source;
|
|
615
|
+
if ((locatorSource === null || locatorSource === void 0 ? void 0 : locatorSource.name) === "ArcGIS World Geocoding Service") {
|
|
616
|
+
const outFields = locatorSource.outFields || ["Addr_type", "Match_addr", "StAddr", "City"];
|
|
617
|
+
locatorSource.outFields = outFields;
|
|
618
|
+
locatorSource.singleLineFieldName = "SingleLine";
|
|
619
|
+
}
|
|
620
|
+
locatorSource.url = locatorSource.url;
|
|
621
|
+
delete locatorSource.url;
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
searchConfiguration = Object.assign(Object.assign({}, searchConfiguration), { includeDefaultSources: true });
|
|
627
|
+
}
|
|
628
|
+
return searchConfiguration;
|
|
629
|
+
}
|
|
528
630
|
/**
|
|
529
631
|
* Hides the elements of editor widget
|
|
530
632
|
* @protected
|
|
@@ -596,6 +698,7 @@ const FeatureList = class {
|
|
|
596
698
|
this.noFeaturesFoundMsg = undefined;
|
|
597
699
|
this.pageSize = 100;
|
|
598
700
|
this.highlightOnMap = false;
|
|
701
|
+
this.highlightOnHover = false;
|
|
599
702
|
this._featureItems = [];
|
|
600
703
|
this._featuresCount = 0;
|
|
601
704
|
this._isLoading = false;
|
|
@@ -615,6 +718,16 @@ const FeatureList = class {
|
|
|
615
718
|
}
|
|
616
719
|
//--------------------------------------------------------------------------
|
|
617
720
|
//
|
|
721
|
+
// Methods (public)
|
|
722
|
+
/**
|
|
723
|
+
* Refresh the feature list which will fetch the latest features and update the features list
|
|
724
|
+
* @returns Promise that resolves when the operation is complete
|
|
725
|
+
*/
|
|
726
|
+
async refresh() {
|
|
727
|
+
await this.initializeFeatureItems();
|
|
728
|
+
}
|
|
729
|
+
//--------------------------------------------------------------------------
|
|
730
|
+
//
|
|
618
731
|
// Functions (lifecycle)
|
|
619
732
|
//
|
|
620
733
|
//--------------------------------------------------------------------------
|
|
@@ -623,6 +736,7 @@ const FeatureList = class {
|
|
|
623
736
|
* @returns Promise when complete
|
|
624
737
|
*/
|
|
625
738
|
async componentWillLoad() {
|
|
739
|
+
await this.initModules();
|
|
626
740
|
await this._getTranslations();
|
|
627
741
|
this._isLoading = true;
|
|
628
742
|
this._popupUtils = new popupUtils.PopupUtils();
|
|
@@ -649,6 +763,17 @@ const FeatureList = class {
|
|
|
649
763
|
// Functions (protected)
|
|
650
764
|
//
|
|
651
765
|
//--------------------------------------------------------------------------
|
|
766
|
+
/**
|
|
767
|
+
* Load esri javascript api modules
|
|
768
|
+
* @returns Promise resolving when function is done
|
|
769
|
+
* @protected
|
|
770
|
+
*/
|
|
771
|
+
async initModules() {
|
|
772
|
+
const [Color] = await locale$1.loadModules([
|
|
773
|
+
"esri/Color"
|
|
774
|
+
]);
|
|
775
|
+
this.Color = Color;
|
|
776
|
+
}
|
|
652
777
|
/**
|
|
653
778
|
* Initialize the features list using the selected layer
|
|
654
779
|
* @protected
|
|
@@ -684,10 +809,7 @@ const FeatureList = class {
|
|
|
684
809
|
*/
|
|
685
810
|
async featureClicked(event, selectedFeature) {
|
|
686
811
|
//clear previous highlight and remove the highlightHandle
|
|
687
|
-
|
|
688
|
-
this._highlightHandle.remove();
|
|
689
|
-
this._highlightHandle = null;
|
|
690
|
-
}
|
|
812
|
+
this.clearHighlights();
|
|
691
813
|
//highlight on map only if it is selected item
|
|
692
814
|
if (this.highlightOnMap) {
|
|
693
815
|
const selectedFeatureObjectId = Number(event.target.value);
|
|
@@ -696,6 +818,31 @@ const FeatureList = class {
|
|
|
696
818
|
}
|
|
697
819
|
this.featureSelect.emit(selectedFeature);
|
|
698
820
|
}
|
|
821
|
+
/**
|
|
822
|
+
* On feature hover in feature list highlight the feature on the map
|
|
823
|
+
* @param selectedFeature mouseovered feature graphic
|
|
824
|
+
* @protected
|
|
825
|
+
*/
|
|
826
|
+
async onFeatureHover(selectedFeature) {
|
|
827
|
+
//clear previous highlight and remove the highlightHandle
|
|
828
|
+
this.clearHighlights();
|
|
829
|
+
if (this.highlightOnHover) {
|
|
830
|
+
const oId = selectedFeature.getObjectId();
|
|
831
|
+
const selectedLayerView = await mapViewUtils.getFeatureLayerView(this.mapView, this.selectedLayerId);
|
|
832
|
+
selectedLayerView.highlightOptions = { color: new this.Color("#FFFF00") };
|
|
833
|
+
this._highlightHandle = selectedLayerView.highlight([oId]);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
/**
|
|
837
|
+
* Clears the highlight
|
|
838
|
+
* @protected
|
|
839
|
+
*/
|
|
840
|
+
clearHighlights() {
|
|
841
|
+
//if a feature is already highlighted, then remove the highlight
|
|
842
|
+
if (this._highlightHandle) {
|
|
843
|
+
this._highlightHandle.remove();
|
|
844
|
+
}
|
|
845
|
+
}
|
|
699
846
|
/**
|
|
700
847
|
* Query the selected feature layer, in descending order of object id's
|
|
701
848
|
* @param page 0th page number in the pagination item
|
|
@@ -746,7 +893,7 @@ const FeatureList = class {
|
|
|
746
893
|
const oId = selectedFeature.attributes[this._selectedLayer.objectIdField].toString();
|
|
747
894
|
//use object id if popupTitle is null or undefined
|
|
748
895
|
popupTitle = popupTitle !== null && popupTitle !== void 0 ? popupTitle : oId;
|
|
749
|
-
return (index.h("calcite-list-item", { onCalciteListItemSelect: (e) => { void this.featureClicked(e, selectedFeature); }, value: oId }, index.h("div", { class: "popup-title", slot: "content-start" }, popupTitle), index.h("calcite-icon", { icon: "chevron-right", scale: "s", slot: "content-end" })));
|
|
896
|
+
return (index.h("calcite-list-item", { onCalciteListItemSelect: (e) => { void this.featureClicked(e, selectedFeature); }, onMouseLeave: () => { void this.clearHighlights(); }, onMouseOver: () => { void this.onFeatureHover(selectedFeature); }, value: oId }, index.h("div", { class: "popup-title", slot: "content-start" }, popupTitle), index.h("calcite-icon", { icon: "chevron-right", scale: "s", slot: "content-end" })));
|
|
750
897
|
}
|
|
751
898
|
/**
|
|
752
899
|
* Fetches the component's translations
|
|
@@ -826,7 +973,7 @@ const LayerList = class {
|
|
|
826
973
|
render() {
|
|
827
974
|
return (index.h(index.Fragment, null, this._isLoading && index.h("calcite-loader", { label: "", scale: "m" }), !this._isLoading && this.mapView && this._noLayersToDisplay &&
|
|
828
975
|
index.h("calcite-notice", { class: "error-msg", icon: "layers-reference", kind: "danger", open: true }, index.h("div", { slot: "title" }, this._translations.error), index.h("div", { slot: "message" }, this.noLayerErrorMsg ? this.noLayerErrorMsg : this._noLayerToDisplayErrorMsg)), !this._isLoading && this.mapView &&
|
|
829
|
-
index.h("calcite-list", { "selection-appearance": "border", "selection-mode":
|
|
976
|
+
index.h("calcite-list", { "selection-appearance": "border", "selection-mode": "none" }, this.renderLayerList())));
|
|
830
977
|
}
|
|
831
978
|
//--------------------------------------------------------------------------
|
|
832
979
|
//
|
|
@@ -874,7 +1021,7 @@ const LayerList = class {
|
|
|
874
1021
|
}
|
|
875
1022
|
});
|
|
876
1023
|
await Promise.all(def).then(() => {
|
|
877
|
-
const editableLayerIds = this.
|
|
1024
|
+
const editableLayerIds = this.getLayersToBeShownInList(this._layerItemsHash);
|
|
878
1025
|
this._mapLayerIds = editableLayerIds.reverse();
|
|
879
1026
|
this.handleNoLayersToDisplay();
|
|
880
1027
|
}, () => {
|
|
@@ -890,17 +1037,17 @@ const LayerList = class {
|
|
|
890
1037
|
this.layersListLoaded.emit(this._mapLayerIds);
|
|
891
1038
|
}
|
|
892
1039
|
/**
|
|
893
|
-
* Returns the ids of all OR configured layers that
|
|
1040
|
+
* Returns the ids of all OR configured layers that needs to be shown in the list
|
|
894
1041
|
* @param hash each layer item details
|
|
895
1042
|
* @returns array of layer ids
|
|
896
1043
|
*/
|
|
897
|
-
|
|
1044
|
+
getLayersToBeShownInList(hash) {
|
|
898
1045
|
var _a;
|
|
899
1046
|
const configuredLayers = ((_a = this.layers) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.layers : [];
|
|
900
1047
|
return Object.keys(hash).reduce((prev, cur) => {
|
|
901
|
-
let showLayer =
|
|
1048
|
+
let showLayer = true;
|
|
902
1049
|
if ((configuredLayers === null || configuredLayers === void 0 ? void 0 : configuredLayers.length) > 0) {
|
|
903
|
-
showLayer = configuredLayers.indexOf(cur) > -1
|
|
1050
|
+
showLayer = configuredLayers.indexOf(cur) > -1;
|
|
904
1051
|
}
|
|
905
1052
|
if (showLayer) {
|
|
906
1053
|
prev.push(cur);
|
|
@@ -1571,6 +1571,38 @@ const LayerTable = class {
|
|
|
1571
1571
|
};
|
|
1572
1572
|
LayerTable.style = layerTableCss;
|
|
1573
1573
|
|
|
1574
|
+
function joinAppProxies(map, config, appProxies) {
|
|
1575
|
+
if (appProxies) {
|
|
1576
|
+
appProxies.forEach((proxy) => {
|
|
1577
|
+
map.allLayers.forEach((layer) => {
|
|
1578
|
+
if (layer && layer.url === proxy.sourceUrl) {
|
|
1579
|
+
// directly change the layer url to the proxy url
|
|
1580
|
+
layer.url = proxy.proxyUrl;
|
|
1581
|
+
// Replace the layer's portalItem's url with the proxy url too, otherwise anonymous viewers get a sign-in prompt.
|
|
1582
|
+
if (layer.portalItem) {
|
|
1583
|
+
layer.portalItem.when(() => {
|
|
1584
|
+
// layer.portalItem exists, see above. Not sure why typescript thinks it could be undefined here.
|
|
1585
|
+
layer.portalItem.url = proxy.proxyUrl;
|
|
1586
|
+
});
|
|
1587
|
+
}
|
|
1588
|
+
// also add a request interceptor in case we missed any requests to the original url, or the jsapi team adds new requests in the future.
|
|
1589
|
+
config.request?.interceptors?.push({
|
|
1590
|
+
// this interceptor only applies to requests made to this proxy's sourceUrl (the layer's original url).
|
|
1591
|
+
urls: proxy.sourceUrl,
|
|
1592
|
+
before: (params) => {
|
|
1593
|
+
// change requests from the original url to the proxy url
|
|
1594
|
+
if (params.url && params.url === proxy.sourceUrl) {
|
|
1595
|
+
params.url = proxy.proxyUrl;
|
|
1596
|
+
}
|
|
1597
|
+
},
|
|
1598
|
+
});
|
|
1599
|
+
}
|
|
1600
|
+
});
|
|
1601
|
+
});
|
|
1602
|
+
}
|
|
1603
|
+
return map;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1574
1606
|
const mapCardCss = ":host{display:block;--calcite-label-margin-bottom:0;--calcite-block-padding:0}.map-height{height:calc(100% - 51px)}.height-full{height:100%}.box-shadow{box-shadow:none !important}.visibility-hidden-1{visibility:hidden;height:1px;}.display-none{display:none}";
|
|
1575
1607
|
|
|
1576
1608
|
const MapCard = class {
|
|
@@ -1586,6 +1618,7 @@ const MapCard = class {
|
|
|
1586
1618
|
* string: the id of map currently displayed
|
|
1587
1619
|
*/
|
|
1588
1620
|
this._loadedId = "";
|
|
1621
|
+
this.appProxies = undefined;
|
|
1589
1622
|
this.defaultWebmapId = "";
|
|
1590
1623
|
this.enableHome = undefined;
|
|
1591
1624
|
this.enableLegend = undefined;
|
|
@@ -1662,14 +1695,16 @@ const MapCard = class {
|
|
|
1662
1695
|
* @protected
|
|
1663
1696
|
*/
|
|
1664
1697
|
async _initModules() {
|
|
1665
|
-
const [WebMap, MapView, Home] = await locale.loadModules([
|
|
1698
|
+
const [WebMap, MapView, Home, esriConfig] = await locale.loadModules([
|
|
1666
1699
|
"esri/WebMap",
|
|
1667
1700
|
"esri/views/MapView",
|
|
1668
|
-
"esri/widgets/Home"
|
|
1701
|
+
"esri/widgets/Home",
|
|
1702
|
+
"esri/config"
|
|
1669
1703
|
]);
|
|
1670
1704
|
this.WebMap = WebMap;
|
|
1671
1705
|
this.MapView = MapView;
|
|
1672
1706
|
this.Home = Home;
|
|
1707
|
+
this.esriConfig = esriConfig;
|
|
1673
1708
|
}
|
|
1674
1709
|
/**
|
|
1675
1710
|
* Load the webmap for the provided webMapInfo
|
|
@@ -1690,6 +1725,10 @@ const MapCard = class {
|
|
|
1690
1725
|
const webMap = new this.WebMap({
|
|
1691
1726
|
portalItem: { id }
|
|
1692
1727
|
});
|
|
1728
|
+
if (this.appProxies) {
|
|
1729
|
+
await webMap.load();
|
|
1730
|
+
await joinAppProxies(webMap, this.esriConfig, this.appProxies);
|
|
1731
|
+
}
|
|
1693
1732
|
this.mapView = new this.MapView({
|
|
1694
1733
|
container: this._mapDiv,
|
|
1695
1734
|
map: webMap,
|
|
@@ -39,6 +39,7 @@ const CrowdsourceManager = class {
|
|
|
39
39
|
* MapView.when is not fired when mapView is not currently visible
|
|
40
40
|
*/
|
|
41
41
|
this._shouldSetMapView = false;
|
|
42
|
+
this.appProxies = undefined;
|
|
42
43
|
this.defaultCenter = "";
|
|
43
44
|
this.defaultGlobalId = "";
|
|
44
45
|
this.defaultLayer = "";
|
|
@@ -326,7 +327,7 @@ const CrowdsourceManager = class {
|
|
|
326
327
|
_getMapNode(panelOpen) {
|
|
327
328
|
var _a;
|
|
328
329
|
const mapContainerClass = this._layoutMode === interfaces.ELayoutMode.HORIZONTAL && (!this._isMobile || panelOpen) ? "" : "adjusted-height-50";
|
|
329
|
-
return (index.h("div", { class: `${mapContainerClass} overflow-hidden` }, index.h("map-card", { basemapConfig: this.basemapConfig, class: "width-full", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: true, hidden: this._expandPopup && !this._isMobile, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", mapInfos: (_a = this.mapInfos) === null || _a === void 0 ? void 0 : _a.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"] })));
|
|
330
|
+
return (index.h("div", { class: `${mapContainerClass} overflow-hidden` }, index.h("map-card", { appProxies: this.appProxies, basemapConfig: this.basemapConfig, class: "width-full", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: true, hidden: this._expandPopup && !this._isMobile, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", mapInfos: (_a = this.mapInfos) === null || _a === void 0 ? void 0 : _a.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"] })));
|
|
330
331
|
}
|
|
331
332
|
/**
|
|
332
333
|
* Get the expand node for the popup information
|