@esri/solutions-components 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/buffer-tools_6.cjs.entry.js +8 -5
- package/dist/cjs/calcite-combobox_3.cjs.entry.js +2 -2
- package/dist/cjs/calcite-input-message_5.cjs.entry.js +6 -4
- package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +2 -2
- package/dist/cjs/{csvUtils-83af7ae1.js → csvUtils-34666909.js} +1 -1
- package/dist/cjs/{interfaces-772edf61.js → interfaces-17c631bf.js} +1 -1
- package/dist/cjs/layer-table.cjs.entry.js +3 -3
- package/dist/cjs/map-card.cjs.entry.js +1 -1
- package/dist/cjs/{mapViewUtils-55ac76cb.js → mapViewUtils-24d1d859.js} +1 -1
- package/dist/cjs/public-notification.cjs.entry.js +16 -10
- package/dist/cjs/solution-configuration.cjs.entry.js +2 -2
- package/dist/cjs/solution-contents_3.cjs.entry.js +2 -2
- package/dist/cjs/{solution-store-39726b81.js → solution-store-2dbab624.js} +1 -1
- package/dist/collection/components/buffer-tools/buffer-tools.js +2 -2
- package/dist/collection/components/map-draw-tools/map-draw-tools.js +2 -1
- package/dist/collection/components/public-notification/public-notification.js +14 -8
- package/dist/collection/components/refine-selection/refine-selection.js +4 -2
- package/dist/collection/components/refine-selection-tools/refine-selection-tools.css +1 -0
- package/dist/collection/components/refine-selection-tools/refine-selection-tools.js +3 -1
- package/dist/collection/demos/new-public-notification.html +2 -1
- package/dist/collection/utils/interfaces.js +1 -1
- package/dist/collection/utils/interfaces.ts +2 -2
- package/dist/components/interfaces3.js +1 -1
- package/dist/components/map-draw-tools2.js +2 -1
- package/dist/components/public-notification.js +14 -8
- package/dist/components/refine-selection-tools2.js +4 -2
- package/dist/components/refine-selection2.js +4 -2
- package/dist/esm/buffer-tools_6.entry.js +8 -5
- package/dist/esm/calcite-combobox_3.entry.js +2 -2
- package/dist/esm/calcite-input-message_5.entry.js +6 -4
- package/dist/esm/calcite-shell-panel_14.entry.js +2 -2
- package/dist/esm/{csvUtils-eb231cfb.js → csvUtils-ae3004b9.js} +1 -1
- package/dist/esm/{interfaces-3b23a5f9.js → interfaces-d0d83efa.js} +1 -1
- package/dist/esm/layer-table.entry.js +3 -3
- package/dist/esm/map-card.entry.js +1 -1
- package/dist/esm/{mapViewUtils-e5d8a1e1.js → mapViewUtils-541e7a3c.js} +1 -1
- package/dist/esm/public-notification.entry.js +16 -10
- package/dist/esm/solution-configuration.entry.js +2 -2
- package/dist/esm/solution-contents_3.entry.js +2 -2
- package/dist/esm/{solution-store-c0bf9200.js → solution-store-41e15f1c.js} +1 -1
- package/dist/solutions-components/demos/new-public-notification.html +2 -1
- package/dist/solutions-components/p-05e64bd1.js +498 -2
- package/dist/solutions-components/p-08a95b33.entry.js +138 -0
- package/dist/solutions-components/p-0da5bbdf.entry.js +91 -0
- package/dist/solutions-components/p-0ef91144.entry.js +913 -0
- package/dist/solutions-components/p-0f523243.entry.js +1916 -0
- package/dist/solutions-components/p-11b9510e.entry.js +173 -0
- package/dist/solutions-components/p-1b875d94.entry.js +58 -0
- package/dist/solutions-components/p-1c567f3a.js +23 -16
- package/dist/solutions-components/p-1c883db9.entry.js +43 -0
- package/dist/solutions-components/p-1f225056.js +322 -0
- package/dist/solutions-components/p-1f499e67.entry.js +72 -0
- package/dist/solutions-components/p-20d3d758.entry.js +881 -0
- package/dist/solutions-components/p-2274ac9e.entry.js +160 -0
- package/dist/solutions-components/p-23ec5ac5.entry.js +93 -0
- package/dist/solutions-components/p-2447798c.entry.js +155 -0
- package/dist/solutions-components/p-2525e691.entry.js +432 -0
- package/dist/solutions-components/p-2561f5b5.js +4092 -0
- package/dist/solutions-components/p-29f887c0.entry.js +234 -0
- package/dist/solutions-components/p-2a0d8047.entry.js +345 -0
- package/dist/solutions-components/p-2c177e6a.entry.js +101 -0
- package/dist/solutions-components/p-2e9ed892.js +46 -1
- package/dist/solutions-components/p-316f56db.js +219 -2
- package/dist/solutions-components/p-327f3ebf.entry.js +98 -0
- package/dist/solutions-components/p-356f8b54.entry.js +138 -0
- package/dist/solutions-components/p-359c58de.entry.js +172 -0
- package/dist/solutions-components/p-37336c0d.entry.js +116 -0
- package/dist/solutions-components/p-374a5031.js +105 -2
- package/dist/solutions-components/p-39ea6ef4.entry.js +71 -0
- package/dist/solutions-components/p-3b010ce1.js +17 -1
- package/dist/solutions-components/p-4307dacd.js +194 -1
- package/dist/solutions-components/p-44da2507.js +405 -14
- package/dist/solutions-components/p-46bdffe8.entry.js +54 -0
- package/dist/solutions-components/p-4894bbeb.js +53 -2
- package/dist/solutions-components/p-4cd569f1.entry.js +1298 -0
- package/dist/solutions-components/p-4d4160f9.entry.js +121 -0
- package/dist/solutions-components/p-4e32bf8c.js +482 -1
- package/dist/solutions-components/p-4e9cbd32.entry.js +184 -0
- package/dist/solutions-components/p-508317b3.js +13 -2
- package/dist/solutions-components/p-54697d58.entry.js +198 -0
- package/dist/solutions-components/p-55c79103.entry.js +311 -0
- package/dist/solutions-components/p-57fd19c0.entry.js +706 -0
- package/dist/solutions-components/p-59b48fde.entry.js +443 -0
- package/dist/solutions-components/p-60e0e6a0.entry.js +214 -0
- package/dist/solutions-components/p-621d0534.entry.js +123 -0
- package/dist/solutions-components/p-63f6e8f1.js +14 -1
- package/dist/solutions-components/p-66aeec57.entry.js +61 -0
- package/dist/solutions-components/p-69834f46.entry.js +618 -0
- package/dist/solutions-components/p-6d9da8e5.entry.js +21530 -0
- package/dist/solutions-components/p-6e0da576.js +13 -1
- package/dist/solutions-components/p-6ec3f294.entry.js +106 -0
- package/dist/solutions-components/p-6fe17794.js +9 -1
- package/dist/solutions-components/p-7024cb16.entry.js +72 -0
- package/dist/solutions-components/p-70535506.entry.js +226 -0
- package/dist/solutions-components/p-708a63a8.js +12 -1
- package/dist/solutions-components/p-729708a3.js +14 -1
- package/dist/solutions-components/p-73e23995.js +6 -1
- package/dist/solutions-components/p-74b29d75.entry.js +231 -0
- package/dist/solutions-components/p-74b7ee25.entry.js +711 -0
- package/dist/solutions-components/p-77182c3a.js +3015 -1
- package/dist/solutions-components/p-78b3ef80.entry.js +456 -0
- package/dist/solutions-components/p-79709c19.js +60 -3
- package/dist/solutions-components/p-7a46ef97.js +181 -2
- package/dist/solutions-components/p-7be159e6.entry.js +175 -0
- package/dist/solutions-components/p-7d4451c2.entry.js +71 -0
- package/dist/solutions-components/p-7daea1df.js +41 -1
- package/dist/solutions-components/p-7e39e5ad.entry.js +102 -0
- package/dist/solutions-components/p-7fb45059.entry.js +43 -0
- package/dist/solutions-components/p-815533de.js +306 -3
- package/dist/solutions-components/p-816622ca.entry.js +248 -0
- package/dist/solutions-components/p-83166522.js +205 -2
- package/dist/solutions-components/p-83bd1991.entry.js +36 -0
- package/dist/solutions-components/p-856464d7.entry.js +572 -0
- package/dist/solutions-components/p-8c349bad.entry.js +347 -0
- package/dist/solutions-components/p-8dccb390.entry.js +1986 -0
- package/dist/solutions-components/p-904c185a.entry.js +228 -0
- package/dist/solutions-components/p-9092f8b3.entry.js +156 -0
- package/dist/solutions-components/p-9371145a.entry.js +477 -0
- package/dist/solutions-components/p-93d3119d.js +1948 -1
- package/dist/solutions-components/p-95ec8062.entry.js +173 -0
- package/dist/solutions-components/p-991ee695.js +109 -1
- package/dist/solutions-components/p-9a57dab7.entry.js +213 -0
- package/dist/solutions-components/p-9a9955db.js +41 -1
- package/dist/solutions-components/p-9c1ebc90.js +35 -16
- package/dist/solutions-components/p-9eba5c66.js +399 -3
- package/dist/solutions-components/p-a033a507.entry.js +252 -0
- package/dist/solutions-components/p-a3773415.entry.js +1132 -0
- package/dist/solutions-components/p-a44fe40f.entry.js +94 -0
- package/dist/solutions-components/p-a5b1ab03.js +33 -3
- package/dist/solutions-components/p-a5b2c13d.entry.js +723 -0
- package/dist/solutions-components/p-a6d729b7.entry.js +85 -0
- package/dist/solutions-components/p-a8005026.entry.js +565 -0
- package/dist/solutions-components/p-a80b3880.js +14 -1
- package/dist/solutions-components/p-a89198a3.entry.js +2620 -0
- package/dist/solutions-components/p-aa04bd1f.entry.js +95 -0
- package/dist/solutions-components/p-aa0a0922.entry.js +80 -0
- package/dist/solutions-components/p-ae1fd76b.js +11 -1
- package/dist/solutions-components/p-b2cf435e.entry.js +87 -0
- package/dist/solutions-components/p-b359dc78.js +41 -1
- package/dist/solutions-components/p-b57bc4eb.entry.js +71 -0
- package/dist/solutions-components/p-b75cc407.entry.js +145 -0
- package/dist/solutions-components/p-b911cb75.entry.js +71 -0
- package/dist/solutions-components/p-b965e177.entry.js +335 -0
- package/dist/solutions-components/p-b978636e.js +14 -1
- package/dist/solutions-components/p-ba10a5c8.entry.js +42 -0
- package/dist/solutions-components/p-bd67334c.js +122 -2
- package/dist/solutions-components/p-bde20dba.entry.js +212 -0
- package/dist/solutions-components/p-be0b5a94.entry.js +248 -0
- package/dist/solutions-components/p-c023e6a1.js +2028 -2
- package/dist/solutions-components/p-c27b0c2d.entry.js +150 -0
- package/dist/solutions-components/p-c579ed60.entry.js +447 -0
- package/dist/solutions-components/p-c92bc231.js +101 -2
- package/dist/solutions-components/p-cc815aca.js +839 -16
- package/dist/solutions-components/p-cc8beabb.entry.js +695 -0
- package/dist/solutions-components/p-cdc46c0c.js +1751 -2
- package/dist/solutions-components/p-d12e6992.entry.js +118 -0
- package/dist/solutions-components/p-d1dfed6b.entry.js +179 -0
- package/dist/solutions-components/p-d48a24e6.js +754 -2
- package/dist/solutions-components/p-d96ee3ef.entry.js +579 -0
- package/dist/solutions-components/p-dbc9a5a8.js +80 -0
- package/dist/solutions-components/p-dcdbe712.entry.js +278 -0
- package/dist/solutions-components/p-de39206f.entry.js +113 -0
- package/dist/solutions-components/p-de5416e8.js +28 -1
- package/dist/solutions-components/p-df420d54.entry.js +213 -0
- package/dist/solutions-components/p-e3138cf0.entry.js +20 -0
- package/dist/solutions-components/p-e4845fec.entry.js +152 -0
- package/dist/solutions-components/p-e611d8c8.js +28 -1
- package/dist/solutions-components/p-e947d3b0.js +5 -1
- package/dist/solutions-components/p-ea534300.js +41 -2
- package/dist/solutions-components/p-ec84ee85.entry.js +55 -0
- package/dist/solutions-components/p-ed36c637.entry.js +85 -0
- package/dist/solutions-components/p-f0add71c.js +74 -0
- package/dist/solutions-components/p-f42e014b.js +171 -2
- package/dist/solutions-components/p-fc02e7de.entry.js +308 -0
- package/dist/solutions-components/p-fc884dd6.js +28 -16
- package/dist/solutions-components/p-fcbfa59c.entry.js +181 -0
- package/dist/solutions-components/p-fdc5cf5f.entry.js +138 -0
- package/dist/solutions-components/solutions-components.esm.js +20 -1
- package/dist/solutions-components/utils/interfaces.ts +2 -2
- package/dist/types/components/buffer-tools/buffer-tools.d.ts +2 -2
- package/dist/types/components/public-notification/public-notification.d.ts +9 -1
- package/dist/types/components.d.ts +2 -2
- package/package.json +1 -1
- package/dist/solutions-components/p-021432b8.entry.js +0 -12
- package/dist/solutions-components/p-03440b1e.entry.js +0 -11
- package/dist/solutions-components/p-0512635b.entry.js +0 -6
- package/dist/solutions-components/p-086ef115.entry.js +0 -29
- package/dist/solutions-components/p-0b4bf57f.entry.js +0 -6
- package/dist/solutions-components/p-0c088725.entry.js +0 -6
- package/dist/solutions-components/p-0f820c08.entry.js +0 -6
- package/dist/solutions-components/p-164780a0.entry.js +0 -6
- package/dist/solutions-components/p-179a68a0.entry.js +0 -6
- package/dist/solutions-components/p-184b5005.entry.js +0 -11
- package/dist/solutions-components/p-1d082fee.entry.js +0 -11
- package/dist/solutions-components/p-1e6c02a2.entry.js +0 -11
- package/dist/solutions-components/p-20a58e62.entry.js +0 -17
- package/dist/solutions-components/p-20b2458c.entry.js +0 -11
- package/dist/solutions-components/p-245d47c1.entry.js +0 -6
- package/dist/solutions-components/p-2cb057a9.entry.js +0 -11
- package/dist/solutions-components/p-2cc72806.entry.js +0 -23
- package/dist/solutions-components/p-2de1db9c.entry.js +0 -11
- package/dist/solutions-components/p-2e9c7055.entry.js +0 -11
- package/dist/solutions-components/p-2ed5e6c8.entry.js +0 -11
- package/dist/solutions-components/p-3109d940.entry.js +0 -6
- package/dist/solutions-components/p-31a8bcfa.entry.js +0 -6
- package/dist/solutions-components/p-3649acb3.entry.js +0 -18
- package/dist/solutions-components/p-3f88ba73.entry.js +0 -6
- package/dist/solutions-components/p-3fa9b3c8.js +0 -36
- package/dist/solutions-components/p-40c41709.entry.js +0 -6
- package/dist/solutions-components/p-40e963c7.entry.js +0 -11
- package/dist/solutions-components/p-40f480da.entry.js +0 -11
- package/dist/solutions-components/p-49d5d2d3.entry.js +0 -11
- package/dist/solutions-components/p-4f7049a4.entry.js +0 -11
- package/dist/solutions-components/p-506e4d78.entry.js +0 -6
- package/dist/solutions-components/p-576fdcab.entry.js +0 -6
- package/dist/solutions-components/p-5bd0cf34.entry.js +0 -23
- package/dist/solutions-components/p-65e177f1.entry.js +0 -6
- package/dist/solutions-components/p-67d710c2.entry.js +0 -6
- package/dist/solutions-components/p-7268b445.entry.js +0 -11
- package/dist/solutions-components/p-75ea4667.entry.js +0 -6
- package/dist/solutions-components/p-778c0a36.entry.js +0 -17
- package/dist/solutions-components/p-7a22509b.entry.js +0 -12
- package/dist/solutions-components/p-7bff51db.entry.js +0 -6
- package/dist/solutions-components/p-7d2d0d5d.entry.js +0 -6
- package/dist/solutions-components/p-7f0036f1.entry.js +0 -11
- package/dist/solutions-components/p-8060fb94.entry.js +0 -6
- package/dist/solutions-components/p-80a1b305.entry.js +0 -6
- package/dist/solutions-components/p-81eae877.entry.js +0 -12
- package/dist/solutions-components/p-84e86b8b.entry.js +0 -6
- package/dist/solutions-components/p-851e04ae.entry.js +0 -6
- package/dist/solutions-components/p-9106950a.entry.js +0 -11
- package/dist/solutions-components/p-979804a4.entry.js +0 -11
- package/dist/solutions-components/p-9862baa8.entry.js +0 -11
- package/dist/solutions-components/p-9b5a9117.entry.js +0 -12
- package/dist/solutions-components/p-9deff0c2.entry.js +0 -6
- package/dist/solutions-components/p-9f400eeb.entry.js +0 -6
- package/dist/solutions-components/p-a0639ad1.entry.js +0 -11
- package/dist/solutions-components/p-a33c044e.entry.js +0 -6
- package/dist/solutions-components/p-a516c658.entry.js +0 -6
- package/dist/solutions-components/p-aa0ef36d.entry.js +0 -11
- package/dist/solutions-components/p-aaccbdf3.entry.js +0 -18
- package/dist/solutions-components/p-ab03a5c9.entry.js +0 -11
- package/dist/solutions-components/p-ad469b92.entry.js +0 -11
- package/dist/solutions-components/p-adc86ac3.entry.js +0 -6
- package/dist/solutions-components/p-addc1156.entry.js +0 -11
- package/dist/solutions-components/p-ae846934.entry.js +0 -11
- package/dist/solutions-components/p-b0572fc4.entry.js +0 -37
- package/dist/solutions-components/p-b4e476b7.js +0 -257
- package/dist/solutions-components/p-b668daf8.js +0 -21
- package/dist/solutions-components/p-b6e6eae1.entry.js +0 -6
- package/dist/solutions-components/p-bc317a7f.entry.js +0 -6
- package/dist/solutions-components/p-be41429f.js +0 -21
- package/dist/solutions-components/p-bf6b6353.entry.js +0 -11
- package/dist/solutions-components/p-c2e3dfbb.entry.js +0 -11
- package/dist/solutions-components/p-c4afae53.entry.js +0 -12
- package/dist/solutions-components/p-c9da1c26.entry.js +0 -6
- package/dist/solutions-components/p-cbf8cd49.entry.js +0 -6
- package/dist/solutions-components/p-cc1a064a.entry.js +0 -11
- package/dist/solutions-components/p-d09a168c.entry.js +0 -6
- package/dist/solutions-components/p-d377f913.entry.js +0 -11
- package/dist/solutions-components/p-d4cefead.entry.js +0 -37
- package/dist/solutions-components/p-d7bc0baf.entry.js +0 -16
- package/dist/solutions-components/p-d8968487.entry.js +0 -11
- package/dist/solutions-components/p-e00a0b86.entry.js +0 -11
- package/dist/solutions-components/p-e9a7ed49.entry.js +0 -11
- package/dist/solutions-components/p-ec27e493.entry.js +0 -11
- package/dist/solutions-components/p-ed6404eb.entry.js +0 -6
- package/dist/solutions-components/p-ef21e195.entry.js +0 -23
- package/dist/solutions-components/p-f6068a2d.entry.js +0 -11
- package/dist/solutions-components/p-f6c4cff3.entry.js +0 -11
- package/dist/solutions-components/p-f847291f.entry.js +0 -6
- package/dist/solutions-components/p-f90fd262.entry.js +0 -11
- package/dist/solutions-components/p-fc973005.entry.js +0 -6
- package/dist/solutions-components/p-ff9fb6bc.entry.js +0 -11
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 Esri
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { r as registerInstance, h, H as Host, g as getElement } from './p-c023e6a1.js';
|
|
7
|
+
import { g as getLocaleComponentStrings } from './p-44da2507.js';
|
|
8
|
+
import { g as goToSelection, a as getMapLayerView, q as queryAllFeatures } from './p-1f225056.js';
|
|
9
|
+
import { e as exportCSV } from './p-f0add71c.js';
|
|
10
|
+
import './p-3b010ce1.js';
|
|
11
|
+
import './p-dbc9a5a8.js';
|
|
12
|
+
|
|
13
|
+
const layerTableCss = ":host{display:block}.table{display:table;width:100%}.header{display:table-header-group;background-color:#757575;font-weight:500;font-size:var(--calcite-font-size-0);color:var(--calcite-ui-text-inverse);position:sticky;top:0;z-index:1}.table-header-cell{display:table-cell;text-align:justify;border-right:1px solid var(--calcite-ui-border-2);padding:0.5rem}.table-body{display:table-row-group}.row{display:table-row}.table-cell{display:table-cell;padding:0.5rem}.display-table-header{display:table-header-group}.display-flex{display:flex}.table-border{border:1px solid var(--calcite-ui-border-2)}.justify-center{justify-content:center}.table-container{width:100%}.overflow-auto{overflow:auto}.data-container{overflow:auto;height:calc(100% - 35px)}.row:nth-child(odd){background:var(--calcite-ui-foreground-3)}.padding-3-4{padding:0.75rem}.field-width{white-space:nowrap;min-width:300px;max-width:300px;overflow:hidden}";
|
|
14
|
+
|
|
15
|
+
const LayerTable = class {
|
|
16
|
+
constructor(hostRef) {
|
|
17
|
+
registerInstance(this, hostRef);
|
|
18
|
+
/**
|
|
19
|
+
* esri/Graphic[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html
|
|
20
|
+
*/
|
|
21
|
+
this._graphics = [];
|
|
22
|
+
/**
|
|
23
|
+
* string[]: List of field names to display
|
|
24
|
+
*/
|
|
25
|
+
this._fieldNames = [];
|
|
26
|
+
this.mapView = undefined;
|
|
27
|
+
this._translations = undefined;
|
|
28
|
+
this._selectedIndexes = [];
|
|
29
|
+
}
|
|
30
|
+
//--------------------------------------------------------------------------
|
|
31
|
+
//
|
|
32
|
+
// Watch handlers
|
|
33
|
+
//
|
|
34
|
+
//--------------------------------------------------------------------------
|
|
35
|
+
//--------------------------------------------------------------------------
|
|
36
|
+
//
|
|
37
|
+
// Methods (public)
|
|
38
|
+
//
|
|
39
|
+
//--------------------------------------------------------------------------
|
|
40
|
+
//--------------------------------------------------------------------------
|
|
41
|
+
//
|
|
42
|
+
// Events (public)
|
|
43
|
+
//
|
|
44
|
+
//--------------------------------------------------------------------------
|
|
45
|
+
//--------------------------------------------------------------------------
|
|
46
|
+
//
|
|
47
|
+
// Functions (lifecycle)
|
|
48
|
+
//
|
|
49
|
+
//--------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
52
|
+
*
|
|
53
|
+
* @returns Promise when complete
|
|
54
|
+
*/
|
|
55
|
+
async componentWillLoad() {
|
|
56
|
+
await this._getTranslations();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Renders the component.
|
|
60
|
+
*/
|
|
61
|
+
render() {
|
|
62
|
+
return (h(Host, null, this._getTableControlRow(), h("div", { class: "data-container" }, h("div", { class: "table-container" }, h("div", { class: "table" }, this._getTableHeader(), this._getTableRows()))), h("edit-record-modal", { ref: (el) => this._editMultipleMpdal = el })));
|
|
63
|
+
}
|
|
64
|
+
//--------------------------------------------------------------------------
|
|
65
|
+
//
|
|
66
|
+
// Functions (protected)
|
|
67
|
+
//
|
|
68
|
+
//--------------------------------------------------------------------------
|
|
69
|
+
/**
|
|
70
|
+
* Gets a row of controls that can be used for various interactions with the table
|
|
71
|
+
*
|
|
72
|
+
* @returns The dom node that contains the controls
|
|
73
|
+
*/
|
|
74
|
+
_getTableControlRow() {
|
|
75
|
+
const featuresSelected = this._selectedIndexes.length > 0;
|
|
76
|
+
const multiFeaturesSelected = this._selectedIndexes.length > 1;
|
|
77
|
+
return (h("div", { class: "display-flex table-border" }, h("map-layer-picker", { mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt) }), h("div", null, h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !featuresSelected, iconStart: 'magnifying-glass', onClick: () => this._zoom() }, this._translations.zoom), h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !multiFeaturesSelected, iconStart: 'pencil', onClick: () => this._editMultiple() }, this._translations.editMultiple), h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !featuresSelected, iconStart: 'trash', onClick: () => this._delete() }, this._translations.delete), h("calcite-split-button", { appearance: "transparent", color: "neutral", "primary-text": this._translations.more }, h("calcite-dropdown-group", { "selection-mode": "none" }, h("calcite-dropdown-item", { iconStart: 'list-check-all', onClick: () => this._selectAll(true) }, this._translations.selectAll), h("calcite-dropdown-item", { iconStart: 'selected-items-filter', onClick: () => this._showSelected() }, this._translations.showSelected), h("calcite-dropdown-item", { iconStart: 'erase', onClick: () => this._clearSelection() }, this._translations.clearSelection), h("calcite-dropdown-item", { iconStart: 'refresh', onClick: () => this._switchSelected() }, this._translations.switchSelected), h("calcite-dropdown-item", { iconStart: 'export', onClick: () => this._exportToCSV() }, this._translations.exportCSV))))));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gets the table header with a select all control and column headers for each field
|
|
81
|
+
*
|
|
82
|
+
* @returns The dom node that contains the header
|
|
83
|
+
*/
|
|
84
|
+
_getTableHeader() {
|
|
85
|
+
return (h("div", { class: "header" }, h("div", { class: "table-header-cell padding-3-4" }, h("calcite-checkbox", { class: "display-flex justify-center", onClick: () => this._selectAll(this._selectAllElement.checked), ref: (el) => this._selectAllElement = el })), this._fieldNames.map(name => this._getTableHeaderCell(name))));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets a header cell for the table header
|
|
89
|
+
*
|
|
90
|
+
* @param name the string to display in the cell
|
|
91
|
+
*
|
|
92
|
+
* @returns The dom node that contains the header cell
|
|
93
|
+
*/
|
|
94
|
+
_getTableHeaderCell(name) {
|
|
95
|
+
return (h("div", { class: "table-header-cell field-width" }, name));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Gets the table rows for all features
|
|
99
|
+
*
|
|
100
|
+
* @returns The dom node that contains the body of the table
|
|
101
|
+
*/
|
|
102
|
+
_getTableRows() {
|
|
103
|
+
return (h("div", { class: "table-body" }, this._graphics.map((g, i) => this._getTableRow(g, i))));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Gets the individual table row for a feature
|
|
107
|
+
*
|
|
108
|
+
* @param g the graphic the row is based on
|
|
109
|
+
* @param index the index location of the row within the table
|
|
110
|
+
*
|
|
111
|
+
* @returns The dom node that contains the row
|
|
112
|
+
*/
|
|
113
|
+
_getTableRow(g, index) {
|
|
114
|
+
// TODO think through this more...should build the fieldType info once up front rather
|
|
115
|
+
// than on every single value...
|
|
116
|
+
const checked = this._selectedIndexes.indexOf(index) > -1;
|
|
117
|
+
return (h("div", { class: "row" }, h("div", { class: "table-cell table-border padding-3-4" }, h("calcite-checkbox", { checked: checked, class: "display-flex justify-center", onClick: () => this._rowSelected(index), value: index })), this._fieldNames.map(name => {
|
|
118
|
+
const field = this._layerView.layer.fieldsIndex.get(name);
|
|
119
|
+
return this._getTableRowCell(g.attributes[name], field, checked);
|
|
120
|
+
})));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Gets the individual table cell for the provided field
|
|
124
|
+
*
|
|
125
|
+
* @param v the value to display
|
|
126
|
+
* @param field the field the row is based on
|
|
127
|
+
* @param rowSelected when true editable fields will render a control that will allow the value to be updated
|
|
128
|
+
*
|
|
129
|
+
* @returns The dom node that contains the table cell
|
|
130
|
+
*/
|
|
131
|
+
_getTableRowCell(v, field, rowSelected) {
|
|
132
|
+
const editable = field.editable && rowSelected;
|
|
133
|
+
const inputType = this._getInputType(field.type);
|
|
134
|
+
// TODO find some domain data to test with..this has not been tested
|
|
135
|
+
let domainInput;
|
|
136
|
+
const domain = field.domain;
|
|
137
|
+
if (domain) {
|
|
138
|
+
if (domain.type === "coded-value") {
|
|
139
|
+
domainInput = (h("calcite-select", { label: '' }, domain.codedValues.map(cv => {
|
|
140
|
+
return (h("calcite-option", { label: cv.name, selected: v === cv.code.toString(), value: cv.code }));
|
|
141
|
+
})));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// range domain
|
|
145
|
+
const range = domain;
|
|
146
|
+
domainInput = (h("calcite-input", { max: range.maxValue, min: range.minValue, type: "number", value: v }));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return (h("div", { class: "table-cell table-border field-width" }, editable && domainInput ? domainInput : editable ? (h("calcite-input", { type: inputType, value: v })) : v));
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Simple lookup that will get the appropriate edit control for the value type
|
|
153
|
+
*
|
|
154
|
+
* @param type the Esri field type
|
|
155
|
+
*
|
|
156
|
+
* @returns A string for the type of control to create based on the provided field type
|
|
157
|
+
*/
|
|
158
|
+
_getInputType(type) {
|
|
159
|
+
// JS API field types
|
|
160
|
+
// "string" | "small-integer" | "integer" | "single" | "double" | "long" | "date" | "oid" | "geometry" | "blob" | "raster" | "guid" | "global-id" | "xml"
|
|
161
|
+
// not sure about these: "geometry" | "blob" | "raster" | | "xml"
|
|
162
|
+
// Calcite input types
|
|
163
|
+
// color date datetime-local email file image month number password search tel text(default) textarea time url week
|
|
164
|
+
const inputTypes = {
|
|
165
|
+
"string": 'text',
|
|
166
|
+
"small-integer": "number",
|
|
167
|
+
"integer": "number",
|
|
168
|
+
"single": "number",
|
|
169
|
+
"double": "number",
|
|
170
|
+
"long": "number",
|
|
171
|
+
"date": "datetime-local",
|
|
172
|
+
"oid": "number",
|
|
173
|
+
"guid": "text",
|
|
174
|
+
"global-id": "text"
|
|
175
|
+
};
|
|
176
|
+
return Object.keys(inputTypes).indexOf(type) > -1 ? inputTypes[type] : "text";
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Select or deselect all rows
|
|
180
|
+
*
|
|
181
|
+
* @param checked When true all rows will be selected
|
|
182
|
+
*
|
|
183
|
+
* @returns void
|
|
184
|
+
*/
|
|
185
|
+
_selectAll(checked) {
|
|
186
|
+
this._selectedIndexes = checked ? this._graphics.map((_g, i) => i) : [];
|
|
187
|
+
}
|
|
188
|
+
// need to discuss with team
|
|
189
|
+
_showSelected() {
|
|
190
|
+
console.log("_showSelected");
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Clears the selected indexes
|
|
194
|
+
*
|
|
195
|
+
* @returns void
|
|
196
|
+
*/
|
|
197
|
+
_clearSelection() {
|
|
198
|
+
this._selectedIndexes = [];
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Select all rows that are not currently selectd
|
|
202
|
+
*
|
|
203
|
+
* @returns void
|
|
204
|
+
*/
|
|
205
|
+
_switchSelected() {
|
|
206
|
+
const currentIndexes = [...this._selectedIndexes];
|
|
207
|
+
this._selectedIndexes = this._graphics.reduce((prev, _cur, i) => {
|
|
208
|
+
if (currentIndexes.indexOf(i) < 0) {
|
|
209
|
+
prev.push(i);
|
|
210
|
+
}
|
|
211
|
+
return prev;
|
|
212
|
+
}, []);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Export all selected rows as CSV
|
|
216
|
+
*
|
|
217
|
+
* @returns a promise that will resolve when the operation is complete
|
|
218
|
+
*/
|
|
219
|
+
_exportToCSV() {
|
|
220
|
+
const ids = this._getSelectedIds();
|
|
221
|
+
void exportCSV(this._layerView, ids, true);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Zoom to all selected features
|
|
225
|
+
*
|
|
226
|
+
* @returns a promise that will resolve when the operation is complete
|
|
227
|
+
*/
|
|
228
|
+
_zoom() {
|
|
229
|
+
const ids = this._getSelectedIds();
|
|
230
|
+
void goToSelection(ids, this._layerView, this.mapView, true);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Open the edit multiple modal
|
|
234
|
+
*
|
|
235
|
+
* @returns void
|
|
236
|
+
*/
|
|
237
|
+
_editMultiple() {
|
|
238
|
+
this._editMultipleMpdal.open = true;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Delete all selected records
|
|
242
|
+
*
|
|
243
|
+
* @returns a promise that will resolve when the operation is complete
|
|
244
|
+
*/
|
|
245
|
+
_delete() {
|
|
246
|
+
console.log("delete");
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get the graphics for all selected indexes
|
|
250
|
+
*
|
|
251
|
+
* @param indexes the indexes for the graphics to fetch
|
|
252
|
+
*
|
|
253
|
+
* @returns An array of selected graphics
|
|
254
|
+
*/
|
|
255
|
+
_getGraphics(indexes) {
|
|
256
|
+
return this._graphics.filter((_g, i) => indexes.indexOf(i) > -1);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Gets the object ids for all selected rows
|
|
260
|
+
*
|
|
261
|
+
* @returns An array of object ids
|
|
262
|
+
*/
|
|
263
|
+
_getSelectedIds() {
|
|
264
|
+
const graphics = this._getGraphics(this._selectedIndexes);
|
|
265
|
+
return graphics.map(g => g.getObjectId());
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Update the selected indexes based on the current row
|
|
269
|
+
*
|
|
270
|
+
* @param index the index of the selected row
|
|
271
|
+
*
|
|
272
|
+
* @returns void
|
|
273
|
+
*/
|
|
274
|
+
_rowSelected(index) {
|
|
275
|
+
const indexOfSelected = this._selectedIndexes.indexOf(index);
|
|
276
|
+
if (indexOfSelected > -1) {
|
|
277
|
+
this._selectedIndexes.splice(indexOfSelected, 1);
|
|
278
|
+
this._selectedIndexes = [...this._selectedIndexes];
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
this._selectedIndexes = [...this._selectedIndexes, index];
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Handles layer selection change to show new table
|
|
286
|
+
*
|
|
287
|
+
* @returns a promise that will resolve when the operation is complete
|
|
288
|
+
*/
|
|
289
|
+
async _layerSelectionChanged(evt) {
|
|
290
|
+
const layerName = evt.detail[0];
|
|
291
|
+
this._layerView = await getMapLayerView(this.mapView, layerName);
|
|
292
|
+
// TODO rethink this...when we use later we need to be able to lookup with name
|
|
293
|
+
this._fieldNames = this._layerView.layer.fields.map(f => f.alias || f.name);
|
|
294
|
+
this._graphics = await queryAllFeatures(0, this._layerView.layer, []);
|
|
295
|
+
this._selectedIndexes = [];
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Fetches the component's translations
|
|
299
|
+
*
|
|
300
|
+
* @returns Promise when complete
|
|
301
|
+
* @protected
|
|
302
|
+
*/
|
|
303
|
+
async _getTranslations() {
|
|
304
|
+
const messages = await getLocaleComponentStrings(this.el);
|
|
305
|
+
this._translations = messages[0];
|
|
306
|
+
}
|
|
307
|
+
get el() { return getElement(this); }
|
|
308
|
+
};
|
|
309
|
+
LayerTable.style = layerTableCss;
|
|
310
|
+
|
|
311
|
+
export { LayerTable as layer_table };
|