@vcmap/core 6.3.0-rc.1 → 6.3.0-rc.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.
- package/dist/cesium.d.ts +12 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/ol.d.ts +13 -2
- package/dist/src/cesium/cesium3DTileFeature.d.ts +1 -0
- package/dist/src/cesium/cesium3DTileFeature.js +16 -3
- package/dist/src/cesium/cesium3DTileFeature.js.map +1 -1
- package/dist/src/cesium/cesium3DTilePointFeature.js +2 -1
- package/dist/src/cesium/cesium3DTilePointFeature.js.map +1 -1
- package/dist/src/classRegistry.d.ts +7 -1
- package/dist/src/classRegistry.js.map +1 -1
- package/dist/src/featureProvider/abstractAttributeProvider.d.ts +62 -0
- package/dist/src/featureProvider/abstractAttributeProvider.js +129 -0
- package/dist/src/featureProvider/abstractAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/abstractFeatureProvider.d.ts +9 -18
- package/dist/src/featureProvider/abstractFeatureProvider.js +7 -38
- package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
- package/dist/src/featureProvider/compositeFeatureProvider.d.ts +27 -0
- package/dist/src/featureProvider/compositeFeatureProvider.js +53 -0
- package/dist/src/featureProvider/compositeFeatureProvider.js.map +1 -0
- package/dist/src/featureProvider/csvAttributeProvider.d.ts +41 -0
- package/dist/src/featureProvider/csvAttributeProvider.js +126 -0
- package/dist/src/featureProvider/csvAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/featureProviderFactory.d.ts +3 -0
- package/dist/src/featureProvider/featureProviderFactory.js +17 -0
- package/dist/src/featureProvider/featureProviderFactory.js.map +1 -0
- package/dist/src/featureProvider/i3sAttributeProvider.d.ts +7 -0
- package/dist/src/featureProvider/i3sAttributeProvider.js +43 -0
- package/dist/src/featureProvider/i3sAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/jsonAttributeProvider.d.ts +26 -0
- package/dist/src/featureProvider/jsonAttributeProvider.js +73 -0
- package/dist/src/featureProvider/jsonAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/tileProviderFeatureProvider.d.ts +4 -6
- package/dist/src/featureProvider/tileProviderFeatureProvider.js +9 -11
- package/dist/src/featureProvider/tileProviderFeatureProvider.js.map +1 -1
- package/dist/src/featureProvider/urlIdAttributeProvider.d.ts +28 -0
- package/dist/src/featureProvider/urlIdAttributeProvider.js +50 -0
- package/dist/src/featureProvider/urlIdAttributeProvider.js.map +1 -0
- package/dist/src/featureProvider/wmsFeatureProvider.d.ts +12 -3
- package/dist/src/featureProvider/wmsFeatureProvider.js +17 -6
- package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
- package/dist/src/interaction/featureAtPixelInteraction.d.ts +15 -3
- package/dist/src/interaction/featureAtPixelInteraction.js +41 -1
- package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
- package/dist/src/interaction/featureProviderInteraction.js +42 -26
- package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +14 -5
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js +243 -128
- package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/i3sCesiumImpl.d.ts +33 -0
- package/dist/src/layer/cesium/i3sCesiumImpl.js +107 -0
- package/dist/src/layer/cesium/i3sCesiumImpl.js.map +1 -0
- package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js +2 -1
- package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js.map +1 -1
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +7 -6
- package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
- package/dist/src/layer/cesium/vectorTileImageryProvider.js +2 -2
- package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
- package/dist/src/layer/cesiumTilesetLayer.d.ts +9 -0
- package/dist/src/layer/cesiumTilesetLayer.js +26 -1
- package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
- package/dist/src/layer/i3sLayer.d.ts +80 -0
- package/dist/src/layer/i3sLayer.js +242 -0
- package/dist/src/layer/i3sLayer.js.map +1 -0
- package/dist/src/layer/layer.d.ts +8 -3
- package/dist/src/layer/layer.js +7 -1
- package/dist/src/layer/layer.js.map +1 -1
- package/dist/src/layer/layerSymbols.d.ts +4 -0
- package/dist/src/layer/layerSymbols.js +4 -0
- package/dist/src/layer/layerSymbols.js.map +1 -1
- package/dist/src/layer/panoramaDatasetLayer.d.ts +2 -0
- package/dist/src/layer/panoramaDatasetLayer.js +33 -13
- package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
- package/dist/src/layer/tileProvider/flatGeobufTileProvider.js +3 -2
- package/dist/src/layer/tileProvider/flatGeobufTileProvider.js.map +1 -1
- package/dist/src/layer/tileProvider/mvtTileProvider.js +3 -2
- package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
- package/dist/src/layer/tileProvider/tileProvider.d.ts +6 -0
- package/dist/src/layer/tileProvider/tileProvider.js +12 -1
- package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
- package/dist/src/layer/vectorLayer.js +2 -2
- package/dist/src/layer/vectorLayer.js.map +1 -1
- package/dist/src/layer/vectorProperties.js +10 -1
- package/dist/src/layer/vectorProperties.js.map +1 -1
- package/dist/src/layer/vectorTileLayer.d.ts +14 -5
- package/dist/src/layer/vectorTileLayer.js +78 -26
- package/dist/src/layer/vectorTileLayer.js.map +1 -1
- package/dist/src/layer/wmsLayer.d.ts +3 -0
- package/dist/src/layer/wmsLayer.js +62 -32
- package/dist/src/layer/wmsLayer.js.map +1 -1
- package/dist/src/map/baseCesiumMap.d.ts +4 -4
- package/dist/src/map/baseCesiumMap.js +12 -0
- package/dist/src/map/baseCesiumMap.js.map +1 -1
- package/dist/src/map/cesiumMap.js +0 -11
- package/dist/src/map/cesiumMap.js.map +1 -1
- package/dist/src/map/obliqueMap.js +11 -4
- package/dist/src/map/obliqueMap.js.map +1 -1
- package/dist/src/map/panoramaMap.js +1 -1
- package/dist/src/panorama/panoramaImage.js +6 -5
- package/dist/src/panorama/panoramaImage.js.map +1 -1
- package/dist/src/style/declarativeStyleItem.js +7 -8
- package/dist/src/style/declarativeStyleItem.js.map +1 -1
- package/dist/src/util/fetch.d.ts +7 -0
- package/dist/src/util/fetch.js +7 -0
- package/dist/src/util/fetch.js.map +1 -1
- package/dist/src/vcsApp.d.ts +2 -3
- package/dist/src/vcsApp.js.map +1 -1
- package/dist/src/vcsModuleHelpers.d.ts +5 -2
- package/dist/src/vcsModuleHelpers.js +27 -1
- package/dist/src/vcsModuleHelpers.js.map +1 -1
- package/dist/tests/unit/helpers/cesiumHelpers.js +7 -1
- package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
- package/index.ts +27 -0
- package/package.json +2 -2
- package/src/cesium/cesium.d.ts +12 -0
- package/src/cesium/cesium3DTileFeature.ts +25 -3
- package/src/cesium/cesium3DTilePointFeature.ts +3 -1
- package/src/classRegistry.ts +8 -3
- package/src/featureProvider/abstractAttributeProvider.ts +201 -0
- package/src/featureProvider/abstractFeatureProvider.ts +27 -47
- package/src/featureProvider/compositeFeatureProvider.ts +103 -0
- package/src/featureProvider/csvAttributeProvider.ts +186 -0
- package/src/featureProvider/featureProviderFactory.ts +31 -0
- package/src/featureProvider/i3sAttributeProvider.ts +60 -0
- package/src/featureProvider/jsonAttributeProvider.ts +109 -0
- package/src/featureProvider/tileProviderFeatureProvider.ts +13 -14
- package/src/featureProvider/urlIdAttributeProvider.ts +82 -0
- package/src/featureProvider/wmsFeatureProvider.ts +24 -7
- package/src/global.d.ts +2 -0
- package/src/interaction/featureAtPixelInteraction.ts +53 -3
- package/src/interaction/featureProviderInteraction.ts +59 -38
- package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +296 -157
- package/src/layer/cesium/i3sCesiumImpl.ts +141 -0
- package/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.ts +4 -3
- package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +7 -6
- package/src/layer/cesium/vectorTileImageryProvider.ts +2 -2
- package/src/layer/cesiumTilesetLayer.ts +51 -1
- package/src/layer/i3sLayer.ts +343 -0
- package/src/layer/layer.ts +30 -3
- package/src/layer/layerSymbols.ts +5 -0
- package/src/layer/panoramaDatasetLayer.ts +44 -13
- package/src/layer/tileProvider/flatGeobufTileProvider.ts +3 -2
- package/src/layer/tileProvider/mvtTileProvider.ts +3 -2
- package/src/layer/tileProvider/tileProvider.ts +13 -1
- package/src/layer/vectorLayer.ts +4 -2
- package/src/layer/vectorProperties.ts +10 -1
- package/src/layer/vectorTileLayer.ts +135 -47
- package/src/layer/wmsLayer.ts +77 -44
- package/src/map/baseCesiumMap.ts +29 -5
- package/src/map/cesiumMap.ts +0 -15
- package/src/map/obliqueMap.ts +13 -6
- package/src/map/panoramaMap.ts +1 -1
- package/src/ol/ol.d.ts +13 -2
- package/src/panorama/panoramaImage.ts +8 -5
- package/src/style/declarativeStyleItem.ts +7 -9
- package/src/util/fetch.ts +7 -0
- package/src/vcsApp.ts +7 -8
- package/src/vcsModuleHelpers.ts +62 -4
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import type { Feature } from 'ol/index.js';
|
|
2
2
|
import type { Coordinate } from 'ol/coordinate.js';
|
|
3
3
|
import VcsObject, { type VcsObjectOptions } from '../vcsObject.js';
|
|
4
|
+
import { type VectorStyleItemOptions } from '../style/vectorStyleItem.js';
|
|
4
5
|
import VectorProperties, { type VectorPropertiesOptions } from '../layer/vectorProperties.js';
|
|
5
6
|
import type StyleItem from '../style/styleItem.js';
|
|
6
7
|
import { type StyleItemOptions } from '../style/styleItem.js';
|
|
7
8
|
import type VcsMap from '../map/vcsMap.js';
|
|
9
|
+
import type { DeclarativeStyleItemOptions } from '../style/declarativeStyleItem.js';
|
|
10
|
+
import type Layer from '../layer/layer.js';
|
|
8
11
|
export type AbstractFeatureProviderOptions = VcsObjectOptions & {
|
|
9
12
|
/**
|
|
10
13
|
* the style to apply to features created by this feature provider
|
|
11
14
|
*/
|
|
12
|
-
style?: StyleItemOptions | StyleItem;
|
|
15
|
+
style?: StyleItemOptions | VectorStyleItemOptions | DeclarativeStyleItemOptions | StyleItem;
|
|
13
16
|
/**
|
|
14
17
|
* the vector properties of the features. Allow picking is false by default.
|
|
15
18
|
*/
|
|
16
19
|
vectorProperties?: VectorProperties | VectorPropertiesOptions;
|
|
17
|
-
/**
|
|
18
|
-
* show the resulting geometry in the map
|
|
19
|
-
*/
|
|
20
|
-
showGeometry?: boolean;
|
|
21
20
|
/**
|
|
22
21
|
* can be used to constrict the featureProvider to specific mapTypes empty array means no restriction
|
|
23
22
|
*/
|
|
@@ -27,21 +26,13 @@ export type AbstractFeatureProviderOptions = VcsObjectOptions & {
|
|
|
27
26
|
* An abstract class providing features for {@link Layer}s which cannot provide features directly, but can provide features for
|
|
28
27
|
* a given location, e.g. WmsLayer with a getFeatureInfo configuration. In this case, a feature provider can be created for this layer.
|
|
29
28
|
*/
|
|
30
|
-
declare class AbstractFeatureProvider extends VcsObject {
|
|
29
|
+
declare abstract class AbstractFeatureProvider extends VcsObject {
|
|
31
30
|
static get className(): string;
|
|
32
31
|
static getDefaultOptions(): AbstractFeatureProviderOptions;
|
|
33
|
-
/**
|
|
34
|
-
* The layer name of the associated layer
|
|
35
|
-
*/
|
|
36
|
-
layerName: string;
|
|
37
32
|
/**
|
|
38
33
|
* The style set on features created by this provider
|
|
39
34
|
*/
|
|
40
35
|
style: StyleItem | undefined;
|
|
41
|
-
/**
|
|
42
|
-
* Whether to show the geometry on selection.
|
|
43
|
-
*/
|
|
44
|
-
showGeometry: boolean;
|
|
45
36
|
/**
|
|
46
37
|
* The vector properties assigned to features created by this provider
|
|
47
38
|
*/
|
|
@@ -50,7 +41,7 @@ declare class AbstractFeatureProvider extends VcsObject {
|
|
|
50
41
|
* Map ClassNames Can be used to only apply this featureProvider to the specified maps
|
|
51
42
|
*/
|
|
52
43
|
mapTypes: string[];
|
|
53
|
-
constructor(
|
|
44
|
+
constructor(options: AbstractFeatureProviderOptions);
|
|
54
45
|
/**
|
|
55
46
|
* checks if the featureProvider is supported for provided Map
|
|
56
47
|
*/
|
|
@@ -59,16 +50,16 @@ declare class AbstractFeatureProvider extends VcsObject {
|
|
|
59
50
|
* Ensures the feature has an ID, applies all vectorProperties and adds style and the vcsLayerName
|
|
60
51
|
* and isProvidedFeature symbols to the feature
|
|
61
52
|
*/
|
|
62
|
-
getProviderFeature(feature: Feature): Feature;
|
|
53
|
+
getProviderFeature(feature: Feature, layer: Layer): Feature;
|
|
63
54
|
/**
|
|
64
55
|
* This method must be overwritten by any implementations. Before returning the array of features, be sure to use the getProviderFeature
|
|
65
56
|
* on each feature to ensure all properties and symbols required by the VCM architecture
|
|
66
57
|
* to handle your feature is called: (e.g. <code>return features.map(f => this.getProviderFeature(f)</code>);
|
|
67
58
|
* @param coordinate - in mercator
|
|
68
59
|
* @param resolution - meters per pixel for the given location
|
|
69
|
-
* @param
|
|
60
|
+
* @param layer - the layer to request the features for
|
|
70
61
|
*/
|
|
71
|
-
getFeaturesByCoordinate(
|
|
62
|
+
abstract getFeaturesByCoordinate(coordinate: Coordinate, resolution: number, layer: Layer): Promise<Feature[]>;
|
|
72
63
|
/**
|
|
73
64
|
* Returns the object required to configure this feature provider.
|
|
74
65
|
*/
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
-
import { parseBoolean } from '@vcsuite/parsers';
|
|
3
2
|
import { vcsLayerName } from '../layer/layerSymbols.js';
|
|
4
3
|
import VcsObject from '../vcsObject.js';
|
|
5
4
|
import { getStyleOrDefaultStyle } from '../style/styleFactory.js';
|
|
6
|
-
import { defaultVectorStyle } from '../style/vectorStyleItem.js';
|
|
5
|
+
import { defaultVectorStyle, } from '../style/vectorStyleItem.js';
|
|
7
6
|
import VectorProperties from '../layer/vectorProperties.js';
|
|
8
7
|
import { isProvidedFeature } from './featureProviderSymbols.js';
|
|
9
8
|
/**
|
|
@@ -19,22 +18,13 @@ class AbstractFeatureProvider extends VcsObject {
|
|
|
19
18
|
vectorProperties: {
|
|
20
19
|
allowPicking: false,
|
|
21
20
|
},
|
|
22
|
-
showGeometry: false,
|
|
23
21
|
mapTypes: [],
|
|
24
22
|
};
|
|
25
23
|
}
|
|
26
|
-
/**
|
|
27
|
-
* The layer name of the associated layer
|
|
28
|
-
*/
|
|
29
|
-
layerName;
|
|
30
24
|
/**
|
|
31
25
|
* The style set on features created by this provider
|
|
32
26
|
*/
|
|
33
27
|
style;
|
|
34
|
-
/**
|
|
35
|
-
* Whether to show the geometry on selection.
|
|
36
|
-
*/
|
|
37
|
-
showGeometry;
|
|
38
28
|
/**
|
|
39
29
|
* The vector properties assigned to features created by this provider
|
|
40
30
|
*/
|
|
@@ -43,14 +33,12 @@ class AbstractFeatureProvider extends VcsObject {
|
|
|
43
33
|
* Map ClassNames Can be used to only apply this featureProvider to the specified maps
|
|
44
34
|
*/
|
|
45
35
|
mapTypes;
|
|
46
|
-
constructor(
|
|
36
|
+
constructor(options) {
|
|
47
37
|
const defaultOptions = AbstractFeatureProvider.getDefaultOptions();
|
|
48
38
|
super({ ...defaultOptions, ...options });
|
|
49
|
-
this.layerName = layerName;
|
|
50
39
|
this.style = options.style
|
|
51
40
|
? getStyleOrDefaultStyle(options.style, defaultVectorStyle.clone())
|
|
52
41
|
: undefined;
|
|
53
|
-
this.showGeometry = parseBoolean(options.showGeometry, defaultOptions.showGeometry);
|
|
54
42
|
this.vectorProperties =
|
|
55
43
|
options.vectorProperties instanceof VectorProperties
|
|
56
44
|
? options.vectorProperties
|
|
@@ -73,14 +61,14 @@ class AbstractFeatureProvider extends VcsObject {
|
|
|
73
61
|
* Ensures the feature has an ID, applies all vectorProperties and adds style and the vcsLayerName
|
|
74
62
|
* and isProvidedFeature symbols to the feature
|
|
75
63
|
*/
|
|
76
|
-
getProviderFeature(feature) {
|
|
64
|
+
getProviderFeature(feature, layer) {
|
|
77
65
|
if (!feature.getId()) {
|
|
78
66
|
feature.setId(uuidv4());
|
|
79
67
|
}
|
|
80
68
|
if (this.style) {
|
|
81
69
|
feature.setStyle(this.style.style);
|
|
82
70
|
}
|
|
83
|
-
feature[vcsLayerName] =
|
|
71
|
+
feature[vcsLayerName] = layer.name;
|
|
84
72
|
feature[isProvidedFeature] = true;
|
|
85
73
|
Object.entries(this.vectorProperties.getValues()).forEach(([key, value]) => {
|
|
86
74
|
const olcsKey = `olcs_${key}`;
|
|
@@ -90,33 +78,11 @@ class AbstractFeatureProvider extends VcsObject {
|
|
|
90
78
|
});
|
|
91
79
|
return feature;
|
|
92
80
|
}
|
|
93
|
-
/**
|
|
94
|
-
* This method must be overwritten by any implementations. Before returning the array of features, be sure to use the getProviderFeature
|
|
95
|
-
* on each feature to ensure all properties and symbols required by the VCM architecture
|
|
96
|
-
* to handle your feature is called: (e.g. <code>return features.map(f => this.getProviderFeature(f)</code>);
|
|
97
|
-
* @param coordinate - in mercator
|
|
98
|
-
* @param resolution - meters per pixel for the given location
|
|
99
|
-
* @param headers - headers optional request headers to be sent with the server request
|
|
100
|
-
*/
|
|
101
|
-
// eslint-disable-next-line class-methods-use-this
|
|
102
|
-
getFeaturesByCoordinate(
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
104
|
-
_coordinate,
|
|
105
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
106
|
-
_resolution,
|
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
108
|
-
_headers) {
|
|
109
|
-
return Promise.resolve([]);
|
|
110
|
-
}
|
|
111
81
|
/**
|
|
112
82
|
* Returns the object required to configure this feature provider.
|
|
113
83
|
*/
|
|
114
84
|
toJSON(defaultOptions = AbstractFeatureProvider.getDefaultOptions()) {
|
|
115
85
|
const config = super.toJSON(defaultOptions);
|
|
116
|
-
delete config.name; // the name is irrelevant, since its the layers name
|
|
117
|
-
if (this.showGeometry !== defaultOptions.showGeometry) {
|
|
118
|
-
config.showGeometry = this.showGeometry;
|
|
119
|
-
}
|
|
120
86
|
if (this.style) {
|
|
121
87
|
config.style = this.style.toJSON();
|
|
122
88
|
}
|
|
@@ -127,6 +93,9 @@ class AbstractFeatureProvider extends VcsObject {
|
|
|
127
93
|
if (Object.keys(vectorPropertiesConfig).length > 0) {
|
|
128
94
|
config.vectorProperties = vectorPropertiesConfig;
|
|
129
95
|
}
|
|
96
|
+
if (this.mapTypes.length > 0) {
|
|
97
|
+
config.mapTypes = this.mapTypes.slice();
|
|
98
|
+
}
|
|
130
99
|
return config;
|
|
131
100
|
}
|
|
132
101
|
destroy() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractFeatureProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/abstractFeatureProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"abstractFeatureProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/abstractFeatureProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type Feature from 'ol/Feature.js';
|
|
2
|
+
import type { Extent } from 'ol/extent.js';
|
|
3
|
+
import type { AbstractFeatureProviderOptions } from './abstractFeatureProvider.js';
|
|
4
|
+
import AbstractFeatureProvider from './abstractFeatureProvider.js';
|
|
5
|
+
import AbstractAttributeProvider, { type AbstractAttributeProviderOptions, type AttributeProvider } from './abstractAttributeProvider.js';
|
|
6
|
+
import type { EventFeature } from '../interaction/abstractInteraction.js';
|
|
7
|
+
import type Layer from '../layer/layer.js';
|
|
8
|
+
export type CompositeFeatureProviderOptions = AbstractFeatureProviderOptions & {
|
|
9
|
+
featureProviders: (AbstractFeatureProviderOptions | AbstractFeatureProvider)[];
|
|
10
|
+
attributeProviders: (AbstractAttributeProviderOptions | AbstractAttributeProvider)[];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A feature provider that combines multiple feature providers and attribute providers.
|
|
14
|
+
* Used to combine multiple feature & attribute providers for a layer.
|
|
15
|
+
* The order of providers is important, as attributes are applied and
|
|
16
|
+
* features are returned in the order.
|
|
17
|
+
*/
|
|
18
|
+
export default class CompositeFeatureProvider extends AbstractFeatureProvider implements AttributeProvider {
|
|
19
|
+
static get className(): string;
|
|
20
|
+
private _attributeProviders;
|
|
21
|
+
private _featureProviders;
|
|
22
|
+
constructor(options: CompositeFeatureProviderOptions);
|
|
23
|
+
augmentFeatures(features: EventFeature[], extent?: Extent): Promise<void>;
|
|
24
|
+
getFeaturesByCoordinate(coordinate: [number, number], resolution: number, layer: Layer): Promise<Feature[]>;
|
|
25
|
+
augmentFeature(feature: EventFeature): Promise<void>;
|
|
26
|
+
toJSON(defaultOptions?: AbstractFeatureProviderOptions): CompositeFeatureProviderOptions;
|
|
27
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import AbstractFeatureProvider from './abstractFeatureProvider.js';
|
|
2
|
+
import AbstractAttributeProvider from './abstractAttributeProvider.js';
|
|
3
|
+
import { getProviderForOption } from './featureProviderFactory.js';
|
|
4
|
+
/**
|
|
5
|
+
* A feature provider that combines multiple feature providers and attribute providers.
|
|
6
|
+
* Used to combine multiple feature & attribute providers for a layer.
|
|
7
|
+
* The order of providers is important, as attributes are applied and
|
|
8
|
+
* features are returned in the order.
|
|
9
|
+
*/
|
|
10
|
+
export default class CompositeFeatureProvider extends AbstractFeatureProvider {
|
|
11
|
+
static get className() {
|
|
12
|
+
return 'CompositeFeatureProvider';
|
|
13
|
+
}
|
|
14
|
+
_attributeProviders;
|
|
15
|
+
_featureProviders;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super(options);
|
|
18
|
+
this._featureProviders = options.featureProviders
|
|
19
|
+
.map(getProviderForOption)
|
|
20
|
+
.filter((fp) => fp instanceof AbstractFeatureProvider);
|
|
21
|
+
this._featureProviders.forEach((fp) => {
|
|
22
|
+
fp.mapTypes = this.mapTypes;
|
|
23
|
+
});
|
|
24
|
+
this._attributeProviders = options.attributeProviders
|
|
25
|
+
.map(getProviderForOption)
|
|
26
|
+
.filter((ap) => ap instanceof AbstractAttributeProvider);
|
|
27
|
+
}
|
|
28
|
+
async augmentFeatures(features, extent) {
|
|
29
|
+
for (const provider of this._attributeProviders) {
|
|
30
|
+
// order is relevant. second provider can overwrite or use attributes of first provider.
|
|
31
|
+
// eslint-disable-next-line no-await-in-loop
|
|
32
|
+
await provider.augmentFeatures(features, extent);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async getFeaturesByCoordinate(coordinate, resolution, layer) {
|
|
36
|
+
const featureArray = await Promise.all(this._featureProviders.map((fp) => fp.getFeaturesByCoordinate(coordinate, resolution, layer)));
|
|
37
|
+
return featureArray.flat();
|
|
38
|
+
}
|
|
39
|
+
async augmentFeature(feature) {
|
|
40
|
+
for (const provider of this._attributeProviders) {
|
|
41
|
+
// order is relevant. second provider can overwrite or use attributes of first provider.
|
|
42
|
+
// eslint-disable-next-line no-await-in-loop
|
|
43
|
+
await provider.augmentFeature(feature);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
toJSON(defaultOptions = AbstractFeatureProvider.getDefaultOptions()) {
|
|
47
|
+
const config = super.toJSON(defaultOptions);
|
|
48
|
+
config.featureProviders = this._featureProviders.map((fp) => fp.toJSON());
|
|
49
|
+
config.attributeProviders = this._attributeProviders.map((ap) => ap.toJSON());
|
|
50
|
+
return config;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=compositeFeatureProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositeFeatureProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/compositeFeatureProvider.ts"],"names":[],"mappings":"AAGA,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,yBAGN,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAanE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,wBACnB,SAAQ,uBAAuB;IAG/B,MAAM,KAAK,SAAS;QAClB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAEO,mBAAmB,CAAsB;IAEzC,iBAAiB,CAA4B;IAErD,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;aAC9C,GAAG,CAAC,oBAAoB,CAAC;aACzB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,uBAAuB,CAAC,CAAC;QAEzD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACpC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB;aAClD,GAAG,CAAC,oBAAoB,CAAC;aACzB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,yBAAyB,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAwB,EACxB,MAAe;QAEf,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,wFAAwF;YACxF,4CAA4C;YAC5C,MAAM,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,UAA4B,EAC5B,UAAkB,EAClB,KAAY;QAEZ,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAChC,EAAE,CAAC,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAC1D,CACF,CAAC;QAEF,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAqB;QACxC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,wFAAwF;YACxF,4CAA4C;YAC5C,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,CACJ,iBAAiD,uBAAuB,CAAC,iBAAiB,EAAE;QAE5F,MAAM,MAAM,GAA6C,KAAK,CAAC,MAAM,CACnE,cAAc,CACf,CAAC;QAEF,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC9D,EAAE,CAAC,MAAM,EAAE,CACZ,CAAC;QACF,OAAO,MAAyC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import AbstractAttributeProvider, { type AbstractAttributeProviderOptions } from './abstractAttributeProvider.js';
|
|
2
|
+
export type CsvAttributeProviderOptions = AbstractAttributeProviderOptions & {
|
|
3
|
+
/**
|
|
4
|
+
* CSV data as a string or URL to fetch the CSV data from
|
|
5
|
+
*/
|
|
6
|
+
data: string;
|
|
7
|
+
/**
|
|
8
|
+
* Delimiter used in the CSV data (default: ",")
|
|
9
|
+
*/
|
|
10
|
+
delimiter?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Column name to use as the feature ID (default: "id")
|
|
13
|
+
*/
|
|
14
|
+
idColumn?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Optional array of headers, if the data does not contain a header row. If not provided, the first row of the CSV data will be used as headers.
|
|
17
|
+
*/
|
|
18
|
+
headers?: string[] | null;
|
|
19
|
+
httpHeaders?: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
export default class CsvAttributeProvider extends AbstractAttributeProvider {
|
|
22
|
+
static get className(): string;
|
|
23
|
+
static getDefaultOptions(): Required<CsvAttributeProviderOptions>;
|
|
24
|
+
private _urlOrData;
|
|
25
|
+
private _data?;
|
|
26
|
+
private _delimiter;
|
|
27
|
+
private _idColumn;
|
|
28
|
+
private _headers?;
|
|
29
|
+
private _httpHeaders?;
|
|
30
|
+
private _dataLoadingPromise?;
|
|
31
|
+
constructor(options: CsvAttributeProviderOptions);
|
|
32
|
+
private _readLine;
|
|
33
|
+
private _loadData;
|
|
34
|
+
private _ensureDataLoaded;
|
|
35
|
+
protected _getAttributes(key: string): Promise<Record<string, unknown> | undefined>;
|
|
36
|
+
protected _getBulkAttributes(bulk: {
|
|
37
|
+
key: string;
|
|
38
|
+
}[]): Promise<(Record<string, unknown> | undefined)[]>;
|
|
39
|
+
toJSON(defaultOptions?: Required<CsvAttributeProviderOptions>): CsvAttributeProviderOptions;
|
|
40
|
+
destroy(): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import AbstractAttributeProvider from './abstractAttributeProvider.js';
|
|
2
|
+
import { featureProviderClassRegistry } from '../classRegistry.js';
|
|
3
|
+
import { getInitForUrl } from '../util/fetch.js';
|
|
4
|
+
export default class CsvAttributeProvider extends AbstractAttributeProvider {
|
|
5
|
+
static get className() {
|
|
6
|
+
return 'CsvAttributeProvider';
|
|
7
|
+
}
|
|
8
|
+
static getDefaultOptions() {
|
|
9
|
+
return {
|
|
10
|
+
name: '',
|
|
11
|
+
keyProperty: '',
|
|
12
|
+
properties: {},
|
|
13
|
+
type: CsvAttributeProvider.className,
|
|
14
|
+
data: '',
|
|
15
|
+
delimiter: ',',
|
|
16
|
+
idColumn: 'id',
|
|
17
|
+
headers: null,
|
|
18
|
+
httpHeaders: {},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
_urlOrData;
|
|
22
|
+
_data;
|
|
23
|
+
_delimiter;
|
|
24
|
+
_idColumn;
|
|
25
|
+
_headers;
|
|
26
|
+
_httpHeaders;
|
|
27
|
+
_dataLoadingPromise;
|
|
28
|
+
constructor(options) {
|
|
29
|
+
const defaultOptions = CsvAttributeProvider.getDefaultOptions();
|
|
30
|
+
super({ ...defaultOptions, ...options });
|
|
31
|
+
this._urlOrData = options.data;
|
|
32
|
+
this._delimiter = options.delimiter ?? defaultOptions.delimiter;
|
|
33
|
+
this._idColumn = options.idColumn ?? defaultOptions.idColumn;
|
|
34
|
+
if (Array.isArray(options.headers)) {
|
|
35
|
+
this._headers = options.headers.slice();
|
|
36
|
+
}
|
|
37
|
+
if (options.httpHeaders) {
|
|
38
|
+
this._httpHeaders = structuredClone(options.httpHeaders);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
_readLine(line) {
|
|
42
|
+
return line.split(this._delimiter).map((v) => v.trim());
|
|
43
|
+
}
|
|
44
|
+
async _loadData() {
|
|
45
|
+
if (this._data) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
let csvData;
|
|
49
|
+
// Check if URL contains newline - if so, it's the data itself
|
|
50
|
+
if (this._urlOrData.includes('\n')) {
|
|
51
|
+
csvData = this._urlOrData;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const init = getInitForUrl(this._urlOrData, this._httpHeaders);
|
|
55
|
+
const response = await fetch(this._urlOrData, init);
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
throw new Error(`Failed to fetch CSV data from ${this._urlOrData}`);
|
|
58
|
+
}
|
|
59
|
+
csvData = await response.text();
|
|
60
|
+
}
|
|
61
|
+
// Split by both Windows (\r\n) and Unix (\n) line endings
|
|
62
|
+
const lines = csvData.split(/\r?\n/).filter((line) => line.trim() !== '');
|
|
63
|
+
if (lines.length === 0) {
|
|
64
|
+
this.getLogger().warning('No CSV data available to load.');
|
|
65
|
+
this._data = new Map();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const dataMap = new Map();
|
|
69
|
+
let startIndex = 0;
|
|
70
|
+
if (!this._headers) {
|
|
71
|
+
this._headers = this._readLine(lines[0]);
|
|
72
|
+
startIndex = 1;
|
|
73
|
+
}
|
|
74
|
+
for (let i = startIndex; i < lines.length; i++) {
|
|
75
|
+
const values = this._readLine(lines[i]);
|
|
76
|
+
const attributes = {};
|
|
77
|
+
for (let j = 0; j < values.length; j++) {
|
|
78
|
+
const key = this._headers[j] ?? `column_${j}`;
|
|
79
|
+
attributes[key] = values[j];
|
|
80
|
+
}
|
|
81
|
+
const id = attributes[this._idColumn];
|
|
82
|
+
if (typeof id === 'string') {
|
|
83
|
+
dataMap.set(id, attributes);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
this._data = dataMap;
|
|
87
|
+
}
|
|
88
|
+
_ensureDataLoaded() {
|
|
89
|
+
if (!this._dataLoadingPromise) {
|
|
90
|
+
this._dataLoadingPromise = this._loadData();
|
|
91
|
+
}
|
|
92
|
+
return this._dataLoadingPromise;
|
|
93
|
+
}
|
|
94
|
+
async _getAttributes(key) {
|
|
95
|
+
await this._ensureDataLoaded();
|
|
96
|
+
return this._data?.get(key);
|
|
97
|
+
}
|
|
98
|
+
async _getBulkAttributes(bulk) {
|
|
99
|
+
await this._ensureDataLoaded();
|
|
100
|
+
return bulk.map(({ key }) => this._data?.get(key));
|
|
101
|
+
}
|
|
102
|
+
toJSON(defaultOptions = CsvAttributeProvider.getDefaultOptions()) {
|
|
103
|
+
const config = super.toJSON(defaultOptions);
|
|
104
|
+
config.data = this._urlOrData;
|
|
105
|
+
if (this._delimiter !== defaultOptions.delimiter) {
|
|
106
|
+
config.delimiter = this._delimiter;
|
|
107
|
+
}
|
|
108
|
+
if (this._idColumn !== defaultOptions.idColumn) {
|
|
109
|
+
config.idColumn = this._idColumn;
|
|
110
|
+
}
|
|
111
|
+
if (this._headers && this._headers.length > 0) {
|
|
112
|
+
config.headers = this._headers.slice();
|
|
113
|
+
}
|
|
114
|
+
if (this._httpHeaders) {
|
|
115
|
+
config.httpHeaders = structuredClone(this._httpHeaders);
|
|
116
|
+
}
|
|
117
|
+
return config;
|
|
118
|
+
}
|
|
119
|
+
destroy() {
|
|
120
|
+
this._data?.clear();
|
|
121
|
+
this._data = undefined;
|
|
122
|
+
super.destroy();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
featureProviderClassRegistry.registerClass(CsvAttributeProvider.className, CsvAttributeProvider);
|
|
126
|
+
//# sourceMappingURL=csvAttributeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csvAttributeProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/csvAttributeProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import AbstractFeatureProvider, { type AbstractFeatureProviderOptions } from './abstractFeatureProvider.js';
|
|
2
|
+
import AbstractAttributeProvider, { type AbstractAttributeProviderOptions } from './abstractAttributeProvider.js';
|
|
3
|
+
export declare function getProviderForOption(options?: AbstractFeatureProviderOptions | AbstractAttributeProviderOptions | AbstractAttributeProvider | AbstractFeatureProvider): AbstractFeatureProvider | AbstractAttributeProvider | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import AbstractFeatureProvider from './abstractFeatureProvider.js';
|
|
2
|
+
import AbstractAttributeProvider from './abstractAttributeProvider.js';
|
|
3
|
+
import { featureProviderClassRegistry } from '../classRegistry.js';
|
|
4
|
+
export function getProviderForOption(options) {
|
|
5
|
+
if (options instanceof AbstractFeatureProvider ||
|
|
6
|
+
options instanceof AbstractAttributeProvider) {
|
|
7
|
+
return options;
|
|
8
|
+
}
|
|
9
|
+
if (options?.type) {
|
|
10
|
+
const CTOR = featureProviderClassRegistry.getClass(options.type);
|
|
11
|
+
if (CTOR) {
|
|
12
|
+
return new CTOR(options);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=featureProviderFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureProviderFactory.js","sourceRoot":"","sources":["../../../src/featureProvider/featureProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,uBAEN,MAAM,8BAA8B,CAAC;AACtC,OAAO,yBAEN,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,UAAU,oBAAoB,CAClC,OAI2B;IAE3B,IACE,OAAO,YAAY,uBAAuB;QAC1C,OAAO,YAAY,yBAAyB,EAC5C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,4BAA4B,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Cesium3DTileFeature } from '@vcmap-cesium/engine';
|
|
2
|
+
import Feature from 'ol/Feature.js';
|
|
3
|
+
import AbstractAttributeProvider from './abstractAttributeProvider.js';
|
|
4
|
+
export default class I3SAttributeProvider extends AbstractAttributeProvider {
|
|
5
|
+
static get className(): string;
|
|
6
|
+
protected _getAttributes(_key: string, feature: Cesium3DTileFeature | Feature): Promise<Record<string, unknown> | undefined>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getLogger } from '@vcsuite/logger';
|
|
2
|
+
import { Cesium3DTileFeature } from '@vcmap-cesium/engine';
|
|
3
|
+
import Feature from 'ol/Feature.js';
|
|
4
|
+
import { isI3SFeature } from '../interaction/featureAtPixelInteraction.js';
|
|
5
|
+
import AbstractAttributeProvider from './abstractAttributeProvider.js';
|
|
6
|
+
import { isProvidedFeature } from './featureProviderSymbols.js';
|
|
7
|
+
import { i3sData } from '../layer/layerSymbols.js';
|
|
8
|
+
export default class I3SAttributeProvider extends AbstractAttributeProvider {
|
|
9
|
+
static get className() {
|
|
10
|
+
return 'I3SAttributeProvider';
|
|
11
|
+
}
|
|
12
|
+
async _getAttributes(_key, feature) {
|
|
13
|
+
if (feature instanceof Cesium3DTileFeature) {
|
|
14
|
+
const id = feature.featureId;
|
|
15
|
+
if (id && feature.content?.tile?.i3sNode) {
|
|
16
|
+
const node = feature.content.tile.i3sNode;
|
|
17
|
+
return node
|
|
18
|
+
.loadFields()
|
|
19
|
+
.then(() => node.getFieldsForFeature(id))
|
|
20
|
+
.catch(() => {
|
|
21
|
+
getLogger(this.className).warning(`Error getting I3S fields for feature with id ${id}`);
|
|
22
|
+
return undefined;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (feature instanceof Feature &&
|
|
27
|
+
feature[isProvidedFeature] &&
|
|
28
|
+
isI3SFeature(feature)) {
|
|
29
|
+
const { i3sNode, cartesianPosition } = feature[i3sData];
|
|
30
|
+
if (i3sNode && cartesianPosition) {
|
|
31
|
+
return i3sNode
|
|
32
|
+
.loadFields()
|
|
33
|
+
.then(() => i3sNode.getFieldsForPickedPosition(cartesianPosition))
|
|
34
|
+
.catch(() => {
|
|
35
|
+
getLogger(this.className).warning('Error getting I3S fields for picked position');
|
|
36
|
+
return undefined;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=i3sAttributeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3sAttributeProvider.js","sourceRoot":"","sources":["../../../src/featureProvider/i3sAttributeProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,yBAAyB;IACzE,MAAM,KAAK,SAAS;QAClB,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,IAAY,EACZ,OAAsC;QAEtC,IAAI,OAAO,YAAY,mBAAmB,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;YAE7B,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAA6B,CAAC;gBAChE,OAAO,IAAI;qBACR,UAAU,EAAE;qBACZ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAA4B,CAAC;qBACnE,KAAK,CAAC,GAAG,EAAE;oBACV,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAC/B,gDAAgD,EAAE,EAAE,CACrD,CAAC;oBACF,OAAO,SAAS,CAAC;gBACnB,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;aAAM,IACL,OAAO,YAAY,OAAO;YAC1B,OAAO,CAAC,iBAAiB,CAAC;YAC1B,YAAY,CAAC,OAAO,CAAC,EACrB,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC;gBACjC,OAAO,OAAO;qBACX,UAAU,EAAE;qBACZ,IAAI,CACH,GAAG,EAAE,CACH,OAAO,CAAC,0BAA0B,CAAC,iBAAiB,CAGnD,CACJ;qBACA,KAAK,CAAC,GAAG,EAAE;oBACV,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAC/B,8CAA8C,CAC/C,CAAC;oBACF,OAAO,SAAS,CAAC;gBACnB,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import AbstractAttributeProvider, { type AbstractAttributeProviderOptions } from './abstractAttributeProvider.js';
|
|
2
|
+
export type JsonAttributeData = {
|
|
3
|
+
features: {
|
|
4
|
+
id: string | number;
|
|
5
|
+
properties: Record<string, unknown>;
|
|
6
|
+
}[];
|
|
7
|
+
};
|
|
8
|
+
export type JsonAttributeProviderOptions = AbstractAttributeProviderOptions & {
|
|
9
|
+
data: string | JsonAttributeData;
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
export default class JsonAttributeProvider extends AbstractAttributeProvider {
|
|
13
|
+
static get className(): string;
|
|
14
|
+
static getDefaultOptions(): JsonAttributeProviderOptions;
|
|
15
|
+
private _data?;
|
|
16
|
+
private readonly _dataOrUrl;
|
|
17
|
+
private readonly _headers?;
|
|
18
|
+
constructor(options: JsonAttributeProviderOptions);
|
|
19
|
+
private _loadData;
|
|
20
|
+
protected _getAttributes(key: string): Promise<Record<string, unknown> | undefined>;
|
|
21
|
+
protected _getBulkAttributes(bulk: {
|
|
22
|
+
key: string;
|
|
23
|
+
}[]): Promise<(Record<string, unknown> | undefined)[]>;
|
|
24
|
+
toJSON(defaultOptions?: JsonAttributeProviderOptions): JsonAttributeProviderOptions;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|