@opengis/gis 0.2.167 → 0.2.169

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 (249) hide show
  1. package/dist/{CardIcon-golqfa-Y.js → CardIcon-xkRDr3_E.js} +1 -1
  2. package/dist/{EntityTablePage-BhmxePgR.js → EntityTablePage-D1IR5Bmq.js} +1 -1
  3. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BFa27smR.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJKIgAkD.js} +1 -1
  4. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-Dp0MjgnU.js → HeaderActions.vue_vue_type_script_setup_true_lang-BU8__ouG.js} +1 -1
  5. package/dist/{MapSettings-F_DT3xKl.js → MapSettings-DIOlNpt6.js} +1 -1
  6. package/dist/{RastersTablePage-3rXQ0baG.js → RastersTablePage-OD1VqHP8.js} +1 -1
  7. package/dist/{cartocss-CN-UrS7V.js → cartocss-BiamDcNB.js} +5 -5
  8. package/dist/{import-utils-F5ErbNz1.js → import-utils-CvUG1jV0.js} +1 -1
  9. package/dist/{index-CdB0VXro.js → index-C6W8IkTm.js} +1224 -1221
  10. package/dist/index.css +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.umd.cjs +53 -40
  13. package/dist/{raster-DWmiWlf7.js → raster-BbIiZGoX.js} +3 -3
  14. package/dist/{register-D1jLD0hK.js → register-Dt2QoLZ3.js} +3 -3
  15. package/dist/service-CdUYntMi.js +3472 -0
  16. package/dist/{vs-datatable-BWItxbtK.js → vs-datatable-BELnJrfM.js} +2 -3
  17. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  18. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  19. package/module/gis/card/gis.registers.table/index.yml +23 -23
  20. package/module/gis/card/gis.services.table/index.yml +25 -25
  21. package/module/gis/cls/bool.yes_no.json +12 -12
  22. package/module/gis/cls/encoding.json +14 -14
  23. package/module/gis/cls/geom_type.json +14 -14
  24. package/module/gis/cls/gis.column_type.json +34 -34
  25. package/module/gis/cls/gis.column_view_type.json +26 -26
  26. package/module/gis/cls/gis.filter_type.json +22 -22
  27. package/module/gis/cls/language.json +10 -10
  28. package/module/gis/cls/meta.service_type.json +42 -42
  29. package/module/gis/cls/ogc.service.json +21 -21
  30. package/module/gis/cls/source_type.json +10 -10
  31. package/module/gis/cls/standarts.json +6 -6
  32. package/module/gis/cls/topic_category.json +106 -106
  33. package/module/gis/cls/update_frequency.json +29 -29
  34. package/module/gis/cls/view.json +21 -21
  35. package/module/gis/form/feedback.answer.form.json +10 -10
  36. package/module/gis/form/gis.cartocss.form.json +64 -64
  37. package/module/gis/form/gis.group_list.form.json +17 -17
  38. package/module/gis/form/gis.maps.form.json +61 -61
  39. package/module/gis/form/gis.metadata.form.json +240 -240
  40. package/module/gis/form/gis.metadata_new.form.json +195 -195
  41. package/module/gis/form/gis.ogc_service.form.json +51 -51
  42. package/module/gis/form/gis.rasters.form.json +76 -76
  43. package/module/gis/form/gis.registers.form.json +124 -124
  44. package/module/gis/form/gis.registers_column.form.json +84 -84
  45. package/module/gis/form/gis.registers_filter.form.json +65 -65
  46. package/module/gis/form/gis.services.form.json +111 -111
  47. package/module/gis/form/gis.services_attributes.form.json +75 -75
  48. package/module/gis/form/gis.services_filter.form.json +65 -65
  49. package/module/gis/menu.json +43 -43
  50. package/module/gis/select/admin.cls.name.sql +9 -9
  51. package/module/gis/select/layer_list.sql +7 -7
  52. package/module/gis/select/layer_list_text.sql +7 -7
  53. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  54. package/module/gis/select/pg.columns.parent.sql +6 -6
  55. package/module/gis/select/pg.table_name.sql +17 -17
  56. package/module/gis/select/service_id.sql +1 -1
  57. package/module/gis/select/srid.sql +7 -7
  58. package/module/gis/table/gis.cartocss.table.json +74 -74
  59. package/module/gis/table/gis.group_list.table.json +58 -58
  60. package/module/gis/table/gis.maps.table.json +110 -110
  61. package/module/gis/table/gis.metadata.table.json +70 -70
  62. package/module/gis/table/gis.metadata_new.table.json +137 -137
  63. package/module/gis/table/gis.ogc_service.table.json +100 -100
  64. package/module/gis/table/gis.rasters.table.json +113 -113
  65. package/module/gis/table/gis.registers.table.json +143 -143
  66. package/module/gis/table/gis.services.table.json +120 -120
  67. package/module/gis/table/site.gis.registers.table.json +88 -88
  68. package/module/gis/table/site.gis.services.table.json +106 -106
  69. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  70. package/module/gis/tokens.yml +5 -5
  71. package/module/permissions/form/permissions.users.form.json +151 -151
  72. package/module/permissions/table/gis.permissions.table.json +97 -97
  73. package/module/test/map/addr.json +303 -0
  74. package/module/test/map/{addr.yml → addr1.yml} +3 -1
  75. package/module/test/select/address.str_id.sql +3 -0
  76. package/package.json +10 -10
  77. package/plugin.js +21 -12
  78. package/server/plugins/mapnik/funcs/checkRasterFile.js +1 -3
  79. package/server/routes/cartocss/cartocss.route.js +31 -0
  80. package/server/routes/cartocss/cartocss.route.test.js +79 -0
  81. package/server/routes/cartocss/cartocss.schema.js +73 -0
  82. package/server/routes/{gis/cartocss → cartocss/functions}/add.cartocss.js +8 -11
  83. package/server/routes/{gis/cartocss → cartocss/functions}/get.cartocss.js +11 -13
  84. package/server/routes/gis/functions/checkXML.js +107 -0
  85. package/server/routes/gis/functions/dashboard.js +24 -0
  86. package/server/routes/gis/gis.route.js +26 -0
  87. package/server/routes/gis/gis.route.test.js +34 -0
  88. package/server/routes/gis/gis.schema.js +1 -0
  89. package/server/routes/map/{controllers → functions}/clearTiles.js +9 -8
  90. package/server/routes/map/{controllers → functions}/geojson.js +43 -43
  91. package/server/routes/map/{controllers → functions}/gis.convert.js +15 -23
  92. package/server/routes/map/{controllers → functions}/gis.icon.js +23 -10
  93. package/server/routes/map/{controllers → functions}/jsonData.js +72 -71
  94. package/server/routes/map/{controllers → functions}/layerList.js +17 -17
  95. package/server/routes/map/{controllers → functions}/map.js +8 -9
  96. package/server/routes/map/{controllers → functions}/mapCatalog.js +7 -7
  97. package/server/routes/map/functions/mapCatalogAttribute.js +54 -0
  98. package/server/routes/map/{controllers → functions}/mapFeatures.js +22 -18
  99. package/server/routes/map/{controllers → functions}/mapFormat.js +25 -28
  100. package/server/routes/map/{controllers → functions}/mapTiles.js +39 -30
  101. package/server/routes/map/{controllers → functions}/maps.js +3 -3
  102. package/server/routes/map/{controllers → functions}/marker_icon.js +1 -1
  103. package/server/routes/map/{controllers → functions}/parseGeoFile.js +10 -11
  104. package/server/routes/map/{controllers → functions}/pointHeight.js +3 -7
  105. package/server/routes/map/{controllers → functions}/vtile.js +5 -3
  106. package/server/routes/map/{vtile1.js → functions/vtile1.js} +39 -33
  107. package/server/routes/map/map.route.js +280 -0
  108. package/server/routes/map/map.route.test.js +503 -0
  109. package/server/routes/map/map.schema.js +356 -0
  110. package/server/routes/mapnik/{controllers → functions}/clearTiles.js +26 -29
  111. package/server/routes/mapnik/{controllers → functions}/createXml.js +17 -20
  112. package/server/routes/mapnik/{controllers → functions}/createXmlMulti.js +11 -15
  113. package/server/routes/mapnik/{controllers → functions}/fileSearch.js +6 -9
  114. package/server/routes/mapnik/functions/fileStat.js +28 -0
  115. package/server/routes/mapnik/{controllers → functions}/pretile.js +29 -35
  116. package/server/routes/mapnik/{controllers → functions}/rasterInfo.js +19 -10
  117. package/server/routes/mapnik/{controllers → functions}/readDir.js +4 -4
  118. package/server/routes/mapnik/functions/rtile.js +164 -0
  119. package/server/routes/mapnik/{controllers → functions}/uploadRaster.js +19 -24
  120. package/server/routes/mapnik/functions/uploadXML.js +27 -0
  121. package/server/routes/mapnik/mapnik.route.js +102 -0
  122. package/server/routes/mapnik/mapnik.route.test.js +371 -0
  123. package/server/routes/mapnik/mapnik.schema.mjs +190 -0
  124. package/server/routes/mapnik.prefixless/functions/mapnikLogger.js +31 -0
  125. package/server/routes/{mapnik/controllers → mapnik.prefixless/functions}/mapnikStat.js +7 -5
  126. package/server/routes/mapnik.prefixless/mapnik.prefixless.route.js +20 -0
  127. package/server/routes/mapnik.prefixless/mapnik.prefixless.route.test.js +91 -0
  128. package/server/routes/mapnik.prefixless/mapnik.prefixless.schema.mjs +27 -0
  129. package/server/routes/maps/functions/add.map.js +42 -0
  130. package/server/routes/{map/maps → maps/functions}/del.map.js +6 -7
  131. package/server/routes/{map/maps → maps/functions}/get.map.js +12 -11
  132. package/server/routes/maps/maps.route.js +58 -0
  133. package/server/routes/maps/maps.route.test.js +231 -0
  134. package/server/routes/maps/maps.schema.js +10 -0
  135. package/server/routes/metadata/functions/editMetadata.js +35 -0
  136. package/server/routes/metadata/functions/metadataXML.js +19 -0
  137. package/server/routes/metadata/metadata.route.js +26 -0
  138. package/server/routes/metadata/metadata.route.test.js +47 -0
  139. package/server/routes/metadata/metadata.schema.js +53 -0
  140. package/server/routes/{gis/ogc → ogc/functions}/map.info.point.js +22 -29
  141. package/server/routes/ogc/ogc.route.js +21 -0
  142. package/server/routes/ogc/ogc.route.test.js +54 -0
  143. package/server/routes/ogc/ogc.schema.js +16 -0
  144. package/server/routes/permissions/functions/catalog.permissions.edit.js +20 -0
  145. package/server/routes/permissions/functions/catalog.permissions.js +13 -0
  146. package/server/routes/permissions/{controllers → functions}/gis.catalog.js +10 -10
  147. package/server/routes/permissions/permissions.route.js +35 -0
  148. package/server/routes/permissions/permissions.route.test.js +35 -0
  149. package/server/routes/permissions/permissions.schema.js +44 -0
  150. package/server/routes/registers/functions/add.registry.js +37 -0
  151. package/server/routes/{gis/registers/funcs → registers/functions}/classifiers.js +2 -2
  152. package/server/routes/{gis/registers → registers/functions}/del.registry.js +5 -5
  153. package/server/routes/{gis/registers/funcs → registers/functions}/get.info.js +9 -5
  154. package/server/routes/{gis/registers → registers/functions}/gis.export.js +27 -21
  155. package/server/routes/{gis/registers → registers/functions}/gis.registry.js +22 -15
  156. package/server/routes/{gis/registers → registers/functions}/gis.registry.list.js +12 -10
  157. package/server/routes/{gis/registers/funcs → registers/functions}/handleRegistryRequest.js +12 -11
  158. package/server/routes/registers/registers.route.js +80 -0
  159. package/server/routes/registers/registers.route.test.js +145 -0
  160. package/server/routes/registers/registers.schema.js +246 -0
  161. package/server/routes/{gis/services → services/functions}/add.service.js +14 -16
  162. package/server/routes/services/functions/create.route.js +93 -0
  163. package/server/routes/{gis/services → services/functions}/del.service.js +5 -5
  164. package/server/routes/{gis/services → services/functions}/get.service.users.js +15 -13
  165. package/server/routes/services/functions/get.services.col.js +34 -0
  166. package/server/routes/{gis/services → services/functions}/get.services.js +21 -16
  167. package/server/routes/services/services.route.js +76 -0
  168. package/server/routes/services/services.route.test.js +168 -0
  169. package/server/routes/services/services.schema.js +278 -0
  170. package/server/routes/widgets/functions/add.widget.js +39 -0
  171. package/server/routes/widgets/functions/del.widget.js +18 -0
  172. package/server/routes/{map/widgets → widgets/functions}/get.widget.js +12 -11
  173. package/server/routes/widgets/widgets.route.js +61 -0
  174. package/server/routes/widgets/widgets.route.test.js +144 -0
  175. package/server/routes/widgets/widgets.schema.js +25 -0
  176. package/dist/service-JGNtth-y.js +0 -2593
  177. package/module/cls.json +0 -7
  178. package/module/gis/card/gis.metadata.table/main_info.hbs +0 -21
  179. package/module/gis/card/gis.metadata.table/metadata_info.hbs +0 -28
  180. package/module/gis/card/gis.metadata.table/other.hbs +0 -26
  181. package/module/gis/card/gis.rasters.table/main_info.hbs +0 -27
  182. package/module/gis/card/gis.registers.table/cls.hbs +0 -36
  183. package/module/gis/card/gis.registers.table/columns.hbs +0 -89
  184. package/module/gis/card/gis.registers.table/filters.hbs +0 -80
  185. package/module/gis/card/gis.registers.table/main_info.hbs +0 -35
  186. package/module/gis/card/gis.registers.table/source.hbs +0 -45
  187. package/module/gis/card/gis.services.table/attributes.hbs +0 -91
  188. package/module/gis/card/gis.services.table/filters.hbs +0 -83
  189. package/module/gis/card/gis.services.table/main_info.hbs +0 -27
  190. package/module/gis/card/gis.services.table/source.hbs +0 -26
  191. package/module/test/cls/bp_build_type.json +0 -37
  192. package/module/test/cls/doc_status.json +0 -32
  193. package/module/test/cls/ts.temp_status.json +0 -18
  194. package/module/test/cls/ts.temp_structure.ts_class.json +0 -50
  195. package/module/test/cls/ts.temp_type.json +0 -10
  196. package/module/test/layer/bp.json +0 -60
  197. package/module/test/layer/bp1.yml +0 -33
  198. package/module/test/layer/individual.yml +0 -54
  199. package/module/test/layer/ts.linking_passport.yml +0 -56
  200. package/module/test/layer/ts.temp_structure.yml +0 -51
  201. package/module/test/map/bp_myo.json +0 -44
  202. package/module/test/map/bpf.json +0 -44
  203. package/module/test/map/main.json +0 -39
  204. package/module/test/map/mbd.json +0 -92
  205. package/module/test/map/ts.json +0 -53
  206. package/module/test/select/address_id.json +0 -3
  207. package/module/test/select/address_id.sql +0 -8
  208. package/module/test/select/core.user_uid.sql +0 -1
  209. package/module/test/table/data_address.street.table.json +0 -70
  210. package/module/test/table/data_bp_myo.bp.table.json +0 -123
  211. package/server/routes/gis/checkXML.js +0 -117
  212. package/server/routes/gis/dashboard.js +0 -29
  213. package/server/routes/gis/index.mjs +0 -92
  214. package/server/routes/gis/metadata/editMetadata.js +0 -34
  215. package/server/routes/gis/metadata/metadataXML.js +0 -13
  216. package/server/routes/gis/registers/add.registry.js +0 -35
  217. package/server/routes/gis/registers/insert.columns.js +0 -107
  218. package/server/routes/gis/registers/insert.filters.js +0 -110
  219. package/server/routes/gis/services/create.route.js +0 -96
  220. package/server/routes/gis/services/get.services.col.js +0 -33
  221. package/server/routes/map/controllers/mapCatalogAttribute.js +0 -56
  222. package/server/routes/map/index.mjs +0 -259
  223. package/server/routes/map/maps/add.map.js +0 -43
  224. package/server/routes/map/widgets/add.widget.js +0 -39
  225. package/server/routes/map/widgets/del.widget.js +0 -23
  226. package/server/routes/mapnik/controllers/fileStat.js +0 -28
  227. package/server/routes/mapnik/controllers/mapnikLogger.js +0 -29
  228. package/server/routes/mapnik/controllers/rtile.js +0 -167
  229. package/server/routes/mapnik/index.js +0 -40
  230. package/server/routes/permissions/controllers/catalog.permissions.edit.js +0 -22
  231. package/server/routes/permissions/controllers/catalog.permissions.js +0 -8
  232. package/server/routes/permissions/index.mjs +0 -18
  233. /package/server/routes/map/{controllers/pin → pin}/circle1.svg +0 -0
  234. /package/server/routes/map/{controllers/pin → pin}/circle2.svg +0 -0
  235. /package/server/routes/map/{controllers/pin → pin}/none.svg +0 -0
  236. /package/server/routes/map/{controllers/pin → pin}/pin.svg +0 -0
  237. /package/server/routes/map/{controllers/pin → pin}/pin1.svg +0 -0
  238. /package/server/routes/map/{controllers/pin → pin}/pin2.svg +0 -0
  239. /package/server/routes/map/{controllers/pin → pin}/pin3.svg +0 -0
  240. /package/server/routes/map/{controllers/pin → pin}/pin4.svg +0 -0
  241. /package/server/routes/map/{controllers/pin → pin}/pin5.svg +0 -0
  242. /package/server/routes/map/{controllers/pin → pin}/pin6.svg +0 -0
  243. /package/server/routes/map/{controllers/pin → pin}/pin7.svg +0 -0
  244. /package/server/routes/permissions/{controllers/utils → functions}/get.permissions.js +0 -0
  245. /package/server/routes/{gis/registers/funcs → registers/functions}/columns.js +0 -0
  246. /package/server/routes/{gis/registers/funcs → registers/functions}/content.type.js +0 -0
  247. /package/server/routes/{gis/registers → registers/functions}/map.registry.js +0 -0
  248. /package/server/routes/{gis/services → services/functions}/get.layer.geom.js +0 -0
  249. /package/server/routes/{gis/services → services/functions}/legend.auto.js +0 -0
