@jupytergis/base 0.2.1 → 0.4.0
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/lib/annotations/components/Annotation.js +2 -2
- package/lib/annotations/model.d.ts +6 -7
- package/lib/annotations/model.js +15 -15
- package/lib/commands.d.ts +2 -3
- package/lib/commands.js +146 -62
- package/lib/constants.d.ts +3 -0
- package/lib/constants.js +5 -1
- package/lib/dialogs/formdialog.d.ts +5 -0
- package/lib/dialogs/formdialog.js +2 -2
- package/lib/dialogs/layerBrowserDialog.d.ts +4 -5
- package/lib/dialogs/layerBrowserDialog.js +9 -9
- package/lib/dialogs/symbology/components/color_ramp/ModeSelectRow.js +2 -1
- package/lib/dialogs/symbology/hooks/useGetBandInfo.d.ts +26 -0
- package/lib/dialogs/symbology/hooks/useGetBandInfo.js +64 -0
- package/lib/dialogs/symbology/hooks/useGetProperties.d.ts +1 -1
- package/lib/dialogs/symbology/hooks/useGetProperties.js +12 -9
- package/lib/dialogs/symbology/symbologyDialog.d.ts +2 -3
- package/lib/dialogs/symbology/symbologyDialog.js +10 -9
- package/lib/dialogs/symbology/tiff_layer/TiffRendering.d.ts +1 -1
- package/lib/dialogs/symbology/tiff_layer/TiffRendering.js +16 -3
- package/lib/dialogs/symbology/tiff_layer/components/BandRow.d.ts +16 -3
- package/lib/dialogs/symbology/tiff_layer/components/BandRow.js +21 -7
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.d.ts +4 -0
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +85 -0
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.d.ts +1 -20
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +25 -65
- package/lib/dialogs/symbology/vector_layer/VectorRendering.d.ts +1 -1
- package/lib/dialogs/symbology/vector_layer/VectorRendering.js +18 -13
- package/lib/dialogs/symbology/vector_layer/types/Categorized.d.ts +1 -1
- package/lib/dialogs/symbology/vector_layer/types/Categorized.js +30 -19
- package/lib/dialogs/symbology/vector_layer/types/Graduated.d.ts +1 -1
- package/lib/dialogs/symbology/vector_layer/types/Graduated.js +16 -13
- package/lib/dialogs/symbology/vector_layer/types/Heatmap.d.ts +4 -0
- package/lib/dialogs/symbology/vector_layer/types/Heatmap.js +77 -0
- package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.d.ts +1 -1
- package/lib/dialogs/symbology/vector_layer/types/SimpleSymbol.js +4 -3
- package/lib/formbuilder/creationform.d.ts +6 -2
- package/lib/formbuilder/creationform.js +6 -6
- package/lib/formbuilder/editform.d.ts +2 -2
- package/lib/formbuilder/editform.js +14 -9
- package/lib/formbuilder/formselectors.js +11 -1
- package/lib/formbuilder/objectform/baseform.d.ts +12 -3
- package/lib/formbuilder/objectform/baseform.js +39 -0
- package/lib/formbuilder/objectform/fileselectorwidget.d.ts +2 -0
- package/lib/formbuilder/objectform/fileselectorwidget.js +88 -0
- package/lib/formbuilder/objectform/geojsonsource.d.ts +5 -7
- package/lib/formbuilder/objectform/geojsonsource.js +8 -24
- package/lib/formbuilder/objectform/geotiffsource.d.ts +5 -1
- package/lib/formbuilder/objectform/geotiffsource.js +64 -18
- package/lib/formbuilder/objectform/heatmapLayerForm.d.ts +11 -0
- package/lib/formbuilder/objectform/heatmapLayerForm.js +60 -0
- package/lib/formbuilder/objectform/layerform.d.ts +2 -0
- package/lib/formbuilder/objectform/layerform.js +6 -0
- package/lib/formbuilder/objectform/pathbasedsource.d.ts +19 -0
- package/lib/formbuilder/objectform/pathbasedsource.js +98 -0
- package/lib/formbuilder/objectform/vectorlayerform.d.ts +0 -2
- package/lib/formbuilder/objectform/vectorlayerform.js +0 -59
- package/lib/icons.d.ts +1 -0
- package/lib/icons.js +5 -0
- package/lib/keybindings.json +62 -0
- package/lib/mainview/TemporalSlider.d.ts +8 -0
- package/lib/mainview/TemporalSlider.js +303 -0
- package/lib/mainview/mainView.d.ts +46 -8
- package/lib/mainview/mainView.js +431 -144
- package/lib/mainview/mainviewmodel.d.ts +4 -0
- package/lib/mainview/mainviewmodel.js +4 -0
- package/lib/mainview/mainviewwidget.d.ts +0 -2
- package/lib/mainview/mainviewwidget.js +0 -2
- package/lib/panelview/annotationPanel.js +5 -5
- package/lib/panelview/components/filter-panel/Filter.js +8 -24
- package/lib/panelview/components/identify-panel/IdentifyPanel.js +1 -1
- package/lib/panelview/components/layers.js +2 -2
- package/lib/panelview/components/sources.js +1 -1
- package/lib/panelview/leftpanel.d.ts +3 -0
- package/lib/panelview/leftpanel.js +5 -1
- package/lib/panelview/model.js +8 -8
- package/lib/panelview/objectproperties.js +10 -10
- package/lib/panelview/rightpanel.d.ts +1 -1
- package/lib/panelview/rightpanel.js +10 -10
- package/lib/statusbar/StatusBar.d.ts +13 -0
- package/lib/statusbar/StatusBar.js +52 -0
- package/lib/toolbar/widget.d.ts +1 -1
- package/lib/toolbar/widget.js +44 -37
- package/lib/tools.d.ts +50 -7
- package/lib/tools.js +394 -12
- package/lib/types.d.ts +2 -0
- package/lib/widget.d.ts +29 -5
- package/lib/widget.js +41 -7
- package/package.json +17 -5
- package/style/base.css +11 -0
- package/style/icons/logo_mini_qgz.svg +31 -0
- package/style/leftPanel.css +8 -0
- package/style/statusBar.css +16 -0
- package/style/symbologyDialog.css +7 -1
- package/style/temporalSlider.css +47 -0
package/lib/commands.js
CHANGED
|
@@ -3,6 +3,17 @@ import { CommandIDs, icons } from './constants';
|
|
|
3
3
|
import { CreationFormDialog } from './dialogs/formdialog';
|
|
4
4
|
import { LayerBrowserWidget } from './dialogs/layerBrowserDialog';
|
|
5
5
|
import { SymbologyWidget } from './dialogs/symbology/symbologyDialog';
|
|
6
|
+
import keybindings from './keybindings.json';
|
|
7
|
+
import { JupyterGISDocumentWidget } from './widget';
|
|
8
|
+
function loadKeybindings(commands, keybindings) {
|
|
9
|
+
keybindings.forEach(binding => {
|
|
10
|
+
commands.addKeyBinding({
|
|
11
|
+
command: binding.command,
|
|
12
|
+
keys: binding.keys,
|
|
13
|
+
selector: binding.selector
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
6
17
|
/**
|
|
7
18
|
* Add the commands to the application's command registry.
|
|
8
19
|
*/
|
|
@@ -12,7 +23,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
12
23
|
const { commands } = app;
|
|
13
24
|
commands.addCommand(CommandIDs.symbology, Object.assign({ label: trans.__('Edit Symbology'), isEnabled: () => {
|
|
14
25
|
var _a, _b;
|
|
15
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
26
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
16
27
|
const localState = model === null || model === void 0 ? void 0 : model.sharedModel.awareness.getLocalState();
|
|
17
28
|
if (!model || !localState || !((_b = localState['selected']) === null || _b === void 0 ? void 0 : _b.value)) {
|
|
18
29
|
return false;
|
|
@@ -30,36 +41,37 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
30
41
|
const isValidLayer = [
|
|
31
42
|
'VectorLayer',
|
|
32
43
|
'VectorTileLayer',
|
|
33
|
-
'WebGlLayer'
|
|
44
|
+
'WebGlLayer',
|
|
45
|
+
'HeatmapLayer'
|
|
34
46
|
].includes(layer.type);
|
|
35
47
|
return isValidLayer;
|
|
36
48
|
}, execute: Private.createSymbologyDialog(tracker, state) }, icons.get(CommandIDs.symbology)));
|
|
37
49
|
commands.addCommand(CommandIDs.redo, Object.assign({ label: trans.__('Redo'), isEnabled: () => {
|
|
38
50
|
return tracker.currentWidget
|
|
39
|
-
? tracker.currentWidget.
|
|
51
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
40
52
|
: false;
|
|
41
53
|
}, execute: () => {
|
|
42
54
|
const current = tracker.currentWidget;
|
|
43
55
|
if (current) {
|
|
44
|
-
return current.
|
|
56
|
+
return current.model.sharedModel.redo();
|
|
45
57
|
}
|
|
46
58
|
} }, (_a = icons.get(CommandIDs.redo)) === null || _a === void 0 ? void 0 : _a.icon));
|
|
47
59
|
commands.addCommand(CommandIDs.undo, Object.assign({ label: trans.__('Undo'), isEnabled: () => {
|
|
48
60
|
return tracker.currentWidget
|
|
49
|
-
? tracker.currentWidget.
|
|
61
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
50
62
|
: false;
|
|
51
63
|
}, execute: () => {
|
|
52
64
|
const current = tracker.currentWidget;
|
|
53
65
|
if (current) {
|
|
54
|
-
return current.
|
|
66
|
+
return current.model.sharedModel.undo();
|
|
55
67
|
}
|
|
56
68
|
} }, icons.get(CommandIDs.undo)));
|
|
57
69
|
commands.addCommand(CommandIDs.identify, Object.assign({ label: trans.__('Identify'), isToggled: () => {
|
|
58
70
|
var _a;
|
|
59
|
-
return ((_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
71
|
+
return ((_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model.isIdentifying) || false;
|
|
60
72
|
}, isEnabled: () => {
|
|
61
73
|
return tracker.currentWidget
|
|
62
|
-
? tracker.currentWidget.
|
|
74
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
63
75
|
: false;
|
|
64
76
|
}, execute: args => {
|
|
65
77
|
const current = tracker.currentWidget;
|
|
@@ -70,22 +82,58 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
70
82
|
if (luminoEvent) {
|
|
71
83
|
const keysPressed = luminoEvent.keys;
|
|
72
84
|
if (keysPressed === null || keysPressed === void 0 ? void 0 : keysPressed.includes('Escape')) {
|
|
73
|
-
current.
|
|
85
|
+
current.model.isIdentifying = false;
|
|
74
86
|
current.node.classList.remove('jGIS-identify-tool');
|
|
75
87
|
commands.notifyCommandChanged(CommandIDs.identify);
|
|
76
88
|
return;
|
|
77
89
|
}
|
|
78
90
|
}
|
|
79
91
|
current.node.classList.toggle('jGIS-identify-tool');
|
|
80
|
-
current.
|
|
92
|
+
current.model.toggleIdentify();
|
|
81
93
|
commands.notifyCommandChanged(CommandIDs.identify);
|
|
82
94
|
} }, icons.get(CommandIDs.identify)));
|
|
95
|
+
commands.addCommand(CommandIDs.temporalController, Object.assign({ label: trans.__('Temporal Controller'), isToggled: () => {
|
|
96
|
+
var _a;
|
|
97
|
+
return ((_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model.isTemporalControllerActive) || false;
|
|
98
|
+
}, isEnabled: () => {
|
|
99
|
+
var _a, _b, _c, _d;
|
|
100
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
101
|
+
if (!model) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
const selectedLayers = (_c = (_b = model.localState) === null || _b === void 0 ? void 0 : _b.selected) === null || _c === void 0 ? void 0 : _c.value;
|
|
105
|
+
if (!selectedLayers) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const layerId = Object.keys(selectedLayers)[0];
|
|
109
|
+
const layerType = (_d = model.getLayer(layerId)) === null || _d === void 0 ? void 0 : _d.type;
|
|
110
|
+
if (!layerType) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
// Selection should only be one vector or heatmap layer
|
|
114
|
+
const isSelectionValid = Object.keys(selectedLayers).length === 1 &&
|
|
115
|
+
!model.getSource(layerId) &&
|
|
116
|
+
['VectorLayer', 'HeatmapLayer'].includes(layerType);
|
|
117
|
+
if (!isSelectionValid && model.isTemporalControllerActive) {
|
|
118
|
+
model.toggleTemporalController();
|
|
119
|
+
commands.notifyCommandChanged(CommandIDs.temporalController);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}, execute: () => {
|
|
124
|
+
const current = tracker.currentWidget;
|
|
125
|
+
if (!current) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
current.model.toggleTemporalController();
|
|
129
|
+
commands.notifyCommandChanged(CommandIDs.temporalController);
|
|
130
|
+
} }, icons.get(CommandIDs.temporalController)));
|
|
83
131
|
/**
|
|
84
132
|
* SOURCES and LAYERS creation commands.
|
|
85
133
|
*/
|
|
86
134
|
commands.addCommand(CommandIDs.openLayerBrowser, Object.assign({ label: trans.__('Open Layer Browser'), isEnabled: () => {
|
|
87
135
|
return tracker.currentWidget
|
|
88
|
-
? tracker.currentWidget.
|
|
136
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
89
137
|
: false;
|
|
90
138
|
}, execute: Private.createLayerBrowser(tracker, layerBrowserRegistry, formSchemaRegistry) }, icons.get(CommandIDs.openLayerBrowser)));
|
|
91
139
|
/**
|
|
@@ -93,7 +141,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
93
141
|
*/
|
|
94
142
|
commands.addCommand(CommandIDs.newRasterEntry, Object.assign({ label: trans.__('New Raster Layer'), isEnabled: () => {
|
|
95
143
|
return tracker.currentWidget
|
|
96
|
-
? tracker.currentWidget.
|
|
144
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
97
145
|
: false;
|
|
98
146
|
}, execute: Private.createEntry({
|
|
99
147
|
tracker,
|
|
@@ -111,7 +159,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
111
159
|
}) }, icons.get(CommandIDs.newRasterEntry)));
|
|
112
160
|
commands.addCommand(CommandIDs.newVectorTileEntry, Object.assign({ label: trans.__('New Vector Tile Layer'), isEnabled: () => {
|
|
113
161
|
return tracker.currentWidget
|
|
114
|
-
? tracker.currentWidget.
|
|
162
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
115
163
|
: false;
|
|
116
164
|
}, execute: Private.createEntry({
|
|
117
165
|
tracker,
|
|
@@ -126,7 +174,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
126
174
|
}) }, icons.get(CommandIDs.newVectorTileEntry)));
|
|
127
175
|
commands.addCommand(CommandIDs.newGeoJSONEntry, Object.assign({ label: trans.__('New GeoJSON layer'), isEnabled: () => {
|
|
128
176
|
return tracker.currentWidget
|
|
129
|
-
? tracker.currentWidget.
|
|
177
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
130
178
|
: false;
|
|
131
179
|
}, execute: Private.createEntry({
|
|
132
180
|
tracker,
|
|
@@ -140,7 +188,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
140
188
|
}) }, icons.get(CommandIDs.newGeoJSONEntry)));
|
|
141
189
|
commands.addCommand(CommandIDs.newHillshadeEntry, Object.assign({ label: trans.__('New Hillshade layer'), isEnabled: () => {
|
|
142
190
|
return tracker.currentWidget
|
|
143
|
-
? tracker.currentWidget.
|
|
191
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
144
192
|
: false;
|
|
145
193
|
}, execute: Private.createEntry({
|
|
146
194
|
tracker,
|
|
@@ -154,7 +202,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
154
202
|
}) }, icons.get(CommandIDs.newHillshadeEntry)));
|
|
155
203
|
commands.addCommand(CommandIDs.newImageEntry, Object.assign({ label: trans.__('New Image layer'), isEnabled: () => {
|
|
156
204
|
return tracker.currentWidget
|
|
157
|
-
? tracker.currentWidget.
|
|
205
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
158
206
|
: false;
|
|
159
207
|
}, execute: Private.createEntry({
|
|
160
208
|
tracker,
|
|
@@ -164,7 +212,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
164
212
|
createSource: true,
|
|
165
213
|
sourceData: {
|
|
166
214
|
name: 'Custom Image Source',
|
|
167
|
-
|
|
215
|
+
path: 'https://maplibre.org/maplibre-gl-js/docs/assets/radar.gif',
|
|
168
216
|
coordinates: [
|
|
169
217
|
[-80.425, 46.437],
|
|
170
218
|
[-71.516, 46.437],
|
|
@@ -178,7 +226,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
178
226
|
}) }, icons.get(CommandIDs.newImageEntry)));
|
|
179
227
|
commands.addCommand(CommandIDs.newVideoEntry, Object.assign({ label: trans.__('New Video layer'), isEnabled: () => {
|
|
180
228
|
return tracker.currentWidget
|
|
181
|
-
? tracker.currentWidget.
|
|
229
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
182
230
|
: false;
|
|
183
231
|
}, execute: Private.createEntry({
|
|
184
232
|
tracker,
|
|
@@ -207,7 +255,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
207
255
|
? trans.__('Shapefile')
|
|
208
256
|
: trans.__('Add Shapefile Source'), isEnabled: () => {
|
|
209
257
|
return tracker.currentWidget
|
|
210
|
-
? tracker.currentWidget.
|
|
258
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
211
259
|
: false;
|
|
212
260
|
}, execute: Private.createEntry({
|
|
213
261
|
tracker,
|
|
@@ -220,7 +268,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
220
268
|
}) }, icons.get(CommandIDs.newShapefileSource)));
|
|
221
269
|
commands.addCommand(CommandIDs.newGeoTiffEntry, Object.assign({ label: trans.__('New GeoTiff layer'), isEnabled: () => {
|
|
222
270
|
return tracker.currentWidget
|
|
223
|
-
? tracker.currentWidget.
|
|
271
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
224
272
|
: false;
|
|
225
273
|
}, execute: Private.createEntry({
|
|
226
274
|
tracker,
|
|
@@ -243,7 +291,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
243
291
|
? trans.__('Raster')
|
|
244
292
|
: trans.__('New Raster Source'), isEnabled: () => {
|
|
245
293
|
return tracker.currentWidget
|
|
246
|
-
? tracker.currentWidget.
|
|
294
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
247
295
|
: false;
|
|
248
296
|
}, execute: Private.createEntry({
|
|
249
297
|
tracker,
|
|
@@ -258,7 +306,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
258
306
|
? trans.__('Raster DEM')
|
|
259
307
|
: trans.__('New Raster DEM Source'), isEnabled: () => {
|
|
260
308
|
return tracker.currentWidget
|
|
261
|
-
? tracker.currentWidget.
|
|
309
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
262
310
|
: false;
|
|
263
311
|
}, execute: Private.createEntry({
|
|
264
312
|
tracker,
|
|
@@ -273,7 +321,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
273
321
|
? trans.__('Vector')
|
|
274
322
|
: trans.__('New Vector Source'), isEnabled: () => {
|
|
275
323
|
return tracker.currentWidget
|
|
276
|
-
? tracker.currentWidget.
|
|
324
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
277
325
|
: false;
|
|
278
326
|
}, execute: Private.createEntry({
|
|
279
327
|
tracker,
|
|
@@ -288,7 +336,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
288
336
|
? trans.__('GeoJSON')
|
|
289
337
|
: trans.__('Add GeoJSON data from file'), isEnabled: () => {
|
|
290
338
|
return tracker.currentWidget
|
|
291
|
-
? tracker.currentWidget.
|
|
339
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
292
340
|
: false;
|
|
293
341
|
}, execute: Private.createEntry({
|
|
294
342
|
tracker,
|
|
@@ -303,7 +351,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
303
351
|
? trans.__('Image')
|
|
304
352
|
: trans.__('Add Image Source'), isEnabled: () => {
|
|
305
353
|
return tracker.currentWidget
|
|
306
|
-
? tracker.currentWidget.
|
|
354
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
307
355
|
: false;
|
|
308
356
|
}, execute: Private.createEntry({
|
|
309
357
|
tracker,
|
|
@@ -318,7 +366,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
318
366
|
? trans.__('Video')
|
|
319
367
|
: trans.__('Add Video Source'), isEnabled: () => {
|
|
320
368
|
return tracker.currentWidget
|
|
321
|
-
? tracker.currentWidget.
|
|
369
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
322
370
|
: false;
|
|
323
371
|
}, execute: Private.createEntry({
|
|
324
372
|
tracker,
|
|
@@ -334,7 +382,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
334
382
|
? trans.__('Raster')
|
|
335
383
|
: trans.__('Add Raster layer'), isEnabled: () => {
|
|
336
384
|
return tracker.currentWidget
|
|
337
|
-
? tracker.currentWidget.
|
|
385
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
338
386
|
: false;
|
|
339
387
|
}, execute: Private.createEntry({
|
|
340
388
|
tracker,
|
|
@@ -352,7 +400,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
352
400
|
? trans.__('Vector')
|
|
353
401
|
: trans.__('Add New Vector layer'), isEnabled: () => {
|
|
354
402
|
return tracker.currentWidget
|
|
355
|
-
? tracker.currentWidget.
|
|
403
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
356
404
|
: false;
|
|
357
405
|
}, execute: Private.createEntry({
|
|
358
406
|
tracker,
|
|
@@ -370,7 +418,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
370
418
|
? trans.__('Hillshade')
|
|
371
419
|
: trans.__('Add Hillshade layer'), isEnabled: () => {
|
|
372
420
|
return tracker.currentWidget
|
|
373
|
-
? tracker.currentWidget.
|
|
421
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
374
422
|
: false;
|
|
375
423
|
}, execute: Private.createEntry({
|
|
376
424
|
tracker,
|
|
@@ -388,7 +436,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
388
436
|
? trans.__('Image')
|
|
389
437
|
: trans.__('Add Image layer'), isEnabled: () => {
|
|
390
438
|
return tracker.currentWidget
|
|
391
|
-
? tracker.currentWidget.
|
|
439
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
392
440
|
: false;
|
|
393
441
|
}, execute: Private.createEntry({
|
|
394
442
|
tracker,
|
|
@@ -406,7 +454,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
406
454
|
? trans.__('Video')
|
|
407
455
|
: trans.__('Add Video layer'), isEnabled: () => {
|
|
408
456
|
return tracker.currentWidget
|
|
409
|
-
? tracker.currentWidget.
|
|
457
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
410
458
|
: false;
|
|
411
459
|
}, execute: Private.createEntry({
|
|
412
460
|
tracker,
|
|
@@ -422,7 +470,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
422
470
|
}) }, icons.get(CommandIDs.newVideoLayer)));
|
|
423
471
|
commands.addCommand(CommandIDs.newShapefileLayer, Object.assign({ label: trans.__('New Shapefile Layer'), isEnabled: () => {
|
|
424
472
|
return tracker.currentWidget
|
|
425
|
-
? tracker.currentWidget.
|
|
473
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
426
474
|
: false;
|
|
427
475
|
}, execute: Private.createEntry({
|
|
428
476
|
tracker,
|
|
@@ -435,6 +483,22 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
435
483
|
sourceType: 'ShapefileSource',
|
|
436
484
|
layerType: 'VectorLayer'
|
|
437
485
|
}) }, icons.get(CommandIDs.newShapefileLayer)));
|
|
486
|
+
commands.addCommand(CommandIDs.newHeatmapLayer, Object.assign({ label: args => args.from === 'contextMenu'
|
|
487
|
+
? trans.__('Heatmap')
|
|
488
|
+
: trans.__('Add HeatmapLayer'), isEnabled: () => {
|
|
489
|
+
return tracker.currentWidget
|
|
490
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
491
|
+
: false;
|
|
492
|
+
}, execute: Private.createEntry({
|
|
493
|
+
tracker,
|
|
494
|
+
formSchemaRegistry,
|
|
495
|
+
title: 'Create Heatmap Layer',
|
|
496
|
+
createLayer: true,
|
|
497
|
+
createSource: false,
|
|
498
|
+
layerData: { name: 'Custom Heatmap Layer' },
|
|
499
|
+
sourceType: 'GeoJSONSource',
|
|
500
|
+
layerType: 'HeatmapLayer'
|
|
501
|
+
}) }, icons.get(CommandIDs.newHeatmapLayer)));
|
|
438
502
|
/**
|
|
439
503
|
* LAYERS and LAYER GROUP actions.
|
|
440
504
|
*/
|
|
@@ -442,7 +506,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
442
506
|
label: trans.__('Rename Layer'),
|
|
443
507
|
execute: async () => {
|
|
444
508
|
var _a;
|
|
445
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
509
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
446
510
|
await Private.renameSelectedItem(model, 'layer', (layerId, newName) => {
|
|
447
511
|
const layer = model === null || model === void 0 ? void 0 : model.getLayer(layerId);
|
|
448
512
|
if (layer) {
|
|
@@ -456,7 +520,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
456
520
|
label: trans.__('Remove Layer'),
|
|
457
521
|
execute: () => {
|
|
458
522
|
var _a;
|
|
459
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
523
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
460
524
|
Private.removeSelectedItems(model, 'layer', selection => {
|
|
461
525
|
model === null || model === void 0 ? void 0 : model.removeLayer(selection);
|
|
462
526
|
});
|
|
@@ -466,7 +530,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
466
530
|
label: trans.__('Rename Group'),
|
|
467
531
|
execute: async () => {
|
|
468
532
|
var _a;
|
|
469
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
533
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
470
534
|
await Private.renameSelectedItem(model, 'group', (groupName, newName) => {
|
|
471
535
|
model === null || model === void 0 ? void 0 : model.renameLayerGroup(groupName, newName);
|
|
472
536
|
});
|
|
@@ -476,7 +540,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
476
540
|
label: trans.__('Remove Group'),
|
|
477
541
|
execute: async () => {
|
|
478
542
|
var _a;
|
|
479
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
543
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
480
544
|
Private.removeSelectedItems(model, 'group', selection => {
|
|
481
545
|
model === null || model === void 0 ? void 0 : model.removeLayerGroup(selection);
|
|
482
546
|
});
|
|
@@ -486,7 +550,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
486
550
|
label: args => args['label'] ? args['label'] : trans.__('Move to Root'),
|
|
487
551
|
execute: args => {
|
|
488
552
|
var _a, _b, _c;
|
|
489
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
553
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
490
554
|
const groupName = args['label'];
|
|
491
555
|
const selectedLayers = (_c = (_b = model === null || model === void 0 ? void 0 : model.localState) === null || _b === void 0 ? void 0 : _b.selected) === null || _c === void 0 ? void 0 : _c.value;
|
|
492
556
|
if (!selectedLayers) {
|
|
@@ -499,7 +563,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
499
563
|
label: trans.__('Move Selected Layers to New Group'),
|
|
500
564
|
execute: async () => {
|
|
501
565
|
var _a, _b, _c;
|
|
502
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
566
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
503
567
|
const selectedLayers = (_c = (_b = model === null || model === void 0 ? void 0 : model.localState) === null || _b === void 0 ? void 0 : _b.selected) === null || _c === void 0 ? void 0 : _c.value;
|
|
504
568
|
if (!selectedLayers) {
|
|
505
569
|
return;
|
|
@@ -556,7 +620,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
556
620
|
label: trans.__('Rename Source'),
|
|
557
621
|
execute: async () => {
|
|
558
622
|
var _a;
|
|
559
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
623
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
560
624
|
await Private.renameSelectedItem(model, 'source', (sourceId, newName) => {
|
|
561
625
|
const source = model === null || model === void 0 ? void 0 : model.getSource(sourceId);
|
|
562
626
|
if (source) {
|
|
@@ -570,7 +634,7 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
570
634
|
label: trans.__('Remove Source'),
|
|
571
635
|
execute: () => {
|
|
572
636
|
var _a;
|
|
573
|
-
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.
|
|
637
|
+
const model = (_a = tracker.currentWidget) === null || _a === void 0 ? void 0 : _a.model;
|
|
574
638
|
Private.removeSelectedItems(model, 'source', selection => {
|
|
575
639
|
var _a;
|
|
576
640
|
if (!((_a = model === null || model === void 0 ? void 0 : model.getLayersBySource(selection).length) !== null && _a !== void 0 ? _a : true)) {
|
|
@@ -585,37 +649,43 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
585
649
|
// Console commands
|
|
586
650
|
commands.addCommand(CommandIDs.toggleConsole, {
|
|
587
651
|
label: trans.__('Toggle console'),
|
|
652
|
+
isVisible: () => tracker.currentWidget instanceof JupyterGISDocumentWidget,
|
|
588
653
|
isEnabled: () => {
|
|
589
654
|
return tracker.currentWidget
|
|
590
|
-
? tracker.currentWidget.
|
|
655
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
591
656
|
: false;
|
|
592
657
|
},
|
|
593
658
|
execute: async () => await Private.toggleConsole(tracker)
|
|
594
659
|
});
|
|
595
660
|
commands.addCommand(CommandIDs.executeConsole, {
|
|
596
661
|
label: trans.__('Execute console'),
|
|
662
|
+
isVisible: () => tracker.currentWidget instanceof JupyterGISDocumentWidget,
|
|
597
663
|
isEnabled: () => {
|
|
598
664
|
return tracker.currentWidget
|
|
599
|
-
? tracker.currentWidget.
|
|
665
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
600
666
|
: false;
|
|
601
667
|
},
|
|
602
668
|
execute: () => Private.executeConsole(tracker)
|
|
603
669
|
});
|
|
604
670
|
commands.addCommand(CommandIDs.removeConsole, {
|
|
605
671
|
label: trans.__('Remove console'),
|
|
672
|
+
isVisible: () => tracker.currentWidget instanceof JupyterGISDocumentWidget,
|
|
606
673
|
isEnabled: () => {
|
|
607
674
|
return tracker.currentWidget
|
|
608
|
-
? tracker.currentWidget.
|
|
675
|
+
? tracker.currentWidget.model.sharedModel.editable
|
|
609
676
|
: false;
|
|
610
677
|
},
|
|
611
678
|
execute: () => Private.removeConsole(tracker)
|
|
612
679
|
});
|
|
613
680
|
commands.addCommand(CommandIDs.invokeCompleter, {
|
|
614
681
|
label: trans.__('Display the completion helper.'),
|
|
682
|
+
isVisible: () => tracker.currentWidget instanceof JupyterGISDocumentWidget,
|
|
615
683
|
execute: () => {
|
|
616
684
|
var _a;
|
|
617
685
|
const currentWidget = tracker.currentWidget;
|
|
618
|
-
if (!currentWidget ||
|
|
686
|
+
if (!currentWidget ||
|
|
687
|
+
!completionProviderManager ||
|
|
688
|
+
!(currentWidget instanceof JupyterGISDocumentWidget)) {
|
|
619
689
|
return;
|
|
620
690
|
}
|
|
621
691
|
const id = (_a = currentWidget.content.consolePanel) === null || _a === void 0 ? void 0 : _a.id;
|
|
@@ -626,10 +696,13 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
626
696
|
});
|
|
627
697
|
commands.addCommand(CommandIDs.selectCompleter, {
|
|
628
698
|
label: trans.__('Select the completion suggestion.'),
|
|
699
|
+
isVisible: () => tracker.currentWidget instanceof JupyterGISDocumentWidget,
|
|
629
700
|
execute: () => {
|
|
630
701
|
var _a;
|
|
631
702
|
const currentWidget = tracker.currentWidget;
|
|
632
|
-
if (!currentWidget ||
|
|
703
|
+
if (!currentWidget ||
|
|
704
|
+
!completionProviderManager ||
|
|
705
|
+
!(currentWidget instanceof JupyterGISDocumentWidget)) {
|
|
633
706
|
return;
|
|
634
707
|
}
|
|
635
708
|
const id = (_a = currentWidget.content.consolePanel) === null || _a === void 0 ? void 0 : _a.id;
|
|
@@ -638,6 +711,25 @@ export function addCommands(app, tracker, translator, formSchemaRegistry, layerB
|
|
|
638
711
|
}
|
|
639
712
|
}
|
|
640
713
|
});
|
|
714
|
+
commands.addCommand(CommandIDs.zoomToLayer, {
|
|
715
|
+
label: trans.__('Zoom to Layer'),
|
|
716
|
+
execute: () => {
|
|
717
|
+
var _a;
|
|
718
|
+
const currentWidget = tracker.currentWidget;
|
|
719
|
+
if (!currentWidget || !completionProviderManager) {
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
console.log('zooming');
|
|
723
|
+
const model = tracker.currentWidget.model;
|
|
724
|
+
const selectedItems = (_a = model.localState) === null || _a === void 0 ? void 0 : _a.selected.value;
|
|
725
|
+
if (!selectedItems) {
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
const layerId = Object.keys(selectedItems)[0];
|
|
729
|
+
model.centerOnPosition(layerId);
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
loadKeybindings(commands, keybindings);
|
|
641
733
|
}
|
|
642
734
|
var Private;
|
|
643
735
|
(function (Private) {
|
|
@@ -648,7 +740,7 @@ var Private;
|
|
|
648
740
|
return;
|
|
649
741
|
}
|
|
650
742
|
const dialog = new LayerBrowserWidget({
|
|
651
|
-
|
|
743
|
+
model: current.model,
|
|
652
744
|
registry: layerBrowserRegistry.getRegistryLayers(),
|
|
653
745
|
formSchemaRegistry
|
|
654
746
|
});
|
|
@@ -663,7 +755,7 @@ var Private;
|
|
|
663
755
|
return;
|
|
664
756
|
}
|
|
665
757
|
const dialog = new SymbologyWidget({
|
|
666
|
-
|
|
758
|
+
model: current.model,
|
|
667
759
|
state
|
|
668
760
|
});
|
|
669
761
|
await dialog.launch();
|
|
@@ -677,7 +769,7 @@ var Private;
|
|
|
677
769
|
return;
|
|
678
770
|
}
|
|
679
771
|
const dialog = new CreationFormDialog({
|
|
680
|
-
|
|
772
|
+
model: current.model,
|
|
681
773
|
title,
|
|
682
774
|
createLayer,
|
|
683
775
|
createSource,
|
|
@@ -720,8 +812,8 @@ var Private;
|
|
|
720
812
|
}
|
|
721
813
|
Private.getUserInputForRename = getUserInputForRename;
|
|
722
814
|
function removeSelectedItems(model, itemTypeToRemove, removeFunction) {
|
|
723
|
-
var _a;
|
|
724
|
-
const selected = (_a = model === null || model === void 0 ? void 0 : model.localState) === null || _a === void 0 ? void 0 : _a.selected.value;
|
|
815
|
+
var _a, _b;
|
|
816
|
+
const selected = (_b = (_a = model === null || model === void 0 ? void 0 : model.localState) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.value;
|
|
725
817
|
if (!selected) {
|
|
726
818
|
console.info('Nothing selected');
|
|
727
819
|
return;
|
|
@@ -775,7 +867,7 @@ var Private;
|
|
|
775
867
|
Private.renameSelectedItem = renameSelectedItem;
|
|
776
868
|
function executeConsole(tracker) {
|
|
777
869
|
const current = tracker.currentWidget;
|
|
778
|
-
if (!current) {
|
|
870
|
+
if (!current || !(current instanceof JupyterGISDocumentWidget)) {
|
|
779
871
|
return;
|
|
780
872
|
}
|
|
781
873
|
current.content.executeConsole();
|
|
@@ -783,7 +875,7 @@ var Private;
|
|
|
783
875
|
Private.executeConsole = executeConsole;
|
|
784
876
|
function removeConsole(tracker) {
|
|
785
877
|
const current = tracker.currentWidget;
|
|
786
|
-
if (!current) {
|
|
878
|
+
if (!current || !(current instanceof JupyterGISDocumentWidget)) {
|
|
787
879
|
return;
|
|
788
880
|
}
|
|
789
881
|
current.content.removeConsole();
|
|
@@ -791,18 +883,10 @@ var Private;
|
|
|
791
883
|
Private.removeConsole = removeConsole;
|
|
792
884
|
async function toggleConsole(tracker) {
|
|
793
885
|
const current = tracker.currentWidget;
|
|
794
|
-
if (!current) {
|
|
886
|
+
if (!current || !(current instanceof JupyterGISDocumentWidget)) {
|
|
795
887
|
return;
|
|
796
888
|
}
|
|
797
|
-
|
|
798
|
-
let realPath = '';
|
|
799
|
-
if (currentPath.length > 1) {
|
|
800
|
-
realPath = currentPath[1];
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
realPath = currentPath[0];
|
|
804
|
-
}
|
|
805
|
-
await current.content.toggleConsole(realPath);
|
|
889
|
+
await current.content.toggleConsole(current.model.filePath);
|
|
806
890
|
}
|
|
807
891
|
Private.toggleConsole = toggleConsole;
|
|
808
892
|
})(Private || (Private = {}));
|
package/lib/constants.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare namespace CommandIDs {
|
|
|
8
8
|
const undo = "jupytergis:undo";
|
|
9
9
|
const symbology = "jupytergis:symbology";
|
|
10
10
|
const identify = "jupytergis:identify";
|
|
11
|
+
const temporalController = "jupytergis:temporalController";
|
|
11
12
|
const openLayerBrowser = "jupytergis:openLayerBrowser";
|
|
12
13
|
const newRasterEntry = "jupytergis:newRasterEntry";
|
|
13
14
|
const newVectorTileEntry = "jupytergis:newVectorTileEntry";
|
|
@@ -31,6 +32,7 @@ export declare namespace CommandIDs {
|
|
|
31
32
|
const newVideoLayer = "jupytergis:newVideoLayer";
|
|
32
33
|
const newShapefileLayer = "jupytergis:newShapefileLayer";
|
|
33
34
|
const newWebGlTileLayer = "jupytergis:newWebGlTileLayer";
|
|
35
|
+
const newHeatmapLayer = "jupytergis:newHeatmapLayer";
|
|
34
36
|
const renameLayer = "jupytergis:renameLayer";
|
|
35
37
|
const removeLayer = "jupytergis:removeLayer";
|
|
36
38
|
const renameGroup = "jupytergis:renameGroup";
|
|
@@ -45,6 +47,7 @@ export declare namespace CommandIDs {
|
|
|
45
47
|
const executeConsole = "jupytergis:executeConsole";
|
|
46
48
|
const selectCompleter = "jupytergis:selectConsoleCompleter";
|
|
47
49
|
const addAnnotation = "jupytergis:addAnnotation";
|
|
50
|
+
const zoomToLayer = "jupytergis:zoomToLayer";
|
|
48
51
|
}
|
|
49
52
|
interface IRegisteredIcon {
|
|
50
53
|
icon?: LabIcon;
|
package/lib/constants.js
CHANGED
|
@@ -10,6 +10,7 @@ export var CommandIDs;
|
|
|
10
10
|
CommandIDs.undo = 'jupytergis:undo';
|
|
11
11
|
CommandIDs.symbology = 'jupytergis:symbology';
|
|
12
12
|
CommandIDs.identify = 'jupytergis:identify';
|
|
13
|
+
CommandIDs.temporalController = 'jupytergis:temporalController';
|
|
13
14
|
// Layers and sources creation commands
|
|
14
15
|
CommandIDs.openLayerBrowser = 'jupytergis:openLayerBrowser';
|
|
15
16
|
// Layer and source
|
|
@@ -37,6 +38,7 @@ export var CommandIDs;
|
|
|
37
38
|
CommandIDs.newVideoLayer = 'jupytergis:newVideoLayer';
|
|
38
39
|
CommandIDs.newShapefileLayer = 'jupytergis:newShapefileLayer';
|
|
39
40
|
CommandIDs.newWebGlTileLayer = 'jupytergis:newWebGlTileLayer';
|
|
41
|
+
CommandIDs.newHeatmapLayer = 'jupytergis:newHeatmapLayer';
|
|
40
42
|
// Layer and group actions
|
|
41
43
|
CommandIDs.renameLayer = 'jupytergis:renameLayer';
|
|
42
44
|
CommandIDs.removeLayer = 'jupytergis:removeLayer';
|
|
@@ -55,6 +57,7 @@ export var CommandIDs;
|
|
|
55
57
|
CommandIDs.selectCompleter = 'jupytergis:selectConsoleCompleter';
|
|
56
58
|
// Map Commands
|
|
57
59
|
CommandIDs.addAnnotation = 'jupytergis:addAnnotation';
|
|
60
|
+
CommandIDs.zoomToLayer = 'jupytergis:zoomToLayer';
|
|
58
61
|
})(CommandIDs || (CommandIDs = {}));
|
|
59
62
|
const iconObject = {
|
|
60
63
|
RasterSource: { icon: rasterIcon },
|
|
@@ -81,7 +84,8 @@ const iconObject = {
|
|
|
81
84
|
[CommandIDs.newShapefileLayer]: { iconClass: 'fa fa-file' },
|
|
82
85
|
[CommandIDs.newGeoTiffEntry]: { iconClass: 'fa fa-image' },
|
|
83
86
|
[CommandIDs.symbology]: { iconClass: 'fa fa-brush' },
|
|
84
|
-
[CommandIDs.identify]: { iconClass: 'fa fa-info' }
|
|
87
|
+
[CommandIDs.identify]: { iconClass: 'fa fa-info' },
|
|
88
|
+
[CommandIDs.temporalController]: { iconClass: 'fa fa-clock' }
|
|
85
89
|
};
|
|
86
90
|
/**
|
|
87
91
|
* The registered icons
|
|
@@ -16,6 +16,11 @@ export interface ICreationFormWrapperProps extends ICreationFormProps {
|
|
|
16
16
|
* some extra errors or not.
|
|
17
17
|
*/
|
|
18
18
|
formErrorSignalPromise?: PromiseDelegate<Signal<Dialog<any>, boolean>>;
|
|
19
|
+
/**
|
|
20
|
+
* Configuration options for the dialog, including settings for layer data, source data,
|
|
21
|
+
* and other form-related parameters.
|
|
22
|
+
*/
|
|
23
|
+
dialogOptions?: any;
|
|
19
24
|
}
|
|
20
25
|
export interface ICreationFormDialogOptions extends ICreationFormProps {
|
|
21
26
|
title: string;
|
|
@@ -16,7 +16,7 @@ export const CreationFormWrapper = (props) => {
|
|
|
16
16
|
formErrorSignal.current = formChanged;
|
|
17
17
|
setReady(true);
|
|
18
18
|
});
|
|
19
|
-
return (ready && (React.createElement(CreationForm, {
|
|
19
|
+
return (ready && (React.createElement(CreationForm, { model: props.model, formSchemaRegistry: props.formSchemaRegistry, createLayer: props.createLayer, createSource: props.createSource, layerType: props.layerType, sourceType: props.sourceType, sourceData: props.sourceData, layerData: props.layerData, ok: okSignal.current, cancel: props.cancel, formErrorSignal: formErrorSignal.current, dialogOptions: props.dialogOptions })));
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
22
|
* Form for creating a source, a layer or both at the same time
|
|
@@ -29,7 +29,7 @@ export class CreationFormDialog extends Dialog {
|
|
|
29
29
|
const okSignalPromise = new PromiseDelegate();
|
|
30
30
|
const formErrorSignalPromise = new PromiseDelegate();
|
|
31
31
|
const body = (React.createElement("div", { style: { overflow: 'auto' } },
|
|
32
|
-
React.createElement(CreationFormWrapper, {
|
|
32
|
+
React.createElement(CreationFormWrapper, { model: options.model, formSchemaRegistry: options.formSchemaRegistry, createLayer: options.createLayer, createSource: options.createSource, layerType: options.layerType, sourceType: options.sourceType, sourceData: options.sourceData, layerData: options.layerData, okSignalPromise: okSignalPromise, cancel: cancelCallback, formErrorSignalPromise: formErrorSignalPromise, dialogOptions: options })));
|
|
33
33
|
super({
|
|
34
34
|
title: options.title,
|
|
35
35
|
body,
|