@opengis/gis 0.2.183 → 0.2.185
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/dist/{CardIcon-CKcvisBB.js → CardIcon-C3cCdpvO.js} +1 -1
- package/dist/{EntityTablePage-Dj4Ysqkw.js → EntityTablePage-D0hDbacp.js} +1 -1
- package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-zNchIX_P.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-8ervbwRu.js} +1 -1
- package/dist/{MapSettings-DH7BzcxB.js → MapSettings-BQak-606.js} +1 -1
- package/dist/{MapToolbarRight.vue_vue_type_script_setup_true_lang-B5aTyoyH.js → MapToolbarRight.vue_vue_type_script_setup_true_lang-D5Q1QqS8.js} +1 -1
- package/dist/{RastersTablePage-BjgVVZDP.js → RastersTablePage-DbiK7bD4.js} +1 -1
- package/dist/{cartocss-B-5m_Jgg.js → cartocss-H7PBnoyC.js} +37 -37
- package/dist/{import-utils-Bzs6QWW3.js → import-utils-BYsmUngb.js} +1 -1
- package/dist/{index-DhmYISKS.js → index-Bd_JFn54.js} +4785 -4722
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +25 -25
- package/dist/{raster-XFH5nm6L.js → raster-DzFKHCJf.js} +3 -3
- package/dist/{register-CNWivGIA.js → register-ChSxZGlt.js} +3 -3
- package/dist/{service-CAelhYEL.js → service-DB7wy37J.js} +5 -5
- package/dist/{vs-datatable-DkR1zed2.js → vs-datatable-BvSBnibk.js} +2 -3
- package/module/gis/card/gis.metadata.table/index.yml +22 -22
- package/module/gis/card/gis.rasters.table/index.yml +11 -11
- package/module/gis/card/gis.registers.table/index.yml +23 -23
- package/module/gis/card/gis.services.table/index.yml +25 -25
- package/module/gis/cls/bool.yes_no.json +12 -12
- package/module/gis/cls/encoding.json +14 -14
- package/module/gis/cls/geom_type.json +14 -14
- package/module/gis/cls/gis.column_type.json +34 -34
- package/module/gis/cls/gis.column_view_type.json +26 -26
- package/module/gis/cls/gis.filter_type.json +22 -22
- package/module/gis/cls/language.json +10 -10
- package/module/gis/cls/meta.service_type.json +42 -42
- package/module/gis/cls/ogc.service.json +21 -21
- package/module/gis/cls/source_type.json +10 -10
- package/module/gis/cls/standarts.json +6 -6
- package/module/gis/cls/topic_category.json +106 -106
- package/module/gis/cls/update_frequency.json +29 -29
- package/module/gis/cls/view.json +21 -21
- package/module/gis/form/feedback.answer.form.json +10 -10
- package/module/gis/form/gis.cartocss.form.json +64 -64
- package/module/gis/form/gis.group_list.form.json +17 -17
- package/module/gis/form/gis.maps.form.json +61 -61
- package/module/gis/form/gis.metadata.form.json +240 -240
- package/module/gis/form/gis.metadata_new.form.json +195 -195
- package/module/gis/form/gis.ogc_service.form.json +51 -51
- package/module/gis/form/gis.rasters.form.json +76 -76
- package/module/gis/form/gis.registers_column.form.json +84 -84
- package/module/gis/form/gis.registers_filter.form.json +65 -65
- package/module/gis/form/gis.services.form.json +111 -111
- package/module/gis/form/gis.services_attributes.form.json +75 -75
- package/module/gis/form/gis.services_filter.form.json +65 -65
- package/module/gis/menu.json +43 -43
- package/module/gis/select/admin.cls.name.sql +9 -9
- package/module/gis/select/layer_list.sql +7 -7
- package/module/gis/select/layer_list_text.sql +7 -7
- package/module/gis/select/pg.column_name.geometry.sql +12 -12
- package/module/gis/select/pg.columns.parent.sql +6 -6
- package/module/gis/select/pg.table_name.sql +17 -17
- package/module/gis/select/service_id.sql +1 -1
- package/module/gis/select/srid.sql +7 -7
- package/module/gis/table/gis.cartocss.table.json +74 -74
- package/module/gis/table/gis.group_list.table.json +58 -58
- package/module/gis/table/gis.maps.table.json +110 -110
- package/module/gis/table/gis.metadata.table.json +70 -70
- package/module/gis/table/gis.metadata_new.table.json +137 -137
- package/module/gis/table/gis.ogc_service.table.json +100 -100
- package/module/gis/table/gis.rasters.table.json +113 -113
- package/module/gis/table/gis.registers.table.json +143 -143
- package/module/gis/table/gis.services.table.json +120 -120
- package/module/gis/table/site.gis.registers.table.json +88 -88
- package/module/gis/table/site.gis.services.table.json +106 -106
- package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
- package/module/gis/tokens.yml +5 -5
- package/module/permissions/form/permissions.users.form.json +151 -151
- package/module/permissions/table/gis.permissions.table.json +97 -97
- package/package.json +2 -2
- package/server/routes/registers/functions/gis.suggest.js +16 -8
- package/server/routes/registers/functions/handleRegistryRequest.js +3 -2
- package/server/routes/registers/registers.route.test.js +1 -1
- package/server/routes/services/functions/get.services.js +34 -4
- package/server/routes/services/services.route.test.js +4 -0
package/module/gis/tokens.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
maps: { table: 'gis.maps.table'}
|
|
2
|
-
metadata: { table: 'gis.metadata.table' }
|
|
3
|
-
rasters: { table: 'gis.rasters.table' }
|
|
4
|
-
registers: { table: 'gis.registers.table' }
|
|
5
|
-
services: { table: 'gis.services.table'}
|
|
1
|
+
maps: { table: 'gis.maps.table'}
|
|
2
|
+
metadata: { table: 'gis.metadata.table' }
|
|
3
|
+
rasters: { table: 'gis.rasters.table' }
|
|
4
|
+
registers: { table: 'gis.registers.table' }
|
|
5
|
+
services: { table: 'gis.services.table'}
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema": {
|
|
3
|
-
"d1": {
|
|
4
|
-
"type": "HTML",
|
|
5
|
-
"title": false,
|
|
6
|
-
"text": "<h4 class='text-center'>Акаунт</h4><br>",
|
|
7
|
-
"col": 12
|
|
8
|
-
},
|
|
9
|
-
"user_name": {
|
|
10
|
-
"type": "Text",
|
|
11
|
-
"validators": [
|
|
12
|
-
"required"
|
|
13
|
-
],
|
|
14
|
-
"ua": "Ім'я",
|
|
15
|
-
"i": "Вноситься ім'я користувача, що буде відображатися у системі",
|
|
16
|
-
"ru": "Имя"
|
|
17
|
-
},
|
|
18
|
-
"sur_name": {
|
|
19
|
-
"type": "Text",
|
|
20
|
-
"validators": [
|
|
21
|
-
"required"
|
|
22
|
-
],
|
|
23
|
-
"ua": "Прізвище",
|
|
24
|
-
"i": "Вноситься прізвище користувача, що буде відображатися у системі",
|
|
25
|
-
"ru": "Фамилия"
|
|
26
|
-
},
|
|
27
|
-
"father_name": {
|
|
28
|
-
"ua": "По-батькові",
|
|
29
|
-
"type": "text"
|
|
30
|
-
},
|
|
31
|
-
"phone": {
|
|
32
|
-
"type": "MarkedText",
|
|
33
|
-
"mask": "+389999999999",
|
|
34
|
-
"id": "1",
|
|
35
|
-
"ua": "Телефон",
|
|
36
|
-
"i": "Вноситься телефон користувача",
|
|
37
|
-
"ru": "Телефон"
|
|
38
|
-
},
|
|
39
|
-
"email": {
|
|
40
|
-
"type": "Email",
|
|
41
|
-
"ua": "E-mail",
|
|
42
|
-
"i": "Вноситься електронна адреса користувача",
|
|
43
|
-
"ru": "E-mail",
|
|
44
|
-
"validators": [
|
|
45
|
-
"email"
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"d2": {
|
|
49
|
-
"type": "HTML",
|
|
50
|
-
"title": false,
|
|
51
|
-
"text": "<h4 class='text-center'>Логін / Пароль</h4><br>",
|
|
52
|
-
"hidden": true,
|
|
53
|
-
"col": 12
|
|
54
|
-
},
|
|
55
|
-
"login": {
|
|
56
|
-
"type": "Text",
|
|
57
|
-
"ua": "Логін",
|
|
58
|
-
"i": "Вноситься довільний логін користувача латинськими літерами, що буде використовуватися для входу в систему",
|
|
59
|
-
"ru": "Логин",
|
|
60
|
-
"validators": [
|
|
61
|
-
"required"
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
"password": {
|
|
65
|
-
"type": "Password",
|
|
66
|
-
"validators": [
|
|
67
|
-
"required",
|
|
68
|
-
{
|
|
69
|
-
"type": "regexp",
|
|
70
|
-
"regexp": "^.{8,}$",
|
|
71
|
-
"flags": "gm",
|
|
72
|
-
"message": "Пароль повинен бути більше 8 символів"
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
"ua": "Пароль",
|
|
76
|
-
"i": "Вноситься пароль, що буде використовуватися для входу в систему (рекомендоване використання складних паролів)",
|
|
77
|
-
"ru": "Пароль"
|
|
78
|
-
},
|
|
79
|
-
"d3": {
|
|
80
|
-
"type": "HTML",
|
|
81
|
-
"title": false,
|
|
82
|
-
"text": "<h4 class='text-center'>Доступ</h4><br>",
|
|
83
|
-
"col": 12
|
|
84
|
-
},
|
|
85
|
-
"user_type": {
|
|
86
|
-
"type": "Autocomplete",
|
|
87
|
-
"data": "users.user_type",
|
|
88
|
-
"default": "regular",
|
|
89
|
-
"ua": "Тип користувача"
|
|
90
|
-
},
|
|
91
|
-
"enabled": {
|
|
92
|
-
"type": "Switcher",
|
|
93
|
-
"ua": "Off/On",
|
|
94
|
-
"help": "Off - користувач вимкнутий; On - Користувач увімкнутий"
|
|
95
|
-
},
|
|
96
|
-
"readonly": {
|
|
97
|
-
"type": "Switcher",
|
|
98
|
-
"ua": "Read Only",
|
|
99
|
-
"help": "On - У користувача усі інтерфейси в режимі перегляду, без редагування"
|
|
100
|
-
},
|
|
101
|
-
"d4": {
|
|
102
|
-
"type": "HTML",
|
|
103
|
-
"title": false,
|
|
104
|
-
"text": "<h4 class='text-center'>Профіль</h4><br>",
|
|
105
|
-
"col": 12
|
|
106
|
-
},
|
|
107
|
-
"user_rnokpp": {
|
|
108
|
-
"type": "MarkedText",
|
|
109
|
-
"mask": "9999999999",
|
|
110
|
-
"ua": "РНОКПП",
|
|
111
|
-
"col": 6,
|
|
112
|
-
"validators": [
|
|
113
|
-
{
|
|
114
|
-
"type": "regexp",
|
|
115
|
-
"regexp": "^([0-9]{10,10})$",
|
|
116
|
-
"flags": "g",
|
|
117
|
-
"message": "Лише цифри, 10 символів"
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
},
|
|
121
|
-
"organ_edrpou": {
|
|
122
|
-
"type": "MarkedText",
|
|
123
|
-
"mask": "99999999",
|
|
124
|
-
"ua": "Код ЄДРПОУ",
|
|
125
|
-
"col": 6,
|
|
126
|
-
"validators": [
|
|
127
|
-
{
|
|
128
|
-
"type": "regexp",
|
|
129
|
-
"regexp": "^([0-9]{8,8})$",
|
|
130
|
-
"flags": "g",
|
|
131
|
-
"message": "Лише цифри, 8 символів"
|
|
132
|
-
}
|
|
133
|
-
]
|
|
134
|
-
},
|
|
135
|
-
"unzr": {
|
|
136
|
-
"type": "MarkedText",
|
|
137
|
-
"mask": "99999999-9999",
|
|
138
|
-
"ua": "УНЗР",
|
|
139
|
-
"col": 6,
|
|
140
|
-
"i": "Унікальний номер запису в Єдиному державному демографічному реєстрі"
|
|
141
|
-
},
|
|
142
|
-
"avatar": {
|
|
143
|
-
"type": "File",
|
|
144
|
-
"ua": "Аватар",
|
|
145
|
-
"i": "Додається зображення, що буде відображено в системі у якості аватара цього користувача",
|
|
146
|
-
"ru": "Аватар",
|
|
147
|
-
"dir": "avatar"
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
"label_style": "vertical",
|
|
151
|
-
"width": 900
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"d1": {
|
|
4
|
+
"type": "HTML",
|
|
5
|
+
"title": false,
|
|
6
|
+
"text": "<h4 class='text-center'>Акаунт</h4><br>",
|
|
7
|
+
"col": 12
|
|
8
|
+
},
|
|
9
|
+
"user_name": {
|
|
10
|
+
"type": "Text",
|
|
11
|
+
"validators": [
|
|
12
|
+
"required"
|
|
13
|
+
],
|
|
14
|
+
"ua": "Ім'я",
|
|
15
|
+
"i": "Вноситься ім'я користувача, що буде відображатися у системі",
|
|
16
|
+
"ru": "Имя"
|
|
17
|
+
},
|
|
18
|
+
"sur_name": {
|
|
19
|
+
"type": "Text",
|
|
20
|
+
"validators": [
|
|
21
|
+
"required"
|
|
22
|
+
],
|
|
23
|
+
"ua": "Прізвище",
|
|
24
|
+
"i": "Вноситься прізвище користувача, що буде відображатися у системі",
|
|
25
|
+
"ru": "Фамилия"
|
|
26
|
+
},
|
|
27
|
+
"father_name": {
|
|
28
|
+
"ua": "По-батькові",
|
|
29
|
+
"type": "text"
|
|
30
|
+
},
|
|
31
|
+
"phone": {
|
|
32
|
+
"type": "MarkedText",
|
|
33
|
+
"mask": "+389999999999",
|
|
34
|
+
"id": "1",
|
|
35
|
+
"ua": "Телефон",
|
|
36
|
+
"i": "Вноситься телефон користувача",
|
|
37
|
+
"ru": "Телефон"
|
|
38
|
+
},
|
|
39
|
+
"email": {
|
|
40
|
+
"type": "Email",
|
|
41
|
+
"ua": "E-mail",
|
|
42
|
+
"i": "Вноситься електронна адреса користувача",
|
|
43
|
+
"ru": "E-mail",
|
|
44
|
+
"validators": [
|
|
45
|
+
"email"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"d2": {
|
|
49
|
+
"type": "HTML",
|
|
50
|
+
"title": false,
|
|
51
|
+
"text": "<h4 class='text-center'>Логін / Пароль</h4><br>",
|
|
52
|
+
"hidden": true,
|
|
53
|
+
"col": 12
|
|
54
|
+
},
|
|
55
|
+
"login": {
|
|
56
|
+
"type": "Text",
|
|
57
|
+
"ua": "Логін",
|
|
58
|
+
"i": "Вноситься довільний логін користувача латинськими літерами, що буде використовуватися для входу в систему",
|
|
59
|
+
"ru": "Логин",
|
|
60
|
+
"validators": [
|
|
61
|
+
"required"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"password": {
|
|
65
|
+
"type": "Password",
|
|
66
|
+
"validators": [
|
|
67
|
+
"required",
|
|
68
|
+
{
|
|
69
|
+
"type": "regexp",
|
|
70
|
+
"regexp": "^.{8,}$",
|
|
71
|
+
"flags": "gm",
|
|
72
|
+
"message": "Пароль повинен бути більше 8 символів"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"ua": "Пароль",
|
|
76
|
+
"i": "Вноситься пароль, що буде використовуватися для входу в систему (рекомендоване використання складних паролів)",
|
|
77
|
+
"ru": "Пароль"
|
|
78
|
+
},
|
|
79
|
+
"d3": {
|
|
80
|
+
"type": "HTML",
|
|
81
|
+
"title": false,
|
|
82
|
+
"text": "<h4 class='text-center'>Доступ</h4><br>",
|
|
83
|
+
"col": 12
|
|
84
|
+
},
|
|
85
|
+
"user_type": {
|
|
86
|
+
"type": "Autocomplete",
|
|
87
|
+
"data": "users.user_type",
|
|
88
|
+
"default": "regular",
|
|
89
|
+
"ua": "Тип користувача"
|
|
90
|
+
},
|
|
91
|
+
"enabled": {
|
|
92
|
+
"type": "Switcher",
|
|
93
|
+
"ua": "Off/On",
|
|
94
|
+
"help": "Off - користувач вимкнутий; On - Користувач увімкнутий"
|
|
95
|
+
},
|
|
96
|
+
"readonly": {
|
|
97
|
+
"type": "Switcher",
|
|
98
|
+
"ua": "Read Only",
|
|
99
|
+
"help": "On - У користувача усі інтерфейси в режимі перегляду, без редагування"
|
|
100
|
+
},
|
|
101
|
+
"d4": {
|
|
102
|
+
"type": "HTML",
|
|
103
|
+
"title": false,
|
|
104
|
+
"text": "<h4 class='text-center'>Профіль</h4><br>",
|
|
105
|
+
"col": 12
|
|
106
|
+
},
|
|
107
|
+
"user_rnokpp": {
|
|
108
|
+
"type": "MarkedText",
|
|
109
|
+
"mask": "9999999999",
|
|
110
|
+
"ua": "РНОКПП",
|
|
111
|
+
"col": 6,
|
|
112
|
+
"validators": [
|
|
113
|
+
{
|
|
114
|
+
"type": "regexp",
|
|
115
|
+
"regexp": "^([0-9]{10,10})$",
|
|
116
|
+
"flags": "g",
|
|
117
|
+
"message": "Лише цифри, 10 символів"
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"organ_edrpou": {
|
|
122
|
+
"type": "MarkedText",
|
|
123
|
+
"mask": "99999999",
|
|
124
|
+
"ua": "Код ЄДРПОУ",
|
|
125
|
+
"col": 6,
|
|
126
|
+
"validators": [
|
|
127
|
+
{
|
|
128
|
+
"type": "regexp",
|
|
129
|
+
"regexp": "^([0-9]{8,8})$",
|
|
130
|
+
"flags": "g",
|
|
131
|
+
"message": "Лише цифри, 8 символів"
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"unzr": {
|
|
136
|
+
"type": "MarkedText",
|
|
137
|
+
"mask": "99999999-9999",
|
|
138
|
+
"ua": "УНЗР",
|
|
139
|
+
"col": 6,
|
|
140
|
+
"i": "Унікальний номер запису в Єдиному державному демографічному реєстрі"
|
|
141
|
+
},
|
|
142
|
+
"avatar": {
|
|
143
|
+
"type": "File",
|
|
144
|
+
"ua": "Аватар",
|
|
145
|
+
"i": "Додається зображення, що буде відображено в системі у якості аватара цього користувача",
|
|
146
|
+
"ru": "Аватар",
|
|
147
|
+
"dir": "avatar"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"label_style": "vertical",
|
|
151
|
+
"width": 900
|
|
152
152
|
}
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
{
|
|
2
|
-
"key": "uid",
|
|
3
|
-
"table": "admin.users",
|
|
4
|
-
"actions": [
|
|
5
|
-
"add",
|
|
6
|
-
"edit"
|
|
7
|
-
],
|
|
8
|
-
"controls": [
|
|
9
|
-
"search",
|
|
10
|
-
"list",
|
|
11
|
-
"add"
|
|
12
|
-
],
|
|
13
|
-
"order": "cdate desc",
|
|
14
|
-
"form": "admin.users.form",
|
|
15
|
-
"meta": {
|
|
16
|
-
"title": "full_name",
|
|
17
|
-
"search": "user_name,sur_name,father_name,login,email,phone"
|
|
18
|
-
},
|
|
19
|
-
"title": "Доступи до шарів",
|
|
20
|
-
"sql": [
|
|
21
|
-
{
|
|
22
|
-
"sql": "select count(*) as count_layers from gis.services_users_rel where user_id=t.uid",
|
|
23
|
-
"name": "count_layers_sql"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"sql": "select concat(user_name, ' ', sur_name, ' ', father_name, ' ') as full_name",
|
|
27
|
-
"name": "full_name_sql"
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
"columns": [
|
|
31
|
-
{
|
|
32
|
-
"ua": "ПІБ",
|
|
33
|
-
"name": "full_name",
|
|
34
|
-
"format": "text",
|
|
35
|
-
"link": "gis.permissions/{id}"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"ua": "Логін",
|
|
39
|
-
"name": "login",
|
|
40
|
-
"hidden": true,
|
|
41
|
-
"format": "text"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"ua": "Email",
|
|
45
|
-
"name": "email",
|
|
46
|
-
"format": "text"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"ua": "РНОКПП",
|
|
50
|
-
"name": "user_rnokpp",
|
|
51
|
-
"format": "text"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"ua": "Кількість шарів в доступі",
|
|
55
|
-
"name": "count_layers",
|
|
56
|
-
"format": "text"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"name": "cdate",
|
|
60
|
-
"ua": "Створено",
|
|
61
|
-
"format": "date"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"name": "enabled",
|
|
65
|
-
"ua": "On / Off",
|
|
66
|
-
"data": "yes_no",
|
|
67
|
-
"format": "check"
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
"filters": [
|
|
71
|
-
{
|
|
72
|
-
"ua": "РНОКПП",
|
|
73
|
-
"name": "user_rnokpp",
|
|
74
|
-
"type": "Text"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"ua": "Email",
|
|
78
|
-
"name": "email",
|
|
79
|
-
"type": "Text"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"ua": "Кількість шарів в доступі",
|
|
83
|
-
"name": "count_layers",
|
|
84
|
-
"type": "Range"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
"name": "enabled",
|
|
88
|
-
"type": "Check",
|
|
89
|
-
"data": "yes_no",
|
|
90
|
-
"ua": "On / Off"
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"ua": "Дата створення",
|
|
94
|
-
"name": "cdate",
|
|
95
|
-
"type": "Date"
|
|
96
|
-
}
|
|
97
|
-
]
|
|
1
|
+
{
|
|
2
|
+
"key": "uid",
|
|
3
|
+
"table": "admin.users",
|
|
4
|
+
"actions": [
|
|
5
|
+
"add",
|
|
6
|
+
"edit"
|
|
7
|
+
],
|
|
8
|
+
"controls": [
|
|
9
|
+
"search",
|
|
10
|
+
"list",
|
|
11
|
+
"add"
|
|
12
|
+
],
|
|
13
|
+
"order": "cdate desc",
|
|
14
|
+
"form": "admin.users.form",
|
|
15
|
+
"meta": {
|
|
16
|
+
"title": "full_name",
|
|
17
|
+
"search": "user_name,sur_name,father_name,login,email,phone"
|
|
18
|
+
},
|
|
19
|
+
"title": "Доступи до шарів",
|
|
20
|
+
"sql": [
|
|
21
|
+
{
|
|
22
|
+
"sql": "select count(*) as count_layers from gis.services_users_rel where user_id=t.uid",
|
|
23
|
+
"name": "count_layers_sql"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"sql": "select concat(user_name, ' ', sur_name, ' ', father_name, ' ') as full_name",
|
|
27
|
+
"name": "full_name_sql"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"columns": [
|
|
31
|
+
{
|
|
32
|
+
"ua": "ПІБ",
|
|
33
|
+
"name": "full_name",
|
|
34
|
+
"format": "text",
|
|
35
|
+
"link": "gis.permissions/{id}"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"ua": "Логін",
|
|
39
|
+
"name": "login",
|
|
40
|
+
"hidden": true,
|
|
41
|
+
"format": "text"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"ua": "Email",
|
|
45
|
+
"name": "email",
|
|
46
|
+
"format": "text"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"ua": "РНОКПП",
|
|
50
|
+
"name": "user_rnokpp",
|
|
51
|
+
"format": "text"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"ua": "Кількість шарів в доступі",
|
|
55
|
+
"name": "count_layers",
|
|
56
|
+
"format": "text"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "cdate",
|
|
60
|
+
"ua": "Створено",
|
|
61
|
+
"format": "date"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "enabled",
|
|
65
|
+
"ua": "On / Off",
|
|
66
|
+
"data": "yes_no",
|
|
67
|
+
"format": "check"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"filters": [
|
|
71
|
+
{
|
|
72
|
+
"ua": "РНОКПП",
|
|
73
|
+
"name": "user_rnokpp",
|
|
74
|
+
"type": "Text"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"ua": "Email",
|
|
78
|
+
"name": "email",
|
|
79
|
+
"type": "Text"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"ua": "Кількість шарів в доступі",
|
|
83
|
+
"name": "count_layers",
|
|
84
|
+
"type": "Range"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "enabled",
|
|
88
|
+
"type": "Check",
|
|
89
|
+
"data": "yes_no",
|
|
90
|
+
"ua": "On / Off"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"ua": "Дата створення",
|
|
94
|
+
"name": "cdate",
|
|
95
|
+
"type": "Date"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
98
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengis/gis",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.185",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Softpro",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@opengis/core": "^0.0.37",
|
|
58
58
|
"@opengis/fastify-table": "^2.5.32",
|
|
59
|
-
"@opengis/filter": "0.1.
|
|
59
|
+
"@opengis/filter": "0.1.59",
|
|
60
60
|
"@opengis/form": "^0.1.20",
|
|
61
61
|
"@opengis/table": "^0.0.47",
|
|
62
62
|
"@vitejs/plugin-vue": "^5.2.4",
|
|
@@ -11,7 +11,8 @@ const maxLimit = 100;
|
|
|
11
11
|
export default async function gisSuggest({ token, key, val, uid, lang = 'ua', limit: limit1 = 50 }, pg) {
|
|
12
12
|
const time = Date.now();
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// GET /api/gis-registry/:id or GET /api/gis-service/:id
|
|
15
|
+
const redisKey = `${pg?.options?.database}:gis-suggest-filter:${token}`;
|
|
15
16
|
|
|
16
17
|
const cache = await rclient.get(redisKey);
|
|
17
18
|
|
|
@@ -19,27 +20,34 @@ export default async function gisSuggest({ token, key, val, uid, lang = 'ua', li
|
|
|
19
20
|
throw BadRequestError('invalid params: token');
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
const { register, filter } = JSON.parse(cache);
|
|
23
|
+
const { register, service, filter } = JSON.parse(cache);
|
|
24
|
+
|
|
25
|
+
if (!register && !service) {
|
|
26
|
+
throw BadRequestError('token is invalid');
|
|
27
|
+
}
|
|
23
28
|
|
|
24
29
|
const {
|
|
25
30
|
rows: [registry],
|
|
26
|
-
} = await pg.query(
|
|
27
|
-
`SELECT
|
|
31
|
+
} = register ? await pg.query(
|
|
32
|
+
`SELECT table_name, filters FROM gis.registers WHERE register_id=$1`,
|
|
28
33
|
[register],
|
|
29
|
-
)
|
|
34
|
+
) : await pg.query(
|
|
35
|
+
`SELECT source_path as table_name, filters FROM gis.services WHERE service_id=$1`,
|
|
36
|
+
[service],
|
|
37
|
+
)
|
|
30
38
|
|
|
31
39
|
if (!registry) {
|
|
32
40
|
throw NotFoundError('registry not found');
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
if (!registry.table_name) {
|
|
36
|
-
throw new Error('registry table not set
|
|
44
|
+
throw new Error(`${register ? 'registry' : 'service'} table not set`);
|
|
37
45
|
}
|
|
38
46
|
|
|
39
|
-
const filterData = (registry.filters).find(el => el.name === filter);
|
|
47
|
+
const filterData = (registry.filters || []).find(el => el.name === filter);
|
|
40
48
|
|
|
41
49
|
if (!filterData) {
|
|
42
|
-
throw new Error('registry filter not found
|
|
50
|
+
throw new Error(`${register ? 'registry' : 'service'} filter not found`);
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
const { name, data: cls } = filterData;
|
|
@@ -30,9 +30,10 @@ export async function handleRegistryRequest({
|
|
|
30
30
|
const filtersParsed = Array.isArray(filters) ? filters : JSON.parse(filters);
|
|
31
31
|
const activeFilters = await Promise.all((filtersParsed || []).filter((f) => f.disabled !== true).map(async (el) => {
|
|
32
32
|
const hash = createHash('md5').update([register_id, el.name, el.data].filter(Boolean).join('-')).digest('hex');
|
|
33
|
-
const redisKey = `${pg?.options?.database}:
|
|
33
|
+
const redisKey = `${pg?.options?.database}:gis-suggest-filter:${hash}`;
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const cls = el.data ? await getSelect(el.data, pg) : undefined;
|
|
36
|
+
const { arr, sql } = cls || {};
|
|
36
37
|
|
|
37
38
|
const r = {
|
|
38
39
|
...el, id: el.name || el.id, type: el.type, api: `/api/gis-suggest/${hash}`, options: arr, select: sql
|
|
@@ -136,7 +136,7 @@ describe('GIS routes', () => {
|
|
|
136
136
|
const { table, filter } = await pg.query('select table_name as table, filters->0->>\'name\' as filter from gis.registers where register_id=$1', [testId]).then((r) => r.rows[0]);
|
|
137
137
|
expect(filter).toBeTypeOf('string');
|
|
138
138
|
const hash = 'unit-test';
|
|
139
|
-
const redisKey = `${pg.options.database}:
|
|
139
|
+
const redisKey = `${pg.options.database}:gis-suggest-filter:${hash}`;
|
|
140
140
|
await rclient.set(redisKey, JSON.stringify({ register: testId, filter }), 'EX', 1 * 60);
|
|
141
141
|
const res = await injectWithHeaders({
|
|
142
142
|
method: 'GET',
|