@opengis/gis 0.2.0 → 0.2.2
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/index.css +1 -1
- package/dist/index.js +5317 -3461
- package/dist/index.umd.cjs +53 -38
- package/module/cls.json +2 -1
- package/module/gis/form/gis.maps.form.json +2 -2
- package/module/gis/form/gis.registers.form.json +8 -199
- package/module/gis/form/gis.services.form.json +11 -200
- package/module/gis/table/gis.maps.table.json +5 -7
- package/module/gis/table/gis.ogc_service.table.json +14 -3
- package/module/gis/table/gis.registers.table.json +2 -3
- package/module/gis/table/gis.services.table.json +19 -6
- package/module/test/cls/ts.temp_status.json +18 -0
- package/module/test/cls/ts.temp_type.json +10 -0
- package/module/test/layer/bp1.yml +33 -0
- package/module/test/map/addr.yml +21 -0
- package/module/test/map/bp_myo.json +22 -15
- package/module/test/map/bpf.json +44 -0
- package/module/test/map/mbd.json +13 -13
- package/module/test/map/ts.json +15 -11
- package/module/test/select/address_id.json +3 -0
- package/module/test/select/address_id.sql +8 -0
- package/module/test/table/data_bp_myo.bp.table.json +123 -0
- package/package.json +11 -5
- package/server/migrations/ogc.sql +107 -0
- package/server/plugins/vite.js +3 -7
- package/server/routes/gis/index.mjs +16 -2
- package/server/routes/gis/ogc/map.info.point.js +120 -0
- package/server/routes/gis/registers/funcs/classifiers.js +6 -3
- package/server/routes/gis/registers/funcs/handleRegistryRequest.js +15 -22
- package/server/routes/gis/registers/gis.registry.js +3 -2
- package/server/routes/gis/services/add.service.js +5 -5
- package/server/routes/gis/services/get.services.col.js +19 -11
- package/server/routes/gis/services/get.services.js +25 -12
- package/server/routes/map/controllers/layerList.js +14 -2
- package/server/routes/map/controllers/mapFeatures.js +11 -2
- package/server/routes/map/controllers/mapFormat.js +13 -16
- package/server/routes/map/controllers/vtile.js +1 -1
- package/server/routes/map/maps/get.map.js +17 -12
- package/server/routes/map/vtile1.js +38 -23
- package/module/test/map/address/addr.yml +0 -6
- package/module/test/map/address/index.yml +0 -22
- package/module/test/map/address/street.yml +0 -16
- package/module/test/map/address2/addr.json +0 -9
- package/module/test/map/address2/index.json +0 -35
- package/module/test/map/address2/street.json +0 -19
- package/module/test/map/address3.yml +0 -52
- package/module/test/map/address4.json +0 -34
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "1",
|
|
4
|
+
"text": "Демонтована"
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"id": "2",
|
|
8
|
+
"text": "Підлягає демонтажу у зв’язку з анулюванням паспорту прив'язки"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "3",
|
|
12
|
+
"text": "Підлягає демонтажу у зв’язку з самовільним встановленням ТС"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "4",
|
|
16
|
+
"text": "Підлягає демонтажу у зв’язку завершенням терміну дії паспорту прив’язки"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
source_path: data_bp_myo.bp
|
|
2
|
+
name: Будівельні паспорти Template
|
|
3
|
+
visible: true
|
|
4
|
+
style:
|
|
5
|
+
type: point
|
|
6
|
+
color: '#d970d5'
|
|
7
|
+
width: 2
|
|
8
|
+
radius: 10
|
|
9
|
+
border: 1
|
|
10
|
+
opacity: 0.4
|
|
11
|
+
popup:
|
|
12
|
+
- ua: Назва замовника
|
|
13
|
+
name: bp_customer_name
|
|
14
|
+
meta: title
|
|
15
|
+
- label: Реєстраційний номер БП
|
|
16
|
+
name: bp_code
|
|
17
|
+
format: badge
|
|
18
|
+
- label: Адреса
|
|
19
|
+
name: address
|
|
20
|
+
card:
|
|
21
|
+
- label: Реєстраційний номер БП
|
|
22
|
+
name: bp_code
|
|
23
|
+
- ua: Адреса
|
|
24
|
+
name: address
|
|
25
|
+
- ua: Вид будівництва
|
|
26
|
+
data: bp_build_type
|
|
27
|
+
name: bp_build_type
|
|
28
|
+
- ua: Назва замовника
|
|
29
|
+
name: bp_customer_name
|
|
30
|
+
- ua: Статус документа
|
|
31
|
+
data: doc_status
|
|
32
|
+
name: bp_doc_status
|
|
33
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
history: true
|
|
2
|
+
name: Адресний реєстр
|
|
3
|
+
height: calc(100vh - 65px)
|
|
4
|
+
center:
|
|
5
|
+
- 34.65450
|
|
6
|
+
- 48.51174
|
|
7
|
+
zoom: 11
|
|
8
|
+
layers:
|
|
9
|
+
- faafbea5263a
|
|
10
|
+
widgets:
|
|
11
|
+
- type: search
|
|
12
|
+
position: top-left
|
|
13
|
+
- type: info
|
|
14
|
+
position: top-left
|
|
15
|
+
config:
|
|
16
|
+
title: Адресний реєстр
|
|
17
|
+
content: "<p style='font-size: 14px; color: #34495E;'>Карта адресного реєстру відображає офіційно зареєстровані адреси на території громади або населеного пункту. До складу інформації входять дані про вулиці, будинки, типи об'єктів (житлові, комерційні, адміністративні тощо), а також структуровані компоненти адреси: назва вулиці, номер будинку, корпус, літера, тощо.</p>"
|
|
18
|
+
- type: layers
|
|
19
|
+
position: top-left
|
|
20
|
+
- type: basemaps
|
|
21
|
+
position: bottom-left
|
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"history": true,
|
|
3
3
|
"name": "Буд. паспорти та Містобудівні умови й обмеження",
|
|
4
|
-
"height": "calc(100vh - 65px)",
|
|
5
|
-
"center": [
|
|
4
|
+
"height": "calc(100vh - 65px)",
|
|
5
|
+
"center": [
|
|
6
6
|
34.65450,
|
|
7
|
-
48.51174
|
|
8
|
-
],
|
|
7
|
+
48.51174
|
|
8
|
+
],
|
|
9
9
|
"zoom": 11,
|
|
10
|
-
"
|
|
10
|
+
"layers": [
|
|
11
|
+
"3c95e341465d",
|
|
12
|
+
"dbcb186818e3"
|
|
13
|
+
],
|
|
14
|
+
"widgets": [
|
|
15
|
+
{
|
|
16
|
+
"type": "search",
|
|
17
|
+
"position": "top-left"
|
|
18
|
+
},
|
|
11
19
|
{
|
|
12
20
|
"type": "info",
|
|
13
21
|
"position": "top-left",
|
|
14
|
-
"config":{
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
"config": {
|
|
23
|
+
"title": "Містобудівна документація",
|
|
24
|
+
"content": "<p style='font-size: 14px; color: #34495E;'>Затверджені текстові і графічні матеріали, якими регулюється планування, забудова та інше використання територій.</p>"
|
|
17
25
|
}
|
|
18
26
|
},
|
|
19
|
-
|
|
27
|
+
{
|
|
20
28
|
"type": "layers",
|
|
21
|
-
"position": "top-left"
|
|
29
|
+
"position": "top-left",
|
|
30
|
+
"config": {
|
|
31
|
+
"title": "Шари мапи",
|
|
32
|
+
"description": "Доступні шари мапи містобудівна документація"
|
|
33
|
+
}
|
|
22
34
|
},
|
|
23
35
|
{
|
|
24
36
|
"type": "basemaps",
|
|
@@ -28,10 +40,5 @@
|
|
|
28
40
|
"type": "legend",
|
|
29
41
|
"position": "bottom-right"
|
|
30
42
|
}
|
|
31
|
-
],
|
|
32
|
-
"old":["bp","3c95e341465d"],
|
|
33
|
-
"layers": [
|
|
34
|
-
"3c95e341465d",
|
|
35
|
-
"dbcb186818e3"
|
|
36
43
|
]
|
|
37
44
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"history": true,
|
|
3
|
+
"height": "calc(100vh - 65px)",
|
|
4
|
+
"center": [
|
|
5
|
+
34.65450,
|
|
6
|
+
48.51174
|
|
7
|
+
],
|
|
8
|
+
"layers":["bp1"],
|
|
9
|
+
"widgets": [
|
|
10
|
+
{
|
|
11
|
+
"type": "info",
|
|
12
|
+
"position": "top-left",
|
|
13
|
+
"config": {
|
|
14
|
+
"title": "Будівельні паспорти",
|
|
15
|
+
"content": "<p style='font-size: 14px; color: #34495E;'>Затверджені текстові і графічні матеріали, якими регулюється планування, забудова та інше використання територій.</p>"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "layers",
|
|
20
|
+
"position": "top-left",
|
|
21
|
+
"visible": true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "dataset",
|
|
25
|
+
"position": "top-right",
|
|
26
|
+
"title": "Густота населення",
|
|
27
|
+
"config": {
|
|
28
|
+
"layer": "bp",
|
|
29
|
+
"attribute": "status"
|
|
30
|
+
},
|
|
31
|
+
"visible": true
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
{
|
|
36
|
+
"type": "basemaps",
|
|
37
|
+
"position": "bottom-left",
|
|
38
|
+
"title": "Базові карти",
|
|
39
|
+
"visible": true
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
}
|
package/module/test/map/mbd.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"history": true,
|
|
3
|
-
"height": "calc(100vh - 65px)",
|
|
4
|
-
"center": [
|
|
3
|
+
"height": "calc(100vh - 65px)",
|
|
4
|
+
"center": [
|
|
5
5
|
34.65450,
|
|
6
|
-
48.51174
|
|
6
|
+
48.51174
|
|
7
7
|
],
|
|
8
8
|
"layers":["9587e69d35fd"],
|
|
9
9
|
"widgets": [
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"config": {
|
|
14
14
|
"title": "Містобудівна документація",
|
|
15
15
|
"content": "<p style='font-size: 14px; color: #34495E;'>Затверджені текстові і графічні матеріали, якими регулюється планування, забудова та інше використання територій.</p>"
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"type": "layers",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"type": "dataset",
|
|
25
|
-
"position": "top-
|
|
25
|
+
"position": "top-left",
|
|
26
26
|
"title": "Густота населення",
|
|
27
27
|
"config": {
|
|
28
|
-
"
|
|
29
|
-
"
|
|
28
|
+
"layer": "9587e69d35fd",
|
|
29
|
+
"list":[{"id":"status","text":"Статус" },{"id":"type_work_id","text":"Тип робіт"}]
|
|
30
30
|
},
|
|
31
31
|
"visible": true
|
|
32
32
|
},
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
|
|
34
|
+
|
|
35
35
|
{
|
|
36
36
|
"type": "legend",
|
|
37
37
|
"position": "bottom-right",
|
|
@@ -75,12 +75,12 @@
|
|
|
75
75
|
{
|
|
76
76
|
"type": "basemaps",
|
|
77
77
|
"position": "bottom-left",
|
|
78
|
-
"title": "Базові карти",
|
|
78
|
+
"title": "Базові карти",
|
|
79
79
|
"visible": true
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
|
|
82
82
|
],
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
"tools": [
|
|
85
85
|
"home",
|
|
86
86
|
"geolocation",
|
|
@@ -88,4 +88,4 @@
|
|
|
88
88
|
"area",
|
|
89
89
|
"print"
|
|
90
90
|
]
|
|
91
|
-
}
|
|
91
|
+
}
|
package/module/test/map/ts.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"history": true,
|
|
3
|
-
"height": "calc(100vh - 65px)",
|
|
4
|
-
"center": [
|
|
3
|
+
"height": "calc(100vh - 65px)",
|
|
4
|
+
"center": [
|
|
5
5
|
34.65450,
|
|
6
|
-
48.51174
|
|
6
|
+
48.51174
|
|
7
7
|
],
|
|
8
8
|
"zoom": 11,
|
|
9
9
|
"layers": ["ed67980cd690"],
|
|
@@ -13,31 +13,35 @@
|
|
|
13
13
|
"position": "top-left",
|
|
14
14
|
"config": {
|
|
15
15
|
"title": "Тимчасові споруди",
|
|
16
|
-
"content": "<p style='font-size: 14px; color: #34495E;'>Інформація про тимчасові споруди встановлені на території м. Кам'янське</p>"
|
|
16
|
+
"content": "<p style='font-size: 14px; color: #34495E;'>Інформація про тимчасові споруди встановлені на території м. Кам'янське</p>"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"type": "dataset",
|
|
21
21
|
"position": "top-left",
|
|
22
22
|
"config": {
|
|
23
|
-
"layer":"ed67980cd690",
|
|
24
|
-
"attribute":"
|
|
23
|
+
"layer":"ed67980cd690",
|
|
24
|
+
"attribute":"temp_structure_type",
|
|
25
|
+
"colors":{
|
|
26
|
+
"1":"#3a7a57",
|
|
27
|
+
"2":"#8e4484"
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
{
|
|
28
32
|
"type": "layers",
|
|
29
|
-
"visible":false
|
|
33
|
+
"visible":false
|
|
30
34
|
},
|
|
31
35
|
{
|
|
32
36
|
"type": "legend",
|
|
33
|
-
"position":"bottom-right"
|
|
37
|
+
"position":"bottom-right"
|
|
34
38
|
},
|
|
35
39
|
{
|
|
36
40
|
"type": "basemaps",
|
|
37
41
|
"position": "bottom-left",
|
|
38
|
-
"title": "Базові карти"
|
|
42
|
+
"title": "Базові карти"
|
|
39
43
|
}
|
|
40
|
-
],
|
|
44
|
+
],
|
|
41
45
|
"tools": [
|
|
42
46
|
"home",
|
|
43
47
|
"geolocation",
|
|
@@ -45,4 +49,4 @@
|
|
|
45
49
|
"area",
|
|
46
50
|
"print"
|
|
47
51
|
]
|
|
48
|
-
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
SELECT addr_id,
|
|
2
|
+
coalesce(c.name , ' ') || ' ' || (select name from data_address.street where str_id=a.parent limit 1) ||
|
|
3
|
+
coalesce(', ' ||addr_num,'')
|
|
4
|
+
FROM data_address.address a
|
|
5
|
+
left join data_address.street b on a.parent=b.str_id
|
|
6
|
+
left join admin.cls c on c.parent='str_type' and c.code=b.type::text
|
|
7
|
+
order by
|
|
8
|
+
b.name
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "bp_id",
|
|
3
|
+
"table": "data_bp_myo.bp",
|
|
4
|
+
"actions": [
|
|
5
|
+
"add",
|
|
6
|
+
"edit",
|
|
7
|
+
"del"
|
|
8
|
+
],
|
|
9
|
+
"controls": [
|
|
10
|
+
"search",
|
|
11
|
+
"list",
|
|
12
|
+
"add"
|
|
13
|
+
],
|
|
14
|
+
"access": "user",
|
|
15
|
+
"order": "cdate desc",
|
|
16
|
+
"meta": {
|
|
17
|
+
"title": "bp_code",
|
|
18
|
+
"search": "bp_code,bp_number,bp_reg_num,bp_issued_name,bp_customer_name,bp_object_name"
|
|
19
|
+
},
|
|
20
|
+
"title": "Будівельні паспорти",
|
|
21
|
+
"form": "data_bp_myo.bp.form",
|
|
22
|
+
"columns": [
|
|
23
|
+
{
|
|
24
|
+
"ua": "Реєстраційний номер МБК",
|
|
25
|
+
"name": "bp_number",
|
|
26
|
+
"width": 100,
|
|
27
|
+
"format": "text"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"ua": "Реєстраційний номер в ЄДЕССБ",
|
|
31
|
+
"meta": "title",
|
|
32
|
+
"name": "bp_code",
|
|
33
|
+
"hidden": true,
|
|
34
|
+
"format": "text"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"ua": "Реєстраційний номер",
|
|
38
|
+
"name": "bp_reg_num",
|
|
39
|
+
"width": 100,
|
|
40
|
+
"format": "text"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"ua": "Назва об’єкта будівництва",
|
|
44
|
+
"name": "bp_object_name",
|
|
45
|
+
"width": 300,
|
|
46
|
+
"format": "text"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"ua": "Адреса",
|
|
50
|
+
"name": "address",
|
|
51
|
+
"width": 300,
|
|
52
|
+
"format": "text"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"ua": "Вид будівництва",
|
|
56
|
+
"name": "bp_build_type",
|
|
57
|
+
"data": "bp_build_type",
|
|
58
|
+
"width": 150,
|
|
59
|
+
"format": "badge"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"ua": "Дата видачі",
|
|
63
|
+
"name": "bp_issued_date",
|
|
64
|
+
"width": 100,
|
|
65
|
+
"format": "date"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"ua": "Статус реєстрації",
|
|
69
|
+
"name": "bp_doc_status",
|
|
70
|
+
"data": "doc_status",
|
|
71
|
+
"width": 150,
|
|
72
|
+
"hidden": true,
|
|
73
|
+
"format": "badge"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"ua": "Назва органу, що видав",
|
|
77
|
+
"name": "bp_issued_name",
|
|
78
|
+
"width": 300,
|
|
79
|
+
"hidden": true,
|
|
80
|
+
"format": "text"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"ua": "Замовник",
|
|
84
|
+
"name": "bp_customer_name",
|
|
85
|
+
"width": 300,
|
|
86
|
+
"format": "text"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"ua": "Кадастрові номери",
|
|
90
|
+
"name": "land_number",
|
|
91
|
+
"format": "slot",
|
|
92
|
+
"hidden": true,
|
|
93
|
+
"slot": {
|
|
94
|
+
"content": "<p v-for=\"item in data?.land_number\">{{item}}</p>"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"ua": "Версія документу",
|
|
99
|
+
"name": "obj_version",
|
|
100
|
+
"format": "text",
|
|
101
|
+
"hidden": true
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"filterList": [
|
|
105
|
+
{
|
|
106
|
+
"ua": "Вид будівництва",
|
|
107
|
+
"name": "bp_build_type",
|
|
108
|
+
"data": "bp_build_type",
|
|
109
|
+
"type": "Check"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"ua": "Дата видачі",
|
|
113
|
+
"name": "bp_issued_date",
|
|
114
|
+
"type": "Date"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"ua": "Статус документа",
|
|
118
|
+
"name": "bp_doc_status",
|
|
119
|
+
"data": "doc_status",
|
|
120
|
+
"type": "Check"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengis/gis",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Softpro",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
18
|
"start1": "bun server",
|
|
19
|
+
"lint": "eslint src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts",
|
|
20
|
+
"fix": "eslint src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
|
|
19
21
|
"patch": "npm version patch && git push && npm publish",
|
|
20
22
|
"dev": "bun --hot server",
|
|
21
23
|
"front": "vite dev",
|
|
@@ -35,21 +37,25 @@
|
|
|
35
37
|
"carto": "0.16.3"
|
|
36
38
|
},
|
|
37
39
|
"peerDependencies": {
|
|
38
|
-
"@opengis/fastify-table": "^2.0.
|
|
40
|
+
"@opengis/fastify-table": "^2.0.32"
|
|
39
41
|
},
|
|
40
42
|
"resolutions": {
|
|
41
43
|
"rollup": "4.30.0"
|
|
42
44
|
},
|
|
43
45
|
"devDependencies": {
|
|
44
46
|
"@opengis/core": "^0.0.23",
|
|
45
|
-
"@opengis/fastify-table": "^2.0.
|
|
47
|
+
"@opengis/fastify-table": "^2.0.32",
|
|
46
48
|
"@opengis/filter": "^0.1.7",
|
|
47
|
-
"@opengis/form": "^0.0.
|
|
49
|
+
"@opengis/form": "^0.0.48",
|
|
48
50
|
"@opengis/table": "^0.0.27",
|
|
49
51
|
"@vitejs/plugin-vue": "^5.2.3",
|
|
50
52
|
"axios": "^1.11.0",
|
|
51
53
|
"eslint": "8.49.0",
|
|
52
54
|
"eslint-config-airbnb": "19.0.4",
|
|
55
|
+
"eslint-plugin-import": "^2.25.3",
|
|
56
|
+
"eslint-plugin-vue": "^9.17.0",
|
|
57
|
+
"@vue/eslint-config-typescript": "^12.0.0",
|
|
58
|
+
"vue-eslint-parser": "^10.2.0",
|
|
53
59
|
"lucide-vue-next": "^0.514.0",
|
|
54
60
|
"sass-embedded": "1.86.3",
|
|
55
61
|
"typescript": "^5.9.2",
|
|
@@ -58,4 +64,4 @@
|
|
|
58
64
|
"vue-router": "4.5.1",
|
|
59
65
|
"vuedraggable": "^4.1.0"
|
|
60
66
|
}
|
|
61
|
-
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
CREATE TABLE if not exists gis.ogc_service
|
|
2
|
+
(
|
|
3
|
+
ogc_service_id text NOT NULL DEFAULT admin.next_id(),
|
|
4
|
+
name text, -- Назва
|
|
5
|
+
service text, -- TMS/WMS/WFS
|
|
6
|
+
url text, -- Шлях
|
|
7
|
+
enabled boolean, -- Опис
|
|
8
|
+
geom geometry, -- Баунд
|
|
9
|
+
updated_by text,
|
|
10
|
+
updated_at timestamp without time zone,
|
|
11
|
+
created_at timestamp without time zone DEFAULT date_trunc('minutes'::text, now()),
|
|
12
|
+
created_by text,
|
|
13
|
+
group_id text, -- Ідентифікатор групи
|
|
14
|
+
ispublic boolean DEFAULT false, -- Чи є сервіс публічним
|
|
15
|
+
service_id text DEFAULT admin.next_id(), -- ID
|
|
16
|
+
srid text, -- srid
|
|
17
|
+
info text,
|
|
18
|
+
scheme text, -- Схема
|
|
19
|
+
category text, -- Категорія
|
|
20
|
+
attribution text, -- Атрибуція
|
|
21
|
+
editor_id text,
|
|
22
|
+
editor_date timestamp without time zone,
|
|
23
|
+
cdate timestamp without time zone DEFAULT date_trunc('minutes'::text, now()),
|
|
24
|
+
uid text,
|
|
25
|
+
files json,
|
|
26
|
+
access_level text DEFAULT 'public'::text, -- Рівень доступу (public, user, admin)
|
|
27
|
+
sub_layers text, -- Під шари (Для WMS)
|
|
28
|
+
isadmin boolean DEFAULT false, -- Ознака доступу лише для адмін частини порталу
|
|
29
|
+
user_group_id text, -- Група користувачів
|
|
30
|
+
url_list text[], -- URL List
|
|
31
|
+
table_name text, -- Таблиця на клік (інтерактивний шар)
|
|
32
|
+
setting json, -- Додаткові налаштування
|
|
33
|
+
CONSTRAINT ogc_service_pkey PRIMARY KEY (ogc_service_id),
|
|
34
|
+
CONSTRAINT gis_ogc_service_group_id_fkey FOREIGN KEY (group_id)
|
|
35
|
+
REFERENCES gis.group_list (group_id) MATCH SIMPLE
|
|
36
|
+
ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
COMMENT ON TABLE gis.ogc_service IS 'Сервіси';
|
|
40
|
+
|
|
41
|
+
COMMENT ON COLUMN gis.ogc_service.name IS 'Назва';
|
|
42
|
+
COMMENT ON COLUMN gis.ogc_service.service IS 'TMS/WMS/WFS';
|
|
43
|
+
COMMENT ON COLUMN gis.ogc_service.url IS 'Шлях';
|
|
44
|
+
COMMENT ON COLUMN gis.ogc_service.enabled IS 'Опис';
|
|
45
|
+
COMMENT ON COLUMN gis.ogc_service.geom IS 'Баунд';
|
|
46
|
+
COMMENT ON COLUMN gis.ogc_service.group_id IS 'Ідентифікатор групи';
|
|
47
|
+
COMMENT ON COLUMN gis.ogc_service.ispublic IS 'Чи є сервіс публічним';
|
|
48
|
+
COMMENT ON COLUMN gis.ogc_service.service_id IS 'ID';
|
|
49
|
+
COMMENT ON COLUMN gis.ogc_service.srid IS 'srid';
|
|
50
|
+
COMMENT ON COLUMN gis.ogc_service.scheme IS 'Схема';
|
|
51
|
+
COMMENT ON COLUMN gis.ogc_service.category IS 'Категорія';
|
|
52
|
+
COMMENT ON COLUMN gis.ogc_service.attribution IS 'Атрибуція';
|
|
53
|
+
COMMENT ON COLUMN gis.ogc_service.access_level IS 'Рівень доступу (public, user, admin)';
|
|
54
|
+
COMMENT ON COLUMN gis.ogc_service.sub_layers IS 'Під шари (Для WMS)';
|
|
55
|
+
COMMENT ON COLUMN gis.ogc_service.isadmin IS 'Ознака доступу лише для адмін частини порталу';
|
|
56
|
+
COMMENT ON COLUMN gis.ogc_service.user_group_id IS 'Група користувачів';
|
|
57
|
+
COMMENT ON COLUMN gis.ogc_service.url_list IS 'URL List';
|
|
58
|
+
COMMENT ON COLUMN gis.ogc_service.table_name IS 'Таблиця на клік (інтерактивний шар)';
|
|
59
|
+
COMMENT ON COLUMN gis.ogc_service.setting IS 'Додаткові налаштування';
|
|
60
|
+
|
|
61
|
+
CREATE INDEX if not exists gis_ogc_service_category_trgm_idx
|
|
62
|
+
ON gis.ogc_service
|
|
63
|
+
USING gin
|
|
64
|
+
(category COLLATE pg_catalog."default" gin_trgm_ops);
|
|
65
|
+
|
|
66
|
+
CREATE INDEX if not exists gis_ogc_service_enabled_btree_idx
|
|
67
|
+
ON gis.ogc_service
|
|
68
|
+
USING btree
|
|
69
|
+
(enabled);
|
|
70
|
+
|
|
71
|
+
CREATE INDEX if not exists gis_ogc_service_isadmin_btree_idx
|
|
72
|
+
ON gis.ogc_service
|
|
73
|
+
USING btree
|
|
74
|
+
(ispublic);
|
|
75
|
+
|
|
76
|
+
CREATE INDEX if not exists gis_ogc_service_ispublic_btree_idx
|
|
77
|
+
ON gis.ogc_service
|
|
78
|
+
USING btree
|
|
79
|
+
(ispublic);
|
|
80
|
+
|
|
81
|
+
CREATE INDEX if not exists gis_ogc_service_name_gin_idx
|
|
82
|
+
ON gis.ogc_service
|
|
83
|
+
USING gin
|
|
84
|
+
(name COLLATE pg_catalog."default" gin_trgm_ops);
|
|
85
|
+
|
|
86
|
+
CREATE INDEX if not exists gis_ogc_service_name_gin_idx_lower
|
|
87
|
+
ON gis.ogc_service
|
|
88
|
+
USING gin
|
|
89
|
+
(lower(name) COLLATE pg_catalog."default" gin_trgm_ops);
|
|
90
|
+
|
|
91
|
+
CREATE INDEX if not exists gis_ogc_service_name_trgm_idx
|
|
92
|
+
ON gis.ogc_service
|
|
93
|
+
USING gin
|
|
94
|
+
(name COLLATE pg_catalog."default" gin_trgm_ops);
|
|
95
|
+
|
|
96
|
+
CREATE INDEX if not exists gis_ogc_service_service_btree_idx
|
|
97
|
+
ON gis.ogc_service
|
|
98
|
+
USING btree
|
|
99
|
+
(service COLLATE pg_catalog."default");
|
|
100
|
+
|
|
101
|
+
CREATE INDEX if not exists gis_ogc_service_srid_btree_idx
|
|
102
|
+
ON gis.ogc_service
|
|
103
|
+
USING btree
|
|
104
|
+
(srid COLLATE pg_catalog."default");
|
|
105
|
+
|
|
106
|
+
alter table gis.ogc_service add column if not exists html text;
|
|
107
|
+
comment on column gis.ogc_service.html is 'HTML картки';
|
package/server/plugins/vite.js
CHANGED
|
@@ -9,9 +9,8 @@ const isProduction = process.env.NODE_ENV === 'production' || config.production;
|
|
|
9
9
|
console.log({ isProduction });
|
|
10
10
|
|
|
11
11
|
async function plugin(fastify, opts) {
|
|
12
|
-
|
|
13
12
|
const viteServer = !isProduction ? await createServer({
|
|
14
|
-
root:
|
|
13
|
+
root: 'admin',
|
|
15
14
|
server: {
|
|
16
15
|
middlewareMode: true,
|
|
17
16
|
},
|
|
@@ -21,7 +20,6 @@ async function plugin(fastify, opts) {
|
|
|
21
20
|
const dir1 = process.cwd();
|
|
22
21
|
viteServer.watcher.add(dir1);
|
|
23
22
|
viteServer.watcher.on('all', (d, t) => {
|
|
24
|
-
|
|
25
23
|
if (!t.includes('module')) return;
|
|
26
24
|
console.log(d, t);
|
|
27
25
|
viteServer.ws.send({ type: 'full-reload' });
|
|
@@ -49,7 +47,7 @@ async function plugin(fastify, opts) {
|
|
|
49
47
|
const filePath = fs.existsSync(filePathDist) ? filePathDist : filePathAssets; // check dist or assets
|
|
50
48
|
const ext = path.extname(filePath);
|
|
51
49
|
|
|
52
|
-
if (!fs.existsSync(filePath)) return { status: 404, message: 'not found' }
|
|
50
|
+
if (!fs.existsSync(filePath)) return { status: 404, message: 'not found' };
|
|
53
51
|
const mime = {
|
|
54
52
|
'.js': 'text/javascript', '.css': 'text/css', '.woff2': 'application/font-woff', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpg',
|
|
55
53
|
}[ext];
|
|
@@ -69,9 +67,7 @@ async function plugin(fastify, opts) {
|
|
|
69
67
|
if (!isProduction) return null; // admin vite
|
|
70
68
|
const stream = fs.createReadStream('admin/dist/index.html');
|
|
71
69
|
return reply.type('text/html').send(stream);
|
|
72
|
-
|
|
73
|
-
})
|
|
70
|
+
});
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
export default plugin;
|
|
77
|
-
|