@@ -0,0 +1,303 @@
1
+ {
2
+ "history": true,
3
+ "height": "calc(100vh - 65px)",
4
+ "source_path": "data_address.street",
5
+ "layers": [
6
+ {
7
+ "id": "address",
8
+ "service": "vtile",
9
+ "source_path": "data_address.address",
10
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
11
+ "title": "Адреси",
12
+ "visible": true,
13
+ "style": {
14
+ "type": "point",
15
+ "color": "orange",
16
+ "width": 1,
17
+ "border": 1,
18
+ "opacity": 0.6,
19
+ "stroke": "black",
20
+ "popup": {
21
+ "mode": "html",
22
+ "title": "<strong>Адреса</strong>",
23
+ "fields": [
24
+ {
25
+ "label": "Номер будинку",
26
+ "value": "addr_num"
27
+ }
28
+ ],
29
+ "content": "<p style='font-size: 14px; color: #000000; background: #FFFFFF; padding: 6px 10px; border-radius: 6px; margin: 0;'><b>Номер будинку:</b> {{addr_num}}</p>"
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "id": "street",
35
+ "service": "vtile",
36
+ "source_path": "data_address.street",
37
+ "visible": true,
38
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
39
+ "title": "Вулиці",
40
+ "style": {
41
+ "type": "line",
42
+ "color": "blue",
43
+ "popup": {
44
+ "mode": "html",
45
+ "title": "<strong>Вулиця</strong>",
46
+ "fields": [
47
+ {
48
+ "label": "Версія",
49
+ "value": "name"
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ },
55
+ {
56
+ "id": "sline",
57
+ "service": "vtile",
58
+ "source_path": "data_address.address",
59
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
60
+ "geometry_column": "geom_sline",
61
+ "visible": true,
62
+ "title": "Прив'язка адрес",
63
+ "style": {
64
+ "type": "line",
65
+ "color": "gray",
66
+ "popup": {
67
+ "mode": "html",
68
+ "title": "<strong>Прив'язка адреси</strong>",
69
+ "fields": [
70
+ {
71
+ "label": "Номер будинку",
72
+ "value": "addr_num"
73
+ }
74
+ ]
75
+ }
76
+ }
77
+ }
78
+ ],
79
+ "widgets": [
80
+ {
81
+ "type": "info",
82
+ "position": "top-left",
83
+ "config": {
84
+ "title": "Адресний реєстр",
85
+ "content": "<p style='font-size: 14px; color: #34495E;'>Карта адресного реєстру відображає офіційно зареєстровані адреси на території громади або населеного пункту. До складу інформації входять дані про вулиці, будинки, типи об'єктів (житлові, комерційні, адміністративні тощо), а також структуровані компоненти адреси: назва вулиці, номер будинку, корпус, літера, тощо.</p>",
86
+ "goTo": [
87
+ {
88
+ "label": "Карта БП/МУО",
89
+ "url": "/maps/bp_myo"
90
+ },
91
+ {
92
+ "label": "Карта містобудівної документації",
93
+ "url": "/maps/mbd"
94
+ },
95
+ {
96
+ "label": "Основна карта",
97
+ "url": "/maps/main"
98
+ },
99
+ {
100
+ "label": "Карта тимчасових споруд",
101
+ "url": "/maps/ts"
102
+ }
103
+ ]
104
+ },
105
+ "visible": true
106
+ },
107
+ {
108
+ "type": "layers",
109
+ "position": "top-left",
110
+ "search": true,
111
+ "config": {
112
+ "layers": [
113
+ {
114
+ "id": "address",
115
+ "service": "vtile",
116
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
117
+ "service_key": "address",
118
+ "map_key": "addr",
119
+ "title": "Адреси",
120
+ "visible": true,
121
+ "style": {
122
+ "type": "point",
123
+ "color": "orange",
124
+ "width": 1,
125
+ "border": 1,
126
+ "opacity": 0.6,
127
+ "stroke": "black",
128
+ "popup": {
129
+ "mode": "html",
130
+ "content": [
131
+ "<p style='font-size: 14px; color: #000000; padding: 6px 10px; border-radius: 6px; margin: 0;'><b>Номер будинку:</b> {{addr_num}}</p>"
132
+ ]
133
+ }
134
+ }
135
+ },
136
+ {
137
+ "id": "street",
138
+ "service": "vtile",
139
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
140
+ "service_key": "street",
141
+ "map_key": "addr",
142
+ "visible": true,
143
+ "title": "Вулиці",
144
+ "style": {
145
+ "type": "line",
146
+ "color": "blue",
147
+ "popup": {
148
+ "mode": "html",
149
+ "content": [
150
+ "<p style='font-size: 14px; color: #000000; padding: 6px 10px; border-radius: 6px; margin: 0;'><b>Вулиця:</b> {{name}}</p>"
151
+ ]
152
+ }
153
+ },
154
+ "actions": [
155
+ {
156
+ "icon": "<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_231_103)\"><path d=\"M12 20L9 21V12.5L4.52 7.572C4.18545 7.20393 4.00005 6.7244 4 6.227V4H20V6.172C19.9999 6.70239 19.7891 7.21101 19.414 7.586L15 12\" stroke=\"#424242\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path><path d=\"M21.121 20.1209C21.5406 19.7014 21.8265 19.1668 21.9423 18.5849C22.0581 18.0029 21.9988 17.3997 21.7717 16.8514C21.5447 16.3032 21.1602 15.8346 20.6668 15.5049C20.1734 15.1752 19.5934 14.9993 19 14.9993C18.4066 14.9993 17.8266 15.1752 17.3332 15.5049C16.8398 15.8346 16.4553 16.3032 16.2283 16.8514C16.0012 17.3997 15.9419 18.0029 16.0577 18.5849C16.1735 19.1668 16.4594 19.7014 16.879 20.1209C17.297 20.5399 18.004 21.1659 19 21.9999C20.051 21.1099 20.759 20.4839 21.121 20.1209Z\" stroke=\"#424242\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path><path d=\"M19 18V18.01\" stroke=\"#424242\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></g><defs><clipPath id=\"clip0_231_103\"><rect width=\"24\" height=\"24\" fill=\"white\"></rect></clipPath></defs></svg>",
157
+ "widget": "filters"
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "id": "sline",
163
+ "service": "vtile",
164
+ "url": "/api/map-tiles/addr/{z}/{x}/{y}.pbf",
165
+ "visible": true,
166
+ "geometry_column": "geom_sline",
167
+ "title": "Прив'язка адрес",
168
+ "noCard": true,
169
+ "style": {
170
+ "type": "line",
171
+ "color": "gray",
172
+ "popup": {
173
+ "mode": "html",
174
+ "title": "<strong>Прив'язка адреси</strong>",
175
+ "fields": [
176
+ {
177
+ "label": "Номер будинку",
178
+ "value": "addr_num"
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ }
184
+ ]
185
+ }
186
+ },
187
+ {
188
+ "type": "card",
189
+ "position": "top-right",
190
+ "config": {
191
+ "title": "Інформація про об'єкт"
192
+ }
193
+ },
194
+ {
195
+ "type": "basemaps",
196
+ "position": "bottom-left",
197
+ "title": "Базові карти",
198
+ "config": {
199
+ "default": "voyager",
200
+ "layers": [
201
+ {
202
+ "id": "voyager",
203
+ "title": "Базова карта (voyager)",
204
+ "url": "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
205
+ "service": "raster",
206
+ "attribution": "&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a>, &copy; <a href='https://carto.com/attributions'>CARTO</a>",
207
+ "image": "https://data.gki.com.ua/api-user/rtile/voyager/ua/12/2422/1400.png",
208
+ "owner": "OSM",
209
+ "basemap": true
210
+ },
211
+ {
212
+ "id": "esri",
213
+ "title": "ESRI Online Imagery(2022-2023)",
214
+ "url": "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png",
215
+ "service": "raster",
216
+ "image": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/7/47/69.png"
217
+ }
218
+ ]
219
+ },
220
+ "visible": true
221
+ },
222
+ {
223
+ "type": "legend",
224
+ "position": "bottom-right",
225
+ "config": {
226
+ "width": "200px",
227
+ "items": [
228
+ {
229
+ "label": "Адреси",
230
+ "color": "orange",
231
+ "shape": "circle"
232
+ },
233
+ {
234
+ "label": "Вулиці",
235
+ "color": "blue",
236
+ "shape": "line"
237
+ },
238
+ {
239
+ "label": "Прив'язка адрес",
240
+ "color": "gray",
241
+ "shape": "line"
242
+ }
243
+ ]
244
+ }
245
+ },
246
+ {
247
+ "id": "filters",
248
+ "type": "filters",
249
+ "position": "top-left",
250
+ "config": {
251
+ "visible": false,
252
+ "title": "Фільтри (Вулиці)",
253
+ "layer_id": "street",
254
+ "source_path": "data_address.street",
255
+ "filters": [
256
+ {
257
+ "label": "Назва вулиці",
258
+ "id": "name",
259
+ "type": "Text",
260
+ "inline": true
261
+ },
262
+ {
263
+ "label": "Тип об'єкта",
264
+ "id": "type",
265
+ "data": "str_type",
266
+ "type": "Autocomplete",
267
+ "inline": true
268
+ },
269
+ {
270
+ "label": "Статус",
271
+ "id": "status",
272
+ "data": "address.status",
273
+ "type": "Autocomplete",
274
+ "inline": true
275
+ }
276
+ ],
277
+ "conditions": {
278
+ "layers": [
279
+ "street"
280
+ ]
281
+ }
282
+ }
283
+ }
284
+ ],
285
+ "interactions": {
286
+ "hover": {
287
+ "enabled": true
288
+ },
289
+ "click": {
290
+ "enabled": true
291
+ },
292
+ "navigation": {
293
+ "enabled": true
294
+ }
295
+ },
296
+ "tools": [
297
+ "home",
298
+ "geolocation",
299
+ "length",
300
+ "area",
301
+ "print"
302
+ ]
303
+ }
@@ -6,7 +6,9 @@ center:
6
6
  - 48.51174
7
7
  zoom: 11
8
8
  layers:
9
- - faafbea5263a
9
+ - faafbea5263a
10
+ - 5158e1c607fb
11
+ - 7be6d21f512a
10
12
  widgets:
11
13
  - type: search
12
14
  position: top-left
@@ -0,0 +1,3 @@
1
+ select a.str_id,coalesce(b.name||' ','')||a.name
2
+ from data_address.street a
3
+ left join admin.cls b on code=a.type::text and b.parent='str_type'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/gis",
3
- "version": "0.2.167",
3
+ "version": "0.2.169",
4
4
  "type": "module",
5
5
  "author": "Softpro",
6
6
  "main": "./dist/index.js",
@@ -43,22 +43,22 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@fortawesome/free-solid-svg-icons": "7.3.1",
46
- "@mapbox/sphericalmercator": "1.2.0",
47
- "carto": "0.16.3",
46
+ "@mapbox/sphericalmercator": "2.0.2",
47
+ "carto": "1.2.0",
48
48
  "sharp": "0.35.3"
49
49
  },
50
50
  "peerDependencies": {
51
- "@opengis/fastify-table": "^2.3.4"
51
+ "@opengis/fastify-table": "^2.5.32"
52
52
  },
53
53
  "resolutions": {
54
54
  "rollup": "4.30.0"
55
55
  },
56
56
  "devDependencies": {
57
- "@opengis/core": "^0.0.23",
58
- "@opengis/fastify-table": "^2.4.10",
59
- "@opengis/filter": "0.1.35",
60
- "@opengis/form": "^0.0.133",
61
- "@opengis/table": "^0.0.27",
57
+ "@opengis/core": "^0.0.37",
58
+ "@opengis/fastify-table": "^2.5.32",
59
+ "@opengis/filter": "0.1.52",
60
+ "@opengis/form": "^0.1.20",
61
+ "@opengis/table": "^0.0.47",
62
62
  "@vitejs/plugin-vue": "^5.2.4",
63
63
  "eslint": "^8.57.1",
64
64
  "eslint-config-airbnb": "19.0.4",
@@ -68,7 +68,7 @@
68
68
  "vue-eslint-parser": "^10.4.1",
69
69
  "lucide-vue-next": "^0.577.0",
70
70
  "sass-embedded": "1.86.3",
71
- "typescript": "^5.9.3",
71
+ "typescript": "^7.0.2",
72
72
  "vite": "^6.4.3",
73
73
  "vue": "^3.5.38",
74
74
  "vue-router": "4.5.1",
package/plugin.js CHANGED
@@ -1,14 +1,13 @@
1
1
  import fp from 'fastify-plugin';
2
2
 
3
+ import { join, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
3
6
  import {
4
7
  config, addHook, getMeta, pgClients, execMigrations,
5
8
  } from '@opengis/fastify-table/utils.js';
6
9
 
7
10
  config.prefix = config.prefix || '/api';
8
- import { join, dirname } from 'path';
9
- import { fileURLToPath } from 'url';
10
- import mapnikLogger from './server/routes/mapnik/controllers/mapnikLogger.js';
11
- import mapnikStat from './server/routes/mapnik/controllers/mapnikStat.js';
12
11
 
13
12
  const dir = dirname(fileURLToPath(import.meta.url));
14
13
 
@@ -29,16 +28,25 @@ const columnType = {
29
28
  'integer[]': 'array',
30
29
  'character varying[]': 'array',
31
30
  };
32
- const adminParams = { config: { policy: 'L1', role: 'admin' }, package: 'gis' };
31
+
33
32
  async function plugin(app, opts = config) {
34
- // API
35
- app.register(import('./server/routes/map/index.mjs'), opts);
33
+ // plugins
36
34
  app.register(import('./server/plugins/crons.js'), opts);
37
- app.register(import('./server/routes/gis/index.mjs'), opts);
38
- app.register(import('./server/routes/permissions/index.mjs'), opts);
39
- app.register(import('./server/routes/mapnik/index.js'), opts);
40
- app.get('/logger-gis/stat', adminParams, mapnikStat);
41
- app.get('/logger-gis/*', adminParams, mapnikLogger);
35
+
36
+ // routes
37
+ app.register(import('./server/routes/gis/gis.route.js'), opts);
38
+ app.register(import('./server/routes/cartocss/cartocss.route.js'), opts);
39
+ app.register(import('./server/routes/map/map.route.js'), opts);
40
+ app.register(import('./server/routes/mapnik/mapnik.route.js'), opts);
41
+ app.register(import('./server/routes/mapnik.prefixless/mapnik.prefixless.route.js')); // no /api prefix applied
42
+ app.register(import('./server/routes/maps/maps.route.js'), opts);
43
+ app.register(import('./server/routes/metadata/metadata.route.js'), opts);
44
+ app.register(import('./server/routes/ogc/ogc.route.js'), opts);
45
+ app.register(import('./server/routes/permissions/permissions.route.js'), opts);
46
+ app.register(import('./server/routes/registers/registers.route.js'), opts);
47
+ app.register(import('./server/routes/services/services.route.js'), opts);
48
+ app.register(import('./server/routes/widgets/widgets.route.js'), opts);
49
+
42
50
 
43
51
  addHook('afterData', async ({
44
52
  pg = pgClients.client, payload, id, template,
@@ -50,6 +58,7 @@ async function plugin(app, opts = config) {
50
58
  const { columns = [] } = await getMeta({ table, pg });
51
59
  // payload.rows[0].token = payload.tokens?.edit; // token with ignore filtering of payload keys check
52
60
  Object.assign(payload, { fields: columns?.map?.(({ name, title, dataTypeID }) => ({ name, title: title || name, type: columnType[pg?.pgType?.[dataTypeID] || 'text'] })).filter(el => el.type) });
61
+ return null;
53
62
  });
54
63
  }
55
64
  export default fp(plugin);
@@ -20,9 +20,7 @@ function sequence(arr, fn) {
20
20
 
21
21
  const unsafe = true;
22
22
 
23
- export default async function checkRasterFile({ rows, reply, nocache }) {
24
- const callback = reply ? eventStream(reply) : () => { };
25
-
23
+ export default async function checkRasterFile({ rows, callback = () => { }, nocache }) {
26
24
  let
27
25
  createdCount = 0,
28
26
  existsCount = 0,
@@ -0,0 +1,31 @@
1
+ import getCartocss from './functions/get.cartocss.js';
2
+ import addCartocss from './functions/add.cartocss.js';
3
+
4
+ import {
5
+ getCartocssSchema,
6
+ addCartocssSchema,
7
+ } from './cartocss.schema.js';
8
+
9
+ const privateParams = { config: { policy: 'L1', package: 'gis' } };
10
+ const publicParams = { config: { policy: 'L0', package: 'gis' } };
11
+
12
+ async function route(app) {
13
+ app.get('/gis-css/:id', { ...publicParams, schema: getCartocssSchema }, async ({ params, query, user, pg }) => {
14
+ const result = await getCartocss({
15
+ id: params.id,
16
+ sql: query.sql,
17
+ nocache: query.nocache,
18
+ isAdmin: user?.user_type?.includes?.('admin')
19
+ }, pg);
20
+ return result;
21
+ });
22
+ app.post('/gis-css/:id', { ...privateParams, schema: addCartocssSchema }, async ({ params, body, user, pg }) => {
23
+ const result = await addCartocss({
24
+ id: params.id,
25
+ body,
26
+ uid: user?.uid,
27
+ }, pg);
28
+ return result;
29
+ });
30
+ }
31
+ export default route;
@@ -0,0 +1,79 @@
1
+ import { afterAll, beforeAll, describe, expect, test } from 'vitest';
2
+
3
+ import { getPGAsync } from '@opengis/fastify-table/utils.js';
4
+
5
+ import { build, injectWithHeaders } from '../../../test/helper.js';
6
+
7
+ const user = { id: '2', type: 'admin' };
8
+
9
+ let pg;
10
+
11
+ beforeAll(async () => {
12
+ await build();
13
+
14
+ pg = await getPGAsync();
15
+
16
+ await cleanUp('before');
17
+ });
18
+
19
+ afterAll(async () => {
20
+ await cleanUp('after');
21
+ });
22
+
23
+ const testId = 'testCss';
24
+
25
+ const cleanUp = async (when) => {
26
+ if (!pg) return;
27
+ const rowCount = await pg.query('delete from gis.cartocss where cartocss_id=$1', [testId]).then(r => r.rowCount || 0);
28
+ const rowCount3 = await pg.query('delete from gis.metadata where metadata_id=$1', [testId]).then(r => r.rowCount || 0);
29
+ console.log(`clean up finished: ${when}`, rowCount, rowCount3);
30
+ };
31
+
32
+ describe('cartocss api', () => {
33
+ test('POST /gis-css/:id returns 200', async () => {
34
+ const payload = {
35
+ source_path: 'test',
36
+ config: { test: 1 },
37
+ style: '#test { color: red; }'
38
+ };
39
+
40
+ await pg.query('insert into gis.cartocss(cartocss_id,name) values($1,$2)', [testId, 'unit-test']).catch(err => console.error(err));
41
+ const res = await injectWithHeaders({
42
+ method: 'POST',
43
+ url: `/api/gis-css/${testId}`,
44
+ payload,
45
+ headers: { uid: user.id, user_type: user.type }
46
+ });
47
+
48
+ expect(res.statusCode).toBe(200);
49
+ expect(res.body).toHaveProperty('message');
50
+ expect(res.body).toHaveProperty('code');
51
+ });
52
+
53
+ test('POST /gis-metadata/:type/:id returns 200', async () => {
54
+ const res = await injectWithHeaders({
55
+ method: 'POST',
56
+ url: `/api/gis-metadata/css/${testId}`,
57
+ payload: {
58
+ layer_id: testId
59
+ },
60
+ headers: { uid: user.id, user_type: user.type }
61
+ });
62
+
63
+ expect(res.statusCode).toBe(200);
64
+ expect(res.body).toHaveProperty('metadata_id');
65
+ expect(res.body.metadata_id).toBe(testId);
66
+ });
67
+
68
+ test('GET /gis-css/:id returns 200', async () => {
69
+ const res = await injectWithHeaders({
70
+ url: `/api/gis-css/${testId}`,
71
+ });
72
+
73
+ expect(res.statusCode).toBe(200);
74
+ expect(res.body).toHaveProperty('source_path');
75
+ expect(res.body).toHaveProperty('cartocss_id');
76
+ expect(res.body).toHaveProperty('cartocss_key');
77
+ expect(res.body).toHaveProperty('url');
78
+ });
79
+ });
@@ -0,0 +1,73 @@
1
+ const geometrySchema = {
2
+
3
+ type: "object",
4
+ required: ["type", "coordinates"],
5
+ properties: {
6
+ type: {
7
+ enum: [
8
+ "Point",
9
+ "LineString",
10
+ "Polygon",
11
+ "MultiPoint",
12
+ "MultiLineString",
13
+ "MultiPolygon",
14
+ ],
15
+ },
16
+ coordinates: {
17
+ type: "array",
18
+ },
19
+ },
20
+
21
+ };
22
+
23
+ const cssBodySchema = {
24
+ type: "object",
25
+ additionalProperties: true,
26
+
27
+ properties: {
28
+ id: { type: "string", pattern: '^([\\d\\w]+)$' },
29
+ name: { type: "string" },
30
+ group_id: { type: "string" },
31
+ cartocss_key: { type: "string" },
32
+ source_path: { type: "string" },
33
+ description: { type: ["string", "null"] },
34
+ card_table: { type: "string" },
35
+ card_columns: { type: "string" },
36
+ card_html: { type: "string" },
37
+ is_public: { type: "boolean" },
38
+ is_static: { type: "boolean" },
39
+ enabled: { type: "boolean" },
40
+ geom: geometrySchema,
41
+ },
42
+ };
43
+
44
+ export const getCartocssSchema = {
45
+ params: {
46
+ type: 'object',
47
+ required: ['id'],
48
+ properties: {
49
+ id: { type: 'string', pattern: '^([\\d\\w]+)$' }
50
+ }
51
+ },
52
+ querystring: {
53
+ type: 'object',
54
+ additionalProperties: false,
55
+ properties: {
56
+ nocache: { type: 'number', enum: [1] },
57
+ sql: { type: 'number', enum: [1] },
58
+ }
59
+ }
60
+ };
61
+
62
+ export const addCartocssSchema = {
63
+ params: {
64
+ type: 'object',
65
+ required: ['id'],
66
+ properties: {
67
+ id: { type: 'string', pattern: '^([\\d\\w]+)$' }
68
+ }
69
+ },
70
+ body: cssBodySchema,
71
+ };
72
+
73
+ export default null;
@@ -1,16 +1,13 @@
1
1
  import { pgClients, dataUpdate } from '@opengis/fastify-table/utils.js';
2
2
 
3
3
  import uploadXML from '../../mapnik/functions/uploadXML.js';
4
+ import { NotFoundError } from '@opengis/fastify-table/errors.js';
4
5
 
5
- export default async function addCartocss(req, reply) {
6
- const {
7
- pg = pgClients.client, body, params, user,
8
- } = req;
9
-
10
- const cartocss = await pg.query('select cartocss_id, source_path, config, style from gis.cartocss where cartocss_id=$1', [params.id]).then(el => el.rows?.[0]);
6
+ export default async function addCartocss({ id, body, uid }, pg = pgClients.client) {
7
+ const cartocss = await pg.query('select cartocss_id, source_path, config, style from gis.cartocss where cartocss_id=$1', [id]).then(el => el.rows?.[0]);
11
8
 
12
9
  if (!cartocss) {
13
- return reply.status(404).send({ error: 'cartocss not found', code: 404 });
10
+ throw NotFoundError('cartocss not found');
14
11
  }
15
12
 
16
13
  const sourcePath = body.source_path || cartocss.source_path;
@@ -22,21 +19,21 @@ export default async function addCartocss(req, reply) {
22
19
 
23
20
  await dataUpdate({
24
21
  pg,
25
- id: params.id,
22
+ id,
26
23
  table: 'gis.cartocss',
27
24
  data,
28
- uid: user?.uid,
25
+ uid,
29
26
  });
30
27
 
31
28
  // if not from static xml file
32
29
  if (!data.source_path) {
33
30
  await uploadXML({
34
- id: params.id,
31
+ id,
35
32
  dataset: config,
36
33
  style,
37
34
  source_path: sourcePath,
38
35
  }, pg);
39
36
  }
40
37
 
41
- return reply.status(200).send({ message: 'cartocss updated', code: 200 });
38
+ return { message: 'cartocss updated', code: 200 };
42
39
  }