@jupytergis/schema 0.1.7 → 0.2.1
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/_interface/geojson.d.ts +387 -0
- package/lib/_interface/jgis.d.ts +7 -0
- package/lib/doc.d.ts +11 -0
- package/lib/doc.js +35 -2
- package/lib/interfaces.d.ts +70 -3
- package/lib/model.d.ts +25 -5
- package/lib/model.js +79 -42
- package/lib/schema/geojson.json +1491 -0
- package/lib/schema/geojsonsource.json +1 -1
- package/lib/schema/jgis.json +9 -0
- package/lib/token.d.ts +2 -1
- package/lib/token.js +1 -0
- package/package.json +2 -3
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated by json-schema-to-typescript.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
|
|
5
|
+
* and run json-schema-to-typescript to regenerate this file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export type GeoJSON =
|
|
9
|
+
| GeoJSONPoint
|
|
10
|
+
| GeoJSONLineString
|
|
11
|
+
| GeoJSONPolygon
|
|
12
|
+
| GeoJSONMultiPoint
|
|
13
|
+
| GeoJSONMultiLineString
|
|
14
|
+
| GeoJSONMultiPolygon
|
|
15
|
+
| GeoJSONGeometryCollection
|
|
16
|
+
| GeoJSONFeature
|
|
17
|
+
| GeoJSONFeatureCollection;
|
|
18
|
+
|
|
19
|
+
export interface GeoJSONPoint {
|
|
20
|
+
type: "Point";
|
|
21
|
+
coordinates: [number, number, ...number[]];
|
|
22
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
23
|
+
[k: string]: any;
|
|
24
|
+
}
|
|
25
|
+
export interface GeoJSONLineString {
|
|
26
|
+
type: "LineString";
|
|
27
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
28
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
29
|
+
[k: string]: any;
|
|
30
|
+
}
|
|
31
|
+
export interface GeoJSONPolygon {
|
|
32
|
+
type: "Polygon";
|
|
33
|
+
coordinates: [
|
|
34
|
+
[number, number, ...number[]],
|
|
35
|
+
[number, number, ...number[]],
|
|
36
|
+
[number, number, ...number[]],
|
|
37
|
+
[number, number, ...number[]],
|
|
38
|
+
...[number, number, ...number[]][]
|
|
39
|
+
][];
|
|
40
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
41
|
+
[k: string]: any;
|
|
42
|
+
}
|
|
43
|
+
export interface GeoJSONMultiPoint {
|
|
44
|
+
type: "MultiPoint";
|
|
45
|
+
coordinates: [number, number, ...number[]][];
|
|
46
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
47
|
+
[k: string]: any;
|
|
48
|
+
}
|
|
49
|
+
export interface GeoJSONMultiLineString {
|
|
50
|
+
type: "MultiLineString";
|
|
51
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
52
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
53
|
+
[k: string]: any;
|
|
54
|
+
}
|
|
55
|
+
export interface GeoJSONMultiPolygon {
|
|
56
|
+
type: "MultiPolygon";
|
|
57
|
+
coordinates: [
|
|
58
|
+
[number, number, ...number[]],
|
|
59
|
+
[number, number, ...number[]],
|
|
60
|
+
[number, number, ...number[]],
|
|
61
|
+
[number, number, ...number[]],
|
|
62
|
+
...[number, number, ...number[]][]
|
|
63
|
+
][][];
|
|
64
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
65
|
+
[k: string]: any;
|
|
66
|
+
}
|
|
67
|
+
export interface GeoJSONGeometryCollection {
|
|
68
|
+
type: "GeometryCollection";
|
|
69
|
+
geometries: (
|
|
70
|
+
| GeoJSONPoint1
|
|
71
|
+
| GeoJSONLineString1
|
|
72
|
+
| GeoJSONPolygon1
|
|
73
|
+
| GeoJSONMultiPoint1
|
|
74
|
+
| GeoJSONMultiLineString1
|
|
75
|
+
| GeoJSONMultiPolygon1
|
|
76
|
+
)[];
|
|
77
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
78
|
+
[k: string]: any;
|
|
79
|
+
}
|
|
80
|
+
export interface GeoJSONPoint1 {
|
|
81
|
+
type: "Point";
|
|
82
|
+
coordinates: [number, number, ...number[]];
|
|
83
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
84
|
+
[k: string]: any;
|
|
85
|
+
}
|
|
86
|
+
export interface GeoJSONLineString1 {
|
|
87
|
+
type: "LineString";
|
|
88
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
89
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
90
|
+
[k: string]: any;
|
|
91
|
+
}
|
|
92
|
+
export interface GeoJSONPolygon1 {
|
|
93
|
+
type: "Polygon";
|
|
94
|
+
coordinates: [
|
|
95
|
+
[number, number, ...number[]],
|
|
96
|
+
[number, number, ...number[]],
|
|
97
|
+
[number, number, ...number[]],
|
|
98
|
+
[number, number, ...number[]],
|
|
99
|
+
...[number, number, ...number[]][]
|
|
100
|
+
][];
|
|
101
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
102
|
+
[k: string]: any;
|
|
103
|
+
}
|
|
104
|
+
export interface GeoJSONMultiPoint1 {
|
|
105
|
+
type: "MultiPoint";
|
|
106
|
+
coordinates: [number, number, ...number[]][];
|
|
107
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
108
|
+
[k: string]: any;
|
|
109
|
+
}
|
|
110
|
+
export interface GeoJSONMultiLineString1 {
|
|
111
|
+
type: "MultiLineString";
|
|
112
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
113
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
114
|
+
[k: string]: any;
|
|
115
|
+
}
|
|
116
|
+
export interface GeoJSONMultiPolygon1 {
|
|
117
|
+
type: "MultiPolygon";
|
|
118
|
+
coordinates: [
|
|
119
|
+
[number, number, ...number[]],
|
|
120
|
+
[number, number, ...number[]],
|
|
121
|
+
[number, number, ...number[]],
|
|
122
|
+
[number, number, ...number[]],
|
|
123
|
+
...[number, number, ...number[]][]
|
|
124
|
+
][][];
|
|
125
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
126
|
+
[k: string]: any;
|
|
127
|
+
}
|
|
128
|
+
export interface GeoJSONFeature {
|
|
129
|
+
type: "Feature";
|
|
130
|
+
id?: number | string;
|
|
131
|
+
properties: null | {
|
|
132
|
+
[k: string]: any;
|
|
133
|
+
};
|
|
134
|
+
geometry:
|
|
135
|
+
| null
|
|
136
|
+
| GeoJSONPoint2
|
|
137
|
+
| GeoJSONLineString2
|
|
138
|
+
| GeoJSONPolygon2
|
|
139
|
+
| GeoJSONMultiPoint2
|
|
140
|
+
| GeoJSONMultiLineString2
|
|
141
|
+
| GeoJSONMultiPolygon2
|
|
142
|
+
| GeoJSONGeometryCollection1;
|
|
143
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
144
|
+
[k: string]: any;
|
|
145
|
+
}
|
|
146
|
+
export interface GeoJSONPoint2 {
|
|
147
|
+
type: "Point";
|
|
148
|
+
coordinates: [number, number, ...number[]];
|
|
149
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
150
|
+
[k: string]: any;
|
|
151
|
+
}
|
|
152
|
+
export interface GeoJSONLineString2 {
|
|
153
|
+
type: "LineString";
|
|
154
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
155
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
156
|
+
[k: string]: any;
|
|
157
|
+
}
|
|
158
|
+
export interface GeoJSONPolygon2 {
|
|
159
|
+
type: "Polygon";
|
|
160
|
+
coordinates: [
|
|
161
|
+
[number, number, ...number[]],
|
|
162
|
+
[number, number, ...number[]],
|
|
163
|
+
[number, number, ...number[]],
|
|
164
|
+
[number, number, ...number[]],
|
|
165
|
+
...[number, number, ...number[]][]
|
|
166
|
+
][];
|
|
167
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
168
|
+
[k: string]: any;
|
|
169
|
+
}
|
|
170
|
+
export interface GeoJSONMultiPoint2 {
|
|
171
|
+
type: "MultiPoint";
|
|
172
|
+
coordinates: [number, number, ...number[]][];
|
|
173
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
174
|
+
[k: string]: any;
|
|
175
|
+
}
|
|
176
|
+
export interface GeoJSONMultiLineString2 {
|
|
177
|
+
type: "MultiLineString";
|
|
178
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
179
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
180
|
+
[k: string]: any;
|
|
181
|
+
}
|
|
182
|
+
export interface GeoJSONMultiPolygon2 {
|
|
183
|
+
type: "MultiPolygon";
|
|
184
|
+
coordinates: [
|
|
185
|
+
[number, number, ...number[]],
|
|
186
|
+
[number, number, ...number[]],
|
|
187
|
+
[number, number, ...number[]],
|
|
188
|
+
[number, number, ...number[]],
|
|
189
|
+
...[number, number, ...number[]][]
|
|
190
|
+
][][];
|
|
191
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
192
|
+
[k: string]: any;
|
|
193
|
+
}
|
|
194
|
+
export interface GeoJSONGeometryCollection1 {
|
|
195
|
+
type: "GeometryCollection";
|
|
196
|
+
geometries: (
|
|
197
|
+
| GeoJSONPoint3
|
|
198
|
+
| GeoJSONLineString3
|
|
199
|
+
| GeoJSONPolygon3
|
|
200
|
+
| GeoJSONMultiPoint3
|
|
201
|
+
| GeoJSONMultiLineString3
|
|
202
|
+
| GeoJSONMultiPolygon3
|
|
203
|
+
)[];
|
|
204
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
205
|
+
[k: string]: any;
|
|
206
|
+
}
|
|
207
|
+
export interface GeoJSONPoint3 {
|
|
208
|
+
type: "Point";
|
|
209
|
+
coordinates: [number, number, ...number[]];
|
|
210
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
211
|
+
[k: string]: any;
|
|
212
|
+
}
|
|
213
|
+
export interface GeoJSONLineString3 {
|
|
214
|
+
type: "LineString";
|
|
215
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
216
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
217
|
+
[k: string]: any;
|
|
218
|
+
}
|
|
219
|
+
export interface GeoJSONPolygon3 {
|
|
220
|
+
type: "Polygon";
|
|
221
|
+
coordinates: [
|
|
222
|
+
[number, number, ...number[]],
|
|
223
|
+
[number, number, ...number[]],
|
|
224
|
+
[number, number, ...number[]],
|
|
225
|
+
[number, number, ...number[]],
|
|
226
|
+
...[number, number, ...number[]][]
|
|
227
|
+
][];
|
|
228
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
229
|
+
[k: string]: any;
|
|
230
|
+
}
|
|
231
|
+
export interface GeoJSONMultiPoint3 {
|
|
232
|
+
type: "MultiPoint";
|
|
233
|
+
coordinates: [number, number, ...number[]][];
|
|
234
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
235
|
+
[k: string]: any;
|
|
236
|
+
}
|
|
237
|
+
export interface GeoJSONMultiLineString3 {
|
|
238
|
+
type: "MultiLineString";
|
|
239
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
240
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
241
|
+
[k: string]: any;
|
|
242
|
+
}
|
|
243
|
+
export interface GeoJSONMultiPolygon3 {
|
|
244
|
+
type: "MultiPolygon";
|
|
245
|
+
coordinates: [
|
|
246
|
+
[number, number, ...number[]],
|
|
247
|
+
[number, number, ...number[]],
|
|
248
|
+
[number, number, ...number[]],
|
|
249
|
+
[number, number, ...number[]],
|
|
250
|
+
...[number, number, ...number[]][]
|
|
251
|
+
][][];
|
|
252
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
253
|
+
[k: string]: any;
|
|
254
|
+
}
|
|
255
|
+
export interface GeoJSONFeatureCollection {
|
|
256
|
+
type: "FeatureCollection";
|
|
257
|
+
features: GeoJSONFeature1[];
|
|
258
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
259
|
+
[k: string]: any;
|
|
260
|
+
}
|
|
261
|
+
export interface GeoJSONFeature1 {
|
|
262
|
+
type: "Feature";
|
|
263
|
+
id?: number | string;
|
|
264
|
+
properties: null | {
|
|
265
|
+
[k: string]: any;
|
|
266
|
+
};
|
|
267
|
+
geometry:
|
|
268
|
+
| null
|
|
269
|
+
| GeoJSONPoint4
|
|
270
|
+
| GeoJSONLineString4
|
|
271
|
+
| GeoJSONPolygon4
|
|
272
|
+
| GeoJSONMultiPoint4
|
|
273
|
+
| GeoJSONMultiLineString4
|
|
274
|
+
| GeoJSONMultiPolygon4
|
|
275
|
+
| GeoJSONGeometryCollection2;
|
|
276
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
277
|
+
[k: string]: any;
|
|
278
|
+
}
|
|
279
|
+
export interface GeoJSONPoint4 {
|
|
280
|
+
type: "Point";
|
|
281
|
+
coordinates: [number, number, ...number[]];
|
|
282
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
283
|
+
[k: string]: any;
|
|
284
|
+
}
|
|
285
|
+
export interface GeoJSONLineString4 {
|
|
286
|
+
type: "LineString";
|
|
287
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
288
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
289
|
+
[k: string]: any;
|
|
290
|
+
}
|
|
291
|
+
export interface GeoJSONPolygon4 {
|
|
292
|
+
type: "Polygon";
|
|
293
|
+
coordinates: [
|
|
294
|
+
[number, number, ...number[]],
|
|
295
|
+
[number, number, ...number[]],
|
|
296
|
+
[number, number, ...number[]],
|
|
297
|
+
[number, number, ...number[]],
|
|
298
|
+
...[number, number, ...number[]][]
|
|
299
|
+
][];
|
|
300
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
301
|
+
[k: string]: any;
|
|
302
|
+
}
|
|
303
|
+
export interface GeoJSONMultiPoint4 {
|
|
304
|
+
type: "MultiPoint";
|
|
305
|
+
coordinates: [number, number, ...number[]][];
|
|
306
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
307
|
+
[k: string]: any;
|
|
308
|
+
}
|
|
309
|
+
export interface GeoJSONMultiLineString4 {
|
|
310
|
+
type: "MultiLineString";
|
|
311
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
312
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
313
|
+
[k: string]: any;
|
|
314
|
+
}
|
|
315
|
+
export interface GeoJSONMultiPolygon4 {
|
|
316
|
+
type: "MultiPolygon";
|
|
317
|
+
coordinates: [
|
|
318
|
+
[number, number, ...number[]],
|
|
319
|
+
[number, number, ...number[]],
|
|
320
|
+
[number, number, ...number[]],
|
|
321
|
+
[number, number, ...number[]],
|
|
322
|
+
...[number, number, ...number[]][]
|
|
323
|
+
][][];
|
|
324
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
325
|
+
[k: string]: any;
|
|
326
|
+
}
|
|
327
|
+
export interface GeoJSONGeometryCollection2 {
|
|
328
|
+
type: "GeometryCollection";
|
|
329
|
+
geometries: (
|
|
330
|
+
| GeoJSONPoint5
|
|
331
|
+
| GeoJSONLineString5
|
|
332
|
+
| GeoJSONPolygon5
|
|
333
|
+
| GeoJSONMultiPoint5
|
|
334
|
+
| GeoJSONMultiLineString5
|
|
335
|
+
| GeoJSONMultiPolygon5
|
|
336
|
+
)[];
|
|
337
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
338
|
+
[k: string]: any;
|
|
339
|
+
}
|
|
340
|
+
export interface GeoJSONPoint5 {
|
|
341
|
+
type: "Point";
|
|
342
|
+
coordinates: [number, number, ...number[]];
|
|
343
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
344
|
+
[k: string]: any;
|
|
345
|
+
}
|
|
346
|
+
export interface GeoJSONLineString5 {
|
|
347
|
+
type: "LineString";
|
|
348
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
|
|
349
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
350
|
+
[k: string]: any;
|
|
351
|
+
}
|
|
352
|
+
export interface GeoJSONPolygon5 {
|
|
353
|
+
type: "Polygon";
|
|
354
|
+
coordinates: [
|
|
355
|
+
[number, number, ...number[]],
|
|
356
|
+
[number, number, ...number[]],
|
|
357
|
+
[number, number, ...number[]],
|
|
358
|
+
[number, number, ...number[]],
|
|
359
|
+
...[number, number, ...number[]][]
|
|
360
|
+
][];
|
|
361
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
362
|
+
[k: string]: any;
|
|
363
|
+
}
|
|
364
|
+
export interface GeoJSONMultiPoint5 {
|
|
365
|
+
type: "MultiPoint";
|
|
366
|
+
coordinates: [number, number, ...number[]][];
|
|
367
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
368
|
+
[k: string]: any;
|
|
369
|
+
}
|
|
370
|
+
export interface GeoJSONMultiLineString5 {
|
|
371
|
+
type: "MultiLineString";
|
|
372
|
+
coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
|
|
373
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
374
|
+
[k: string]: any;
|
|
375
|
+
}
|
|
376
|
+
export interface GeoJSONMultiPolygon5 {
|
|
377
|
+
type: "MultiPolygon";
|
|
378
|
+
coordinates: [
|
|
379
|
+
[number, number, ...number[]],
|
|
380
|
+
[number, number, ...number[]],
|
|
381
|
+
[number, number, ...number[]],
|
|
382
|
+
[number, number, ...number[]],
|
|
383
|
+
...[number, number, ...number[]][]
|
|
384
|
+
][][];
|
|
385
|
+
bbox?: [number, number, number, number, ...number[]];
|
|
386
|
+
[k: string]: any;
|
|
387
|
+
}
|
package/lib/_interface/jgis.d.ts
CHANGED
|
@@ -45,6 +45,13 @@ export interface IJGISContent {
|
|
|
45
45
|
sources: IJGISSources;
|
|
46
46
|
layerTree?: IJGISLayerTree;
|
|
47
47
|
options?: IJGISOptions;
|
|
48
|
+
metadata?: {
|
|
49
|
+
/**
|
|
50
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
51
|
+
* via the `patternProperty` "^.*$".
|
|
52
|
+
*/
|
|
53
|
+
[k: string]: string;
|
|
54
|
+
};
|
|
48
55
|
}
|
|
49
56
|
/**
|
|
50
57
|
* This interface was referenced by `IJGISContent`'s JSON-Schema
|
package/lib/doc.d.ts
CHANGED
|
@@ -37,6 +37,14 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
|
|
|
37
37
|
updateSource(id: string, value: any): void;
|
|
38
38
|
getOption(key: keyof IJGISOptions): IDict | undefined;
|
|
39
39
|
setOption(key: keyof IJGISOptions, value: IDict): void;
|
|
40
|
+
getMetadata(key: string): string | undefined;
|
|
41
|
+
setMetadata(key: string, value: string): void;
|
|
42
|
+
removeMetadata(key: string): void;
|
|
43
|
+
get metadata(): JSONObject;
|
|
44
|
+
set metadata(metadata: {
|
|
45
|
+
[k: string]: string;
|
|
46
|
+
});
|
|
47
|
+
get metadataChanged(): ISignal<IJupyterGISDoc, MapChange>;
|
|
40
48
|
static create(): IJupyterGISDoc;
|
|
41
49
|
editable: boolean;
|
|
42
50
|
private _getLayerAsYMap;
|
|
@@ -45,12 +53,15 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
|
|
|
45
53
|
private _layerTreeObserver;
|
|
46
54
|
private _sourcesObserver;
|
|
47
55
|
private _optionsObserver;
|
|
56
|
+
private _metaObserver;
|
|
48
57
|
private _layers;
|
|
49
58
|
private _layerTree;
|
|
50
59
|
private _sources;
|
|
51
60
|
private _options;
|
|
61
|
+
private _metadata;
|
|
52
62
|
private _optionsChanged;
|
|
53
63
|
private _layersChanged;
|
|
54
64
|
private _layerTreeChanged;
|
|
55
65
|
private _sourcesChanged;
|
|
66
|
+
private _metadataChanged;
|
|
56
67
|
}
|
package/lib/doc.js
CHANGED
|
@@ -8,14 +8,19 @@ export class JupyterGISDoc extends YDocument {
|
|
|
8
8
|
this._optionsObserver = (event) => {
|
|
9
9
|
this._optionsChanged.emit(event.keys);
|
|
10
10
|
};
|
|
11
|
+
this._metaObserver = (event) => {
|
|
12
|
+
this._metadataChanged.emit(event.keys);
|
|
13
|
+
};
|
|
11
14
|
this._optionsChanged = new Signal(this);
|
|
12
15
|
this._layersChanged = new Signal(this);
|
|
13
16
|
this._layerTreeChanged = new Signal(this);
|
|
14
17
|
this._sourcesChanged = new Signal(this);
|
|
18
|
+
this._metadataChanged = new Signal(this);
|
|
15
19
|
this._options = this.ydoc.getMap('options');
|
|
16
20
|
this._layers = this.ydoc.getMap('layers');
|
|
17
21
|
this._layerTree = this.ydoc.getArray('layerTree');
|
|
18
22
|
this._sources = this.ydoc.getMap('sources');
|
|
23
|
+
this._metadata = this.ydoc.getMap('metadata');
|
|
19
24
|
this.undoManager.addToScope(this._layers);
|
|
20
25
|
this.undoManager.addToScope(this._sources);
|
|
21
26
|
this.undoManager.addToScope(this._layerTree);
|
|
@@ -23,20 +28,22 @@ export class JupyterGISDoc extends YDocument {
|
|
|
23
28
|
this._layerTree.observe(this._layerTreeObserver.bind(this));
|
|
24
29
|
this._sources.observeDeep(this._sourcesObserver.bind(this));
|
|
25
30
|
this._options.observe(this._optionsObserver.bind(this));
|
|
31
|
+
this._metadata.observe(this._metaObserver.bind(this));
|
|
26
32
|
}
|
|
27
33
|
getSource() {
|
|
28
34
|
const layers = this._layers.toJSON();
|
|
29
35
|
const layerTree = this._layerTree.toJSON();
|
|
30
36
|
const options = this._options.toJSON();
|
|
31
37
|
const sources = this._sources.toJSON();
|
|
32
|
-
|
|
38
|
+
const metadata = this._metadata.toJSON();
|
|
39
|
+
return { layers, layerTree, sources, options, metadata };
|
|
33
40
|
}
|
|
34
41
|
setSource(value) {
|
|
35
42
|
if (!value) {
|
|
36
43
|
return;
|
|
37
44
|
}
|
|
38
45
|
this.transact(() => {
|
|
39
|
-
var _a, _b, _c, _d;
|
|
46
|
+
var _a, _b, _c, _d, _e;
|
|
40
47
|
const layers = (_a = value['layers']) !== null && _a !== void 0 ? _a : {};
|
|
41
48
|
Object.entries(layers).forEach(([key, val]) => this._layers.set(key, val));
|
|
42
49
|
const layerTree = (_b = value['layerTree']) !== null && _b !== void 0 ? _b : [];
|
|
@@ -47,6 +54,8 @@ export class JupyterGISDoc extends YDocument {
|
|
|
47
54
|
Object.entries(options).forEach(([key, val]) => this._options.set(key, val));
|
|
48
55
|
const sources = (_d = value['sources']) !== null && _d !== void 0 ? _d : {};
|
|
49
56
|
Object.entries(sources).forEach(([key, val]) => this._sources.set(key, val));
|
|
57
|
+
const metadata = (_e = value['metadata']) !== null && _e !== void 0 ? _e : {};
|
|
58
|
+
Object.entries(metadata).forEach(([key, val]) => this._metadata.set(key, val));
|
|
50
59
|
});
|
|
51
60
|
}
|
|
52
61
|
dispose() {
|
|
@@ -197,6 +206,30 @@ export class JupyterGISDoc extends YDocument {
|
|
|
197
206
|
setOption(key, value) {
|
|
198
207
|
this.transact(() => void this._options.set(key, value));
|
|
199
208
|
}
|
|
209
|
+
getMetadata(key) {
|
|
210
|
+
return this._metadata.get(key);
|
|
211
|
+
}
|
|
212
|
+
setMetadata(key, value) {
|
|
213
|
+
this.transact(() => void this._metadata.set(key, value));
|
|
214
|
+
}
|
|
215
|
+
removeMetadata(key) {
|
|
216
|
+
if (this._metadata.has(key)) {
|
|
217
|
+
this._metadata.delete(key);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
get metadata() {
|
|
221
|
+
return JSONExt.deepCopy(this._metadata.toJSON());
|
|
222
|
+
}
|
|
223
|
+
set metadata(metadata) {
|
|
224
|
+
this.transact(() => {
|
|
225
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
226
|
+
this._metadata.set(key, value);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
get metadataChanged() {
|
|
231
|
+
return this._metadataChanged;
|
|
232
|
+
}
|
|
200
233
|
static create() {
|
|
201
234
|
return new JupyterGISDoc();
|
|
202
235
|
}
|
package/lib/interfaces.d.ts
CHANGED
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
|
|
2
1
|
import { Delta, DocumentChange, MapChange, StateChange, YDocument } from '@jupyter/ydoc';
|
|
3
2
|
import { IWidgetTracker } from '@jupyterlab/apputils';
|
|
4
3
|
import { IChangedArgs } from '@jupyterlab/coreutils';
|
|
5
4
|
import { DocumentRegistry, IDocumentWidget } from '@jupyterlab/docregistry';
|
|
6
|
-
import { User } from '@jupyterlab/services';
|
|
5
|
+
import { Contents, User } from '@jupyterlab/services';
|
|
7
6
|
import { ISignal, Signal } from '@lumino/signaling';
|
|
8
7
|
import { SplitPanel } from '@lumino/widgets';
|
|
9
8
|
import { GeoJSON } from './_interface/geojsonsource';
|
|
10
9
|
import { IJGISContent, IJGISLayer, IJGISLayerGroup, IJGISLayerItem, IJGISLayers, IJGISLayerTree, IJGISOptions, IJGISSource, IJGISSources, SourceType } from './_interface/jgis';
|
|
11
10
|
import { IRasterSource } from './_interface/rastersource';
|
|
12
11
|
export { IGeoJSONSource } from './_interface/geojsonsource';
|
|
12
|
+
export type JgisCoordinates = {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
};
|
|
16
|
+
export interface IViewPortState {
|
|
17
|
+
coordinates: JgisCoordinates;
|
|
18
|
+
zoom: number;
|
|
19
|
+
}
|
|
20
|
+
export type Pointer = {
|
|
21
|
+
coordinates: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
13
26
|
export interface IDict<T = any> {
|
|
14
27
|
[key: string]: T;
|
|
15
28
|
}
|
|
@@ -41,6 +54,18 @@ export interface IJupyterGISClientState {
|
|
|
41
54
|
};
|
|
42
55
|
emitter?: string | null;
|
|
43
56
|
};
|
|
57
|
+
viewportState: {
|
|
58
|
+
value?: IViewPortState;
|
|
59
|
+
emitter?: string | null;
|
|
60
|
+
};
|
|
61
|
+
pointer: {
|
|
62
|
+
value?: Pointer;
|
|
63
|
+
emitter?: string | null;
|
|
64
|
+
};
|
|
65
|
+
identifiedFeatures: {
|
|
66
|
+
value?: any;
|
|
67
|
+
emitter?: string | null;
|
|
68
|
+
};
|
|
44
69
|
user: User.IIdentity;
|
|
45
70
|
remoteUser?: number;
|
|
46
71
|
toolbarForm?: IDict;
|
|
@@ -50,6 +75,7 @@ export interface IJupyterGISDoc extends YDocument<IJupyterGISDocChange> {
|
|
|
50
75
|
layers: IJGISLayers;
|
|
51
76
|
sources: IJGISSources;
|
|
52
77
|
layerTree: IJGISLayerTree;
|
|
78
|
+
metadata: any;
|
|
53
79
|
readonly editable: boolean;
|
|
54
80
|
readonly toJGISEndpoint?: string;
|
|
55
81
|
layerExists(id: string): boolean;
|
|
@@ -68,10 +94,14 @@ export interface IJupyterGISDoc extends YDocument<IJupyterGISDocChange> {
|
|
|
68
94
|
getObject(id: string): IJGISLayer | IJGISSource | undefined;
|
|
69
95
|
getOption(key: keyof IJGISOptions): IDict | undefined;
|
|
70
96
|
setOption(key: keyof IJGISOptions, value: IDict): void;
|
|
97
|
+
getMetadata(key: string): string | undefined;
|
|
98
|
+
setMetadata(key: string, value: string): void;
|
|
99
|
+
removeMetadata(key: string): void;
|
|
71
100
|
optionsChanged: ISignal<IJupyterGISDoc, MapChange>;
|
|
72
101
|
layersChanged: ISignal<IJupyterGISDoc, IJGISLayerDocChange>;
|
|
73
102
|
sourcesChanged: ISignal<IJupyterGISDoc, IJGISSourceDocChange>;
|
|
74
103
|
layerTreeChanged: ISignal<IJupyterGISDoc, IJGISLayerTreeDocChange>;
|
|
104
|
+
metadataChanged: ISignal<IJupyterGISDoc, MapChange>;
|
|
75
105
|
}
|
|
76
106
|
export interface IJupyterGISDocChange extends DocumentChange {
|
|
77
107
|
contextChange?: MapChange;
|
|
@@ -89,13 +119,16 @@ export interface IJupyterGISModel extends DocumentRegistry.IModel {
|
|
|
89
119
|
isDisposed: boolean;
|
|
90
120
|
sharedModel: IJupyterGISDoc;
|
|
91
121
|
localState: IJupyterGISClientState | null;
|
|
122
|
+
annotationModel?: IAnnotationModel;
|
|
92
123
|
themeChanged: Signal<IJupyterGISModel, IChangedArgs<string, string | null, string>>;
|
|
93
124
|
clientStateChanged: ISignal<IJupyterGISModel, Map<number, IJupyterGISClientState>>;
|
|
94
125
|
sharedOptionsChanged: ISignal<IJupyterGISDoc, MapChange>;
|
|
95
126
|
sharedLayersChanged: ISignal<IJupyterGISDoc, IJGISLayerDocChange>;
|
|
96
127
|
sharedLayerTreeChanged: ISignal<IJupyterGISDoc, IJGISLayerTreeDocChange>;
|
|
97
128
|
sharedSourcesChanged: ISignal<IJupyterGISDoc, IJGISSourceDocChange>;
|
|
98
|
-
|
|
129
|
+
sharedMetadataChanged: ISignal<IJupyterGISModel, MapChange>;
|
|
130
|
+
zoomToAnnotationSignal: ISignal<IJupyterGISModel, string>;
|
|
131
|
+
setContentsManager(value: Contents.IManager | undefined, filePath: string): void;
|
|
99
132
|
getContent(): IJGISContent;
|
|
100
133
|
getLayers(): IJGISLayers;
|
|
101
134
|
getLayer(id: string): IJGISLayer | undefined;
|
|
@@ -118,11 +151,19 @@ export interface IJupyterGISModel extends DocumentRegistry.IModel {
|
|
|
118
151
|
addNewLayerGroup(selected: {
|
|
119
152
|
[key: string]: ISelection;
|
|
120
153
|
}, group: IJGISLayerGroup): void;
|
|
154
|
+
syncViewport(viewport?: IViewPortState, emitter?: string): void;
|
|
121
155
|
syncSelected(value: {
|
|
122
156
|
[key: string]: ISelection;
|
|
123
157
|
}, emitter?: string): void;
|
|
158
|
+
syncPointer(pointer?: Pointer, emitter?: string): void;
|
|
159
|
+
syncIdentifiedFeatures(features: IDict<any>, emitter?: string): void;
|
|
124
160
|
setUserToFollow(userId?: number): void;
|
|
125
161
|
getClientId(): number;
|
|
162
|
+
addMetadata(key: string, value: string): void;
|
|
163
|
+
removeMetadata(key: string): void;
|
|
164
|
+
centerOnAnnotation(id: string): void;
|
|
165
|
+
toggleIdentify(): void;
|
|
166
|
+
isIdentifying: boolean;
|
|
126
167
|
disposed: ISignal<any, void>;
|
|
127
168
|
}
|
|
128
169
|
export interface IUserData {
|
|
@@ -183,3 +224,29 @@ export interface IJGISLayerBrowserRegistry {
|
|
|
183
224
|
removeRegistryLayer(name: string): void;
|
|
184
225
|
clearRegistry(): void;
|
|
185
226
|
}
|
|
227
|
+
export interface IAnnotationModel {
|
|
228
|
+
updateSignal: ISignal<this, null>;
|
|
229
|
+
user: User.IIdentity | undefined;
|
|
230
|
+
context: DocumentRegistry.IContext<IJupyterGISModel> | undefined;
|
|
231
|
+
contextChanged: ISignal<this, void>;
|
|
232
|
+
update(): void;
|
|
233
|
+
getAnnotation(id: string): IAnnotation | undefined;
|
|
234
|
+
getAnnotationIds(): string[];
|
|
235
|
+
addAnnotation(key: string, value: IAnnotation): void;
|
|
236
|
+
removeAnnotation(key: string): void;
|
|
237
|
+
addContent(id: string, value: string): void;
|
|
238
|
+
}
|
|
239
|
+
export interface IAnnotationContent {
|
|
240
|
+
user?: User.IIdentity;
|
|
241
|
+
value: string;
|
|
242
|
+
}
|
|
243
|
+
export interface IAnnotation {
|
|
244
|
+
label: string;
|
|
245
|
+
position: {
|
|
246
|
+
x: number;
|
|
247
|
+
y: number;
|
|
248
|
+
};
|
|
249
|
+
zoom: number;
|
|
250
|
+
contents: IAnnotationContent[];
|
|
251
|
+
parent: string;
|
|
252
|
+
}
|