@geospatial-sdk/legend 0.0.5-dev.40 → 0.0.5-dev.42
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/create-legend/from-layer.js +61 -74
- package/dist/create-legend/index.d.ts +1 -1
- package/dist/create-legend/index.d.ts.map +1 -1
- package/dist/create-legend/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/lib/create-legend/index.ts +1 -1
- package/lib/index.ts +1 -1
- package/package.json +3 -3
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { removeSearchParams, } from "@geospatial-sdk/core";
|
|
11
2
|
import { WmtsEndpoint } from "@camptocamp/ogc-client";
|
|
12
3
|
/**
|
|
@@ -48,17 +39,15 @@ function createWmsLegendUrl(layer, options = {}) {
|
|
|
48
39
|
* @param layer - The MapContextLayer to create a legend URL for
|
|
49
40
|
* @returns A URL for the WMTS legend graphic or null if not available
|
|
50
41
|
*/
|
|
51
|
-
function createWmtsLegendUrl(layer) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return null;
|
|
61
|
-
});
|
|
42
|
+
async function createWmtsLegendUrl(layer) {
|
|
43
|
+
const endpoint = await new WmtsEndpoint(layer.url).isReady();
|
|
44
|
+
const layerByName = endpoint.getLayerByName(layer.name);
|
|
45
|
+
if (layerByName.styles &&
|
|
46
|
+
layerByName.styles.length > 0 &&
|
|
47
|
+
layerByName.styles[0].legendUrl) {
|
|
48
|
+
return layerByName.styles[0].legendUrl;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
62
51
|
}
|
|
63
52
|
/**
|
|
64
53
|
* Creates a legend from a layer.
|
|
@@ -67,63 +56,61 @@ function createWmtsLegendUrl(layer) {
|
|
|
67
56
|
* @param {LegendOptions} [options] - The options to create the legend.
|
|
68
57
|
* @returns {Promise<HTMLElement | null>} A promise that resolves to the legend element or `null` if the legend could not be created.
|
|
69
58
|
*/
|
|
70
|
-
export function createLegendFromLayer(layer, options = {}) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
export async function createLegendFromLayer(layer, options = {}) {
|
|
60
|
+
if ((layer.type !== "wms" && layer.type !== "wmts") ||
|
|
61
|
+
!layer.url ||
|
|
62
|
+
!layer.name) {
|
|
63
|
+
console.error("Invalid layer for legend creation");
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
// Create a container for the legend
|
|
67
|
+
const legendDiv = document.createElement("div");
|
|
68
|
+
legendDiv.id = "legend";
|
|
69
|
+
legendDiv.setAttribute("role", "region");
|
|
70
|
+
legendDiv.setAttribute("aria-label", "Map Layer Legend");
|
|
71
|
+
legendDiv.classList.add("geosdk--legend-container");
|
|
72
|
+
const layerDiv = document.createElement("div");
|
|
73
|
+
layerDiv.classList.add("geosdk--legend-layer");
|
|
74
|
+
const layerTitle = document.createElement("h4");
|
|
75
|
+
layerTitle.textContent = layer.name;
|
|
76
|
+
layerTitle.classList.add("geosdk--legend-layer-label");
|
|
77
|
+
layerDiv.appendChild(layerTitle);
|
|
78
|
+
const img = document.createElement("img");
|
|
79
|
+
img.alt = `Legend for ${layer.name}`;
|
|
80
|
+
img.classList.add("geosdk--legend-layer-image");
|
|
81
|
+
// Error handling for failed image loading
|
|
82
|
+
img.onerror = (e) => {
|
|
83
|
+
console.warn(`Failed to load legend for layer: ${layer.name}`, e);
|
|
84
|
+
const errorMessage = document.createElement("span");
|
|
85
|
+
errorMessage.textContent = `Legend not available for ${layer.name}`;
|
|
86
|
+
layerDiv.replaceChild(errorMessage, img);
|
|
87
|
+
};
|
|
88
|
+
try {
|
|
89
|
+
let legendUrl = null;
|
|
90
|
+
// Determine legend URL based on layer type
|
|
91
|
+
if (layer.type === "wms") {
|
|
92
|
+
legendUrl = createWmsLegendUrl(layer, options).toString();
|
|
77
93
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
layerDiv.classList.add("geosdk--legend-layer");
|
|
86
|
-
const layerTitle = document.createElement("h4");
|
|
87
|
-
layerTitle.textContent = layer.name;
|
|
88
|
-
layerTitle.classList.add("geosdk--legend-layer-label");
|
|
89
|
-
layerDiv.appendChild(layerTitle);
|
|
90
|
-
const img = document.createElement("img");
|
|
91
|
-
img.alt = `Legend for ${layer.name}`;
|
|
92
|
-
img.classList.add("geosdk--legend-layer-image");
|
|
93
|
-
// Error handling for failed image loading
|
|
94
|
-
img.onerror = (e) => {
|
|
95
|
-
console.warn(`Failed to load legend for layer: ${layer.name}`, e);
|
|
96
|
-
const errorMessage = document.createElement("span");
|
|
97
|
-
errorMessage.textContent = `Legend not available for ${layer.name}`;
|
|
98
|
-
layerDiv.replaceChild(errorMessage, img);
|
|
99
|
-
};
|
|
100
|
-
try {
|
|
101
|
-
let legendUrl = null;
|
|
102
|
-
// Determine legend URL based on layer type
|
|
103
|
-
if (layer.type === "wms") {
|
|
104
|
-
legendUrl = createWmsLegendUrl(layer, options).toString();
|
|
105
|
-
}
|
|
106
|
-
else if (layer.type === "wmts") {
|
|
107
|
-
legendUrl = yield createWmtsLegendUrl(layer);
|
|
108
|
-
}
|
|
109
|
-
// If legend URL is available, set the image source
|
|
110
|
-
if (legendUrl) {
|
|
111
|
-
img.src = legendUrl;
|
|
112
|
-
layerDiv.appendChild(img);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const errorMessage = document.createElement("span");
|
|
116
|
-
errorMessage.textContent = `Legend not available for ${layer.name}`;
|
|
117
|
-
layerDiv.appendChild(errorMessage);
|
|
118
|
-
}
|
|
94
|
+
else if (layer.type === "wmts") {
|
|
95
|
+
legendUrl = await createWmtsLegendUrl(layer);
|
|
96
|
+
}
|
|
97
|
+
// If legend URL is available, set the image source
|
|
98
|
+
if (legendUrl) {
|
|
99
|
+
img.src = legendUrl;
|
|
100
|
+
layerDiv.appendChild(img);
|
|
119
101
|
}
|
|
120
|
-
|
|
121
|
-
console.error(`Error creating legend for layer ${layer.name}:`, error);
|
|
102
|
+
else {
|
|
122
103
|
const errorMessage = document.createElement("span");
|
|
123
|
-
errorMessage.textContent = `
|
|
104
|
+
errorMessage.textContent = `Legend not available for ${layer.name}`;
|
|
124
105
|
layerDiv.appendChild(errorMessage);
|
|
125
106
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error(`Error creating legend for layer ${layer.name}:`, error);
|
|
110
|
+
const errorMessage = document.createElement("span");
|
|
111
|
+
errorMessage.textContent = `Error loading legend for ${layer.name}`;
|
|
112
|
+
layerDiv.appendChild(errorMessage);
|
|
113
|
+
}
|
|
114
|
+
legendDiv.appendChild(layerDiv);
|
|
115
|
+
return legendDiv;
|
|
129
116
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createLegendFromLayer } from "./from-layer";
|
|
1
|
+
export { createLegendFromLayer } from "./from-layer.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/create-legend/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/create-legend/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createLegendFromLayer } from "./from-layer";
|
|
1
|
+
export { createLegendFromLayer } from "./from-layer.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./create-legend";
|
|
1
|
+
export * from "./create-legend/index.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./create-legend";
|
|
1
|
+
export * from "./create-legend/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createLegendFromLayer } from "./from-layer";
|
|
1
|
+
export { createLegendFromLayer } from "./from-layer.js";
|
package/lib/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./create-legend";
|
|
1
|
+
export * from "./create-legend/index.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geospatial-sdk/legend",
|
|
3
|
-
"version": "0.0.5-dev.
|
|
3
|
+
"version": "0.0.5-dev.42+baa75c1",
|
|
4
4
|
"description": "Get legend graphic from the map-context",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend"
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"build": "tsc"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@geospatial-sdk/core": "^0.0.5-dev.
|
|
33
|
+
"@geospatial-sdk/core": "^0.0.5-dev.42+baa75c1"
|
|
34
34
|
},
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/camptocamp/geospatial-sdk/issues"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "baa75c1fed77ed160f6a2d94bfeb5358cc91d63a"
|
|
39
39
|
}
|