@open-pioneer/map 0.6.0 → 0.6.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/CHANGELOG.md +7 -0
- package/model/AbstractLayer.js +1 -0
- package/model/AbstractLayer.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
package/model/AbstractLayer.js
CHANGED
|
@@ -18,6 +18,7 @@ class AbstractLayer extends AbstractLayerBase {
|
|
|
18
18
|
this.#healthCheck = config.healthCheck;
|
|
19
19
|
this.#visible = config.visible ?? true;
|
|
20
20
|
this.#loadState = getSourceState(getSource(this.#olLayer));
|
|
21
|
+
this.__setVisible(this.#visible);
|
|
21
22
|
}
|
|
22
23
|
get visible() {
|
|
23
24
|
return this.#visible;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractLayer.js","sources":["AbstractLayer.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource, createLogger } from \"@open-pioneer/core\";\nimport { unByKey } from \"ol/Observable\";\nimport { EventsKey } from \"ol/events\";\nimport OlBaseLayer from \"ol/layer/Base\";\nimport OlLayer from \"ol/layer/Layer\";\nimport OlSource from \"ol/source/Source\";\nimport { HealthCheckFunction, Layer, LayerConfig, LayerLoadState, SimpleLayerConfig } from \"../api\";\nimport { AbstractLayerBase } from \"./AbstractLayerBase\";\nimport { MapModelImpl } from \"./MapModelImpl\";\n\nconst LOG = createLogger(\"map:AbstractLayer\");\n\n/**\n * Base class for normal layer types.\n *\n * These layers always have an associated OpenLayers layer.\n */\nexport abstract class AbstractLayer<AdditionalEvents = {}>\n extends AbstractLayerBase<AdditionalEvents>\n implements Layer\n{\n #olLayer: OlBaseLayer;\n #isBaseLayer: boolean;\n #healthCheck?: string | HealthCheckFunction;\n #visible: boolean;\n\n #loadState: LayerLoadState;\n #stateWatchResource: Resource | undefined;\n\n constructor(config: SimpleLayerConfig) {\n super(config);\n this.#olLayer = config.olLayer;\n this.#isBaseLayer = config.isBaseLayer ?? false;\n this.#healthCheck = config.healthCheck;\n\n this.#visible = config.visible ?? true;\n this.#loadState = getSourceState(getSource(this.#olLayer));\n }\n\n get visible(): boolean {\n return this.#visible;\n }\n\n get olLayer(): OlBaseLayer {\n return this.#olLayer;\n }\n\n get isBaseLayer(): boolean {\n return this.#isBaseLayer;\n }\n\n get loadState(): LayerLoadState {\n return this.#loadState;\n }\n\n destroy() {\n if (this.__destroyed) {\n return;\n }\n\n this.#stateWatchResource?.destroy();\n this.olLayer.dispose();\n super.destroy();\n }\n\n /**\n * Called by the map model when the layer is added to the map.\n */\n __attach(map: MapModelImpl): void {\n super.__attachToMap(map);\n\n const { initial: initialState, resource: stateWatchResource } = watchLoadState(\n this,\n this.#healthCheck,\n (state) => {\n this.#setLoadState(state);\n }\n );\n this.#stateWatchResource = stateWatchResource;\n this.#setLoadState(initialState);\n }\n\n setVisible(newVisibility: boolean): void {\n if (this.isBaseLayer) {\n LOG.warn(\n `Cannot change visibility of base layer '${this.id}': use activateBaseLayer() on the map's LayerCollection instead.`\n );\n return;\n }\n\n this.__setVisible(newVisibility);\n }\n\n __setVisible(newVisibility: boolean): void {\n let changed = false;\n if (this.#visible !== newVisibility) {\n this.#visible = newVisibility;\n changed = true;\n }\n\n // Improvement: actual map sync?\n if (this.#olLayer.getVisible() != this.#visible) {\n this.#olLayer.setVisible(newVisibility);\n }\n changed && this.__emitChangeEvent(\"changed:visible\");\n }\n\n #setLoadState(loadState: LayerLoadState) {\n if (loadState !== this.#loadState) {\n this.#loadState = loadState;\n this.__emitChangeEvent(\"changed:loadState\");\n }\n }\n}\n\nfunction watchLoadState(\n layer: AbstractLayer,\n healthCheck: LayerConfig[\"healthCheck\"],\n onChange: (newState: LayerLoadState) => void\n): { initial: LayerLoadState; resource: Resource } {\n const olLayer = layer.olLayer;\n\n if (!(olLayer instanceof OlLayer)) {\n // Some layers don't have a source (such as group)\n return {\n initial: \"loaded\",\n resource: {\n destroy() {\n void 0;\n }\n }\n };\n }\n\n let currentSource = getSource(olLayer);\n const currentOlLayerState = getSourceState(currentSource);\n\n let currentLoadState: LayerLoadState = currentOlLayerState;\n let currentHealthState = \"loading\"; // initial state loading until health check finished\n\n // custom health check not needed when OpenLayers already returning an error state\n if (currentOlLayerState !== \"error\") {\n // health check only once during initialization\n doHealthCheck(layer, healthCheck).then((state: LayerLoadState) => {\n currentHealthState = state;\n updateState();\n });\n }\n\n const updateState = () => {\n const olLayerState = getSourceState(currentSource);\n const nextLoadState: LayerLoadState =\n currentHealthState === \"error\" ? \"error\" : olLayerState;\n\n if (currentLoadState !== nextLoadState) {\n currentLoadState = nextLoadState;\n onChange(currentLoadState);\n }\n };\n\n let stateHandle: EventsKey | undefined;\n stateHandle = currentSource?.on(\"change\", () => {\n updateState();\n });\n\n const sourceHandle = olLayer.on(\"change:source\", () => {\n // unsubscribe from old source\n stateHandle && unByKey(stateHandle);\n stateHandle = undefined;\n\n // subscribe to new source and update state\n currentSource = getSource(olLayer);\n stateHandle = currentSource?.on(\"change\", () => {\n updateState();\n });\n updateState();\n });\n return {\n initial: currentLoadState,\n resource: {\n destroy() {\n stateHandle && unByKey(stateHandle);\n unByKey(sourceHandle);\n }\n }\n };\n}\n\nasync function doHealthCheck(\n layer: AbstractLayer,\n healthCheck: LayerConfig[\"healthCheck\"]\n): Promise<LayerLoadState> {\n if (healthCheck == null) {\n return \"loaded\";\n }\n\n let healthCheckFn: HealthCheckFunction;\n if (typeof healthCheck === \"function\") {\n healthCheckFn = healthCheck;\n } else if (typeof healthCheck === \"string\") {\n healthCheckFn = async () => {\n const httpService = layer.map.__sharedDependencies.httpService;\n const response = await httpService.fetch(healthCheck);\n if (response.ok) {\n return \"loaded\";\n }\n LOG.warn(\n `Health check failed for layer '${layer.id}' (http status ${response.status})`\n );\n return \"error\";\n };\n } else {\n LOG.error(\n `Unexpected object for 'healthCheck' parameter of layer '${layer.id}'`,\n healthCheck\n );\n return \"error\";\n }\n\n try {\n return await healthCheckFn(layer);\n } catch (e) {\n LOG.warn(`Health check failed for layer '${layer.id}'`, e);\n return \"error\";\n }\n}\n\nfunction getSource(olLayer: OlLayer | OlBaseLayer) {\n if (!(olLayer instanceof OlLayer)) {\n return undefined;\n }\n return (olLayer?.getSource() as OlSource | null) ?? undefined;\n}\n\nfunction getSourceState(olSource: OlSource | undefined) {\n const state = olSource?.getState();\n switch (state) {\n case undefined:\n return \"loaded\";\n case \"undefined\":\n return \"not-loaded\";\n case \"loading\":\n return \"loading\";\n case \"ready\":\n return \"loaded\";\n case \"error\":\n return \"error\";\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractLayer.js","sources":["AbstractLayer.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource, createLogger } from \"@open-pioneer/core\";\nimport { unByKey } from \"ol/Observable\";\nimport { EventsKey } from \"ol/events\";\nimport OlBaseLayer from \"ol/layer/Base\";\nimport OlLayer from \"ol/layer/Layer\";\nimport OlSource from \"ol/source/Source\";\nimport { HealthCheckFunction, Layer, LayerConfig, LayerLoadState, SimpleLayerConfig } from \"../api\";\nimport { AbstractLayerBase } from \"./AbstractLayerBase\";\nimport { MapModelImpl } from \"./MapModelImpl\";\n\nconst LOG = createLogger(\"map:AbstractLayer\");\n\n/**\n * Base class for normal layer types.\n *\n * These layers always have an associated OpenLayers layer.\n */\nexport abstract class AbstractLayer<AdditionalEvents = {}>\n extends AbstractLayerBase<AdditionalEvents>\n implements Layer\n{\n #olLayer: OlBaseLayer;\n #isBaseLayer: boolean;\n #healthCheck?: string | HealthCheckFunction;\n #visible: boolean;\n\n #loadState: LayerLoadState;\n #stateWatchResource: Resource | undefined;\n\n constructor(config: SimpleLayerConfig) {\n super(config);\n this.#olLayer = config.olLayer;\n this.#isBaseLayer = config.isBaseLayer ?? false;\n this.#healthCheck = config.healthCheck;\n\n this.#visible = config.visible ?? true;\n this.#loadState = getSourceState(getSource(this.#olLayer));\n\n this.__setVisible(this.#visible); // apply initial visibility\n }\n\n get visible(): boolean {\n return this.#visible;\n }\n\n get olLayer(): OlBaseLayer {\n return this.#olLayer;\n }\n\n get isBaseLayer(): boolean {\n return this.#isBaseLayer;\n }\n\n get loadState(): LayerLoadState {\n return this.#loadState;\n }\n\n destroy() {\n if (this.__destroyed) {\n return;\n }\n\n this.#stateWatchResource?.destroy();\n this.olLayer.dispose();\n super.destroy();\n }\n\n /**\n * Called by the map model when the layer is added to the map.\n */\n __attach(map: MapModelImpl): void {\n super.__attachToMap(map);\n\n const { initial: initialState, resource: stateWatchResource } = watchLoadState(\n this,\n this.#healthCheck,\n (state) => {\n this.#setLoadState(state);\n }\n );\n this.#stateWatchResource = stateWatchResource;\n this.#setLoadState(initialState);\n }\n\n setVisible(newVisibility: boolean): void {\n if (this.isBaseLayer) {\n LOG.warn(\n `Cannot change visibility of base layer '${this.id}': use activateBaseLayer() on the map's LayerCollection instead.`\n );\n return;\n }\n\n this.__setVisible(newVisibility);\n }\n\n __setVisible(newVisibility: boolean): void {\n let changed = false;\n if (this.#visible !== newVisibility) {\n this.#visible = newVisibility;\n changed = true;\n }\n\n // Improvement: actual map sync?\n if (this.#olLayer.getVisible() != this.#visible) {\n this.#olLayer.setVisible(newVisibility);\n }\n changed && this.__emitChangeEvent(\"changed:visible\");\n }\n\n #setLoadState(loadState: LayerLoadState) {\n if (loadState !== this.#loadState) {\n this.#loadState = loadState;\n this.__emitChangeEvent(\"changed:loadState\");\n }\n }\n}\n\nfunction watchLoadState(\n layer: AbstractLayer,\n healthCheck: LayerConfig[\"healthCheck\"],\n onChange: (newState: LayerLoadState) => void\n): { initial: LayerLoadState; resource: Resource } {\n const olLayer = layer.olLayer;\n\n if (!(olLayer instanceof OlLayer)) {\n // Some layers don't have a source (such as group)\n return {\n initial: \"loaded\",\n resource: {\n destroy() {\n void 0;\n }\n }\n };\n }\n\n let currentSource = getSource(olLayer);\n const currentOlLayerState = getSourceState(currentSource);\n\n let currentLoadState: LayerLoadState = currentOlLayerState;\n let currentHealthState = \"loading\"; // initial state loading until health check finished\n\n // custom health check not needed when OpenLayers already returning an error state\n if (currentOlLayerState !== \"error\") {\n // health check only once during initialization\n doHealthCheck(layer, healthCheck).then((state: LayerLoadState) => {\n currentHealthState = state;\n updateState();\n });\n }\n\n const updateState = () => {\n const olLayerState = getSourceState(currentSource);\n const nextLoadState: LayerLoadState =\n currentHealthState === \"error\" ? \"error\" : olLayerState;\n\n if (currentLoadState !== nextLoadState) {\n currentLoadState = nextLoadState;\n onChange(currentLoadState);\n }\n };\n\n let stateHandle: EventsKey | undefined;\n stateHandle = currentSource?.on(\"change\", () => {\n updateState();\n });\n\n const sourceHandle = olLayer.on(\"change:source\", () => {\n // unsubscribe from old source\n stateHandle && unByKey(stateHandle);\n stateHandle = undefined;\n\n // subscribe to new source and update state\n currentSource = getSource(olLayer);\n stateHandle = currentSource?.on(\"change\", () => {\n updateState();\n });\n updateState();\n });\n return {\n initial: currentLoadState,\n resource: {\n destroy() {\n stateHandle && unByKey(stateHandle);\n unByKey(sourceHandle);\n }\n }\n };\n}\n\nasync function doHealthCheck(\n layer: AbstractLayer,\n healthCheck: LayerConfig[\"healthCheck\"]\n): Promise<LayerLoadState> {\n if (healthCheck == null) {\n return \"loaded\";\n }\n\n let healthCheckFn: HealthCheckFunction;\n if (typeof healthCheck === \"function\") {\n healthCheckFn = healthCheck;\n } else if (typeof healthCheck === \"string\") {\n healthCheckFn = async () => {\n const httpService = layer.map.__sharedDependencies.httpService;\n const response = await httpService.fetch(healthCheck);\n if (response.ok) {\n return \"loaded\";\n }\n LOG.warn(\n `Health check failed for layer '${layer.id}' (http status ${response.status})`\n );\n return \"error\";\n };\n } else {\n LOG.error(\n `Unexpected object for 'healthCheck' parameter of layer '${layer.id}'`,\n healthCheck\n );\n return \"error\";\n }\n\n try {\n return await healthCheckFn(layer);\n } catch (e) {\n LOG.warn(`Health check failed for layer '${layer.id}'`, e);\n return \"error\";\n }\n}\n\nfunction getSource(olLayer: OlLayer | OlBaseLayer) {\n if (!(olLayer instanceof OlLayer)) {\n return undefined;\n }\n return (olLayer?.getSource() as OlSource | null) ?? undefined;\n}\n\nfunction getSourceState(olSource: OlSource | undefined) {\n const state = olSource?.getState();\n switch (state) {\n case undefined:\n return \"loaded\";\n case \"undefined\":\n return \"not-loaded\";\n case \"loading\":\n return \"loading\";\n case \"ready\":\n return \"loaded\";\n case \"error\":\n return \"error\";\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/map",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.1",
|
|
5
5
|
"description": "This package integrates OpenLayers maps into an open pioneer trails application.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"uuid": "^10.0.0"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@open-pioneer/chakra-integration": "^1.1.
|
|
21
|
-
"@open-pioneer/core": "^1.
|
|
22
|
-
"@open-pioneer/http": "^2.1.
|
|
23
|
-
"@open-pioneer/react-utils": "^1.0.
|
|
24
|
-
"@open-pioneer/runtime": "^2.1.
|
|
20
|
+
"@open-pioneer/chakra-integration": "^1.1.4",
|
|
21
|
+
"@open-pioneer/core": "^1.3.0",
|
|
22
|
+
"@open-pioneer/http": "^2.1.9",
|
|
23
|
+
"@open-pioneer/react-utils": "^1.0.1",
|
|
24
|
+
"@open-pioneer/runtime": "^2.1.7",
|
|
25
25
|
"@types/proj4": "^2.5.2",
|
|
26
26
|
"ol": "^9.2.4",
|
|
27
27
|
"proj4": "^2.9.0",
|