@oceanum/eidos 0.9.1 → 0.9.2

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.
@@ -1,1171 +0,0 @@
1
- /**
2
- * Auto-generated TypeScript interfaces for EIDOS schemas
3
- * Generated from: https://schemas.oceanum.io/eidos/root.json
4
- *
5
- * Each interface corresponds to a definition in the EIDOS schema bundle.
6
- * These interfaces can be used for type validation and IDE support.
7
- *
8
- * Do not modify this file directly - regenerate using:
9
- * npx nx run eidos:generate-types
10
- */
11
-
12
- const Constant = '0.9' as const;
13
- const WorldNodeType = 'world' as const;
14
- const PlotNodeType = 'plot' as const;
15
- const DocumentNodeType = 'document' as const;
16
- const GridNodeType = 'grid' as const;
17
- const MenuNodeType = 'menu' as const;
18
- const WorldlayerNodeType = 'worldlayer' as const;
19
- const ControlgroupNodeType = 'controlgroup' as const;
20
-
21
- /**
22
- * EIDOS specification
23
- * Complete specification for defining interactive oceanic and geospatial data visualizations using the EIDOS framework. An EIDOS specification is a declarative JSON document that describes the entire structure, layout, data sources, and interactions for a data visualization application. This top-level schema defines the root structure that contains metadata, data definitions, theming, and the hierarchical node structure that defines the user interface.
24
- */
25
- export interface EidosSpec {
26
- /**
27
- * Version of EIDOS
28
- */
29
- version?: Constant;
30
- /**
31
- * Unique identifier for this specification. Must be URL-safe using only lowercase letters, numbers, hyphens, and underscores. This ID is used for referencing the specification in URLs, file systems, and databases. It should be descriptive but concise.
32
- *
33
- * @example
34
- * "seastate-demo"
35
- * "plot-demo"
36
- * "grid-layout-demo"
37
- */
38
- id: string;
39
- /**
40
- * Human-readable display name for this specification. This is the name shown to users in lists, menus, and interfaces. It can contain spaces, special characters, and mixed case. Should be descriptive and meaningful to end users.
41
- *
42
- * @example
43
- * "DemoOverlay"
44
- * "DemoPlot"
45
- * "DemoGrid"
46
- */
47
- name: string;
48
- /**
49
- * Detailed description of what this specification does and its purpose. This is primarily for documentation and metadata purposes - it's not typically displayed in the main interface but may be shown in tooltips, help text, or specification listings. Useful for developers and content creators.
50
- *
51
- * @example
52
- * "Demonstration overlay"
53
- * "Demonstration grid layout"
54
- * "Demonstration document"
55
- */
56
- description?: string;
57
- /**
58
- * Title displayed at top of screen
59
- */
60
- title?: string;
61
- /**
62
- * URL of logo image
63
- */
64
- logo?: string | object;
65
- theme?: EidosTheme;
66
- /**
67
- * Data Sources
68
- * Array of data source definitions that provide data to the visualization components. Each data source can be a static dataset, OceanQL query, Oceanum Datamesh source, or other supported data provider. Data sources are referenced by ID throughout the specification.
69
- *
70
- * @example
71
- * [{"id":"sig-wave-height-trki","dataType":"oceanumDatamesh","dataSpec":{"datasource":"oceanum_wave_trki_era5_v1_grid","variables":["hs","tps"],"geofilter":{"type":"feature","geom":{"type":"Feature","geometry":{"type":"Point","coordinates":[174.3,-38.5]}}},"timefilter":{"times":["2018-01-01 00:00:00Z","2019-01-01 00:00:00Z"]}}}]
72
- */
73
- data?: EidosData[];
74
- root: World | Plot | Document | Grid | Menu;
75
- panels?: EidosPanel[];
76
- }
77
-
78
- /**
79
- * PlotSpec
80
- * Placeholder for Vega/Vega-Lite plot specifications
81
- */
82
- export interface PlotSpec {
83
- /**
84
- * The Vega/Vega-Lite schema URL
85
- */
86
- $schema?: string;
87
- /**
88
- * The data specification
89
- */
90
- data?: object;
91
- /**
92
- * The mark type or definition
93
- */
94
- mark?: any;
95
- /**
96
- * The encoding specification
97
- */
98
- encoding?: object;
99
- /**
100
- * The configuration options
101
- */
102
- config?: object;
103
- [key: string]: any;
104
- }
105
-
106
- /**
107
- * Eidos theme
108
- */
109
- export interface EidosTheme {
110
- /**
111
- * Color scheme for the view
112
- */
113
- preset?: 'default' | 'dark';
114
- style?: EidosStyle;
115
- }
116
-
117
- /**
118
- * EIDOS data
119
- * Data source specification for EIDOS visualizations. Defines how to access and process data from various sources including Oceanum Datamesh, Zarr arrays, inline datasets, GeoJSON features, and data transformations. Each data source has a unique ID that can be referenced by visualization components.
120
- */
121
- export interface EidosData {
122
- /**
123
- * Unique identifier for this data source within the specification. Must be alphanumeric with hyphens and underscores only. This ID is used to reference the data source from visualization layers and components.
124
- *
125
- * @example
126
- * "sig-wave-height-trki"
127
- * "ship-positions"
128
- * "weather-data"
129
- */
130
- id: string;
131
- /**
132
- * Type of data source that determines how the data is accessed and processed. Each type requires different configuration in the dataSpec property.
133
- *
134
- * @example
135
- * "dataset"
136
- * "geojson"
137
- * "transform"
138
- */
139
- dataType: 'oceanql' | 'zarr' | 'dataset' | 'geojson' | 'transform';
140
- dataSpec: Dataset | Transform | Geojson | Oceanquery | Zarr;
141
- }
142
-
143
- /**
144
- * World
145
- * Interactive 2D/3D map node for displaying geospatial and oceanic data. World nodes can contain multiple data layers (gridded data, features, tracks, etc.) and provide map controls, time navigation, and spatial interaction capabilities. Ideal for visualizing spatial data, environmental conditions, and geographic features.
146
- */
147
- export interface World {
148
- /**
149
- * Unique identifier for this world node within the specification. Used for referencing this node in events, interactions, and programmatic access.
150
- *
151
- * @example
152
- * "map-1"
153
- * "world-view"
154
- * "main-map"
155
- */
156
- id: string;
157
- /**
158
- * Human-readable title for this world node.
159
- */
160
- title?: string;
161
- /**
162
- * Node type identifier. Must be 'world' for map/globe visualizations.
163
- */
164
- nodeType?: WorldNodeType;
165
- /**
166
- * Array of world layers and controls to display on this map. Each layer represents a different data visualization (e.g., gridded data, vector features, tracks, 3D objects). Layers are rendered in order with later layers appearing on top.
167
- */
168
- children?: Worldlayer | ControlGroup[];
169
- /**
170
- * Base map layer providing the background cartography. Can be a preset like 'oceanum' or 'terrain', or a custom tile layer configuration.
171
- */
172
- baseLayer?: Baselayer;
173
- /**
174
- * Initial camera position and orientation for the map view, including center coordinates, zoom level, pitch, and bearing.
175
- */
176
- viewState?: View;
177
- timezone?: Geojson;
178
- currentTime?: Geojson;
179
- timeControl?: Geojson;
180
- levelControl?: Geojson;
181
- /**
182
- * Current level value for the world view
183
- */
184
- currentLevel?: number;
185
- /**
186
- * Layer selector control configuration. Set to true/false to show/hide the layer selector, or provide an object to customize its appearance and behavior.
187
- */
188
- layerSelector?: boolean | LayerSelector;
189
- /**
190
- * Interactive map controls for spatial selection, measurement, and drawing. Controls appear as toolbar buttons and allow users to interact with the map (e.g., draw polygons, measure distances, drop points).
191
- */
192
- mapControls?: ControlGroup[];
193
- }
194
-
195
- /**
196
- * Plot
197
- * Specification for plot view environmental digital twin display and interaction
198
- */
199
- export interface Plot {
200
- /**
201
- * Unique id of the node
202
- */
203
- id: string;
204
- /**
205
- * Title of the plot
206
- */
207
- title?: string;
208
- nodeType?: PlotNodeType;
209
- plotType?: 'vega' | 'vega-lite';
210
- plotSpec: any & PlotSpec;
211
- /**
212
- * Actions to enable for the plot
213
- */
214
- actions?: object;
215
- timezone?: Geojson;
216
- currentTime?: Geojson;
217
- timeControl?: Geojson;
218
- }
219
-
220
- /**
221
- * Document
222
- * Specification for document node
223
- */
224
- export interface Document {
225
- /**
226
- * Unique id of the node
227
- */
228
- id: string;
229
- /**
230
- * Title of the document
231
- */
232
- title?: string;
233
- nodeType?: DocumentNodeType;
234
- /**
235
- * Document content as templated markdown
236
- */
237
- content: string;
238
- style?: DocumentStyle;
239
- }
240
-
241
- /**
242
- * Grid
243
- * Layout node that arranges child nodes in a responsive grid pattern. Grid nodes are containers that organize multiple visualization components (maps, plots, documents) into rows and columns. Each child node can span multiple grid cells, allowing for flexible dashboard-style layouts.
244
- */
245
- export interface Grid {
246
- /**
247
- * Unique identifier for this grid node within the specification. Used for referencing this node in events, interactions, and programmatic access.
248
- *
249
- * @example
250
- * "main-grid"
251
- * "dashboard-layout"
252
- * "analysis-grid"
253
- */
254
- id: string;
255
- /**
256
- * Node type identifier. Must be 'grid' for layout containers that arrange children in a grid pattern.
257
- */
258
- nodeType?: GridNodeType;
259
- /**
260
- * Defines the overall grid dimensions. All child nodes must fit within these bounds. The grid acts as a responsive layout container that adapts to screen size while maintaining relative proportions.
261
- */
262
- gridSize: object;
263
- /**
264
- * Optional array defining precise positioning for each child node. If provided, must have the same length as the children array. Each element defines the grid position and size for the corresponding child.
265
- */
266
- gridLayout?: object[];
267
- /**
268
- * Array of child nodes to display within the grid. Children are positioned automatically if gridLayout is not specified, or according to the gridLayout array if provided. Can contain any type of EIDOS node.
269
- */
270
- children: World | Plot | Document | Menu[];
271
- }
272
-
273
- /**
274
- * Menu
275
- */
276
- export interface Menu {
277
- /**
278
- * Unique id of the node
279
- */
280
- id: string;
281
- nodeType?: MenuNodeType;
282
- activeItem?: string;
283
- /**
284
- * Location of menu relative to content
285
- */
286
- position?: 'top' | 'left' | 'bottom' | 'right';
287
- /**
288
- * Whether menu is open
289
- */
290
- open?: boolean;
291
- children: World | Plot | Document | Grid[];
292
- openOnMouseOver?: boolean;
293
- menuLayout: object[];
294
- }
295
-
296
- /**
297
- * Eidos panel
298
- * Spec for panel node (world, plot, document, grid or menu). A panel node is displayed as a modal window on top of the parent element. Opening can be triggered by an event.
299
- */
300
- export interface EidosPanel {
301
- /**
302
- * Unique ID of the panel
303
- */
304
- id: string;
305
- node: World | Plot | Document | Grid | Menu;
306
- /**
307
- * event object that triggers panel
308
- */
309
- trigger?: object;
310
- /**
311
- * If true, this panel is exclusive and will close other panels when opened
312
- */
313
- exclusive?: boolean;
314
- height?: Geojson;
315
- width?: Geojson;
316
- position?: Geojson;
317
- /**
318
- * Title of panel
319
- */
320
- title?: string;
321
- }
322
-
323
- /**
324
- * Eidos style
325
- * Style properties organized by category
326
- */
327
- export interface EidosStyle {
328
- color?: ColorStyle;
329
- text?: TextStyle;
330
- control?: ControlStyle;
331
- panel?: PanelStyle;
332
- grid?: GridStyle;
333
- }
334
-
335
- /**
336
- * Dataset
337
- * Inline dataset
338
- */
339
- export interface Dataset {
340
- name?: string;
341
- /**
342
- * Attributes of the dataset
343
- */
344
- attributes?: object;
345
- /**
346
- * Data variables
347
- */
348
- variables: object;
349
- /**
350
- * Dimensions
351
- */
352
- dimensions: object;
353
- coordkeys: Coordkeys;
354
- [key: string]: any;
355
- }
356
-
357
- /**
358
- * Transform
359
- * Specification for data transform.
360
- */
361
- export interface Transform {
362
- /**
363
- * Human readable name of this transform instance
364
- */
365
- name?: string;
366
- /**
367
- * Modules to add as key:<Module URL>
368
- */
369
- modules?: object;
370
- /**
371
- * Source inputs
372
- */
373
- inputs: any[];
374
- /**
375
- * Output data type
376
- */
377
- outputType?: 'dataset' | 'geojson';
378
- /**
379
- * Transform code
380
- * Transform code as body of function
381
- */
382
- code: string;
383
- }
384
-
385
- /**
386
- * GeoJSON
387
- * GeoJSON schemas
388
- */
389
- export interface Geojson {
390
- [key: string]: GeoJSON;
391
- }
392
-
393
- /**
394
- * OceanQuery
395
- */
396
- export interface Oceanquery {
397
- /**
398
- * The id of the datasource
399
- */
400
- datasource: string;
401
- /**
402
- * Datasource parameters
403
- */
404
- parameters?: object | null;
405
- /**
406
- * Optional description of this query
407
- */
408
- description?: string | null;
409
- /**
410
- * List of selected variables
411
- */
412
- variables?: string[] | null;
413
- /**
414
- * Time filter
415
- */
416
- timefilter?: Timefilter | null;
417
- /**
418
- * Spatial filter or interpolator
419
- */
420
- geofilter?: Geofilter | null;
421
- /**
422
- * List of additional coordinate filters
423
- */
424
- coordfilter?: Coordselector[] | null;
425
- /**
426
- * Spatial reference for filter and output
427
- */
428
- crs?: number | string | null;
429
- /**
430
- * Aggregate operations
431
- */
432
- aggregate?: Aggregate | null;
433
- /**
434
- * Limit size of response
435
- */
436
- limit?: number | null;
437
- /**
438
- * Unique ID of this query
439
- */
440
- id?: string | null;
441
- }
442
-
443
- export interface Zarr {
444
- /**
445
- * Zarr group URL
446
- */
447
- group: string;
448
- /**
449
- * Headers for zarr dataset
450
- */
451
- headers?: object;
452
- coordkeys: Coordkeys;
453
- ttl?: number | null;
454
- }
455
-
456
- /**
457
- * WorldLayer
458
- * A data layer displayed on a world map. World layers visualize different types of geospatial data including gridded datasets (like temperature, wave height), vector features (points, lines, polygons), tracks (moving objects), and 3D scene elements.
459
- */
460
- export interface Worldlayer {
461
- /**
462
- * Unique identifier for this layer within the world node. Used for layer management, visibility control, and programmatic access.
463
- *
464
- * @example
465
- * "wave-height"
466
- * "ship-tracks"
467
- * "weather-stations"
468
- */
469
- id: string;
470
- /**
471
- * Display name for this layer shown in the layer selector and legend. Should be descriptive and user-friendly.
472
- *
473
- * @example
474
- * "Significant Wave Height"
475
- * "Ship Positions"
476
- * "Weather Stations"
477
- */
478
- name?: string;
479
- nodeType: WorldlayerNodeType;
480
- /**
481
- * Reference to a data source defined in the root 'data' array. This connects the layer to its data source for visualization.
482
- *
483
- * @example
484
- * "hs-1"
485
- * "sig-wave-height-trki"
486
- * "ship-positions"
487
- */
488
- dataId?: string;
489
- /**
490
- * Whether this layer is initially visible when the map loads. Users can toggle visibility through the layer selector.
491
- */
492
- visible?: boolean;
493
- /**
494
- * Layer IDs that this layer can be shown with. An empty array means it the layer is exclusive and cannot be shown with any other layer. If this iproperty is missing or null, the layer can be shown with any other layer
495
- */
496
- showWith?: string[] | null;
497
- /**
498
- * Linked layer id which controls this layer visibility
499
- */
500
- linked?: string;
501
- /**
502
- * Configuration for tooltips displayed when hovering over layer elements. Uses Handlebars templates for dynamic content.
503
- */
504
- hoverInfo?: MapHoverInfo;
505
- layerSpec: Layerspec;
506
- /**
507
- * Minimum zoom level at which layer is visible
508
- */
509
- minZoom?: number;
510
- /**
511
- * Maximum zoom level at which layer is visible
512
- */
513
- maxZoom?: number;
514
- /**
515
- * Time selection criteria for layer
516
- */
517
- timeSelect?: Timeselect;
518
- /**
519
- * Level selection criteria for layer
520
- */
521
- levelSelect?: Levelselect;
522
- }
523
-
524
- /**
525
- * Control group
526
- */
527
- export interface ControlGroup {
528
- /**
529
- * Control group id
530
- */
531
- id: string;
532
- nodeType?: ControlgroupNodeType;
533
- orientation?: 'horizontal' | 'vertical';
534
- /**
535
- * Control list
536
- */
537
- children: Control[];
538
- /**
539
- * Visibility of control group
540
- */
541
- visible?: boolean;
542
- }
543
-
544
- export type Baselayer = Baselayerpreset | object;
545
-
546
- /**
547
- * Camera configuration defining the initial viewport of the map including position, zoom level, and orientation. This sets how users first see the map when it loads.
548
- */
549
- export interface View {
550
- /**
551
- * Type of world view
552
- */
553
- viewType?: 'map' | 'globe';
554
- /**
555
- * Longitude coordinate of the map center in decimal degrees (-180 to 180). Positive values are East, negative values are West.
556
- *
557
- * @example
558
- * 174.3
559
- * -122.4
560
- * 2.3
561
- */
562
- longitude: number;
563
- /**
564
- * Latitude coordinate of the map center in decimal degrees (-90 to 90). Positive values are North, negative values are South.
565
- *
566
- * @example
567
- * -38.5
568
- * 37.7
569
- * 48.9
570
- */
571
- latitude: number;
572
- /**
573
- * Pitch angle of view
574
- */
575
- pitch?: number;
576
- /**
577
- * Bearing angle of view
578
- */
579
- bearing?: number;
580
- /**
581
- * Maximum zoom level
582
- */
583
- maxZoom?: number;
584
- /**
585
- * Initial zoom level of the map. Higher values show more detail. Typically ranges from 0 (world view) to 20+ (street level).
586
- *
587
- * @example
588
- * 2
589
- * 8
590
- * 12
591
- */
592
- zoom?: number;
593
- /**
594
- * Maximum pitch angle
595
- */
596
- maxPitch?: number;
597
- }
598
-
599
- /**
600
- * Layer selector
601
- */
602
- export interface LayerSelector {
603
- /**
604
- * Visibility of layer selector
605
- */
606
- open?: boolean;
607
- }
608
-
609
- /**
610
- * Document style
611
- * Document style overrides
612
- */
613
- export interface DocumentStyle {
614
- /**
615
- * Font size
616
- */
617
- fontSize?: string;
618
- /**
619
- * Font family
620
- */
621
- fontFamily?: string;
622
- /**
623
- * Font color
624
- */
625
- fontColor?: string;
626
- /**
627
- * Line height
628
- */
629
- lineHeight?: string;
630
- /**
631
- * Background color
632
- */
633
- backgroundColor?: string;
634
- /**
635
- * Padding
636
- */
637
- padding?: string;
638
- /**
639
- * Margin
640
- */
641
- margin?: string;
642
- /**
643
- * Justify content
644
- */
645
- justifyContent?: 'left' | 'center' | 'right';
646
- }
647
-
648
- /**
649
- * Color style
650
- * Color palette configuration
651
- */
652
- export interface ColorStyle {
653
- /**
654
- * Primary color of the view
655
- */
656
- primary?: string;
657
- /**
658
- * Secondary color of the view
659
- */
660
- secondary?: string;
661
- /**
662
- * Accent color of the view
663
- */
664
- accent?: string;
665
- /**
666
- * Background color of the view
667
- */
668
- background?: string;
669
- }
670
-
671
- /**
672
- * Text style
673
- * Typography configuration
674
- */
675
- export interface TextStyle {
676
- /**
677
- * Text color of the view
678
- */
679
- color?: string;
680
- /**
681
- * Font family of the view
682
- */
683
- fontFamily?: string;
684
- /**
685
- * Font size of the text
686
- */
687
- fontSize?: any;
688
- /**
689
- * Font weight of the text
690
- */
691
- fontWeight?: string;
692
- /**
693
- * Line height of the text
694
- */
695
- lineHeight?: any;
696
- /**
697
- * Text alignment of the view
698
- */
699
- align?: string;
700
- /**
701
- * Size of the title
702
- */
703
- titleSize?: any;
704
- /**
705
- * Size of the subtitle
706
- */
707
- subtitleSize?: any;
708
- /**
709
- * Size of the heading
710
- */
711
- headingSize?: any;
712
- }
713
-
714
- /**
715
- * Control style
716
- * Control element styling
717
- */
718
- export interface ControlStyle {
719
- /**
720
- * Opacity of control elements
721
- */
722
- opacity?: string;
723
- /**
724
- * Border color of control elements
725
- */
726
- borderColor?: string;
727
- /**
728
- * Background color of control elements
729
- */
730
- backgroundColor?: string;
731
- /**
732
- * Text color of control elements
733
- */
734
- textColor?: string;
735
- /**
736
- * Border width of control elements
737
- */
738
- borderWidth?: any;
739
- /**
740
- * Border style of control elements
741
- */
742
- borderStyle?: string;
743
- /**
744
- * Border radius of control elements
745
- */
746
- borderRadius?: any;
747
- /**
748
- * Backdrop filter effect for controls
749
- */
750
- backdropFilter?: string;
751
- /**
752
- * Box shadow effect for controls
753
- */
754
- boxShadow?: string;
755
- /**
756
- * Inset box shadow effect for controls
757
- */
758
- boxShadowInset?: string;
759
- }
760
-
761
- /**
762
- * Panel style
763
- * Panel element styling
764
- */
765
- export interface PanelStyle {
766
- /**
767
- * Opacity of panel elements
768
- */
769
- opacity?: string;
770
- /**
771
- * Border color of panel elements
772
- */
773
- borderColor?: string;
774
- /**
775
- * Background color of panel elements
776
- */
777
- backgroundColor?: string;
778
- /**
779
- * Text color of panel elements
780
- */
781
- textColor?: string;
782
- /**
783
- * Border width of panel elements
784
- */
785
- borderWidth?: any;
786
- /**
787
- * Border style of panel elements
788
- */
789
- borderStyle?: string;
790
- /**
791
- * Border radius of panel elements
792
- */
793
- borderRadius?: any;
794
- /**
795
- * Backdrop filter effect for panels
796
- */
797
- backdropFilter?: string;
798
- /**
799
- * Box shadow effect for panels
800
- */
801
- boxShadow?: string;
802
- /**
803
- * Inset box shadow effect for panels
804
- */
805
- boxShadowInset?: string;
806
- }
807
-
808
- /**
809
- * Grid style
810
- * Grid element styling
811
- */
812
- export interface GridStyle {
813
- /**
814
- * Border width of grid elements
815
- */
816
- borderWidth?: any;
817
- /**
818
- * Border radius of grid elements
819
- */
820
- borderRadius?: any;
821
- /**
822
- * Border style of grid elements
823
- */
824
- borderStyle?: string;
825
- /**
826
- * Border color of grid elements
827
- */
828
- borderColor?: string;
829
- /**
830
- * Padding of grid elements
831
- */
832
- padding?: any;
833
- /**
834
- * Margin of grid elements
835
- */
836
- margin?: any;
837
- }
838
-
839
- /**
840
- * Coordinate keys mapping variables to dimensions (x: longitude, y: latitude, z: depth/altitude, g: geometry, t: time)
841
- */
842
- export interface Coordkeys {
843
- [key: string]: object;
844
- }
845
-
846
- /**
847
- * TimeFilter
848
- */
849
- export interface Timefilter {
850
- /**
851
- * Timefilter type
852
- */
853
- type?: Timefiltertype;
854
- /**
855
- * Time range or series
856
- */
857
- times: string | null[];
858
- /**
859
- * Temporal resolution of data
860
- */
861
- resolution?: string | null;
862
- /**
863
- * Resampling operator
864
- */
865
- resample?: Resampletype | null;
866
- }
867
-
868
- /**
869
- * GeoFilter
870
- */
871
- export interface Geofilter {
872
- /**
873
- * GeoFilter type
874
- */
875
- type?: Geofiltertype;
876
- /**
877
- * bbox OR geojson Feature
878
- */
879
- geom: number[];
880
- /**
881
- * Maximum spatial resolution of data
882
- */
883
- resolution?: number | null;
884
- /**
885
- * Include all touched grid pixels
886
- */
887
- alltouched?: boolean | null;
888
- }
889
-
890
- /**
891
- * CoordSelector
892
- */
893
- export interface Coordselector {
894
- /**
895
- * Coordinate name
896
- */
897
- coord: string;
898
- /**
899
- * List of coordinate values to select by
900
- */
901
- values: string | number[];
902
- }
903
-
904
- /**
905
- * Aggregate
906
- */
907
- export interface Aggregate {
908
- /**
909
- * Aggregate operations to perform
910
- */
911
- operations?: AggregateOps[];
912
- /**
913
- * Aggregate over spatial filter
914
- */
915
- spatial?: boolean | null;
916
- /**
917
- * Aggregate over temporal filter
918
- */
919
- temporal?: boolean | null;
920
- }
921
-
922
- /**
923
- * Map hover info
924
- * Properties for tooltip shown on hover
925
- */
926
- export interface MapHoverInfo {
927
- /**
928
- * Tooltip as Handlebars template. The picked object is passed as the render context.
929
- */
930
- template: string;
931
- }
932
-
933
- /**
934
- * Layer specification
935
- */
936
- export type Layerspec =
937
- | Feature
938
- | Gridded
939
- | Label
940
- | Scenegraph
941
- | Seasurface
942
- | Track
943
- | Wmts;
944
-
945
- export interface Timeselect {
946
- mode: 'nearest' | 'exact' | 'range';
947
- /**
948
- * Time tolerance duration for nearest time select
949
- */
950
- tolerance?: string;
951
- /**
952
- * Time aggregation
953
- * Aggregation method for time range
954
- */
955
- aggregate?: 'last' | 'first' | 'sum' | 'mean' | 'max' | 'min';
956
- /**
957
- * Data field to group by
958
- */
959
- groupby?: string;
960
- }
961
-
962
- /**
963
- * Level selection criteria for layer
964
- */
965
- export interface Levelselect {
966
- /**
967
- * Level selection mode
968
- */
969
- mode?: 'nearest' | 'exact' | 'range';
970
- /**
971
- * Level tolerance for nearest level select
972
- */
973
- tolerance?: number;
974
- /**
975
- * Default level value for this layer
976
- */
977
- level?: number;
978
- }
979
-
980
- /**
981
- * Control
982
- * Control properties
983
- */
984
- export interface Control {
985
- /**
986
- * Control type
987
- */
988
- nodeType: 'points' | 'polygon' | 'bbox' | 'radius' | 'drop' | 'measure';
989
- /**
990
- * Control id
991
- */
992
- id: string;
993
- /**
994
- * Control active state
995
- */
996
- active?: boolean;
997
- /**
998
- * Control disabled state
999
- */
1000
- disabled?: boolean;
1001
- /**
1002
- * Control state
1003
- */
1004
- state?: object;
1005
- /**
1006
- * Icon URLs
1007
- */
1008
- icon?: object;
1009
- /**
1010
- * Tooltip text
1011
- */
1012
- tooltip?: string;
1013
- config?: object;
1014
- }
1015
-
1016
- /**
1017
- * Base layer type
1018
- */
1019
- export type Baselayerpreset = 'oceanum' | 'terrain';
1020
-
1021
- /**
1022
- * ResampleType
1023
- */
1024
- export type Resampletype = 'mean' | 'nearest';
1025
-
1026
- /**
1027
- * Aggregate Ops
1028
- */
1029
- export type AggregateOps = 'mean' | 'min' | 'max' | 'std' | 'sum';
1030
-
1031
- /**
1032
- * Feature
1033
- * Feature Model
1034
- */
1035
- export interface Feature {
1036
- /**
1037
- * Type
1038
- */
1039
- type: 'Feature';
1040
- geometry: Geometry;
1041
- /**
1042
- * Properties
1043
- */
1044
- properties?: Properties;
1045
- /**
1046
- * Id
1047
- */
1048
- id?: string;
1049
- /**
1050
- * Bbox
1051
- */
1052
- bbox?: any[];
1053
- }
1054
-
1055
- /**
1056
- * Geometry
1057
- * Geometry Model
1058
- */
1059
- export type Geometry =
1060
- | Point
1061
- | Multipoint
1062
- | Linestring
1063
- | Multilinestring
1064
- | Polygon
1065
- | Multipolygon
1066
- | Geometrycollection;
1067
-
1068
- /**
1069
- * Point
1070
- * Point Model
1071
- */
1072
- export interface Point {
1073
- /**
1074
- * Coordinates
1075
- */
1076
- coordinates: any[];
1077
- /**
1078
- * Type
1079
- */
1080
- type?: Type;
1081
- }
1082
-
1083
- /**
1084
- * MultiPoint
1085
- * MultiPoint Model
1086
- */
1087
- export interface Multipoint {
1088
- /**
1089
- * Coordinates
1090
- */
1091
- coordinates: any[][];
1092
- /**
1093
- * Type
1094
- */
1095
- type?: Type;
1096
- }
1097
-
1098
- /**
1099
- * LineString
1100
- * LineString Model
1101
- */
1102
- export interface Linestring {
1103
- /**
1104
- * Coordinates
1105
- */
1106
- coordinates: any[][];
1107
- /**
1108
- * Type
1109
- */
1110
- type?: Type;
1111
- }
1112
-
1113
- /**
1114
- * MultiLineString
1115
- * MultiLineString Model
1116
- */
1117
- export interface Multilinestring {
1118
- /**
1119
- * Coordinates
1120
- */
1121
- coordinates: any[][][];
1122
- /**
1123
- * Type
1124
- */
1125
- type?: Type;
1126
- }
1127
-
1128
- /**
1129
- * Polygon
1130
- * Polygon Model
1131
- */
1132
- export interface Polygon {
1133
- /**
1134
- * Coordinates
1135
- */
1136
- coordinates: any[][][];
1137
- /**
1138
- * Type
1139
- */
1140
- type?: Type;
1141
- }
1142
-
1143
- /**
1144
- * MultiPolygon
1145
- * MultiPolygon Model
1146
- */
1147
- export interface Multipolygon {
1148
- /**
1149
- * Coordinates
1150
- */
1151
- coordinates: any[][][][];
1152
- /**
1153
- * Type
1154
- */
1155
- type?: Type;
1156
- }
1157
-
1158
- /**
1159
- * GeometryCollection
1160
- * GeometryCollection Model
1161
- */
1162
- export interface Geometrycollection {
1163
- /**
1164
- * Type
1165
- */
1166
- type?: Type;
1167
- /**
1168
- * Geometries
1169
- */
1170
- geometries: Geometry[];
1171
- }