@opengis/fastify-table 1.1.51 → 1.1.53

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 (218) hide show
  1. package/.eslintrc.cjs +42 -42
  2. package/.gitlab-ci.yml +18 -18
  3. package/Changelog.md +352 -352
  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 +12 -10
  10. package/cron/schema.js +8 -0
  11. package/crud/controllers/deleteCrud.js +36 -36
  12. package/crud/controllers/insert.js +71 -71
  13. package/crud/controllers/update.js +76 -76
  14. package/crud/controllers/utils/xssInjection.js +72 -72
  15. package/crud/funcs/dataDelete.js +19 -19
  16. package/crud/funcs/dataInsert.js +30 -30
  17. package/crud/funcs/dataUpdate.js +48 -48
  18. package/crud/funcs/getAccess.js +46 -46
  19. package/crud/funcs/getOpt.js +10 -10
  20. package/crud/funcs/getToken.js +27 -27
  21. package/crud/funcs/isFileExists.js +13 -13
  22. package/crud/funcs/setOpt.js +16 -16
  23. package/crud/funcs/setToken.js +53 -53
  24. package/crud/funcs/utils/getFolder.js +9 -9
  25. package/crud/funcs/utils/logChanges.js +62 -62
  26. package/crud/index.js +31 -36
  27. package/crud/schema.js +11 -0
  28. package/docs/.vitepress/abbr.mjs +26 -26
  29. package/docs/.vitepress/config.mjs +127 -127
  30. package/docs/.vitepress/navigation.mjs +82 -82
  31. package/docs/.vitepress/theme/Layout.vue +17 -17
  32. package/docs/.vitepress/theme/components/NavigationLinks.vue +102 -102
  33. package/docs/.vitepress/theme/components/Panzoom.vue +169 -169
  34. package/docs/.vitepress/theme/index.mjs +15 -15
  35. package/docs/.vitepress/theme/style.scss +163 -163
  36. package/docs/abbr.json +4 -4
  37. package/docs/api/cron/cronApi.md +56 -56
  38. package/docs/api/crud/deleteCrud.md +58 -58
  39. package/docs/api/crud/insert.md +82 -82
  40. package/docs/api/crud/update.md +85 -85
  41. package/docs/api/index.md +47 -47
  42. package/docs/api/notification/testEmail.md +91 -91
  43. package/docs/api/table/card.md +73 -73
  44. package/docs/api/table/data.md +134 -134
  45. package/docs/api/table/export.md +60 -60
  46. package/docs/api/table/filter.md +104 -104
  47. package/docs/api/table/form.md +126 -126
  48. package/docs/api/table/search.md +123 -123
  49. package/docs/api/table/suggest.md +156 -156
  50. package/docs/api/table/table.md +107 -107
  51. package/docs/api/user/user.cls.id.md +77 -77
  52. package/docs/api/user/user.cls.md +49 -49
  53. package/docs/api/user/user.cls.post.md +62 -62
  54. package/docs/api/user/user.info.md +37 -37
  55. package/docs/api/utils/logger.file.md +60 -60
  56. package/docs/api/utils/next.id.md +34 -34
  57. package/docs/api/utils/properties.add.md +127 -127
  58. package/docs/api/utils/properties.get.md +73 -73
  59. package/docs/api/utils/status.monitor.md +36 -36
  60. package/docs/api/widget/widget.del.md +76 -76
  61. package/docs/api/widget/widget.get.md +233 -233
  62. package/docs/api/widget/widget.set.md +88 -88
  63. package/docs/db/admin.md +947 -947
  64. package/docs/db/crm.md +564 -564
  65. package/docs/db/index.md +9 -9
  66. package/docs/db/log.md +204 -204
  67. package/docs/hook/card/afterCard.md +20 -20
  68. package/docs/hook/card/preCard.md +25 -25
  69. package/docs/hook/data/afterData.md +26 -26
  70. package/docs/hook/data/preData.md +26 -26
  71. package/docs/hook/deleteCrud/afterDelete.md +21 -21
  72. package/docs/hook/deleteCrud/preDelete.md +26 -26
  73. package/docs/hook/form/afterForm.md +19 -19
  74. package/docs/hook/form/preForm.md +26 -26
  75. package/docs/hook/getTemplate/afterTemplate.md +24 -24
  76. package/docs/hook/getTemplate/preTemplate.md +29 -29
  77. package/docs/hook/index.md +45 -45
  78. package/docs/hook/insert/afterInsert.md +41 -41
  79. package/docs/hook/insert/preInsert.md +25 -25
  80. package/docs/hook/table/afterTable.md +20 -20
  81. package/docs/hook/table/preTable.md +25 -25
  82. package/docs/hook/update/afterUpdate.md +41 -41
  83. package/docs/hook/update/preUpdate.md +25 -25
  84. package/docs/index.md +42 -42
  85. package/docs/public/fastify-dark.svg +3 -3
  86. package/docs/public/logo-short-dark.svg +11 -11
  87. package/docs/public/logo-short.svg +10 -10
  88. package/docs/public/logo.svg +19 -19
  89. package/docs/readme/index.md +121 -121
  90. package/docs/templates/card.md +83 -83
  91. package/docs/templates/cls.md +29 -29
  92. package/docs/templates/filters.md +91 -91
  93. package/docs/templates/forms.md +139 -139
  94. package/docs/templates/index.md +28 -28
  95. package/docs/templates/select.md +90 -90
  96. package/docs/templates/table.md +162 -162
  97. package/docs/utils/cron/addCron.md +29 -29
  98. package/docs/utils/crud/dataInsert.md +51 -51
  99. package/docs/utils/crud/dataUpdate.md +52 -52
  100. package/docs/utils/crud/getOpt.md +33 -33
  101. package/docs/utils/crud/isFileExists.md +37 -37
  102. package/docs/utils/crud/setOpt.md +37 -37
  103. package/docs/utils/hook/addHook.md +74 -74
  104. package/docs/utils/hook/applyHook.md +64 -64
  105. package/docs/utils/index.md +47 -47
  106. package/docs/utils/notification/addNotification.md +28 -28
  107. package/docs/utils/notification/notification.md +41 -41
  108. package/docs/utils/pg/autoIndex.md +22 -22
  109. package/docs/utils/pg/getMeta.md +58 -58
  110. package/docs/utils/pg/getPG.md +34 -34
  111. package/docs/utils/pg/init.md +29 -29
  112. package/docs/utils/pg/pg.md +70 -70
  113. package/docs/utils/redis/getRedis.md +36 -36
  114. package/docs/utils/redis/rclient.md +74 -74
  115. package/docs/utils/table/getForm.md +68 -68
  116. package/docs/utils/table/getMeta.md +55 -55
  117. package/docs/utils/table/getSelect.md +38 -38
  118. package/docs/utils/table/getSelectMeta.md +46 -46
  119. package/docs/utils/table/getTable.md +77 -77
  120. package/helper.js +30 -30
  121. package/index.js +105 -105
  122. package/migration/exec.migrations.js +79 -79
  123. package/module/core/select/core.user_mentioned.sql +1 -1
  124. package/module/test/cls/itree.composition.json +25 -25
  125. package/module/test/table/test.rest_zone.table.json +265 -265
  126. package/notification/controllers/readNotifications.js +27 -30
  127. package/notification/controllers/testEmail.js +46 -50
  128. package/notification/controllers/userNotifications.js +61 -64
  129. package/notification/funcs/addNotification.js +21 -21
  130. package/notification/funcs/sendNotification.js +112 -112
  131. package/notification/index.js +3 -8
  132. package/notification/schema.js +10 -0
  133. package/package.json +41 -41
  134. package/pg/funcs/getMeta.js +29 -29
  135. package/pg/funcs/getPG.js +30 -30
  136. package/pg/pgClients.js +20 -20
  137. package/policy/funcs/checkPolicy.js +92 -92
  138. package/policy/funcs/sqlInjection.js +33 -33
  139. package/policy/index.js +14 -14
  140. package/redis/client.js +8 -8
  141. package/redis/funcs/getRedis.js +23 -23
  142. package/redis/funcs/redisClients.js +2 -2
  143. package/redis/index.js +19 -19
  144. package/server/migrations/0.sql +78 -78
  145. package/server/migrations/cls.sql +39 -39
  146. package/server/migrations/log.sql +80 -80
  147. package/server/migrations/properties.sql +144 -144
  148. package/server/migrations/roles.sql +172 -172
  149. package/server/migrations/users.sql +168 -168
  150. package/server.js +26 -26
  151. package/table/controllers/data.js +157 -150
  152. package/table/controllers/filter.js +61 -50
  153. package/table/controllers/form.js +42 -42
  154. package/table/controllers/search.js +76 -80
  155. package/table/controllers/suggest.js +79 -79
  156. package/table/controllers/table.js +83 -83
  157. package/table/controllers/utils/addTemplateDir.js +8 -8
  158. package/table/controllers/utils/getSelect.js +19 -19
  159. package/table/controllers/utils/getSelectMeta.js +66 -66
  160. package/table/controllers/utils/getTemplate_old.js +28 -28
  161. package/table/controllers/utils/getTemplates.js +18 -18
  162. package/table/controllers/utils/gisIRColumn.js +72 -67
  163. package/table/controllers/utils/loadTemplate.js +1 -1
  164. package/table/controllers/utils/loadTemplatePath.js +1 -1
  165. package/table/controllers/utils/userTemplateDir.js +1 -1
  166. package/table/funcs/getFilterSQL/index.js +94 -94
  167. package/table/funcs/getFilterSQL/util/formatValue.js +170 -170
  168. package/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  169. package/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
  170. package/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  171. package/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
  172. package/table/funcs/metaFormat/getSelectVal.js +21 -21
  173. package/table/funcs/metaFormat/index.js +28 -28
  174. package/table/index.js +37 -37
  175. package/table/schema.js +64 -54
  176. package/test/api/applyHook.test.js +95 -95
  177. package/test/api/crud.test.js +89 -89
  178. package/test/api/crud.xss.test.js +80 -80
  179. package/test/api/suggest.test.js +66 -66
  180. package/test/api/table.test.js +134 -134
  181. package/test/api/user.test.js +85 -85
  182. package/test/api/widget.test.js +117 -117
  183. package/test/config.example +18 -18
  184. package/test/funcs/pg.test.js +34 -34
  185. package/test/funcs/redis.test.js +19 -19
  186. package/test/helper/formatDate.test.js +62 -62
  187. package/test/templates/cls/test.json +9 -9
  188. package/test/templates/form/cp_building.form.json +32 -32
  189. package/test/templates/select/account_id.json +3 -3
  190. package/test/templates/select/storage.data.json +2 -2
  191. package/test/templates/select/test.storage.data.json +3 -3
  192. package/test/templates/select/test.suggest.ato_new.json +3 -3
  193. package/test/templates/select/test.suggest.ato_new.sql +25 -25
  194. package/test/templates/select/test.suggest.data.json +4 -4
  195. package/test/templates/select/test.suggest.parent.sql +1 -1
  196. package/test/templates/table/gis.dataset.table.json +20 -20
  197. package/user/controllers/user.cls.id.js +14 -14
  198. package/user/controllers/user.cls.js +71 -75
  199. package/user/controllers/user.cls.post.js +52 -55
  200. package/user/controllers/user.info.js +17 -21
  201. package/user/index.js +7 -36
  202. package/user/schema.js +17 -0
  203. package/util/controllers/logger.file.js +91 -91
  204. package/util/controllers/next.id.js +4 -4
  205. package/util/controllers/properties.add.js +56 -60
  206. package/util/controllers/properties.get.js +16 -19
  207. package/util/controllers/status.monitor.js +8 -8
  208. package/util/controllers/utils/checkUserAccess.js +20 -17
  209. package/util/controllers/utils/getRootDir.js +25 -25
  210. package/util/index.js +19 -23
  211. package/util/schema.js +19 -0
  212. package/utils.js +106 -104
  213. package/widget/controllers/utils/historyFormat.js +76 -76
  214. package/widget/controllers/utils/obj2db.js +13 -13
  215. package/widget/controllers/widget.del.js +41 -44
  216. package/widget/controllers/widget.get.js +96 -102
  217. package/widget/controllers/widget.set.js +74 -79
  218. package/widget/index.js +40 -40
