@esri/solutions-components 0.7.30 → 0.7.31
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 +7 -5
- package/dist/assets/t9n/crowdsource-reporter/resources_en.json +7 -5
- 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/layer-list/resources.json +1 -1
- package/dist/assets/t9n/layer-list/resources_en.json +1 -1
- package/dist/cjs/{calcite-flow_4.cjs.entry.js → calcite-flow_5.cjs.entry.js} +235 -19
- package/dist/cjs/card-manager_3.cjs.entry.js +1 -1
- package/dist/cjs/crowdsource-reporter.cjs.entry.js +221 -32
- package/dist/cjs/{downloadUtils-83c6d3c3.js → downloadUtils-10e0de31.js} +2 -2
- package/dist/cjs/{index.es-bd1a93b2.js → index.es-72dc7ab9.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-select-tools_3.cjs.entry.js +1 -1
- package/dist/cjs/public-notification.cjs.entry.js +1 -1
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/create-feature/create-feature.css +23 -0
- package/dist/collection/components/create-feature/create-feature.js +361 -0
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +10 -1
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +260 -33
- package/dist/collection/components/feature-list/feature-list.js +1 -0
- package/dist/collection/components/layer-list/layer-list.js +60 -16
- package/dist/collection/demos/crowdsource-reporter.html +26 -11
- package/dist/collection/utils/downloadUtils.js +1 -1
- package/dist/collection/utils/downloadUtils.ts +1 -1
- package/dist/components/create-feature.d.ts +11 -0
- package/dist/components/create-feature.js +11 -0
- package/dist/components/create-feature2.js +226 -0
- package/dist/components/crowdsource-reporter.js +297 -90
- package/dist/components/downloadUtils.js +1 -1
- package/dist/components/feature-list2.js +1 -0
- package/dist/components/layer-list2.js +38 -17
- package/dist/esm/{calcite-flow_4.entry.js → calcite-flow_5.entry.js} +235 -20
- package/dist/esm/card-manager_3.entry.js +1 -1
- package/dist/esm/crowdsource-reporter.entry.js +222 -33
- package/dist/esm/{downloadUtils-d070a467.js → downloadUtils-d297078f.js} +2 -2
- package/dist/esm/{index.es-d48535a2.js → index.es-3b4fa9d0.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-select-tools_3.entry.js +1 -1
- package/dist/esm/public-notification.entry.js +1 -1
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/demos/crowdsource-reporter.html +26 -11
- package/dist/solutions-components/{p-f120ff40.entry.js → p-09ec8c8f.entry.js} +1 -1
- package/dist/solutions-components/{p-55b835a1.js → p-103c5318.js} +2 -2
- package/dist/solutions-components/{p-309cdea1.entry.js → p-57d49d15.entry.js} +1 -1
- package/dist/solutions-components/{p-b913a4fd.js → p-8ec25bf4.js} +1 -1
- package/dist/solutions-components/{p-f22ff57e.entry.js → p-921f21d5.entry.js} +1 -1
- package/dist/solutions-components/p-b4e2cac4.entry.js +17 -0
- package/dist/solutions-components/p-bb6562ab.entry.js +6 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/downloadUtils.ts +1 -1
- package/dist/types/components/create-feature/create-feature.d.ts +107 -0
- package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +132 -12
- package/dist/types/components/feature-list/feature-list.d.ts +1 -0
- package/dist/types/components/layer-list/layer-list.d.ts +6 -0
- package/dist/types/components.d.ts +89 -0
- package/dist/types/preact.d.ts +6 -0
- package/package.json +1 -1
- package/dist/solutions-components/p-2f162664.entry.js +0 -6
- package/dist/solutions-components/p-94ee3ef7.entry.js +0 -17
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-7183ce4a.js';
|
|
7
7
|
import { l as loadModules, g as getLocaleComponentStrings } from './locale-731e75a8.js';
|
|
8
|
-
import { a as getAllLayers } from './mapViewUtils-cf05e880.js';
|
|
8
|
+
import { a as getAllLayers, g as getLayerOrTable, q as queryFeaturesByID } from './mapViewUtils-cf05e880.js';
|
|
9
9
|
import './esri-loader-eda07632.js';
|
|
10
10
|
import './_commonjsHelpers-d5f9d613.js';
|
|
11
11
|
import './interfaces-586e863c.js';
|
|
12
12
|
|
|
13
|
-
const crowdsourceReporterCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.width-full{width:100% !important}.width-0{width:0}.height-full{height:100% !important}.height-0{height:0}.overflow-hidden{overflow:hidden}.border{border:1px solid var(--calcite-color-border-3)}.
|
|
13
|
+
const crowdsourceReporterCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.width-full{width:100% !important}.width-0{width:0}.height-full{height:100% !important}.height-0{height:0}.overflow-hidden{overflow:hidden}.border{border:1px solid var(--calcite-color-border-3)}.notice-msg{padding:10px;width:calc(100% - 20px)}.footer-top-button{padding-bottom:7px}.footer-button{height:35px}";
|
|
14
14
|
|
|
15
15
|
const CrowdsourceReporter = class {
|
|
16
16
|
constructor(hostRef) {
|
|
@@ -26,6 +26,8 @@ const CrowdsourceReporter = class {
|
|
|
26
26
|
this.layers = undefined;
|
|
27
27
|
this.loginTitle = undefined;
|
|
28
28
|
this.mapView = undefined;
|
|
29
|
+
this.layerId = undefined;
|
|
30
|
+
this.objectId = undefined;
|
|
29
31
|
this.reportButtonText = undefined;
|
|
30
32
|
this.reportsHeader = undefined;
|
|
31
33
|
this.reportSubmittedMessage = undefined;
|
|
@@ -43,6 +45,9 @@ const CrowdsourceReporter = class {
|
|
|
43
45
|
this._translations = undefined;
|
|
44
46
|
this._hasValidLayers = false;
|
|
45
47
|
this._selectedLayerName = undefined;
|
|
48
|
+
this._reportSubmitted = false;
|
|
49
|
+
this._showSubmitCancelButton = false;
|
|
50
|
+
this._featureCreationFailedErrorMsg = undefined;
|
|
46
51
|
}
|
|
47
52
|
//--------------------------------------------------------------------------
|
|
48
53
|
//
|
|
@@ -81,7 +86,8 @@ const CrowdsourceReporter = class {
|
|
|
81
86
|
* Renders the component.
|
|
82
87
|
*/
|
|
83
88
|
render() {
|
|
84
|
-
|
|
89
|
+
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
|
90
|
+
return (h(Host, null, this._reportSubmitted && h("calcite-alert", { "auto-close": true, class: themeClass, closable: true, icon: "check-circle", kind: "success", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { slot: "title" }, this._translations.reportSubmit), h("div", { slot: "message" }, this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { "auto-close": true, class: themeClass, closable: true, icon: "x-octagon", kind: "danger", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { slot: "title" }, this._translations.error), h("div", { slot: "message" }, this._featureCreationFailedErrorMsg)), h("div", null, h("calcite-shell", { "content-behind": true }, this._getReporter()))));
|
|
85
91
|
}
|
|
86
92
|
//--------------------------------------------------------------------------
|
|
87
93
|
//
|
|
@@ -101,6 +107,15 @@ const CrowdsourceReporter = class {
|
|
|
101
107
|
]);
|
|
102
108
|
this.reactiveUtils = reactiveUtils;
|
|
103
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Set the selected layer id and layer name
|
|
112
|
+
* @param layerId string layerId of the selected layer
|
|
113
|
+
* @param layerName string layerName of the selected layer
|
|
114
|
+
*/
|
|
115
|
+
setSelectedLayer(layerId, layerName) {
|
|
116
|
+
this._selectedLayerId = layerId;
|
|
117
|
+
this._selectedLayerName = layerName;
|
|
118
|
+
}
|
|
104
119
|
/**
|
|
105
120
|
* Get the reporter app functionality
|
|
106
121
|
* @protected
|
|
@@ -118,6 +133,12 @@ const CrowdsourceReporter = class {
|
|
|
118
133
|
case "feature-details":
|
|
119
134
|
renderLists.push(this.getFeatureDetailsFlowItem());
|
|
120
135
|
break;
|
|
136
|
+
case "reporting-layer-list":
|
|
137
|
+
renderLists.push(this.getChooseCategoryFlowItem());
|
|
138
|
+
break;
|
|
139
|
+
case "feature-create":
|
|
140
|
+
renderLists.push(this.getFeatureCreateFlowItem());
|
|
141
|
+
break;
|
|
121
142
|
}
|
|
122
143
|
});
|
|
123
144
|
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
|
@@ -134,34 +155,135 @@ const CrowdsourceReporter = class {
|
|
|
134
155
|
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this.reportsHeader }, this._hasValidLayers &&
|
|
135
156
|
h("calcite-action", { icon: "sort-ascending-arrow", slot: this.isMobile ? "header-menu-actions" : "header-actions-end", text: this._translations.sort, "text-enabled": this.isMobile }), this._hasValidLayers &&
|
|
136
157
|
h("calcite-action", { icon: "filter", slot: this.isMobile ? "header-menu-actions" : "header-actions-end", text: this._translations.filter, "text-enabled": this.isMobile }), this.isMobile && this.getActionToExpandCollapsePanel(), this._hasValidLayers && this.enableNewReports &&
|
|
137
|
-
h("calcite-button", { appearance: "secondary", slot: "footer", width: "full" }, this.reportButtonText), h("calcite-panel", { "full-height": true, "full-width": true }, h("layer-list", { class: "height-full", layers: this.layers, mapView: this.mapView, noLayerErrorMsg: this._translations.noLayerToDisplayErrorMsg, onLayerSelect: this.displayFeaturesList.bind(this), onLayersListLoaded: this.layerListLoaded.bind(this), showFeatureCount: true, showNextIcon: true }))));
|
|
158
|
+
h("calcite-button", { appearance: "secondary", onClick: this.navigateToChooseCategory.bind(this), slot: "footer", width: "full" }, this.reportButtonText), h("calcite-panel", { "full-height": true, "full-width": true }, h("layer-list", { class: "height-full", layers: this.layers, mapView: this.mapView, noLayerErrorMsg: this._translations.noLayerToDisplayErrorMsg, onLayerSelect: this.displayFeaturesList.bind(this), onLayersListLoaded: this.layerListLoaded.bind(this), ref: el => this._layerList = el, showFeatureCount: true, showNextIcon: true }))));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get the layer list for creating a report
|
|
162
|
+
* @returns Choose category flow item
|
|
163
|
+
* @protected
|
|
164
|
+
*/
|
|
165
|
+
getChooseCategoryFlowItem() {
|
|
166
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._translations.createReportHeader, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "secondary", class: "footer-top-button footer-button", disabled: !this._selectedLayerId, onClick: this.navigateToCreateFeature.bind(this), width: "full" }, this._translations.next), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromSelectedPanel.bind(this), width: "full" }, this._translations.cancel)), h("calcite-panel", { "full-height": true, "full-width": true }, h("calcite-notice", { class: "notice-msg", icon: "lightbulb", kind: "success", open: true }, h("div", { slot: "message" }, this._translations.chooseCategoryMsg)), h("layer-list", { class: "height-full", layers: this.layers, mapView: this.mapView, noLayerErrorMsg: this._translations.noLayerToDisplayErrorMsg, onLayerSelect: this.highlightSelectedLayer.bind(this), showFeatureCount: false, showNextIcon: false }))));
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get Feature create form of the selected feature layer
|
|
170
|
+
* @returns feature create form
|
|
171
|
+
* @protected
|
|
172
|
+
*/
|
|
173
|
+
getFeatureCreateFlowItem() {
|
|
174
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._selectedLayerName, onCalciteFlowItemBack: this.backFromCreateFeaturePanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), this._showSubmitCancelButton && h("div", { class: "width-full", slot: "footer" }, h("calcite-button", { appearance: "secondary", class: "footer-top-button footer-button", onClick: this.onSubmitButtonClick.bind(this), width: "full" }, this._translations.submit), h("calcite-button", { appearance: "outline", class: "footer-button", onClick: this.backFromCreateFeaturePanel.bind(this), width: "full" }, this._translations.cancel)), h("calcite-panel", { "full-height": true, "full-width": true }, h("calcite-notice", { class: "notice-msg", icon: "lightbulb", kind: "success", open: true }, h("div", { slot: "message" }, this._translations.featureEditFormInfoMsg)), h("create-feature", { mapView: this.mapView, onDrawComplete: this.showSubmitCancelButton.bind(this), onFail: this.createFeatureFailed.bind(this), onSuccess: this.navigateHomePage.bind(this), ref: el => this._createFeature = el, selectedLayerId: this._selectedLayerId }))));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* When drawing of incident location completed on map show the submit and cancel button
|
|
178
|
+
* @protected
|
|
179
|
+
*/
|
|
180
|
+
showSubmitCancelButton() {
|
|
181
|
+
this._showSubmitCancelButton = true;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* On back from create feature, call submit editor to destroy the Editor widget instance
|
|
185
|
+
* @protected
|
|
186
|
+
*/
|
|
187
|
+
onSubmitButtonClick() {
|
|
188
|
+
if (this._createFeature) {
|
|
189
|
+
this._createFeature.submit();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* On back from create feature, call close editor to destroy the Editor widget instance
|
|
194
|
+
* @protected
|
|
195
|
+
*/
|
|
196
|
+
backFromCreateFeaturePanel() {
|
|
197
|
+
if (this._createFeature) {
|
|
198
|
+
this._createFeature.close();
|
|
199
|
+
}
|
|
200
|
+
this.backFromSelectedPanel();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* On creating the feature is failed, show the error message
|
|
204
|
+
* @param evt Event which has feature failed message
|
|
205
|
+
* @protected
|
|
206
|
+
*/
|
|
207
|
+
createFeatureFailed(evt) {
|
|
208
|
+
console.error(evt.detail);
|
|
209
|
+
this._featureCreationFailedErrorMsg = evt.detail.message;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* On submit report navigate to the layer list home page and refresh the layer list
|
|
213
|
+
* @protected
|
|
214
|
+
*/
|
|
215
|
+
navigateHomePage() {
|
|
216
|
+
this._reportSubmitted = true;
|
|
217
|
+
if (this._layerList) {
|
|
218
|
+
this._layerList.refresh();
|
|
219
|
+
}
|
|
220
|
+
this._flowItems = ["layer-list"];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Update the selected layer id and name
|
|
224
|
+
* @param evt Event which has details of selected layerId and layerName
|
|
225
|
+
* @protected
|
|
226
|
+
*/
|
|
227
|
+
highlightSelectedLayer(evt) {
|
|
228
|
+
this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* On next button click open the feature create flow item
|
|
232
|
+
* @protected
|
|
233
|
+
*/
|
|
234
|
+
async navigateToCreateFeature() {
|
|
235
|
+
this._showSubmitCancelButton = false;
|
|
236
|
+
this._flowItems = [...this._flowItems, "feature-create"];
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* On report an incident button click open the create a report panel with the layer list
|
|
240
|
+
* @protected
|
|
241
|
+
*/
|
|
242
|
+
navigateToChooseCategory() {
|
|
243
|
+
this._flowItems = [...this._flowItems, "reporting-layer-list"];
|
|
138
244
|
}
|
|
139
245
|
/**
|
|
140
246
|
* When layer list is loaded, we will receive the list of layers, if its means we don't have any valid layer to be listed
|
|
141
247
|
* @param evt Event which has list of layers
|
|
142
248
|
* @protected
|
|
143
249
|
*/
|
|
144
|
-
layerListLoaded(evt) {
|
|
250
|
+
async layerListLoaded(evt) {
|
|
145
251
|
const layersListed = evt.detail;
|
|
146
|
-
|
|
252
|
+
//consider only the layers listed in the layer-list component
|
|
253
|
+
const allMapLayers = await getAllLayers(this.mapView);
|
|
254
|
+
this._validLayers = [];
|
|
255
|
+
allMapLayers.forEach((eachLayer) => {
|
|
256
|
+
if (layersListed.includes(eachLayer.id)) {
|
|
257
|
+
this._validLayers.push(eachLayer);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
//handleMap click on layer list loaded
|
|
261
|
+
this.handleMapClick();
|
|
262
|
+
//update the has valid layer state
|
|
147
263
|
this._hasValidLayers = layersListed.length > 0;
|
|
264
|
+
//navigate to the feature details if URL params found
|
|
265
|
+
await this.loadFeatureFromURLParams();
|
|
148
266
|
}
|
|
149
267
|
/**On click of layer list item show feature list
|
|
150
268
|
* @param evt Event which has details of selected layerId and layerName
|
|
151
269
|
* @protected
|
|
152
270
|
*/
|
|
153
271
|
displayFeaturesList(evt) {
|
|
154
|
-
this.
|
|
155
|
-
this._selectedLayerName = evt.detail.layerName;
|
|
272
|
+
this.setSelectedLayer(evt.detail.layerId, evt.detail.layerName);
|
|
156
273
|
this._flowItems = [...this._flowItems, "feature-list"];
|
|
157
274
|
}
|
|
158
275
|
/**
|
|
159
|
-
* On back from
|
|
276
|
+
* On back from selected panel navigate to the previous panel
|
|
160
277
|
* @protected
|
|
161
278
|
*/
|
|
162
|
-
|
|
279
|
+
backFromSelectedPanel() {
|
|
163
280
|
const updatedFlowItems = [...this._flowItems];
|
|
164
281
|
updatedFlowItems.pop();
|
|
282
|
+
//clear the selected layer and feature when back to layer list
|
|
283
|
+
if (updatedFlowItems.length === 1) {
|
|
284
|
+
this.setSelectedLayer('', '');
|
|
285
|
+
this.setSelectedFeatures([]);
|
|
286
|
+
}
|
|
165
287
|
this._flowItems = [...updatedFlowItems];
|
|
166
288
|
}
|
|
167
289
|
/**
|
|
@@ -177,7 +299,7 @@ const CrowdsourceReporter = class {
|
|
|
177
299
|
* @param evt Event which has details of selected feature
|
|
178
300
|
*/
|
|
179
301
|
async onFeatureSelectFromList(evt) {
|
|
180
|
-
this.
|
|
302
|
+
this.setSelectedFeatures([evt.detail]);
|
|
181
303
|
this._flowItems = [...this._flowItems, "feature-details"];
|
|
182
304
|
}
|
|
183
305
|
/**
|
|
@@ -188,26 +310,50 @@ const CrowdsourceReporter = class {
|
|
|
188
310
|
* @protected
|
|
189
311
|
*/
|
|
190
312
|
getFeatureListFlowItem(layerId, layerName) {
|
|
191
|
-
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: layerName, onCalciteFlowItemBack: this.
|
|
192
|
-
h("calcite-button", { appearance: "secondary", slot: "footer", width: "full" }, this.reportButtonText), h("calcite-panel", { "full-height": true }, h("feature-list", { class: "height-full", highlightOnMap: true, mapView: this.mapView, noFeaturesFoundMsg: this._translations.featureErrorMsg, onFeatureSelect: this.onFeatureSelectFromList.bind(this), pageSize: 30, selectedLayerId: layerId }))));
|
|
313
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: layerName, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, h("calcite-action", { icon: "sort-ascending-arrow", slot: this.isMobile ? "header-menu-actions" : "header-actions-end", text: this._translations.sort, "text-enabled": this.isMobile }), h("calcite-action", { icon: "filter", slot: this.isMobile ? "header-menu-actions" : "header-actions-end", text: this._translations.filter, "text-enabled": this.isMobile }), this.isMobile && this.getActionToExpandCollapsePanel(), this.enableNewReports &&
|
|
314
|
+
h("calcite-button", { appearance: "secondary", onClick: this.navigateToCreateFeature.bind(this), slot: "footer", width: "full" }, this.reportButtonText), h("calcite-panel", { "full-height": true }, h("feature-list", { class: "height-full", highlightOnMap: true, mapView: this.mapView, noFeaturesFoundMsg: this._translations.featureErrorMsg, onFeatureSelect: this.onFeatureSelectFromList.bind(this), pageSize: 30, selectedLayerId: layerId }))));
|
|
193
315
|
}
|
|
194
316
|
/**
|
|
195
317
|
* Returns the calcite-flow item for feature details
|
|
196
318
|
* @returns Node
|
|
197
319
|
*/
|
|
198
320
|
getFeatureDetailsFlowItem() {
|
|
199
|
-
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._selectedLayerName, onCalciteFlowItemBack: this.
|
|
321
|
+
return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._selectedLayerName, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("instant-apps-social-share", { autoUpdateShareUrl: false, embed: false, popoverButtonIconScale: "s", ref: el => this._shareNode = el, scale: "m", shareButtonColor: "neutral", shareButtonType: "action", slot: "header-actions-end", socialMedia: true, view: this.mapView }), h("calcite-panel", { "full-height": true }, h("info-card", { allowEditing: false, graphics: this._selectedFeature, isLoading: false, isMobile: false, mapView: this.mapView, onSelectionChanged: this.featureDetailsChanged.bind(this), zoomAndScrollToSelected: true }))));
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Sets the selected features and updates the first feature as the current selected feature
|
|
325
|
+
* @param features Graphics array of the features selected
|
|
326
|
+
*/
|
|
327
|
+
setSelectedFeatures(features) {
|
|
328
|
+
this._selectedFeature = features;
|
|
329
|
+
this.setCurrentFeature(this._selectedFeature.length ? this._selectedFeature[0] : null);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Set the object id of the current selected feature, and also updates the current selected layer details
|
|
333
|
+
* @param selectedFeature Graphic currently shown in feature details
|
|
334
|
+
*/
|
|
335
|
+
setCurrentFeature(selectedFeature) {
|
|
336
|
+
if (selectedFeature && selectedFeature.layer) {
|
|
337
|
+
const layer = selectedFeature.layer;
|
|
338
|
+
this.setSelectedLayer(layer.id, layer.title);
|
|
339
|
+
this._currentFeatureId = selectedFeature.attributes[layer.objectIdField];
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
this.setSelectedLayer('', '');
|
|
343
|
+
this._currentFeatureId = '';
|
|
344
|
+
}
|
|
345
|
+
this._updateShareURL();
|
|
200
346
|
}
|
|
201
347
|
/**
|
|
202
348
|
* On Feature details change update the Layer title and the current selected layer id
|
|
203
349
|
* @param evt Event hold the details of current feature graphic in the info-card
|
|
204
350
|
*/
|
|
205
351
|
featureDetailsChanged(evt) {
|
|
206
|
-
this.
|
|
207
|
-
this._selectedLayerName = evt.detail[0].layer.title;
|
|
352
|
+
this.setCurrentFeature(evt.detail[0]);
|
|
208
353
|
}
|
|
209
354
|
/**
|
|
210
355
|
* Returns the action button to Expand/Collapse side panel in mobile mode
|
|
356
|
+
* @protected
|
|
211
357
|
*/
|
|
212
358
|
getActionToExpandCollapsePanel() {
|
|
213
359
|
return (h("calcite-action", { icon: this._sidePanelCollapsed ? "chevrons-up" : "chevrons-down", onClick: this.toggleSidePanel.bind(this), slot: "header-actions-end", text: this._sidePanelCollapsed ? this._translations.expand : this._translations.collapse }));
|
|
@@ -231,36 +377,26 @@ const CrowdsourceReporter = class {
|
|
|
231
377
|
* Handle map click event
|
|
232
378
|
* @param layers Array of layerIds
|
|
233
379
|
*
|
|
234
|
-
*
|
|
380
|
+
* @protected
|
|
235
381
|
*/
|
|
236
|
-
handleMapClick(
|
|
382
|
+
handleMapClick() {
|
|
237
383
|
if (this._mapClickHandle) {
|
|
238
384
|
this._mapClickHandle.remove();
|
|
239
385
|
}
|
|
240
|
-
this._mapClickHandle = this.reactiveUtils.on(() => this.mapView, "click", (
|
|
241
|
-
void this.onMapClick(event, layers);
|
|
242
|
-
});
|
|
386
|
+
this._mapClickHandle = this.reactiveUtils.on(() => this.mapView, "click", this.onMapClick.bind(this));
|
|
243
387
|
}
|
|
244
388
|
/**
|
|
245
389
|
* On map click do hitTest and get the clicked graphics of valid layers and show feature details
|
|
246
|
-
* @param event
|
|
247
|
-
* @param layers
|
|
390
|
+
* @param event IMapClick map click event details
|
|
248
391
|
*
|
|
249
392
|
* @protected
|
|
250
393
|
*/
|
|
251
|
-
async onMapClick(event
|
|
394
|
+
async onMapClick(event) {
|
|
252
395
|
//disable map popup
|
|
253
396
|
this.mapView.popupEnabled = false;
|
|
254
397
|
// only include graphics from valid layers listed in the layer list widget
|
|
255
|
-
const allMapLayers = await getAllLayers(this.mapView);
|
|
256
|
-
const validLayers = [];
|
|
257
|
-
allMapLayers.forEach((eachLayer) => {
|
|
258
|
-
if (layers.includes(eachLayer.id)) {
|
|
259
|
-
validLayers.push(eachLayer);
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
398
|
const opts = {
|
|
263
|
-
include:
|
|
399
|
+
include: this._validLayers
|
|
264
400
|
};
|
|
265
401
|
// Perform a hitTest on the View
|
|
266
402
|
const hitTest = await this.mapView.hitTest(event, opts);
|
|
@@ -273,7 +409,7 @@ const CrowdsourceReporter = class {
|
|
|
273
409
|
}
|
|
274
410
|
});
|
|
275
411
|
//update the selectedFeature
|
|
276
|
-
this.
|
|
412
|
+
this.setSelectedFeatures(clickedGraphics);
|
|
277
413
|
//if featureDetails not open then add it to the list else just reInit flowItems which will update details with newly selected features
|
|
278
414
|
// eslint-disable-next-line unicorn/prefer-ternary
|
|
279
415
|
if (this._flowItems.length && this._flowItems[this._flowItems.length - 1] !== "feature-details") {
|
|
@@ -293,6 +429,59 @@ const CrowdsourceReporter = class {
|
|
|
293
429
|
const messages = await getLocaleComponentStrings(this.el);
|
|
294
430
|
this._translations = messages[0];
|
|
295
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* Updates the share url for current selected feature
|
|
434
|
+
* @returns
|
|
435
|
+
* @protected
|
|
436
|
+
*/
|
|
437
|
+
_updateShareURL() {
|
|
438
|
+
var _a, _b;
|
|
439
|
+
const url = (_a = this._shareNode) === null || _a === void 0 ? void 0 : _a.shareUrl;
|
|
440
|
+
if (!url) {
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
const urlObj = new URL(url);
|
|
444
|
+
//set the selected layers id
|
|
445
|
+
if (this._selectedLayerId) {
|
|
446
|
+
urlObj.searchParams.set("layerid", this._selectedLayerId);
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
urlObj.searchParams.delete("layerid");
|
|
450
|
+
}
|
|
451
|
+
//Set the selected features objectid
|
|
452
|
+
if ((_b = this._selectedFeature) === null || _b === void 0 ? void 0 : _b.length) {
|
|
453
|
+
urlObj.searchParams.set("oid", this._currentFeatureId);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
urlObj.searchParams.delete("oid");
|
|
457
|
+
}
|
|
458
|
+
//update the url in share component
|
|
459
|
+
this._shareNode.shareUrl = urlObj.href;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Navigates to selected features detail based on the URL params
|
|
463
|
+
*/
|
|
464
|
+
async loadFeatureFromURLParams() {
|
|
465
|
+
if (this.layerId && this.objectId) {
|
|
466
|
+
const layer = await getLayerOrTable(this.mapView, this.layerId);
|
|
467
|
+
if (layer) {
|
|
468
|
+
// only query if we have some ids...query with no ids will result in all features being returned
|
|
469
|
+
const featureSet = await queryFeaturesByID([Number(this.objectId)], layer, [], false, this.mapView.spatialReference);
|
|
470
|
+
if (featureSet.length) {
|
|
471
|
+
//update the selectedFeature
|
|
472
|
+
this._selectedFeature = featureSet;
|
|
473
|
+
//if featureDetails not open then add it to the list else just reInit flowItems which will update details with newly selected features
|
|
474
|
+
// eslint-disable-next-line unicorn/prefer-ternary
|
|
475
|
+
if (this._flowItems.length && this._flowItems[this._flowItems.length - 1] !== "feature-details") {
|
|
476
|
+
this._flowItems = [...this._flowItems, "feature-details"];
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
this._flowItems = [...this._flowItems];
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
296
485
|
get el() { return getElement(this); }
|
|
297
486
|
static get watchers() { return {
|
|
298
487
|
"isMobile": ["isMobileWatchHandler"],
|
|
@@ -1508,7 +1508,7 @@ function(t){var e=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++
|
|
|
1508
1508
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1509
1509
|
* ====================================================================
|
|
1510
1510
|
*/
|
|
1511
|
-
function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):import('./index.es-
|
|
1511
|
+
function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):import('./index.es-3b4fa9d0.js')).catch((function(t){return Promise.reject(new Error("Could not load canvg: "+t))})).then((function(t){return t.default?t.default:t}))}E.API.addSvgAsImage=function(t,r,n,i,o,s,c,u){if(isNaN(r)||isNaN(n))throw a.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(i)||isNaN(o))throw a.error("jsPDF.addSvgAsImage: Invalid measurements",arguments),new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var h=document.createElement("canvas");h.width=i,h.height=o;var l=h.getContext("2d");l.fillStyle="#fff",l.fillRect(0,0,h.width,h.height);var f={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},d=this;return e().then((function(e){return e.fromString(l,t,f)}),(function(){return Promise.reject(new Error("Could not load canvg."))})).then((function(t){return t.render(f)})).then((function(){d.addImage(h.toDataURL("image/jpeg",1),r,n,i,o,c,u);}))};}(),E.API.putTotalPages=function(t){var e,r=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,"g"),r=this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),"g"),r=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var n=1;n<=this.internal.getNumberOfPages();n++)for(var i=0;i<this.internal.pages[n].length;i++)this.internal.pages[n][i]=this.internal.pages[n][i].replace(e,r);return this},E.API.viewerPreferences=function(e,r){var n;e=e||{},r=r||!1;var i,a,o,s={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},c=Object.keys(s),u=[],h=0,l=0,f=0;function d(t,e){var r,n=!1;for(r=0;r<t.length;r+=1)t[r]===e&&(n=!0);return n}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(s)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,"reset"===e||!0===r){var p=c.length;for(f=0;f<p;f+=1)n[c[f]].value=n[c[f]].defaultValue,n[c[f]].explicitSet=!1;}if("object"===t(e))for(a in e)if(o=e[a],d(c,a)&&void 0!==o){if("boolean"===n[a].type&&"boolean"==typeof o)n[a].value=o;else if("name"===n[a].type&&d(n[a].valueSet,o))n[a].value=o;else if("integer"===n[a].type&&Number.isInteger(o))n[a].value=o;else if("array"===n[a].type){for(h=0;h<o.length;h+=1)if(i=!0,1===o[h].length&&"number"==typeof o[h][0])u.push(String(o[h]-1));else if(o[h].length>1){for(l=0;l<o[h].length;l+=1)"number"!=typeof o[h][l]&&(i=!1);!0===i&&u.push([o[h][0]-1,o[h][1]-1].join(" "));}n[a].value="["+u.join(" ")+"]";}else n[a].value=n[a].defaultValue;n[a].explicitSet=!0;}return !1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",(function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>");})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},
|
|
1512
1512
|
/** ====================================================================
|
|
1513
1513
|
* @license
|
|
1514
1514
|
* jsPDF XMP metadata plugin
|
|
@@ -2859,7 +2859,7 @@ function _prepareAttributeValue(attributeValue, attributeType, attributeDomain,
|
|
|
2859
2859
|
if (attributeDomain && attributeDomain.type === "coded-value") {
|
|
2860
2860
|
// "coded-value" domain field
|
|
2861
2861
|
const value = attributeDomain.getName(attributeValue);
|
|
2862
|
-
return value.toString();
|
|
2862
|
+
return value === null || value === void 0 ? void 0 : value.toString();
|
|
2863
2863
|
}
|
|
2864
2864
|
else {
|
|
2865
2865
|
// Non-domain field or unsupported domain type
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { a as commonjsGlobal, c as createCommonjsModule, g as getDefaultExportFromCjs } from './_commonjsHelpers-d5f9d613.js';
|
|
7
|
-
import { _ as _typeof_1 } from './downloadUtils-
|
|
7
|
+
import { _ as _typeof_1 } from './downloadUtils-d297078f.js';
|
|
8
8
|
import './index-7183ce4a.js';
|
|
9
9
|
import './locale-731e75a8.js';
|
|
10
10
|
import './esri-loader-eda07632.js';
|