@opengis/fastify-table 1.1.50 → 1.1.51

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.
Files changed (211) hide show
  1. package/.eslintrc.cjs +42 -42
  2. package/.gitlab-ci.yml +18 -18
  3. package/Changelog.md +352 -351
  4. package/README.md +26 -26
  5. package/config.js +10 -10
  6. package/cron/controllers/cronApi.js +22 -22
  7. package/cron/controllers/utils/cronList.js +1 -1
  8. package/cron/funcs/addCron.js +132 -132
  9. package/cron/index.js +10 -10
  10. package/crud/controllers/deleteCrud.js +36 -36
  11. package/crud/controllers/insert.js +71 -71
  12. package/crud/controllers/update.js +76 -76
  13. package/crud/controllers/utils/xssInjection.js +72 -72
  14. package/crud/funcs/dataDelete.js +19 -19
  15. package/crud/funcs/dataInsert.js +30 -30
  16. package/crud/funcs/dataUpdate.js +48 -48
  17. package/crud/funcs/getAccess.js +46 -44
  18. package/crud/funcs/getOpt.js +10 -10
  19. package/crud/funcs/getToken.js +27 -27
  20. package/crud/funcs/isFileExists.js +13 -13
  21. package/crud/funcs/setOpt.js +16 -16
  22. package/crud/funcs/setToken.js +53 -53
  23. package/crud/funcs/utils/getFolder.js +9 -9
  24. package/crud/funcs/utils/logChanges.js +62 -62
  25. package/crud/index.js +36 -36
  26. package/docs/.vitepress/abbr.mjs +26 -26
  27. package/docs/.vitepress/config.mjs +127 -127
  28. package/docs/.vitepress/navigation.mjs +82 -82
  29. package/docs/.vitepress/theme/Layout.vue +17 -17
  30. package/docs/.vitepress/theme/components/NavigationLinks.vue +102 -102
  31. package/docs/.vitepress/theme/components/Panzoom.vue +169 -169
  32. package/docs/.vitepress/theme/index.mjs +15 -15
  33. package/docs/.vitepress/theme/style.scss +163 -163
  34. package/docs/abbr.json +4 -4
  35. package/docs/api/cron/cronApi.md +56 -56
  36. package/docs/api/crud/deleteCrud.md +58 -58
  37. package/docs/api/crud/insert.md +82 -82
  38. package/docs/api/crud/update.md +85 -85
  39. package/docs/api/index.md +47 -47
  40. package/docs/api/notification/testEmail.md +91 -91
  41. package/docs/api/table/card.md +73 -73
  42. package/docs/api/table/data.md +134 -134
  43. package/docs/api/table/export.md +60 -60
  44. package/docs/api/table/filter.md +104 -104
  45. package/docs/api/table/form.md +126 -126
  46. package/docs/api/table/search.md +123 -123
  47. package/docs/api/table/suggest.md +156 -156
  48. package/docs/api/table/table.md +107 -107
  49. package/docs/api/user/user.cls.id.md +77 -77
  50. package/docs/api/user/user.cls.md +49 -49
  51. package/docs/api/user/user.cls.post.md +62 -62
  52. package/docs/api/user/user.info.md +37 -37
  53. package/docs/api/utils/logger.file.md +60 -60
  54. package/docs/api/utils/next.id.md +34 -34
  55. package/docs/api/utils/properties.add.md +127 -127
  56. package/docs/api/utils/properties.get.md +73 -73
  57. package/docs/api/utils/status.monitor.md +36 -36
  58. package/docs/api/widget/widget.del.md +76 -76
  59. package/docs/api/widget/widget.get.md +233 -233
  60. package/docs/api/widget/widget.set.md +88 -88
  61. package/docs/db/admin.md +947 -947
  62. package/docs/db/crm.md +564 -564
  63. package/docs/db/index.md +9 -9
  64. package/docs/db/log.md +204 -204
  65. package/docs/hook/card/afterCard.md +20 -20
  66. package/docs/hook/card/preCard.md +25 -25
  67. package/docs/hook/data/afterData.md +26 -26
  68. package/docs/hook/data/preData.md +26 -26
  69. package/docs/hook/deleteCrud/afterDelete.md +21 -21
  70. package/docs/hook/deleteCrud/preDelete.md +26 -26
  71. package/docs/hook/form/afterForm.md +19 -19
  72. package/docs/hook/form/preForm.md +26 -26
  73. package/docs/hook/getTemplate/afterTemplate.md +24 -24
  74. package/docs/hook/getTemplate/preTemplate.md +29 -29
  75. package/docs/hook/index.md +45 -45
  76. package/docs/hook/insert/afterInsert.md +41 -41
  77. package/docs/hook/insert/preInsert.md +25 -25
  78. package/docs/hook/table/afterTable.md +20 -20
  79. package/docs/hook/table/preTable.md +25 -25
  80. package/docs/hook/update/afterUpdate.md +41 -41
  81. package/docs/hook/update/preUpdate.md +25 -25
  82. package/docs/index.md +42 -42
  83. package/docs/public/fastify-dark.svg +3 -3
  84. package/docs/public/logo-short-dark.svg +11 -11
  85. package/docs/public/logo-short.svg +10 -10
  86. package/docs/public/logo.svg +19 -19
  87. package/docs/readme/index.md +121 -121
  88. package/docs/templates/card.md +83 -83
  89. package/docs/templates/cls.md +29 -29
  90. package/docs/templates/filters.md +91 -91
  91. package/docs/templates/forms.md +139 -139
  92. package/docs/templates/index.md +28 -28
  93. package/docs/templates/select.md +90 -90
  94. package/docs/templates/table.md +162 -162
  95. package/docs/utils/cron/addCron.md +29 -29
  96. package/docs/utils/crud/dataInsert.md +51 -51
  97. package/docs/utils/crud/dataUpdate.md +52 -52
  98. package/docs/utils/crud/getOpt.md +33 -33
  99. package/docs/utils/crud/isFileExists.md +37 -37
  100. package/docs/utils/crud/setOpt.md +37 -37
  101. package/docs/utils/hook/addHook.md +74 -74
  102. package/docs/utils/hook/applyHook.md +64 -64
  103. package/docs/utils/index.md +47 -47
  104. package/docs/utils/notification/addNotification.md +28 -28
  105. package/docs/utils/notification/notification.md +41 -41
  106. package/docs/utils/pg/autoIndex.md +22 -22
  107. package/docs/utils/pg/getMeta.md +58 -58
  108. package/docs/utils/pg/getPG.md +34 -34
  109. package/docs/utils/pg/init.md +29 -29
  110. package/docs/utils/pg/pg.md +70 -70
  111. package/docs/utils/redis/getRedis.md +36 -36
  112. package/docs/utils/redis/rclient.md +74 -74
  113. package/docs/utils/table/getForm.md +68 -68
  114. package/docs/utils/table/getMeta.md +55 -55
  115. package/docs/utils/table/getSelect.md +38 -38
  116. package/docs/utils/table/getSelectMeta.md +46 -46
  117. package/docs/utils/table/getTable.md +77 -77
  118. package/helper.js +30 -30
  119. package/index.js +105 -105
  120. package/migration/exec.migrations.js +79 -79
  121. package/module/core/select/core.user_mentioned.sql +1 -1
  122. package/module/test/cls/itree.composition.json +25 -25
  123. package/module/test/table/test.rest_zone.table.json +265 -265
  124. package/notification/controllers/readNotifications.js +30 -30
  125. package/notification/controllers/testEmail.js +50 -50
  126. package/notification/controllers/userNotifications.js +64 -64
  127. package/notification/funcs/addNotification.js +21 -21
  128. package/notification/funcs/sendNotification.js +112 -112
  129. package/package.json +41 -41
  130. package/pg/funcs/getMeta.js +29 -29
  131. package/pg/funcs/getPG.js +30 -30
  132. package/pg/pgClients.js +20 -20
  133. package/policy/funcs/checkPolicy.js +92 -92
  134. package/policy/funcs/sqlInjection.js +33 -33
  135. package/policy/index.js +14 -14
  136. package/redis/client.js +8 -8
  137. package/redis/funcs/getRedis.js +23 -23
  138. package/redis/funcs/redisClients.js +2 -2
  139. package/redis/index.js +19 -19
  140. package/server/migrations/0.sql +78 -78
  141. package/server/migrations/cls.sql +39 -39
  142. package/server/migrations/log.sql +80 -80
  143. package/server/migrations/properties.sql +144 -144
  144. package/server/migrations/roles.sql +172 -166
  145. package/server/migrations/users.sql +168 -168
  146. package/server.js +26 -26
  147. package/table/controllers/data.js +150 -150
  148. package/table/controllers/filter.js +50 -50
  149. package/table/controllers/form.js +42 -42
  150. package/table/controllers/search.js +80 -80
  151. package/table/controllers/suggest.js +79 -79
  152. package/table/controllers/table.js +83 -83
  153. package/table/controllers/utils/addTemplateDir.js +8 -8
  154. package/table/controllers/utils/getSelect.js +19 -19
  155. package/table/controllers/utils/getSelectMeta.js +66 -66
  156. package/table/controllers/utils/getTemplate_old.js +28 -28
  157. package/table/controllers/utils/getTemplates.js +18 -18
  158. package/table/controllers/utils/gisIRColumn.js +67 -67
  159. package/table/controllers/utils/loadTemplate.js +1 -1
  160. package/table/controllers/utils/loadTemplatePath.js +1 -1
  161. package/table/controllers/utils/userTemplateDir.js +1 -1
  162. package/table/funcs/getFilterSQL/index.js +94 -94
  163. package/table/funcs/getFilterSQL/util/formatValue.js +170 -170
  164. package/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  165. package/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
  166. package/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  167. package/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
  168. package/table/funcs/metaFormat/getSelectVal.js +21 -21
  169. package/table/funcs/metaFormat/index.js +28 -28
  170. package/table/index.js +37 -37
  171. package/table/schema.js +54 -54
  172. package/test/api/applyHook.test.js +95 -95
  173. package/test/api/crud.test.js +89 -89
  174. package/test/api/crud.xss.test.js +80 -80
  175. package/test/api/suggest.test.js +66 -66
  176. package/test/api/table.test.js +134 -134
  177. package/test/api/user.test.js +85 -85
  178. package/test/api/widget.test.js +117 -117
  179. package/test/config.example +18 -18
  180. package/test/funcs/pg.test.js +34 -34
  181. package/test/funcs/redis.test.js +19 -19
  182. package/test/helper/formatDate.test.js +62 -62
  183. package/test/templates/cls/test.json +9 -9
  184. package/test/templates/form/cp_building.form.json +32 -32
  185. package/test/templates/select/account_id.json +3 -3
  186. package/test/templates/select/storage.data.json +2 -2
  187. package/test/templates/select/test.storage.data.json +3 -3
  188. package/test/templates/select/test.suggest.ato_new.json +3 -3
  189. package/test/templates/select/test.suggest.ato_new.sql +25 -25
  190. package/test/templates/select/test.suggest.data.json +4 -4
  191. package/test/templates/select/test.suggest.parent.sql +1 -1
  192. package/test/templates/table/gis.dataset.table.json +20 -20
  193. package/user/controllers/user.cls.id.js +14 -14
  194. package/user/controllers/user.cls.js +75 -75
  195. package/user/controllers/user.cls.post.js +55 -55
  196. package/user/controllers/user.info.js +21 -21
  197. package/util/controllers/logger.file.js +91 -91
  198. package/util/controllers/next.id.js +4 -4
  199. package/util/controllers/properties.add.js +60 -60
  200. package/util/controllers/properties.get.js +19 -19
  201. package/util/controllers/status.monitor.js +8 -8
  202. package/util/controllers/utils/checkUserAccess.js +17 -17
  203. package/util/controllers/utils/getRootDir.js +25 -25
  204. package/util/index.js +23 -23
  205. package/utils.js +104 -104
  206. package/widget/controllers/utils/historyFormat.js +76 -76
  207. package/widget/controllers/utils/obj2db.js +13 -13
  208. package/widget/controllers/widget.del.js +44 -44
  209. package/widget/controllers/widget.get.js +102 -102
  210. package/widget/controllers/widget.set.js +79 -79
  211. package/widget/index.js +40 -40