@@ -1,139 +1,139 @@
1
- ---
2
- sidebar_position: 6
3
- title: Форми
4
- displayed_sidebar: devDocsSidebar
5
- ---
6
-
7
- # Форми
8
-
9
- Використовується для створення та редагування даних у таблицях бази даних для користувачів. В папці `server/templates/form`
10
-
11
- [Документація Form](https://apidocs.softpro.ua/v3-core/form/)
12
-
13
- ## Створення форми
14
-
15
- Використовуємо компоненти форм на основі Vue.
16
-
17
- Для формування форми створити у відповідній папці файл у форматі JSON, приклад:
18
-
19
- ``` json
20
- {
21
- "schema": {
22
- "user_name": {
23
- "type": "Text",
24
- "ua": "ПІБ",
25
- "i": "Заповніть у форматі Петренко Петро Петрович"
26
- },
27
- "contact.email": {
28
- "type": "Email",
29
- "ua": "Email",
30
- "placeholder": {
31
- "ua": "Email",
32
- "en": "Email"
33
- }
34
- },
35
- "message": {
36
- "type": "richtext",
37
- "title": false,
38
- "ua": "Повідомлення",
39
- "en": "Message",
40
- "i": "Опишіть проблему, пропозицію чи коментар в даному полі",
41
- "validators": [
42
- "required"
43
- ]
44
- }
45
- },
46
- "style": {
47
- "label": "vertical",
48
- "buttonPosition": "bottom-center"
49
- }
50
- }
51
- ```
52
-
53
- ::: details Типи полів
54
-
55
- Значення типу форми бажано вказувати в нижньому регістрі. Хоча форма приймає значення в будь-якому регістрі.
56
-
57
- - **`Text`** - Основний тип в формі - приймає текстові значення
58
- - **`TextArea`** - Застосовується найчастіше для тізерів, коротких описів
59
- - **`Number`** - Для числових значень, в т.ч. і для десяткових
60
- - **`MarkedText`** - Передаються маска, якими мають бути значення. Може застосовуватися, наприклад, для мобільних номерів
61
- - **`Password`** - Спеціальний тип форми для вводу та перевірки паролю
62
- - **`Email`** - Спеціальний тип для email
63
- - **`DataTable`** - Таблиця в формі
64
- - **`File`** - Вибір файлів з можливістю перетягуванння елементів.
65
- - **`FileList`** - Вибір файлів зі зручним переглядом всіх файлів.
66
- - **`Checkbox`** - Вибір декількох значень без випадаючого списку
67
- - **`Switcher`** - Переключення між значеннями false/true
68
- - **`Radio`** - Вибір один одного значення без випадаючого списку
69
- - **`Autocomplete`** - Вибір декількох значень із випадаючого списку
70
- - **`Date`** - Вибір дати
71
- - **`Datetime`** - Вибір дати та часу
72
- - **`Timepicker`** - Вибір часу
73
- - **`Colorpicker`** - Вибір кольору
74
- - **`Richtext`** - Текстовий редактор з підтримкою markdown розмітки
75
- - **`Geom`** - Створення геометрії (позначки на карті) для об'єкта
76
- - **`Camera`** - Додавання живого фото з веб-камери
77
- - **`Slider`** - Числове значення, що встановлюється по лінії-повзунку
78
- - **`Tree`** - Створення значень поля у форматі деревоподібного структурованого списку
79
-
80
- :::
81
-
82
- ::: details Параметри поля
83
-
84
- - `pin` - для основних полів, можна прикріприти в правій частині. Допустимі значення: `true`, `false`
85
- - `col` - ширина поля в формі. Допустимі значення: `діапазон від 1 до 12`, цілі числа.
86
- - `title` - показ назви поля (ua) в формі. За замовчуванням `false`. Допустимі значення: `true`, `false`
87
- - `i` - інформація. Приймається будь-який текстовий масив. HTML не читається.
88
- - `help` - блок допомоги в полі форми. Приймається будь-який текстовий масив. HTML не читається.
89
- - `multi` - можливість вибору декількох значень. Допустимі значення: `true`, `false`
90
- - `default` - значення поля за замовчуванням. Значення відрізняються в залежності від типу поля форми.
91
- - `min` - мінімальне значення
92
- - `max` - максимальне значення
93
- - `behavior` - показ/приховання певного поля.
94
- - `mask` - маска для `type: MarkedText`
95
- - `parent` - батьківське поле форми.
96
- - `validators`
97
- - `placeholder` - текст, що виводиться в полі
98
-
99
- :::
100
-
101
- ### Параметри стилів
102
-
103
- Форма може змінювати зовнішній вигляд, нижче наведені параметри стилів. Працює як через вміст style{...}, так і як самостійні значення на одному рівні із schema
104
-
105
- ``` json
106
- {
107
- "schema": {},
108
- "style": {
109
- "layout": "tabs", // accordion, wizard, default,
110
- "label": "inline" // vertical, horizontal
111
- }
112
- }
113
- ```
114
-
115
- ## Вивід форми
116
-
117
- Існує декілька опцій, за допомогою яких можна виводити форму.
118
-
119
- **handlebars**
120
-
121
- ```hbs
122
- {{{__form form="form_name" model='table_name' id=id}}}
123
- {{{_vue "vs-form" form="form_name"}}}
124
- ```
125
-
126
- **html attribute - add, edit**
127
-
128
- ```html
129
- <a add="{{_token id=id model=table form=form}}"> Стаття</a>
130
- ```
131
-
132
- **В таблиці у форматі**
133
-
134
- ``` json
135
- {
136
- "table": "billing.service", // Таблиця
137
- "add_form": "web.customize_menu.form" // Назва форми
138
- }
139
- ```
1
+ ---
2
+ sidebar_position: 6
3
+ title: Форми
4
+ displayed_sidebar: devDocsSidebar
5
+ ---
6
+
7
+ # Форми
8
+
9
+ Використовується для створення та редагування даних у таблицях бази даних для користувачів. В папці `server/templates/form`
10
+
11
+ [Документація Form](https://apidocs.softpro.ua/v3-core/form/)
12
+
13
+ ## Створення форми
14
+
15
+ Використовуємо компоненти форм на основі Vue.
16
+
17
+ Для формування форми створити у відповідній папці файл у форматі JSON, приклад:
18
+
19
+ ``` json
20
+ {
21
+ "schema": {
22
+ "user_name": {
23
+ "type": "Text",
24
+ "ua": "ПІБ",
25
+ "i": "Заповніть у форматі Петренко Петро Петрович"
26
+ },
27
+ "contact.email": {
28
+ "type": "Email",
29
+ "ua": "Email",
30
+ "placeholder": {
31
+ "ua": "Email",
32
+ "en": "Email"
33
+ }
34
+ },
35
+ "message": {
36
+ "type": "richtext",
37
+ "title": false,
38
+ "ua": "Повідомлення",
39
+ "en": "Message",
40
+ "i": "Опишіть проблему, пропозицію чи коментар в даному полі",
41
+ "validators": [
42
+ "required"
43
+ ]
44
+ }
45
+ },
46
+ "style": {
47
+ "label": "vertical",
48
+ "buttonPosition": "bottom-center"
49
+ }
50
+ }
51
+ ```
52
+
53
+ ::: details Типи полів
54
+
55
+ Значення типу форми бажано вказувати в нижньому регістрі. Хоча форма приймає значення в будь-якому регістрі.
56
+
57
+ - **`Text`** - Основний тип в формі - приймає текстові значення
58
+ - **`TextArea`** - Застосовується найчастіше для тізерів, коротких описів
59
+ - **`Number`** - Для числових значень, в т.ч. і для десяткових
60
+ - **`MarkedText`** - Передаються маска, якими мають бути значення. Може застосовуватися, наприклад, для мобільних номерів
61
+ - **`Password`** - Спеціальний тип форми для вводу та перевірки паролю
62
+ - **`Email`** - Спеціальний тип для email
63
+ - **`DataTable`** - Таблиця в формі
64
+ - **`File`** - Вибір файлів з можливістю перетягуванння елементів.
65
+ - **`FileList`** - Вибір файлів зі зручним переглядом всіх файлів.
66
+ - **`Checkbox`** - Вибір декількох значень без випадаючого списку
67
+ - **`Switcher`** - Переключення між значеннями false/true
68
+ - **`Radio`** - Вибір один одного значення без випадаючого списку
69
+ - **`Autocomplete`** - Вибір декількох значень із випадаючого списку
70
+ - **`Date`** - Вибір дати
71
+ - **`Datetime`** - Вибір дати та часу
72
+ - **`Timepicker`** - Вибір часу
73
+ - **`Colorpicker`** - Вибір кольору
74
+ - **`Richtext`** - Текстовий редактор з підтримкою markdown розмітки
75
+ - **`Geom`** - Створення геометрії (позначки на карті) для об'єкта
76
+ - **`Camera`** - Додавання живого фото з веб-камери
77
+ - **`Slider`** - Числове значення, що встановлюється по лінії-повзунку
78
+ - **`Tree`** - Створення значень поля у форматі деревоподібного структурованого списку
79
+
80
+ :::
81
+
82
+ ::: details Параметри поля
83
+
84
+ - `pin` - для основних полів, можна прикріприти в правій частині. Допустимі значення: `true`, `false`
85
+ - `col` - ширина поля в формі. Допустимі значення: `діапазон від 1 до 12`, цілі числа.
86
+ - `title` - показ назви поля (ua) в формі. За замовчуванням `false`. Допустимі значення: `true`, `false`
87
+ - `i` - інформація. Приймається будь-який текстовий масив. HTML не читається.
88
+ - `help` - блок допомоги в полі форми. Приймається будь-який текстовий масив. HTML не читається.
89
+ - `multi` - можливість вибору декількох значень. Допустимі значення: `true`, `false`
90
+ - `default` - значення поля за замовчуванням. Значення відрізняються в залежності від типу поля форми.
91
+ - `min` - мінімальне значення
92
+ - `max` - максимальне значення
93
+ - `behavior` - показ/приховання певного поля.
94
+ - `mask` - маска для `type: MarkedText`
95
+ - `parent` - батьківське поле форми.
96
+ - `validators`
97
+ - `placeholder` - текст, що виводиться в полі
98
+
99
+ :::
100
+
101
+ ### Параметри стилів
102
+
103
+ Форма може змінювати зовнішній вигляд, нижче наведені параметри стилів. Працює як через вміст style{...}, так і як самостійні значення на одному рівні із schema
104
+
105
+ ``` json
106
+ {
107
+ "schema": {},
108
+ "style": {
109
+ "layout": "tabs", // accordion, wizard, default,
110
+ "label": "inline" // vertical, horizontal
111
+ }
112
+ }
113
+ ```
114
+
115
+ ## Вивід форми
116
+
117
+ Існує декілька опцій, за допомогою яких можна виводити форму.
118
+
119
+ **handlebars**
120
+
121
+ ```hbs
122
+ {{{__form form="form_name" model='table_name' id=id}}}
123
+ {{{_vue "vs-form" form="form_name"}}}
124
+ ```
125
+
126
+ **html attribute - add, edit**
127
+
128
+ ```html
129
+ <a add="{{_token id=id model=table form=form}}"> Стаття</a>
130
+ ```
131
+
132
+ **В таблиці у форматі**
133
+
134
+ ``` json
135
+ {
136
+ "table": "billing.service", // Таблиця
137
+ "add_form": "web.customize_menu.form" // Назва форми
138
+ }
139
+ ```
@@ -1,28 +1,28 @@
1
- ---
2
- order: -1
3
- ---
4
-
5
- # Список шаблонів
6
-
7
- - **[card](card.md)** - картка таблиці.
8
- - **[cls](cls.md)** - класифікатори.
9
- - **[select](select.md)** - селекти.
10
- - **[filters](filters.md)** - фільтри.
11
- - **[forms](forms.md)** - створення та редагування даних у таблицях бази даних для користувачів.
12
- - **[table](table.md)** - для виводу інформації з бази даних.
13
-
14
- ::: details Типова структура проекту GIT
15
-
16
- Всі шаблони знаходяться в GIT проекті в папці `templates`
17
-
18
- ```bash
19
-
20
- server # module SITE
21
- └── templates # шаблони
22
- ├── cls # незмінні класифікатори
23
- ├── select # класифікатори запити
24
- ├── form # форми json
25
- └── table # таблиці
26
- ```
27
-
28
- :::
1
+ ---
2
+ order: -1
3
+ ---
4
+
5
+ # Список шаблонів
6
+
7
+ - **[card](card.md)** - картка таблиці.
8
+ - **[cls](cls.md)** - класифікатори.
9
+ - **[select](select.md)** - селекти.
10
+ - **[filters](filters.md)** - фільтри.
11
+ - **[forms](forms.md)** - створення та редагування даних у таблицях бази даних для користувачів.
12
+ - **[table](table.md)** - для виводу інформації з бази даних.
13
+
14
+ ::: details Типова структура проекту GIT
15
+
16
+ Всі шаблони знаходяться в GIT проекті в папці `templates`
17
+
18
+ ```bash
19
+
20
+ server # module SITE
21
+ └── templates # шаблони
22
+ ├── cls # незмінні класифікатори
23
+ ├── select # класифікатори запити
24
+ ├── form # форми json
25
+ └── table # таблиці
26
+ ```
27
+
28
+ :::
@@ -1,90 +1,90 @@
1
- # Select
2
-
3
- Зберігаються файли у форматі .sql. Принцип виклику відрізняється від класифікаторів - запит значень йде у базу даних до конкретної таблиці.
4
- В папці `server/templates/select`
5
-
6
- Складається з 1 або 2-х файлів
7
-
8
- 1. `select.sql` - SQL запит
9
- 2. `select.json` - Налаштування select
10
-
11
- ```sql
12
- select conformity from data_barlessness.entrance_group
13
- ```
14
-
15
- ## Налаштування + Оптимізація
16
-
17
- ```json
18
- {
19
- "db": "geo_atu", // інша база
20
-
21
- // для оптимізації
22
- "only": "sql", // sql, redis
23
- "searchColumn": "name_nominative,katottg", // колонки пошуку
24
- "minLengthSql": 4, //
25
- "limit": 20, // максимальний ліміт пошуку
26
- "count": 0, // загальна кількість число, не буде робити запит кількості
27
- "minLength": 4 // мінімальна кількість символів пошуку
28
- }
29
- ```
30
-
31
- ::: details Приклад `edrato.atu.katottg`
32
-
33
- ```sql
34
- select atu_id,
35
- coalesce(edrato.atu_full_name(atu_id),'')||coalesce(' #'||katottg,''),
36
- name_nominative,
37
- katottg
38
- from edrato.atu a
39
- where version=(select max(version) from edrato.atu where atu_id=a.atu_id)
40
- ```
41
-
42
- ---
43
-
44
- ```json
45
- {
46
- "only": "sql",
47
- "searchColumn1": "name_nominative,katottg",
48
- "limit": 2,
49
- "minLength": 4
50
- }
51
- ```
52
-
53
- :::
54
-
55
- ::: warning
56
-
57
- 1. Якщо запит працює більше 100ms - це баг і треба робити оптимізацію.
58
- 2. searchColumn - пошук має бути по нативній колонці щоб індекс спрацював. Порядок searchColumn = `searchColumn` || колонка `search` || колонка `text`
59
- 3. не намагатись загаянти статистику в пошук
60
- :::
61
-
62
- ## Використання API
63
-
64
- Викликається через команду [suggest](../api/fastify-table/table/suggest.md) `/api/suggest/{name}` на конкретному порталі.
65
-
66
- Повертаються значення **id** та **text**. Приклад:
67
-
68
- ```json
69
- {
70
- "limit": 50,
71
- "count": 2,
72
- "mode": "array",
73
- "time": 2,
74
- "data": [
75
- {
76
- "id": "1",
77
- "text": "Комунальна"
78
- },
79
- {
80
- "id": "2",
81
- "text": "Державна"
82
- },
83
- {
84
- "id": "3",
85
- "text": "Приватна"
86
- }
87
- ]
88
- }
89
-
90
- ```
1
+ # Select
2
+
3
+ Зберігаються файли у форматі .sql. Принцип виклику відрізняється від класифікаторів - запит значень йде у базу даних до конкретної таблиці.
4
+ В папці `server/templates/select`
5
+
6
+ Складається з 1 або 2-х файлів
7
+
8
+ 1. `select.sql` - SQL запит
9
+ 2. `select.json` - Налаштування select
10
+
11
+ ```sql
12
+ select conformity from data_barlessness.entrance_group
13
+ ```
14
+
15
+ ## Налаштування + Оптимізація
16
+
17
+ ```json
18
+ {
19
+ "db": "geo_atu", // інша база
20
+
21
+ // для оптимізації
22
+ "only": "sql", // sql, redis
23
+ "searchColumn": "name_nominative,katottg", // колонки пошуку
24
+ "minLengthSql": 4, //
25
+ "limit": 20, // максимальний ліміт пошуку
26
+ "count": 0, // загальна кількість число, не буде робити запит кількості
27
+ "minLength": 4 // мінімальна кількість символів пошуку
28
+ }
29
+ ```
30
+
31
+ ::: details Приклад `edrato.atu.katottg`
32
+
33
+ ```sql
34
+ select atu_id,
35
+ coalesce(edrato.atu_full_name(atu_id),'')||coalesce(' #'||katottg,''),
36
+ name_nominative,
37
+ katottg
38
+ from edrato.atu a
39
+ where version=(select max(version) from edrato.atu where atu_id=a.atu_id)
40
+ ```
41
+
42
+ ---
43
+
44
+ ```json
45
+ {
46
+ "only": "sql",
47
+ "searchColumn1": "name_nominative,katottg",
48
+ "limit": 2,
49
+ "minLength": 4
50
+ }
51
+ ```
52
+
53
+ :::
54
+
55
+ ::: warning
56
+
57
+ 1. Якщо запит працює більше 100ms - це баг і треба робити оптимізацію.
58
+ 2. searchColumn - пошук має бути по нативній колонці щоб індекс спрацював. Порядок searchColumn = `searchColumn` || колонка `search` || колонка `text`
59
+ 3. не намагатись загаянти статистику в пошук
60
+ :::
61
+
62
+ ## Використання API
63
+
64
+ Викликається через команду [suggest](../api/fastify-table/table/suggest.md) `/api/suggest/{name}` на конкретному порталі.
65
+
66
+ Повертаються значення **id** та **text**. Приклад:
67
+
68
+ ```json
69
+ {
70
+ "limit": 50,
71
+ "count": 2,
72
+ "mode": "array",
73
+ "time": 2,
74
+ "data": [
75
+ {
76
+ "id": "1",
77
+ "text": "Комунальна"
78
+ },
79
+ {
80
+ "id": "2",
81
+ "text": "Державна"
82
+ },
83
+ {
84
+ "id": "3",
85
+ "text": "Приватна"
86
+ }
87
+ ]
88
+ }
89
+
90
+ ```