@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.
Files changed (47) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.js +5317 -3461
  3. package/dist/index.umd.cjs +53 -38
  4. package/module/cls.json +2 -1
  5. package/module/gis/form/gis.maps.form.json +2 -2
  6. package/module/gis/form/gis.registers.form.json +8 -199
  7. package/module/gis/form/gis.services.form.json +11 -200
  8. package/module/gis/table/gis.maps.table.json +5 -7
  9. package/module/gis/table/gis.ogc_service.table.json +14 -3
  10. package/module/gis/table/gis.registers.table.json +2 -3
  11. package/module/gis/table/gis.services.table.json +19 -6
  12. package/module/test/cls/ts.temp_status.json +18 -0
  13. package/module/test/cls/ts.temp_type.json +10 -0
  14. package/module/test/layer/bp1.yml +33 -0
  15. package/module/test/map/addr.yml +21 -0
  16. package/module/test/map/bp_myo.json +22 -15
  17. package/module/test/map/bpf.json +44 -0
  18. package/module/test/map/mbd.json +13 -13
  19. package/module/test/map/ts.json +15 -11
  20. package/module/test/select/address_id.json +3 -0
  21. package/module/test/select/address_id.sql +8 -0
  22. package/module/test/table/data_bp_myo.bp.table.json +123 -0
  23. package/package.json +11 -5
  24. package/server/migrations/ogc.sql +107 -0
  25. package/server/plugins/vite.js +3 -7
  26. package/server/routes/gis/index.mjs +16 -2
  27. package/server/routes/gis/ogc/map.info.point.js +120 -0
  28. package/server/routes/gis/registers/funcs/classifiers.js +6 -3
  29. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +15 -22
  30. package/server/routes/gis/registers/gis.registry.js +3 -2
  31. package/server/routes/gis/services/add.service.js +5 -5
  32. package/server/routes/gis/services/get.services.col.js +19 -11
  33. package/server/routes/gis/services/get.services.js +25 -12
  34. package/server/routes/map/controllers/layerList.js +14 -2
  35. package/server/routes/map/controllers/mapFeatures.js +11 -2
  36. package/server/routes/map/controllers/mapFormat.js +13 -16
  37. package/server/routes/map/controllers/vtile.js +1 -1
  38. package/server/routes/map/maps/get.map.js +17 -12
  39. package/server/routes/map/vtile1.js +38 -23
  40. package/module/test/map/address/addr.yml +0 -6
  41. package/module/test/map/address/index.yml +0 -22
  42. package/module/test/map/address/street.yml +0 -16
  43. package/module/test/map/address2/addr.json +0 -9
  44. package/module/test/map/address2/index.json +0 -35
  45. package/module/test/map/address2/street.json +0 -19
  46. package/module/test/map/address3.yml +0 -52
  47. 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,10 @@
1
+ [
2
+ {
3
+ "id": "1",
4
+ "text": "Тимчасова споруда з паспортом прив’язки"
5
+ },
6
+ {
7
+ "id": "2",
8
+ "text": "Самовільно встановлена"
9
+ }
10
+ ]
@@ -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
- "widgets":[
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
- "title": "Містобудівна документація",
16
- "content": "<p style='font-size: 14px; color: #34495E;'>Затверджені текстові і графічні матеріали, якими регулюється планування, забудова та інше використання територій.</p>"
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
+ }
@@ -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-right",
25
+ "position": "top-left",
26
26
  "title": "Густота населення",
27
27
  "config": {
28
- "layer_id": "municipalities",
29
- "attribute": "status"
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
+ }
@@ -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":"status"
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,3 @@
1
+ {
2
+ "extra": true
3
+ }
@@ -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.0",
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.13"
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.13",
47
+ "@opengis/fastify-table": "^2.0.32",
46
48
  "@opengis/filter": "^0.1.7",
47
- "@opengis/form": "^0.0.28",
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 картки';
@@ -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: `admin`,
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
-