@opengis/fastify-table 1.0.6 → 1.0.8

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/fastify-table",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "main": "index.js",
@@ -36,10 +36,14 @@ export default async function data(req) {
36
36
  const orderColumn = query.order || loadTable.order;
37
37
 
38
38
  const order = cols.includes(orderColumn) ? `order by ${orderColumn} ${query.desc ? 'desc' : ''}` : '';
39
- const where = [(params.id ? ` "${pk}" = $1` : null), keyQuery, loadTable.query, fData.q].filter((el) => el);
39
+ const state = loadTable.filterState && query.state ? loadTable.filterState[query.state]?.sql : null;
40
+ const custom = loadTable.filterCustom && query.custom ? loadTable.filterCustom[query.custom]?.sql : null;
41
+ const search = loadTable.meta?.search && query.search ? `(${loadTable.meta?.search.split(',').map(el => `${el} ilike '%${query.search}%'`).join(' or ')})` : null;
42
+
43
+ const where = [(params.id ? ` "${pk}" = $1` : null), keyQuery, loadTable.query, fData.q, state, custom, search].filter((el) => el);
40
44
  const q = `select ${pk ? `"${pk}" as id,` : ''} ${query.id || query.key ? '*' : cols || '*'} from ${table} t ${sqlTable} where ${where.join(' and ') || 'true'} ${offset} ${order} limit ${limit}`;
41
45
 
42
- if (query.sql) { return q; }
46
+ if (query.sql === '1') { return q; }
43
47
 
44
48
  const { rows } = await pg.query(q, (params.id ? [params.id] : null) || (query.key && loadTable.key ? [query.key] : []));
45
49
 
@@ -9,9 +9,16 @@ export default async function filter(req) {
9
9
  const loadTable = await getTemplate('table', params.table);
10
10
  if (!loadTable) { return { status: 404, message: 'not found' }; }
11
11
 
12
- await Promise.all(loadTable?.filters.filter((el) => el.data).map(async (el) => {
12
+ const filters = loadTable?.filters || loadTable?.filterList || [];
13
+ await Promise.all(filters.filter((el) => el.data).map(async (el) => {
13
14
  const cls = await getSelect(el.data);
14
15
  Object.assign(el, { options: cls?.arr });
15
16
  }));
16
- return { time: Date.now() - time, filters: loadTable?.filters || [] };
17
+ return {
18
+ time: Date.now() - time,
19
+ list: filters,
20
+ custom: loadTable?.filterCustom?.map(el => ({ label: el.label })),
21
+ inline: loadTable?.filterInline,
22
+ state: loadTable?.filterState?.map(el => ({ label: el.label })),
23
+ };
17
24
  }
@@ -0,0 +1,383 @@
1
+ {
2
+ "ua": "Зелені насадження",
3
+ "key": "green_space_id",
4
+ "sql": [
5
+ {
6
+ "sql": "select short_ukr,short_rus,full_rus,full_ukr,latin,tr_family,genus from itree.green_space_species where gss_id in (t.type_tree,t.type_bush) limit 1",
7
+ "name": "green_space_species_sql"
8
+ },
9
+ {
10
+ "sql": "select json_agg(file_path) as img_list from admin.doc_file where object_id=t.green_space_id and file_status=1",
11
+ "name": "image_sql"
12
+ }
13
+ ],
14
+ "table": "itree.green_space_pass",
15
+ "form": "green_space.form",
16
+ "columns": [
17
+ {
18
+ "ua": "Інвентарний номер",
19
+ "name": "invent_number",
20
+ "meta": "id",
21
+ "format": "text"
22
+ },
23
+ {
24
+ "en": "Object name",
25
+ "ru": "Назва объекта",
26
+ "ua": "Назва об'єкта",
27
+ "name": "type_tree",
28
+ "meta": "title",
29
+ "data": "itree.type_plant",
30
+ "format": "select",
31
+ "html": "{{#ifCond type_plant 'in' '1,2,3,4,5,8'}}{{#ifCond type_plant '==' '1'}}{{select type_bush data=\"itree.type_bush\"}}{{/ifCond}}{{#ifCond type_plant 'in' '2,8'}}{{select type_tree data=\"itree.type_tree\" }}{{/ifCond}}{{#ifCond type_plant '==' '3'}}{{select type_hedge data=\"itree.type_hedge\"}}{{/ifCond}}{{#ifCond type_plant '==' '4'}}{{select type_lawn data=\"itree.type_lawn\"}}{{/ifCond}}{{#ifCond type_plant '==' '5'}}{{select type_flower data=\"itree.type_flower\"}}{{/ifCond}} {{^}}...{{/ifCond}}"
32
+ },
33
+ {
34
+ "en": "Type",
35
+ "ru": "Тип",
36
+ "ua": "Тип насадження",
37
+ "name": "type_plant",
38
+ "meta": "type",
39
+ "data": "itree.type_plant",
40
+ "format": "select"
41
+ },
42
+ {
43
+ "name": "quality_condition",
44
+ "ua": "Якісний стан об'єкта",
45
+ "data": "itree.quality_condition",
46
+ "meta": "status",
47
+ "format": "badge"
48
+ },
49
+ {
50
+ "en": "Recomendations",
51
+ "ru": "Рекомендации",
52
+ "ua": "Рекомендації",
53
+ "name": "recommend",
54
+ "data": "itree.recommend",
55
+ "meta": "other",
56
+ "format": "badge"
57
+ },
58
+ {
59
+ "name": "uid",
60
+ "ua": "Хто додав",
61
+ "width": "70",
62
+ "data": "contact_id",
63
+ "format": "select"
64
+ },
65
+ {
66
+ "ua": "Зона відпочинку",
67
+ "hidden": true,
68
+ "meta": "other",
69
+ "name": "rz_id",
70
+ "format": "select",
71
+ "data": "rz_id"
72
+ },
73
+ {
74
+ "name": "address_id",
75
+ "ua": "Адреса",
76
+ "hidden": true,
77
+ "meta": "other",
78
+ "format": "select",
79
+ "data": "itree.address_id"
80
+ },
81
+ {
82
+ "name": "age",
83
+ "ua": "Вік, років",
84
+ "meta": "other",
85
+ "hidden": true,
86
+ "format": "number"
87
+ },
88
+ {
89
+ "name": "height",
90
+ "ua": "Висота, м",
91
+ "meta": "other",
92
+ "hidden": true,
93
+ "format": "number"
94
+ },
95
+ {
96
+ "name": "diameter",
97
+ "ua": "Діаметр стовбура на висоті 1.3 м, см",
98
+ "meta": "other",
99
+ "hidden": true,
100
+ "format": "number"
101
+ },
102
+ {
103
+ "name": "cdate",
104
+ "ua": "Дата",
105
+ "meta": "other",
106
+ "format": "date"
107
+ },
108
+ {
109
+ "name": "amount",
110
+ "ua": "Кількіть (шт./м2)",
111
+ "meta": "other",
112
+ "hidden": true,
113
+ "format": "number"
114
+ },
115
+ {
116
+ "name": "area",
117
+ "ua": "Площа кв.м.",
118
+ "meta": "other",
119
+ "hidden": true,
120
+ "format": "number"
121
+ },
122
+ {
123
+ "ua": "Балансова вартість, грн",
124
+ "name": "cost",
125
+ "meta": "other",
126
+ "hidden": true,
127
+ "format": "text"
128
+ },
129
+ {
130
+ "ua": "Штрих-код",
131
+ "hidden": true,
132
+ "meta": "other",
133
+ "name": "barcode",
134
+ "format": "text"
135
+ },
136
+ {
137
+ "name": "trunk_circ",
138
+ "ua": "Окружність стовбура, см",
139
+ "hidden": true,
140
+ "meta": "other",
141
+ "format": "number"
142
+ },
143
+ {
144
+ "name": "soil_condi",
145
+ "ua": "Розмір лунки",
146
+ "hidden": true,
147
+ "meta": "other",
148
+ "format": "select",
149
+ "data": "itree.soil_condi"
150
+ },
151
+ {
152
+ "name": "discrete_s",
153
+ "ua": "Рівень нахилу в градусах",
154
+ "hidden": true,
155
+ "meta": "other",
156
+ "format": "select",
157
+ "data": "itree.discrete_s"
158
+ },
159
+ {
160
+ "name": "undercut",
161
+ "ua": "Підрізка",
162
+ "hidden": true,
163
+ "meta": "other",
164
+ "format": "select",
165
+ "data": "itree.undercut"
166
+ },
167
+ {
168
+ "name": "bark_damag",
169
+ "ua": "Пошкодження кори (в відсотках)",
170
+ "hidden": true,
171
+ "meta": "other",
172
+ "format": "select",
173
+ "data": "itree.bark_damag"
174
+ },
175
+ {
176
+ "name": "fungus",
177
+ "ua": "Гриби",
178
+ "hidden": true,
179
+ "meta": "other",
180
+ "format": "yes/no"
181
+ },
182
+ {
183
+ "name": "woodworms",
184
+ "ua": "Древоточець",
185
+ "hidden": true,
186
+ "meta": "other",
187
+ "format": "yes/no"
188
+ },
189
+ {
190
+ "name": "rottenness",
191
+ "ua": "Трухлявість",
192
+ "hidden": true,
193
+ "meta": "other",
194
+ "format": "yes/no"
195
+ },
196
+ {
197
+ "name": "hollow",
198
+ "ua": "Дупла",
199
+ "hidden": true,
200
+ "meta": "other",
201
+ "format": "yes/no"
202
+ },
203
+ {
204
+ "name": "frost_bump",
205
+ "ua": "Морозобоїни",
206
+ "hidden": true,
207
+ "meta": "other",
208
+ "format": "yes/no"
209
+ },
210
+ {
211
+ "name": "burns",
212
+ "ua": "Опіки",
213
+ "hidden": true,
214
+ "meta": "other",
215
+ "format": "yes/no"
216
+ },
217
+ {
218
+ "name": "nails",
219
+ "ua": "Цвяхи",
220
+ "hidden": true,
221
+ "meta": "other",
222
+ "format": "yes/no"
223
+ },
224
+ {
225
+ "name": "lamps_and_wires",
226
+ "ua": "Лампи та дроти",
227
+ "hidden": true,
228
+ "meta": "other",
229
+ "format": "yes/no"
230
+ },
231
+ {
232
+ "name": "trunk_inje",
233
+ "ua": "Інєкції в стовбур",
234
+ "hidden": true,
235
+ "meta": "other",
236
+ "format": "yes/no"
237
+ },
238
+ {
239
+ "name": "needs_trea",
240
+ "ua": "Потребує лікування",
241
+ "hidden": true,
242
+ "meta": "other",
243
+ "format": "yes/no"
244
+ },
245
+ {
246
+ "name": "crown_bare",
247
+ "ua": "Оцінка стану крони (частка голих гілок в вегетаційний період)",
248
+ "hidden": true,
249
+ "meta": "other",
250
+ "format": "select",
251
+ "data": "itree.crown_bare"
252
+ },
253
+ {
254
+ "name": "diameter_stump",
255
+ "ua": "Діаметр пенька, см",
256
+ "hidden": true,
257
+ "meta": "other",
258
+ "format": "number"
259
+ },
260
+ {
261
+ "en": "Photo",
262
+ "ru": "Фото",
263
+ "ua": "Фото",
264
+ "html": "{{#each img_list}}<a class='btn btn-xs btn-default' href=\"{{this}}\" download><i class='fa fa-file-text'></i></a><a target=\"_blank\" class='btn btn-xs btn-default' href=\"{{this}}\"><i class='fa fa-eye'></i></a><br>{{/each}}",
265
+ "name": "image",
266
+ "format": "image"
267
+ },
268
+ {
269
+ "ua": "Верифіковано",
270
+ "html": " {{#ifCond verif '==' true}} \r\n <span class=\"label\" style=\"color:#fff;background:green\"> Так</span> \r\n {{else}} \r\n <span class=\"label\" style=\"color:#fff;background:red\"> Ні</span>\r\n {{/ifCond}}",
271
+ "name": "verif",
272
+ "format": "verify"
273
+ }
274
+ ],
275
+ "filterInline": [
276
+ {
277
+ "label": "Дата",
278
+ "id": "cdate",
279
+ "type": "Date"
280
+ }
281
+ ],
282
+ "filterCustom": [
283
+ {
284
+ "label": "Поточний рік",
285
+ "sql": "cdate > '2014-01-01'"
286
+ }
287
+ ],
288
+ "filterState": [
289
+ {
290
+ "label": "Не верифіковано",
291
+ "sql": "verif=false"
292
+ },
293
+ {
294
+ "label": "Верифіковано",
295
+ "sql": "verif=true"
296
+ }
297
+ ],
298
+ "filterList": [
299
+ {
300
+ "label": "Інвентарний номер",
301
+ "id": "invent_number",
302
+ "type": "Text"
303
+ },
304
+ {
305
+ "label": "Дата",
306
+ "id": "cdate",
307
+ "type": "Date"
308
+ },
309
+ {
310
+ "label": "Тип насадження",
311
+ "data": "itree.type_plant",
312
+ "id": "type_plant",
313
+ "type": "Check"
314
+ },
315
+ {
316
+ "label": "Якісний стан об'єкта",
317
+ "data": "itree.quality_condition",
318
+ "id": "quality_condition",
319
+ "type": "Check"
320
+ },
321
+ {
322
+ "label": "Рекомендації",
323
+ "data": "itree.recommend",
324
+ "id": "recommend",
325
+ "type": "Check"
326
+ },
327
+ {
328
+ "label": "Зона відпочинку",
329
+ "data": "rz_id",
330
+ "id": "rz_id",
331
+ "type": "Text"
332
+ },
333
+ {
334
+ "label": "Адреса",
335
+ "data": "itree.address_id",
336
+ "id": "address_id",
337
+ "type": "Text"
338
+ },
339
+ {
340
+ "id": "bark_damag",
341
+ "label": "Пошкодження кори (в відсотках)",
342
+ "data": "itree.bark_damag",
343
+ "type": "Check"
344
+ },
345
+ {
346
+ "id": "undercut",
347
+ "label": "Підрізка",
348
+ "data": "itree.undercut",
349
+ "type": "Check"
350
+ },
351
+ {
352
+ "id": "crown_bare",
353
+ "label": "Оцінка стану крони (частка голих гілок в вегетаційний період)",
354
+ "data": "itree.crown_bare",
355
+ "type": "Check"
356
+ },
357
+ {
358
+ "id": "needs_trea",
359
+ "label": "Потребує лікування",
360
+ "data": "yes_no",
361
+ "type": "Check"
362
+ },
363
+ {
364
+ "id": "verif",
365
+ "label": "Верифіковано?",
366
+ "data": "yes_no",
367
+ "type": "Check"
368
+ },
369
+ {
370
+ "label": "Балансова вартість, грн",
371
+ "id": "cost",
372
+ "type": "Range"
373
+ }
374
+ ],
375
+ "meta": {
376
+ "title": "invent_number",
377
+ "search": "invent_number,type_tree"
378
+ },
379
+ "actions": [
380
+ "edit",
381
+ "del"
382
+ ]
383
+ }
File without changes