@opengis/gis 0.1.60 → 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/gis",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
4
4
  "type": "module",
5
5
  "author": "Softpro",
6
6
  "main": "dist/import-file.js",
@@ -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((el) => el).join();
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
- if (!layers1.filter(el => el.source_path).length) {
71
- return reply.status(404).send('map layers sources not provided');
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
- layers1.forEach(el => Object.assign(el, { name: el.name || el.id }));
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(layers1.filter(el => el.name && el.source_path).filter(el => layers ? layers.includes(el.name) : true).map(async (layer) => {
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: filter }) : {};
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})`