@opengis/gis 0.2.180 → 0.2.182

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.2.180",
3
+ "version": "0.2.182",
4
4
  "type": "module",
5
5
  "author": "Softpro",
6
6
  "main": "./dist/index.js",
@@ -13,6 +13,7 @@ export default async function getTableColumnMeta(
13
13
  table,
14
14
  template,
15
15
  column: queryColumn,
16
+ cls,
16
17
  filtered,
17
18
  startsWith,
18
19
  key,
@@ -41,8 +42,9 @@ export default async function getTableColumnMeta(
41
42
  ? await getFilter({ pg, table: template }).then((el) => el.list)
42
43
  : null;
43
44
 
44
- const { data: clsName } =
45
- (filters || []).find((el) => el.name === queryColumn) || {};
45
+ const { data: clsName } = cls
46
+ ? { data: cls }
47
+ : (filters || []).find((el) => el.name === queryColumn) || {};
46
48
  const { arr, sql: select } =
47
49
  (await getSelect(clsName || queryColumn, pg)) || // cls name === table:column
48
50
  (await getSelect(queryColumn, pg)) || // cls name === column name
@@ -55,6 +55,7 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
55
55
  const clsMeta = await getTableColumnMeta({
56
56
  table: registry.table_name,
57
57
  column: name,
58
+ cls,
58
59
  filtered: !!(key || val),
59
60
  key,
60
61
  });
@@ -70,7 +71,7 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
70
71
  "''"
71
72
  );
72
73
 
73
- // table:column + cls
74
+ // table:column w/ out cls
74
75
  if (arr && !cls) {
75
76
  const sqlCls = count
76
77
  ? `select value, count(*) from (select ${pg.pgType?.[dataTypeID]?.includes("[]")
@@ -138,31 +139,6 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
138
139
  }
139
140
  }
140
141
 
141
- // cls
142
- if (arr) {
143
- const lower = key?.toLowerCase();
144
- const data1 =
145
- key || val
146
- ? arr
147
- ?.filter(
148
- (el) =>
149
- !lower ||
150
- (el[lang] || el.text)?.toLowerCase()?.indexOf(lower) !== -1
151
- )
152
- ?.filter((el) => !val || val?.split?.(",")?.includes?.(el.id))
153
- : arr;
154
- const data = data1.slice(0, Math.min(limit1 || limit, limit));
155
-
156
- return {
157
- time: Date.now() - time,
158
- limit,
159
- count: data.length,
160
- total: arr.length,
161
- mode: "array",
162
- data,
163
- };
164
- }
165
-
166
142
  // table:column as select query
167
143
  const args = [];
168
144
  const where = [];
@@ -231,7 +207,37 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
231
207
  Object.assign(el, { id: "null", text: "Показати порожні значення" })
232
208
  );
233
209
 
234
- // table:column + select
210
+ const ids = data.map((el) => el.text);
211
+
212
+ // table:column w/ cls
213
+ if (arr) {
214
+ const lower = key?.toLowerCase();
215
+ const data1 =
216
+ key || val
217
+ ? arr
218
+ ?.filter(
219
+ (el) =>
220
+ !lower ||
221
+ (el[lang] || el.text)?.toLowerCase()?.indexOf(lower) !== -1
222
+ )
223
+ ?.filter((el) => !val || val?.split?.(",")?.includes?.(el.id))
224
+ : arr;
225
+ const data2 = data1.filter((el) => ids.includes(el.id)).slice(0, Math.min(limit1 || limit, limit));
226
+ data2.forEach((el) => Object.assign(el, { count: data.find((e) => e.text === el.id)?.count || 0 }));
227
+ if (data.find((el) => el.id === 'null') && !data2.find((el) => el.id === 'null')) {
228
+ data2.push(data.find((el) => el.id === 'null'));
229
+ }
230
+ return {
231
+ time: Date.now() - time,
232
+ limit,
233
+ count: data2.length,
234
+ total: arr.length,
235
+ mode: "array",
236
+ data: data2,
237
+ };
238
+ }
239
+
240
+ // table:column w/ select
235
241
  if (!cls) {
236
242
  const { name: clsName = name, type = "select" } =
237
243
  getColumnCLS(registry.table_name, name) || {};
@@ -263,6 +269,15 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
263
269
  };
264
270
  }
265
271
 
272
+ await metaFormat(
273
+ {
274
+ rows: data,
275
+ cls: { text: cls },
276
+ sufix: false,
277
+ },
278
+ pg
279
+ );
280
+
266
281
  return {
267
282
  time: Date.now() - time,
268
283
  limit,
@@ -35,7 +35,7 @@ export async function handleRegistryRequest({
35
35
  const { arr, sql } = el.data ? await getSelect(el.data, pg) : {};
36
36
 
37
37
  const r = {
38
- ...el, id: el.name || el.id, type: el.type, api: `/api/gis-suggest/${hash}`, options: arr, sql,
38
+ ...el, id: el.name || el.id, type: el.type, api: `/api/gis-suggest/${hash}`, options: arr, select: sql
39
39
  };
40
40
 
41
41
  const unique = await rclient.setnx(redisKey, 1);