Skip to content

Commit 1a6ce84

Browse files
committed
Rework raster layer creation
1 parent bf72850 commit 1a6ce84

File tree

10 files changed

+235
-223
lines changed

10 files changed

+235
-223
lines changed

packages/base/src/commands.ts

Lines changed: 14 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
import { JupyterFrontEnd } from '@jupyterlab/application';
2-
import { Dialog, WidgetTracker } from '@jupyterlab/apputils';
2+
import { WidgetTracker } from '@jupyterlab/apputils';
33
import { ITranslator } from '@jupyterlab/translation';
44
import { redoIcon, undoIcon } from '@jupyterlab/ui-components';
55

66
import {
7-
IDict,
87
IJGISFormSchemaRegistry,
9-
IJGISLayer,
10-
IJGISLayerBrowserRegistry,
11-
IJGISSource,
12-
IJupyterGISModel
8+
IJGISLayerBrowserRegistry
139
} from '@jupytergis/schema';
14-
import { UUID } from '@lumino/coreutils';
15-
import { FormDialog } from './formdialog';
1610

1711
import { LayerBrowserWidget } from './layerBrowser/layerBrowserDialog';
1812
import { JupyterGISWidget } from './widget';
@@ -65,17 +59,6 @@ export function addCommands(
6559
icon: undoIcon
6660
});
6761

68-
commands.addCommand(CommandIDs.newRasterLayer, {
69-
label: trans.__('New Tile Layer'),
70-
isEnabled: () => {
71-
return tracker.currentWidget
72-
? tracker.currentWidget.context.model.sharedModel.editable
73-
: false;
74-
},
75-
iconClass: 'fa fa-map',
76-
execute: Private.createRasterSourceAndLayer(tracker)
77-
});
78-
7962
commands.addCommand(CommandIDs.openLayerBrowser, {
8063
label: trans.__('Open Layer Browser'),
8164
isEnabled: () => {
@@ -84,7 +67,11 @@ export function addCommands(
8467
: false;
8568
},
8669
iconClass: 'fa fa-book-open',
87-
execute: Private.createLayerBrowser(tracker, layerBrowserRegistry)
70+
execute: Private.createLayerBrowser(
71+
tracker,
72+
layerBrowserRegistry,
73+
formSchemaRegistry
74+
)
8875
});
8976
}
9077

@@ -95,7 +82,6 @@ export namespace CommandIDs {
9582
export const redo = 'jupytergis:redo';
9683
export const undo = 'jupytergis:undo';
9784

98-
export const newRasterLayer = 'jupytergis:newRasterLayer';
9985
export const openLayerBrowser = 'jupytergis:openLayerBrowser';
10086
}
10187

@@ -121,7 +107,8 @@ namespace Private {
121107

122108
export function createLayerBrowser(
123109
tracker: WidgetTracker<JupyterGISWidget>,
124-
layerBrowserRegistry: IJGISLayerBrowserRegistry
110+
layerBrowserRegistry: IJGISLayerBrowserRegistry,
111+
formSchemaRegistry: IJGISFormSchemaRegistry
125112
) {
126113
return async () => {
127114
const current = tracker.currentWidget;
@@ -130,84 +117,11 @@ namespace Private {
130117
return;
131118
}
132119

133-
const dialog = new Dialog({
134-
body: new LayerBrowserWidget(
135-
current.context.model,
136-
layerBrowserRegistry.getRegistryLayers()
137-
),
138-
buttons: [Dialog.cancelButton(), Dialog.okButton()]
139-
});
140-
await dialog.launch();
141-
};
142-
}
143-
144-
// TODO Allow for creating only a source (e.g. loading a CSV file)
145-
// TODO Allow for creating only a layer (e.g. creating a vector layer given a source selected from a dropdown)
146-
export function createRasterSourceAndLayer(
147-
tracker: WidgetTracker<JupyterGISWidget>
148-
) {
149-
return async (args: any) => {
150-
const current = tracker.currentWidget;
151-
152-
if (!current) {
153-
return;
154-
}
155-
156-
const form = {
157-
title: 'Raster Layer parameters',
158-
default: (model: IJupyterGISModel) => {
159-
return {
160-
name: 'RasterSource',
161-
url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
162-
maxZoom: 24,
163-
minZoom: 0
164-
};
165-
}
166-
};
167-
168-
current.context.model.syncFormData(form);
169-
170-
const dialog = new FormDialog({
171-
context: current.context,
172-
title: form.title,
173-
sourceData: form.default(current.context.model),
174-
schema: FORM_SCHEMA['RasterSource'],
175-
syncData: (props: IDict) => {
176-
const sharedModel = current.context.model.sharedModel;
177-
if (!sharedModel) {
178-
return;
179-
}
180-
181-
const { name, ...parameters } = props;
182-
183-
const sourceId = UUID.uuid4();
184-
185-
const sourceModel: IJGISSource = {
186-
type: 'RasterSource',
187-
name,
188-
parameters: {
189-
url: parameters.url,
190-
minZoom: parameters.minZoom,
191-
maxZoom: parameters.maxZoom
192-
}
193-
};
194-
195-
const layerModel: IJGISLayer = {
196-
type: 'RasterLayer',
197-
parameters: {
198-
source: sourceId
199-
},
200-
visible: true,
201-
name: name + ' Layer'
202-
};
203-
204-
sharedModel.addSource(sourceId, sourceModel);
205-
current.context.model.addLayer(UUID.uuid4(), layerModel);
206-
},
207-
cancelButton: () => {
208-
current.context.model.syncFormData(undefined);
209-
}
210-
});
120+
const dialog = new LayerBrowserWidget(
121+
current.context.model,
122+
layerBrowserRegistry.getRegistryLayers(),
123+
formSchemaRegistry
124+
);
211125
await dialog.launch();
212126
};
213127
}

packages/base/src/formdialog.tsx

Lines changed: 0 additions & 46 deletions
This file was deleted.

packages/base/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export * from './commands';
2-
export * from './formdialog';
32
export * from './mainview';
43
export * from './tools';
54
export * from './types';

0 commit comments

Comments
 (0)