@@ -1,266 +1,266 @@
1
- {
2
- "public": true,
3
- "key": "rz_id",
4
- "table": "itree.rest_zones",
5
- "query": "verif",
6
- "sql": [
7
- {
8
- "sql": "select json_agg(file_path) as img_list from admin.doc_file where object_id=t.rz_id and file_status=1",
9
- "name": "image_sql"
10
- }
11
- ],
12
- "form": "rest_zone.form",
13
- "meta": {
14
- "bbox": "geom",
15
- "search": "name",
16
- "title": "name"
17
- },
18
- "columns": [
19
- {
20
- "ua": "Назва об'єкта",
21
- "title": "Назва об'єкта",
22
- "name": "name",
23
- "meta": "title",
24
- "html": "<a href=\"/rest_zone/mode=card/view={{rz_id}}\">{{name}}</a>",
25
- "format": "html"
26
- },
27
- {
28
- "en": "Green zone category",
29
- "ua": "Категорія зеленої зони",
30
- "meta": "category",
31
- "name": "category",
32
- "data": "itree.recrzone_category",
33
- "format": "select"
34
- },
35
- {
36
- "ru": "Вид насаджень",
37
- "ua": "Вид насаджень",
38
- "name": "plant_type",
39
- "meta": "type",
40
- "data": "itree.plant_type",
41
- "format": "select"
42
- },
43
- {
44
- "name": "uid",
45
- "ua": "Хто додав",
46
- "width": "70",
47
- "data": "contact_id",
48
- "format": "select"
49
- },
50
- {
51
- "ru": "Балансоутримувач об'єкта",
52
- "ua": "Балансоутримувач об'єкта",
53
- "hidden": true,
54
- "meta": "other",
55
- "name": "balancer",
56
- "format": "text"
57
- },
58
- {
59
- "ua": "Відповідальний за утримання",
60
- "name": "maintain_respons_gp",
61
- "meta": "other",
62
- "hidden": true,
63
- "format": "text"
64
- },
65
- {
66
- "ua": "Площа, га",
67
- "name": "area",
68
- "meta": "other",
69
- "format": "text"
70
- },
71
- {
72
- "ru": "Форма власності",
73
- "ua": "Форма власності",
74
- "name": "ownership",
75
- "meta": "other",
76
- "data": "itree.ownership",
77
- "format": "select"
78
- },
79
- {
80
- "ru": "Категорія земель",
81
- "ua": "Категорія земель",
82
- "name": "landcategory",
83
- "meta": "other",
84
- "hidden": true,
85
- "data": "itree.landcategory",
86
- "format": "select"
87
- },
88
- {
89
- "ru": "Цільве призначення",
90
- "ua": "Цільве призначення",
91
- "name": "purpose",
92
- "meta": "other",
93
- "hidden": true,
94
- "data": "itree.purpose_type",
95
- "format": "select"
96
- },
97
- {
98
- "ru": "Обмеження щодо використання",
99
- "ua": "Обмеження щодо використання",
100
- "name": "restriction",
101
- "hidden": true,
102
- "meta": "other",
103
- "data": "itree.restriction",
104
- "format": "select"
105
- },
106
- {
107
- "ru": "Площа, зайнята зеленими насадженнями, кв.м",
108
- "ua": "Площа, зайнята зеленими насадженнями, кв.м",
109
- "name": "plants_square",
110
- "meta": "other",
111
- "hidden": true,
112
- "format": "text"
113
- },
114
- {
115
- "ru": "Загальний стан насаджень",
116
- "ua": "Загальний стан насаджень",
117
- "name": "plants_cond",
118
- "meta": "other",
119
- "data": "itree.plants_cond",
120
- "format": "badge"
121
- },
122
- {
123
- "en": "Photo",
124
- "ru": "Фото",
125
- "ua": "Фото",
126
- "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}}",
127
- "name": "image",
128
- "format": "html"
129
- },
130
- {
131
- "ru": "Видовий склад рослин",
132
- "ua": "Видовий склад рослин",
133
- "name": "composition",
134
- "hidden": true,
135
- "meta": "other",
136
- "data": "itree.composition",
137
- "format": "badge"
138
- },
139
- {
140
- "ru": "Кількість особливо цінних порід та чагарників, шт",
141
- "ua": "Кількість особливо цінних порід та чагарників, шт",
142
- "name": "espec_valuable",
143
- "hidden": true,
144
- "meta": "other",
145
- "format": "text"
146
- },
147
- {
148
- "ru": "Повнота насаджень (кількість дерев на 1 гектар), шт/га",
149
- "ua": "Повнота насаджень (кількість дерев на 1 гектар), шт/га",
150
- "name": "planting_density",
151
- "hidden": true,
152
- "meta": "other",
153
- "format": "text"
154
- },
155
- {
156
- "ru": "Площа, зайнята деревами, кв.м",
157
- "ua": "Площа, зайнята деревами, кв.м",
158
- "name": "tree_square",
159
- "hidden": true,
160
- "meta": "other",
161
- "format": "text"
162
- },
163
- {
164
- "ru": "Балансова вартість",
165
- "ua": "Балансова вартість",
166
- "name": "book_value",
167
- "meta": "other",
168
- "hidden": true,
169
- "format": "text"
170
- },
171
- {
172
- "ru": "Кадастровий номер",
173
- "ua": "Кадастровий номер",
174
- "meta": "other",
175
- "name": "cadnum",
176
- "hidden": true,
177
- "format": "text"
178
- },
179
- {
180
- "ru": "Нормативна грошова оцінка",
181
- "ua": "Нормативна грошова оцінка",
182
- "name": "monetary_valuation",
183
- "meta": "other",
184
- "hidden": true,
185
- "format": "text"
186
- },
187
- {
188
- "ua": "Верифіковано",
189
- "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}}",
190
- "name": "verif",
191
- "format": "check"
192
- }
193
- ],
194
- "title": "Зони відпочинку",
195
- "filterList": [
196
- {
197
- "ua": "Назва",
198
- "name": "name",
199
- "type": "Text"
200
- },
201
- {
202
- "ua": "Категорія зеленої зони",
203
- "data": "itree.recrzone_category",
204
- "name": "category",
205
- "sort": "asc",
206
- "type": "Check"
207
- },
208
- {
209
- "ua": "Вид насаджень",
210
- "data": "itree.plant_type",
211
- "name": "plant_type",
212
- "sort": "asc",
213
- "type": "Check"
214
- },
215
- {
216
- "ua": "Загальний стан насаджень",
217
- "data": "itree.plants_cond",
218
- "name": "plants_cond",
219
- "sort": "asc",
220
- "type": "Check"
221
- },
222
- {
223
- "ua": "Видовий склад рослин",
224
- "data": "itree.composition",
225
- "name": "composition",
226
- "sort": "asc",
227
- "type": "Check"
228
- },
229
- {
230
- "ua": "Форма власності",
231
- "data": "itree.ownership",
232
- "name": "ownership",
233
- "type": "Check"
234
- },
235
- {
236
- "ua": "Категорія земель",
237
- "data": "itree.landcategory",
238
- "name": "landcategory",
239
- "type": "Check"
240
- },
241
- {
242
- "ua": "Цільове призначення",
243
- "data": "itree.purpose",
244
- "name": "purpose",
245
- "type": "Check"
246
- }
247
- ],
248
- "filterCustom": [
249
- {
250
- "name": "actual",
251
- "label": "Поточний рік",
252
- "sql": "cdate > '2020-01-01'::date"
253
- }
254
- ],
255
- "filterState": [
256
- {
257
- "name": "actual",
258
- "label": "Поточний рік 2",
259
- "sql": "cdate > '2022-09-12'::date"
260
- }
261
- ],
262
- "actions": [
263
- "edit",
264
- "del"
265
- ]
1
+ {
2
+ "public": true,
3
+ "key": "rz_id",
4
+ "table": "itree.rest_zones",
5
+ "query": "verif",
6
+ "sql": [
7
+ {
8
+ "sql": "select json_agg(file_path) as img_list from admin.doc_file where object_id=t.rz_id and file_status=1",
9
+ "name": "image_sql"
10
+ }
11
+ ],
12
+ "form": "rest_zone.form",
13
+ "meta": {
14
+ "bbox": "geom",
15
+ "search": "name",
16
+ "title": "name"
17
+ },
18
+ "columns": [
19
+ {
20
+ "ua": "Назва об'єкта",
21
+ "title": "Назва об'єкта",
22
+ "name": "name",
23
+ "meta": "title",
24
+ "html": "<a href=\"/rest_zone/mode=card/view={{rz_id}}\">{{name}}</a>",
25
+ "format": "html"
26
+ },
27
+ {
28
+ "en": "Green zone category",
29
+ "ua": "Категорія зеленої зони",
30
+ "meta": "category",
31
+ "name": "category",
32
+ "data": "itree.recrzone_category",
33
+ "format": "select"
34
+ },
35
+ {
36
+ "ru": "Вид насаджень",
37
+ "ua": "Вид насаджень",
38
+ "name": "plant_type",
39
+ "meta": "type",
40
+ "data": "itree.plant_type",
41
+ "format": "select"
42
+ },
43
+ {
44
+ "name": "uid",
45
+ "ua": "Хто додав",
46
+ "width": "70",
47
+ "data": "contact_id",
48
+ "format": "select"
49
+ },
50
+ {
51
+ "ru": "Балансоутримувач об'єкта",
52
+ "ua": "Балансоутримувач об'єкта",
53
+ "hidden": true,
54
+ "meta": "other",
55
+ "name": "balancer",
56
+ "format": "text"
57
+ },
58
+ {
59
+ "ua": "Відповідальний за утримання",
60
+ "name": "maintain_respons_gp",
61
+ "meta": "other",
62
+ "hidden": true,
63
+ "format": "text"
64
+ },
65
+ {
66
+ "ua": "Площа, га",
67
+ "name": "area",
68
+ "meta": "other",
69
+ "format": "text"
70
+ },
71
+ {
72
+ "ru": "Форма власності",
73
+ "ua": "Форма власності",
74
+ "name": "ownership",
75
+ "meta": "other",
76
+ "data": "itree.ownership",
77
+ "format": "select"
78
+ },
79
+ {
80
+ "ru": "Категорія земель",
81
+ "ua": "Категорія земель",
82
+ "name": "landcategory",
83
+ "meta": "other",
84
+ "hidden": true,
85
+ "data": "itree.landcategory",
86
+ "format": "select"
87
+ },
88
+ {
89
+ "ru": "Цільве призначення",
90
+ "ua": "Цільве призначення",
91
+ "name": "purpose",
92
+ "meta": "other",
93
+ "hidden": true,
94
+ "data": "itree.purpose_type",
95
+ "format": "select"
96
+ },
97
+ {
98
+ "ru": "Обмеження щодо використання",
99
+ "ua": "Обмеження щодо використання",
100
+ "name": "restriction",
101
+ "hidden": true,
102
+ "meta": "other",
103
+ "data": "itree.restriction",
104
+ "format": "select"
105
+ },
106
+ {
107
+ "ru": "Площа, зайнята зеленими насадженнями, кв.м",
108
+ "ua": "Площа, зайнята зеленими насадженнями, кв.м",
109
+ "name": "plants_square",
110
+ "meta": "other",
111
+ "hidden": true,
112
+ "format": "text"
113
+ },
114
+ {
115
+ "ru": "Загальний стан насаджень",
116
+ "ua": "Загальний стан насаджень",
117
+ "name": "plants_cond",
118
+ "meta": "other",
119
+ "data": "itree.plants_cond",
120
+ "format": "badge"
121
+ },
122
+ {
123
+ "en": "Photo",
124
+ "ru": "Фото",
125
+ "ua": "Фото",
126
+ "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}}",
127
+ "name": "image",
128
+ "format": "html"
129
+ },
130
+ {
131
+ "ru": "Видовий склад рослин",
132
+ "ua": "Видовий склад рослин",
133
+ "name": "composition",
134
+ "hidden": true,
135
+ "meta": "other",
136
+ "data": "itree.composition",
137
+ "format": "badge"
138
+ },
139
+ {
140
+ "ru": "Кількість особливо цінних порід та чагарників, шт",
141
+ "ua": "Кількість особливо цінних порід та чагарників, шт",
142
+ "name": "espec_valuable",
143
+ "hidden": true,
144
+ "meta": "other",
145
+ "format": "text"
146
+ },
147
+ {
148
+ "ru": "Повнота насаджень (кількість дерев на 1 гектар), шт/га",
149
+ "ua": "Повнота насаджень (кількість дерев на 1 гектар), шт/га",
150
+ "name": "planting_density",
151
+ "hidden": true,
152
+ "meta": "other",
153
+ "format": "text"
154
+ },
155
+ {
156
+ "ru": "Площа, зайнята деревами, кв.м",
157
+ "ua": "Площа, зайнята деревами, кв.м",
158
+ "name": "tree_square",
159
+ "hidden": true,
160
+ "meta": "other",
161
+ "format": "text"
162
+ },
163
+ {
164
+ "ru": "Балансова вартість",
165
+ "ua": "Балансова вартість",
166
+ "name": "book_value",
167
+ "meta": "other",
168
+ "hidden": true,
169
+ "format": "text"
170
+ },
171
+ {
172
+ "ru": "Кадастровий номер",
173
+ "ua": "Кадастровий номер",
174
+ "meta": "other",
175
+ "name": "cadnum",
176
+ "hidden": true,
177
+ "format": "text"
178
+ },
179
+ {
180
+ "ru": "Нормативна грошова оцінка",
181
+ "ua": "Нормативна грошова оцінка",
182
+ "name": "monetary_valuation",
183
+ "meta": "other",
184
+ "hidden": true,
185
+ "format": "text"
186
+ },
187
+ {
188
+ "ua": "Верифіковано",
189
+ "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}}",
190
+ "name": "verif",
191
+ "format": "check"
192
+ }
193
+ ],
194
+ "title": "Зони відпочинку",
195
+ "filterList": [
196
+ {
197
+ "ua": "Назва",
198
+ "name": "name",
199
+ "type": "Text"
200
+ },
201
+ {
202
+ "ua": "Категорія зеленої зони",
203
+ "data": "itree.recrzone_category",
204
+ "name": "category",
205
+ "sort": "asc",
206
+ "type": "Check"
207
+ },
208
+ {
209
+ "ua": "Вид насаджень",
210
+ "data": "itree.plant_type",
211
+ "name": "plant_type",
212
+ "sort": "asc",
213
+ "type": "Check"
214
+ },
215
+ {
216
+ "ua": "Загальний стан насаджень",
217
+ "data": "itree.plants_cond",
218
+ "name": "plants_cond",
219
+ "sort": "asc",
220
+ "type": "Check"
221
+ },
222
+ {
223
+ "ua": "Видовий склад рослин",
224
+ "data": "itree.composition",
225
+ "name": "composition",
226
+ "sort": "asc",
227
+ "type": "Check"
228
+ },
229
+ {
230
+ "ua": "Форма власності",
231
+ "data": "itree.ownership",
232
+ "name": "ownership",
233
+ "type": "Check"
234
+ },
235
+ {
236
+ "ua": "Категорія земель",
237
+ "data": "itree.landcategory",
238
+ "name": "landcategory",
239
+ "type": "Check"
240
+ },
241
+ {
242
+ "ua": "Цільове призначення",
243
+ "data": "itree.purpose",
244
+ "name": "purpose",
245
+ "type": "Check"
246
+ }
247
+ ],
248
+ "filterCustom": [
249
+ {
250
+ "name": "actual",
251
+ "label": "Поточний рік",
252
+ "sql": "cdate > '2020-01-01'::date"
253
+ }
254
+ ],
255
+ "filterState": [
256
+ {
257
+ "name": "actual",
258
+ "label": "Поточний рік 2",
259
+ "sql": "cdate > '2022-09-12'::date"
260
+ }
261
+ ],
262
+ "actions": [
263
+ "edit",
264
+ "del"
265
+ ]
266
266
  }
@@ -1,30 +1,30 @@
1
- export default async function readNotifications({
2
- pg, params = {}, query = {}, session = {},
3
- }) {
4
- const { uid } = session.passport?.user || {};
5
-
6
- if (!uid) {
7
- return { message: 'access restricted', status: 403 };
8
- }
9
-
10
- try {
11
- const { userId } = await pg.query('select uid as "userId" from admin.users where $1 in (uid,login) limit 1', [uid])
12
- .then((res) => res.rows?.[0] || {});
13
-
14
- if (!userId) {
15
- return { message: 'access restricted: 2', status: 403 };
16
- }
17
-
18
- const q = `update crm.notifications set read=true where read is not true
19
- and ${params?.id ? 'notification_id=$2' : '1=1'} and addressee_id=$1`;
20
-
21
- if (query.sql) return q;
22
-
23
- const { rowCount = 0 } = await pg.query(q, [userId, params?.id].filter((el) => el));
24
-
25
- return { message: `${rowCount} unread notifications marked as read`, status: 200 };
26
- }
27
- catch (err) {
28
- return { error: err.toString(), status: 500 };
29
- }
30
- }
1
+ export default async function readNotifications({
2
+ pg, params = {}, query = {}, session = {},
3
+ }) {
4
+ const { uid } = session.passport?.user || {};
5
+
6
+ if (!uid) {
7
+ return { message: 'access restricted', status: 403 };
8
+ }
9
+
10
+ try {
11
+ const { userId } = await pg.query('select uid as "userId" from admin.users where $1 in (uid,login) limit 1', [uid])
12
+ .then((res) => res.rows?.[0] || {});
13
+
14
+ if (!userId) {
15
+ return { message: 'access restricted: 2', status: 403 };
16
+ }
17
+
18
+ const q = `update crm.notifications set read=true where read is not true
19
+ and ${params?.id ? 'notification_id=$2' : '1=1'} and addressee_id=$1`;
20
+
21
+ if (query.sql) return q;
22
+
23
+ const { rowCount = 0 } = await pg.query(q, [userId, params?.id].filter((el) => el));
24
+
25
+ return { message: `${rowCount} unread notifications marked as read`, status: 200 };
26
+ }
27
+ catch (err) {
28
+ return { error: err.toString(), status: 500 };
29
+ }
30
+ }