@jupytergis/base 0.3.0 → 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 +1 -1
- 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 +117 -62
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js +4 -1
- 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/hooks/useGetBandInfo.d.ts +1 -2
- package/lib/dialogs/symbology/hooks/useGetBandInfo.js +11 -6
- package/lib/dialogs/symbology/hooks/useGetProperties.d.ts +1 -1
- package/lib/dialogs/symbology/hooks/useGetProperties.js +6 -8
- 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 +6 -6
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.d.ts +1 -1
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +5 -4
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.d.ts +1 -1
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +8 -7
- 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 +1 -2
- package/lib/formbuilder/creationform.js +4 -4
- package/lib/formbuilder/editform.d.ts +1 -2
- package/lib/formbuilder/editform.js +7 -7
- package/lib/formbuilder/formselectors.js +5 -2
- package/lib/formbuilder/objectform/baseform.d.ts +3 -4
- package/lib/formbuilder/objectform/baseform.js +2 -2
- package/lib/formbuilder/objectform/fileselectorwidget.js +13 -6
- 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/vectorlayerform.d.ts +0 -2
- package/lib/formbuilder/objectform/vectorlayerform.js +0 -59
- package/lib/mainview/TemporalSlider.d.ts +8 -0
- package/lib/mainview/TemporalSlider.js +303 -0
- package/lib/mainview/mainView.d.ts +25 -4
- package/lib/mainview/mainView.js +213 -75
- 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 +4 -25
- 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/toolbar/widget.d.ts +1 -1
- package/lib/toolbar/widget.js +44 -32
- package/lib/tools.d.ts +10 -6
- package/lib/tools.js +89 -15
- package/lib/types.d.ts +2 -0
- package/lib/widget.d.ts +29 -5
- package/lib/widget.js +41 -7
- package/package.json +4 -3
- package/style/base.css +10 -0
- package/style/symbologyDialog.css +7 -1
- package/style/temporalSlider.css +47 -0
package/lib/widget.js
CHANGED
|
@@ -9,20 +9,26 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
import {
|
|
13
|
-
import { SplitPanel } from '@lumino/widgets';
|
|
12
|
+
import { MainAreaWidget } from '@jupyterlab/apputils';
|
|
14
13
|
import { DocumentWidget } from '@jupyterlab/docregistry';
|
|
15
14
|
import { ObservableMap } from '@jupyterlab/observables';
|
|
15
|
+
import { Signal } from '@lumino/signaling';
|
|
16
|
+
import { SplitPanel, Widget } from '@lumino/widgets';
|
|
16
17
|
import { JupyterGISMainViewPanel } from './mainview';
|
|
17
18
|
import { MainViewModel } from './mainview/mainviewmodel';
|
|
18
19
|
import { ConsoleView } from './console';
|
|
19
|
-
|
|
20
|
+
import { MessageLoop } from '@lumino/messaging';
|
|
21
|
+
const CELL_OUTPUT_WIDGET_CLASS = 'jgis-cell-output-widget';
|
|
22
|
+
export class JupyterGISDocumentWidget extends DocumentWidget {
|
|
20
23
|
constructor(options) {
|
|
21
24
|
super(options);
|
|
22
25
|
this.onResize = (msg) => {
|
|
23
26
|
window.dispatchEvent(new Event('resize'));
|
|
24
27
|
};
|
|
25
28
|
}
|
|
29
|
+
get model() {
|
|
30
|
+
return this.context.model;
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* Dispose of the resources held by the widget.
|
|
28
34
|
*/
|
|
@@ -31,12 +37,39 @@ export class JupyterGISWidget extends DocumentWidget {
|
|
|
31
37
|
super.dispose();
|
|
32
38
|
}
|
|
33
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* A main area widget designed to be used as Notebook cell output widget, to ease the
|
|
42
|
+
* integration of toolbar and tracking.
|
|
43
|
+
*/
|
|
44
|
+
export class JupyterGISOutputWidget extends MainAreaWidget {
|
|
45
|
+
constructor(options) {
|
|
46
|
+
super(options);
|
|
47
|
+
this.addClass(CELL_OUTPUT_WIDGET_CLASS);
|
|
48
|
+
this.model = options.model;
|
|
49
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
50
|
+
// Send a resize message to the widget, to update the child size.
|
|
51
|
+
MessageLoop.sendMessage(this, Widget.ResizeMessage.UnknownSize);
|
|
52
|
+
});
|
|
53
|
+
this.resizeObserver.observe(this.node);
|
|
54
|
+
this.model.disposed.connect(() => this.dispose());
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Dispose of the resources held by the widget.
|
|
58
|
+
*/
|
|
59
|
+
dispose() {
|
|
60
|
+
if (!this.isDisposed) {
|
|
61
|
+
this.resizeObserver.disconnect();
|
|
62
|
+
this.content.dispose();
|
|
63
|
+
super.dispose();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
34
67
|
export class JupyterGISPanel extends SplitPanel {
|
|
35
68
|
constructor(options) {
|
|
36
69
|
super({ orientation: 'vertical', spacing: 0 });
|
|
37
70
|
this._consoleOpened = false;
|
|
38
|
-
const { model, consoleTracker } = options, consoleOption = __rest(options, ["model", "consoleTracker"]);
|
|
39
|
-
this._initModel({ model });
|
|
71
|
+
const { model, consoleTracker, commandRegistry } = options, consoleOption = __rest(options, ["model", "consoleTracker", "commandRegistry"]);
|
|
72
|
+
this._initModel({ model, commandRegistry });
|
|
40
73
|
this._initView();
|
|
41
74
|
this._consoleOption = consoleOption;
|
|
42
75
|
this._consoleTracker = consoleTracker;
|
|
@@ -45,7 +78,8 @@ export class JupyterGISPanel extends SplitPanel {
|
|
|
45
78
|
this._view = new ObservableMap();
|
|
46
79
|
this._mainViewModel = new MainViewModel({
|
|
47
80
|
jGISModel: options.model,
|
|
48
|
-
viewSetting: this._view
|
|
81
|
+
viewSetting: this._view,
|
|
82
|
+
commands: options.commandRegistry
|
|
49
83
|
});
|
|
50
84
|
}
|
|
51
85
|
_initView() {
|
|
@@ -116,10 +150,10 @@ export class JupyterGISPanel extends SplitPanel {
|
|
|
116
150
|
const { consolePanel } = this._consoleView;
|
|
117
151
|
this._consoleTracker.widgetAdded.emit(consolePanel);
|
|
118
152
|
await consolePanel.sessionContext.ready;
|
|
119
|
-
await consolePanel.console.inject(`from jupytergis_lab import GISDocument\ndoc = GISDocument("${jgisPath}")`);
|
|
120
153
|
this.addWidget(this._consoleView);
|
|
121
154
|
this.setRelativeSizes([2, 1]);
|
|
122
155
|
this._consoleOpened = true;
|
|
156
|
+
await consolePanel.console.inject(`from jupytergis import GISDocument\ndoc = GISDocument("${jgisPath}")`);
|
|
123
157
|
consolePanel.console.sessionContext.kernelChanged.connect((_, arg) => {
|
|
124
158
|
if (!arg.newValue) {
|
|
125
159
|
this.removeConsole();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupytergis/base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A JupyterLab extension for 3D modelling.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@fortawesome/react-fontawesome": "latest",
|
|
44
44
|
"@jupyter/react-components": "^0.16.6",
|
|
45
45
|
"@jupyter/ydoc": "^2.0.0 || ^3.0.0",
|
|
46
|
-
"@jupytergis/schema": "^0.
|
|
46
|
+
"@jupytergis/schema": "^0.4.0",
|
|
47
47
|
"@jupyterlab/application": "^4.3.0",
|
|
48
48
|
"@jupyterlab/apputils": "^4.3.0",
|
|
49
49
|
"@jupyterlab/completer": "^4.3.0",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"ajv": "^8.14.0",
|
|
69
69
|
"colormap": "^2.3.2",
|
|
70
70
|
"d3-color": "^3.1.0",
|
|
71
|
+
"date-fns": "^4.1.0",
|
|
71
72
|
"gdal3.js": "^2.8.1",
|
|
72
73
|
"geojson-vt": "^4.0.2",
|
|
73
74
|
"geotiff": "^2.1.3",
|
|
@@ -76,7 +77,7 @@
|
|
|
76
77
|
"pbf": "^4.0.1",
|
|
77
78
|
"pmtiles": "^3.0.7",
|
|
78
79
|
"proj4": "^2.14.0",
|
|
79
|
-
"proj4-list": "^1.0.
|
|
80
|
+
"proj4-list": "^1.0.4",
|
|
80
81
|
"react": "^18.0.1",
|
|
81
82
|
"shpjs": "^6.1.0",
|
|
82
83
|
"styled-components": "^5.3.6",
|
package/style/base.css
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
@import url('./filterPanel.css');
|
|
10
10
|
@import url('./symbologyDialog.css');
|
|
11
11
|
@import url('./statusBar.css');
|
|
12
|
+
@import url('./temporalSlider.css');
|
|
12
13
|
@import url('ol/ol.css');
|
|
13
14
|
|
|
14
15
|
.jGIS-Toolbar-GroupName {
|
|
@@ -49,3 +50,12 @@
|
|
|
49
50
|
display: block;
|
|
50
51
|
position: relative;
|
|
51
52
|
}
|
|
53
|
+
|
|
54
|
+
/*This is being upstreamed. Will remove once upstream's been fixed.*/
|
|
55
|
+
button.jp-mod-styled.jp-mod-accept {
|
|
56
|
+
background-color: var(--jp-brand-color1) !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
button.jp-mod-styled.jp-mod-reject {
|
|
60
|
+
background-color: var(--jp-layout-color4) !important;
|
|
61
|
+
}
|
|
@@ -159,7 +159,7 @@ select option {
|
|
|
159
159
|
z-index: 40;
|
|
160
160
|
flex: 1 1 auto;
|
|
161
161
|
width: 97%;
|
|
162
|
-
max-height:
|
|
162
|
+
max-height: 20rem;
|
|
163
163
|
background: var(--jp-input-background);
|
|
164
164
|
padding-left: 8px;
|
|
165
165
|
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
|
@@ -207,6 +207,12 @@ select option {
|
|
|
207
207
|
width: 100%;
|
|
208
208
|
height: 30px;
|
|
209
209
|
visibility: initial;
|
|
210
|
+
border-radius: var(--jp-border-radius);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.jp-Dialog-content:has(.jp-gis-heatmap),
|
|
214
|
+
.jp-Dialog-body:has(.jp-gis-heatmap) {
|
|
215
|
+
overflow: visible;
|
|
210
216
|
}
|
|
211
217
|
|
|
212
218
|
.jp-gis-canvas-button-wrapper {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
.jp-gis-temporal-slider-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: 0.2rem;
|
|
5
|
+
padding: 0.5rem;
|
|
6
|
+
background-color: var(--jp-layout-color1);
|
|
7
|
+
border-bottom: 1px solid var(--jp-border-color1);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.jp-gis-temporal-slider-container span,
|
|
11
|
+
.jp-gis-temporal-slider-container label {
|
|
12
|
+
font-weight: bold;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.jp-gis-temporal-slider-row {
|
|
16
|
+
display: flex;
|
|
17
|
+
gap: 0.25rem;
|
|
18
|
+
justify-content: space-between;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.jp-gis-temporal-slider-controls {
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
justify-content: space-around;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.jp-gis-temporal-slider-sub-controls {
|
|
29
|
+
display: flex;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
align-items: center;
|
|
32
|
+
gap: 0.25rem;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.jp-gis-temporal-slider-sub-controls > input {
|
|
36
|
+
width: 35px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
select,
|
|
40
|
+
select option {
|
|
41
|
+
text-transform: capitalize;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.jp-gis-temporal-slider {
|
|
45
|
+
flex: 1 0 40%;
|
|
46
|
+
min-width: 300px;
|
|
47
|
+
}
|