@opengis/gis 0.1.61 → 0.1.62
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/package.json
CHANGED
|
@@ -16,7 +16,7 @@ const systemColumns = ['uid', 'cdate', 'editor_id', 'editor_date', 'created_by',
|
|
|
16
16
|
|
|
17
17
|
export default async function mapTiles({ pg = pgClients.client, params = {}, query = {}, unittest }, reply) {
|
|
18
18
|
const { slug, y, z } = params;
|
|
19
|
-
const { sql, nocache, filter, pointZoom, type, layers } = query;
|
|
19
|
+
const { sql, nocache, filter, pointZoom, type, layers, layer } = query;
|
|
20
20
|
const x = params.x?.split?.('.')?.[0] - 0;
|
|
21
21
|
|
|
22
22
|
if (!slug) {
|
|
@@ -35,7 +35,7 @@ export default async function mapTiles({ pg = pgClients.client, params = {}, que
|
|
|
35
35
|
'Cache-Control': nocache || sql ? 'no-cache' : 'public, max-age=86400',
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
const hash = [filter].filter(
|
|
38
|
+
const hash = [filter, layer].filter(Boolean).join();
|
|
39
39
|
|
|
40
40
|
const filepath = path.join(
|
|
41
41
|
rootFolder,
|
|
@@ -67,13 +67,18 @@ export default async function mapTiles({ pg = pgClients.client, params = {}, que
|
|
|
67
67
|
return reply.status(404).send('map layers not found');
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
layers1.forEach(el => Object.assign(el, { name: el.name || el.id }));
|
|
71
|
+
|
|
72
|
+
const layers2 = layers1.filter(el => el.name && el.source_path).filter(el => layers ? layers.includes(el.name) : true).filter(el => layer ? el.name === layer : true);
|
|
73
|
+
|
|
74
|
+
if (!layers2.length) {
|
|
75
|
+
return reply.status(404).send('map layers sources not provided / invalid query params');
|
|
72
76
|
}
|
|
73
77
|
|
|
74
|
-
|
|
78
|
+
const allFilters = loadTemplate.widgets?.filter?.(el => el.type === 'filters') || [];
|
|
79
|
+
const { filters: filterList = [], layer_id: layerId } = allFilters.find(el => layer ? el.config?.layer_id === layer : el.default)?.config || allFilters[0]?.config || {};
|
|
75
80
|
|
|
76
|
-
const q = (await Promise.all(
|
|
81
|
+
const q = (await Promise.all(layers2.map(async (layer) => {
|
|
77
82
|
const { source_path: source, id, name, style, geometry_type: gt, query: lquery, geometry_column: gCol } = layer;
|
|
78
83
|
const loadTable = await getTemplate('table', source);
|
|
79
84
|
|
|
@@ -84,7 +89,7 @@ export default async function mapTiles({ pg = pgClients.client, params = {}, que
|
|
|
84
89
|
if (!columns?.length) return null;
|
|
85
90
|
|
|
86
91
|
const pk = pg.pk?.[table] || loadTable?.key;
|
|
87
|
-
const fData = filter ? await getFilterSQL({ pg, table: source, filterList
|
|
92
|
+
const fData = filter && layerId === name ? await getFilterSQL({ pg, table: source, filterList, filter }) : {};
|
|
88
93
|
|
|
89
94
|
const geomCol = parseInt(z, 10) < parseInt(pointZoom || '0', 10) || (style?.centroid && gt === 'point')
|
|
90
95
|
? `ST_Centroid(${geom})`
|