@opengis/gis 0.2.118 → 0.2.120

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 (200) hide show
  1. package/README.md +148 -148
  2. package/dist/{CardIcon-FxpK90rl.js → CardIcon-Dx_myDwM.js} +1 -1
  3. package/dist/{EntityCreatePage-Da8XgBKU.js → EntityCreatePage-Ch8NU_Yw.js} +14 -14
  4. package/dist/{EntityEditPage-QktKEAxz.js → EntityEditPage-CRRcW7FL.js} +27 -27
  5. package/dist/EntityTablePage-DY9v1aWL.js +282 -0
  6. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-Bl5ZwNQX.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DgQHLSak.js} +1 -1
  7. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-CKEep8BL.js → HeaderActions.vue_vue_type_script_setup_true_lang-BQ32ioLC.js} +30 -30
  8. package/dist/{MapSettings-CjJ7WWkn.js → MapSettings-CaGPr5uG.js} +34 -34
  9. package/dist/{MonacoEditor.vue_vue_type_script_setup_true_lang-Bs7gz6Lt.js → MonacoEditor.vue_vue_type_script_setup_true_lang-D3ZPeXMw.js} +92 -73
  10. package/dist/RastersTablePage-CJyO2DoI.js +247 -0
  11. package/dist/{cartocss-C_O8qG3h.js → cartocss-Bhat1m61.js} +297 -295
  12. package/dist/{import-utils-BbZ1gVp-.js → import-utils-BxeYqcn7.js} +33 -33
  13. package/dist/index-Ba6SE4TN.js +10203 -0
  14. package/dist/index.css +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.umd.cjs +41 -41
  17. package/dist/{raster-Du8ZMtjf.js → raster-Cbs1xR5Y.js} +120 -121
  18. package/dist/{register-B2gF-GzA.js → register-D0AsH83v.js} +8 -8
  19. package/dist/{service-BnPCDVwm.js → service-C4nt_DBO.js} +11 -11
  20. package/dist/{vs-datatable-QKks38xL.js → vs-datatable-QG5b0CCL.js} +28 -28
  21. package/module/cls.json +6 -6
  22. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  23. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  24. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  25. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  26. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  27. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  28. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  29. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  30. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  31. package/module/gis/card/gis.registers.table/index.yml +23 -23
  32. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  33. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  34. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  35. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  36. package/module/gis/card/gis.services.table/index.yml +25 -25
  37. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  38. package/module/gis/card/gis.services.table/source.hbs +25 -25
  39. package/module/gis/cls/bool.yes_no.json +12 -12
  40. package/module/gis/cls/encoding.json +14 -14
  41. package/module/gis/cls/geom_type.json +14 -14
  42. package/module/gis/cls/gis.column_type.json +34 -34
  43. package/module/gis/cls/gis.column_view_type.json +26 -26
  44. package/module/gis/cls/gis.filter_type.json +22 -22
  45. package/module/gis/cls/language.json +10 -10
  46. package/module/gis/cls/meta.service_type.json +42 -42
  47. package/module/gis/cls/ogc.service.json +21 -21
  48. package/module/gis/cls/service_type.json +42 -42
  49. package/module/gis/cls/source_type.json +10 -10
  50. package/module/gis/cls/standarts.json +6 -6
  51. package/module/gis/cls/topic_category.json +106 -106
  52. package/module/gis/cls/update_frequency.json +29 -29
  53. package/module/gis/cls/view.json +21 -21
  54. package/module/gis/form/feedback.answer.form.json +10 -10
  55. package/module/gis/form/gis.cartocss.form.json +54 -54
  56. package/module/gis/form/gis.group_list.form.json +17 -17
  57. package/module/gis/form/gis.maps.form.json +61 -61
  58. package/module/gis/form/gis.metadata.form.json +240 -240
  59. package/module/gis/form/gis.metadata_new.form.json +195 -195
  60. package/module/gis/form/gis.ogc_service.form.json +51 -51
  61. package/module/gis/form/gis.rasters.form.json +76 -76
  62. package/module/gis/form/gis.registers.form.json +124 -124
  63. package/module/gis/form/gis.registers_column.form.json +84 -84
  64. package/module/gis/form/gis.registers_filter.form.json +65 -65
  65. package/module/gis/form/gis.services.form.json +111 -111
  66. package/module/gis/form/gis.services_attributes.form.json +75 -75
  67. package/module/gis/form/gis.services_filter.form.json +65 -65
  68. package/module/gis/menu.json +43 -43
  69. package/module/gis/select/admin.cls.name.sql +2 -2
  70. package/module/gis/select/layer_list.sql +7 -7
  71. package/module/gis/select/layer_list_text.sql +7 -7
  72. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  73. package/module/gis/select/pg.columns.parent.sql +6 -6
  74. package/module/gis/select/pg.table_name.sql +17 -17
  75. package/module/gis/select/service_id.sql +1 -1
  76. package/module/gis/table/gis.cartocss.table.json +74 -74
  77. package/module/gis/table/gis.group_list.table.json +58 -58
  78. package/module/gis/table/gis.maps.table.json +110 -110
  79. package/module/gis/table/gis.metadata.table.json +70 -70
  80. package/module/gis/table/gis.metadata_new.table.json +137 -137
  81. package/module/gis/table/gis.ogc_service.table.json +100 -100
  82. package/module/gis/table/gis.rasters.table.json +101 -101
  83. package/module/gis/table/gis.registers.table.json +143 -143
  84. package/module/gis/table/gis.services.table.json +120 -120
  85. package/module/gis/table/site.gis.registers.table.json +88 -88
  86. package/module/gis/table/site.gis.services.table.json +106 -106
  87. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  88. package/module/gis/tokens.yml +5 -5
  89. package/module/permissions/form/permissions.users.form.json +151 -151
  90. package/module/permissions/table/gis.permissions.table.json +97 -97
  91. package/module/test/cls/bp_build_type.json +37 -37
  92. package/module/test/cls/ts.temp_status.json +18 -18
  93. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  94. package/module/test/cls/ts.temp_type.json +9 -9
  95. package/module/test/layer/bp.json +59 -59
  96. package/module/test/layer/bp1.yml +33 -33
  97. package/module/test/layer/individual.yml +53 -53
  98. package/module/test/layer/ts.linking_passport.yml +55 -55
  99. package/module/test/layer/ts.temp_structure.yml +50 -50
  100. package/module/test/map/addr.yml +21 -21
  101. package/module/test/map/bp_myo.json +43 -43
  102. package/module/test/map/bpf.json +43 -43
  103. package/module/test/map/main.json +37 -37
  104. package/module/test/map/mbd.json +92 -92
  105. package/module/test/map/ts.json +53 -53
  106. package/module/test/select/address_id.json +2 -2
  107. package/module/test/select/address_id.sql +7 -7
  108. package/module/test/table/data_address.street.table.json +69 -69
  109. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  110. package/package.json +75 -75
  111. package/plugin.js +55 -55
  112. package/server/migrations/array_intersect.sql +13 -13
  113. package/server/migrations/cartocss.sql +27 -27
  114. package/server/migrations/group_list.sql +74 -74
  115. package/server/migrations/maps.sql +30 -30
  116. package/server/migrations/metadata.sql +415 -415
  117. package/server/migrations/ogc.sql +106 -106
  118. package/server/migrations/rasters.sql +265 -265
  119. package/server/migrations/services.sql +247 -247
  120. package/server/migrations/services_users_rel.sql +22 -22
  121. package/server/migrations/widgets.sql +20 -20
  122. package/server/plugins/crons.js +21 -21
  123. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -108
  124. package/server/plugins/mapnik/funcs/mapnik.js +146 -146
  125. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  126. package/server/plugins/mapnik/map.proto +234 -234
  127. package/server/plugins/vite.js +74 -74
  128. package/server/routes/gis/cartocss/add.cartocss.js +42 -42
  129. package/server/routes/gis/cartocss/get.cartocss.js +50 -50
  130. package/server/routes/gis/checkXML.js +118 -118
  131. package/server/routes/gis/dashboard.js +29 -29
  132. package/server/routes/gis/index.mjs +87 -87
  133. package/server/routes/gis/metadata/editMetadata.js +34 -34
  134. package/server/routes/gis/metadata/metadataXML.js +13 -13
  135. package/server/routes/gis/ogc/map.info.point.js +124 -124
  136. package/server/routes/gis/registers/add.registry.js +35 -35
  137. package/server/routes/gis/registers/del.registry.js +14 -14
  138. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  139. package/server/routes/gis/registers/funcs/columns.js +4 -4
  140. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  141. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  142. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +146 -146
  143. package/server/routes/gis/registers/gis.export.js +153 -153
  144. package/server/routes/gis/registers/gis.registry.js +64 -64
  145. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  146. package/server/routes/gis/registers/insert.columns.js +107 -107
  147. package/server/routes/gis/registers/insert.filters.js +110 -110
  148. package/server/routes/gis/registers/map.registry.js +79 -79
  149. package/server/routes/gis/services/add.service.js +64 -64
  150. package/server/routes/gis/services/del.service.js +12 -12
  151. package/server/routes/gis/services/get.layer.geom.js +27 -27
  152. package/server/routes/gis/services/get.services.col.js +33 -33
  153. package/server/routes/gis/services/get.services.js +84 -84
  154. package/server/routes/gis/services/legend.auto.js +77 -77
  155. package/server/routes/map/controllers/clearTiles.js +34 -34
  156. package/server/routes/map/controllers/geojson.js +187 -187
  157. package/server/routes/map/controllers/jsonData.js +205 -205
  158. package/server/routes/map/controllers/layerList.js +102 -102
  159. package/server/routes/map/controllers/map.js +123 -123
  160. package/server/routes/map/controllers/mapCatalog.js +72 -72
  161. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  162. package/server/routes/map/controllers/mapFeatures.js +128 -128
  163. package/server/routes/map/controllers/mapFormat.js +222 -222
  164. package/server/routes/map/controllers/mapTiles.js +152 -152
  165. package/server/routes/map/controllers/maps.js +15 -15
  166. package/server/routes/map/controllers/marker_icon.js +43 -43
  167. package/server/routes/map/controllers/vtile.js +172 -172
  168. package/server/routes/map/index.mjs +169 -169
  169. package/server/routes/map/maps/add.map.js +43 -43
  170. package/server/routes/map/maps/del.map.js +18 -18
  171. package/server/routes/map/maps/get.map.js +112 -112
  172. package/server/routes/map/vtile1.js +179 -179
  173. package/server/routes/map/widgets/add.widget.js +38 -38
  174. package/server/routes/map/widgets/del.widget.js +22 -22
  175. package/server/routes/map/widgets/get.widget.js +40 -40
  176. package/server/routes/mapnik/controllers/clearTiles.js +106 -98
  177. package/server/routes/mapnik/controllers/createXml.js +67 -66
  178. package/server/routes/mapnik/controllers/createXmlMulti.js +76 -75
  179. package/server/routes/mapnik/controllers/fileSearch.js +38 -38
  180. package/server/routes/mapnik/controllers/fileStat.js +28 -28
  181. package/server/routes/mapnik/controllers/mapnikLogger.js +29 -29
  182. package/server/routes/mapnik/controllers/mapnikStat.js +20 -20
  183. package/server/routes/mapnik/controllers/rasterInfo.js +54 -53
  184. package/server/routes/mapnik/controllers/readDir.js +22 -22
  185. package/server/routes/mapnik/controllers/rtile.js +150 -150
  186. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  187. package/server/routes/mapnik/functions/cartoBounds.js +28 -28
  188. package/server/routes/mapnik/functions/uploadXML.js +110 -110
  189. package/server/routes/mapnik/index.js +27 -27
  190. package/server/routes/permissions/controllers/catalog.permissions.edit.js +22 -22
  191. package/server/routes/permissions/controllers/catalog.permissions.js +7 -7
  192. package/server/routes/permissions/controllers/gis.catalog.js +80 -80
  193. package/server/routes/permissions/controllers/utils/get.permissions.js +59 -59
  194. package/server/routes/permissions/index.mjs +18 -18
  195. package/server/routes/root.mjs +3 -3
  196. package/utils.js +13 -13
  197. package/dist/EntityTablePage-ii-Wz0YZ.js +0 -286
  198. package/dist/FileEdit-C7tteUeG.js +0 -37
  199. package/dist/RastersTablePage-DpKkFOyo.js +0 -359
  200. package/dist/index-4aSsUBB8.js +0 -10020
package/README.md CHANGED
@@ -1,148 +1,148 @@
1
- <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
-
3
- # @opengis/gis
4
-
5
- [![NPM version](https://img.shields.io/npm/v/@opengis/gis?style=plain)](https://www.npmjs.com/package/@opengis/gis)
6
- [![NPM last update](https://img.shields.io/npm/last-update/@opengis/gis?style=plain)]()
7
- [![NPM downloads](https://img.shields.io/npm/dw/@opengis/gis?style=plain)]()
8
- [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=plain)](http://standardjs.com/)
9
-
10
- Tools for mapping, geodata management, and integration into modern web services.
11
-
12
- ## Features
13
-
14
- - **Interactive Web Maps** – View and explore geographic data online.
15
- - **Dataset Management** – Upload and manage spatial data (Shapefile, GeoJSON, CSV, etc.).
16
- - **Raster Visualization** – Display satellite images and raster layers.
17
- - **Layer Control** – Add, remove, and organize map layers.
18
- - **User & Admin Management** – Control access and permissions.
19
- - **API & OGC Standards Support** – Supports WMS, WFS, WMTS services.
20
- - **Cloud Access** – Use the GIS platform from any device via the web.
21
- - **High-Performance Processing** – Handles large spatial datasets efficiently.
22
-
23
- ## Install
24
-
25
- ```bash
26
- npm i @opengis/gis
27
- ```
28
-
29
- ## Usage Portal
30
-
31
- ```vue
32
- <template>
33
- <!--$route.params.id-->
34
- <MapWidget :id="'home'" />
35
- </template>
36
-
37
- <script setup lang="ts">
38
- const MapWidget = defineAsyncComponent(() =>
39
- import("@opengis/gis").then((m) => m.MapWidget),
40
- );
41
- </script>
42
- ```
43
-
44
- ## Usage Admin
45
-
46
- ```js
47
- // router.config
48
- export default [
49
- {
50
- path: "/gis.registers/:id?",
51
- component: () => import("@opengis/gis").then((m) => m.Register),
52
- },
53
- {
54
- path: "/gis.services/:id?",
55
- component: () => import("@opengis/gis").then((m) => m.Service),
56
- },
57
- {
58
- path: "/gis.rasters/:id?",
59
- component: () => import("@opengis/gis").then((m) => m.Raster),
60
- },
61
- {
62
- path: "/gis.cartocss/:id?",
63
- component: () => import("@opengis/gis").then((m) => m.CartoCSS),
64
- },
65
- {
66
- path: "/gis.maps/:id?",
67
- component: () => import("@opengis/gis").then((m) => m.MapSettings),
68
- },
69
- ];
70
- ```
71
-
72
- ## Config
73
-
74
- ```js
75
- // main.ts
76
- app.config.globalProperties.$settings = {
77
- map: {
78
- center: [34.71, 48.51],
79
- zoom: 14,
80
- basemaps: [
81
- {
82
- name: "Оглядова карта",
83
- url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
84
- },
85
- {
86
- name: "Ортофото 1:10K",
87
- url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
88
- },
89
- {
90
- name: "Open Street Maps",
91
- url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
92
- },
93
- {
94
- name: "Топографічна карта 1:2000",
95
- url: "/api/gis-rtile/3830082297432900636/{z}/{x}/{y}.png",
96
- preview: "/api/gis-rtile/3830082297432900636/17/78138/45286.png",
97
- },
98
- ],
99
- },
100
- };
101
- ```
102
-
103
- ## Documentation
104
-
105
- For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://gis.opengis.info/).
106
-
107
- ## Technology stack
108
-
109
- <a href="https://fastify.dev/" target="_blank">
110
- <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
111
-
112
- <a href="https://vuejs.org/" target="_blank">
113
- <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
114
-
115
- <a href="https://vite.dev/" target="_blank">
116
- <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
117
-
118
- <a href="https://www.postgresql.org/" target="_blank">
119
- <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
120
-
121
- <a href="https://redis.io/" target="_blank">
122
- <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
123
-
124
- <a href="https://nodejs.org/" target="_blank">
125
- <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
126
-
127
- ## Contribute
128
-
129
- Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
130
-
131
- - Report bugs
132
- - Share your ideas
133
- - Ask questions
134
-
135
- ## Follow Us
136
-
137
- [Official site](https://softpro.ua)
138
-
139
- <p>
140
- <a href="https://www.instagram.com/gissoftpro/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/instagram.png" alt="Softpro Instagram" title="oftpro Instagram"></a>&nbsp;&nbsp;
141
- <a href="https://www.facebook.com/gissoftpro" target="_blank"><img src="https://cdn.softpro.ua/data/npm/facebook.png" alt="Softpro Facebook" title="Softpro Facebook"></a>&nbsp;&nbsp;
142
- <a href="https://t.me/softprogis" target="_blank"><img src="https://cdn.softpro.ua/data/npm/telegram.png" alt="Softpro Telegram" title="Softpro Telegram"></a>&nbsp;&nbsp;
143
- <a href="https://www.linkedin.com/in/softpro-ukraine-a8876b282/recent-activity/all/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/social/linkedin.png" alt="Softpro Linkedin" title="Softpro LinkedIn"></a>&nbsp;&nbsp;
144
- </p>
145
-
146
- ## License
147
-
148
- Copyright © SOFTPRO. All rights reserved.
1
+ <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
+
3
+ # @opengis/gis
4
+
5
+ [![NPM version](https://img.shields.io/npm/v/@opengis/gis?style=plain)](https://www.npmjs.com/package/@opengis/gis)
6
+ [![NPM last update](https://img.shields.io/npm/last-update/@opengis/gis?style=plain)]()
7
+ [![NPM downloads](https://img.shields.io/npm/dw/@opengis/gis?style=plain)]()
8
+ [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=plain)](http://standardjs.com/)
9
+
10
+ Tools for mapping, geodata management, and integration into modern web services.
11
+
12
+ ## Features
13
+
14
+ - **Interactive Web Maps** – View and explore geographic data online.
15
+ - **Dataset Management** – Upload and manage spatial data (Shapefile, GeoJSON, CSV, etc.).
16
+ - **Raster Visualization** – Display satellite images and raster layers.
17
+ - **Layer Control** – Add, remove, and organize map layers.
18
+ - **User & Admin Management** – Control access and permissions.
19
+ - **API & OGC Standards Support** – Supports WMS, WFS, WMTS services.
20
+ - **Cloud Access** – Use the GIS platform from any device via the web.
21
+ - **High-Performance Processing** – Handles large spatial datasets efficiently.
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ npm i @opengis/gis
27
+ ```
28
+
29
+ ## Usage Portal
30
+
31
+ ```vue
32
+ <template>
33
+ <!--$route.params.id-->
34
+ <MapWidget :id="'home'" />
35
+ </template>
36
+
37
+ <script setup lang="ts">
38
+ const MapWidget = defineAsyncComponent(() =>
39
+ import("@opengis/gis").then((m) => m.MapWidget),
40
+ );
41
+ </script>
42
+ ```
43
+
44
+ ## Usage Admin
45
+
46
+ ```js
47
+ // router.config
48
+ export default [
49
+ {
50
+ path: "/gis.registers/:id?",
51
+ component: () => import("@opengis/gis").then((m) => m.Register),
52
+ },
53
+ {
54
+ path: "/gis.services/:id?",
55
+ component: () => import("@opengis/gis").then((m) => m.Service),
56
+ },
57
+ {
58
+ path: "/gis.rasters/:id?",
59
+ component: () => import("@opengis/gis").then((m) => m.Raster),
60
+ },
61
+ {
62
+ path: "/gis.cartocss/:id?",
63
+ component: () => import("@opengis/gis").then((m) => m.CartoCSS),
64
+ },
65
+ {
66
+ path: "/gis.maps/:id?",
67
+ component: () => import("@opengis/gis").then((m) => m.MapSettings),
68
+ },
69
+ ];
70
+ ```
71
+
72
+ ## Config
73
+
74
+ ```js
75
+ // main.ts
76
+ app.config.globalProperties.$settings = {
77
+ map: {
78
+ center: [34.71, 48.51],
79
+ zoom: 14,
80
+ basemaps: [
81
+ {
82
+ name: "Оглядова карта",
83
+ url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
84
+ },
85
+ {
86
+ name: "Ортофото 1:10K",
87
+ url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
88
+ },
89
+ {
90
+ name: "Open Street Maps",
91
+ url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
92
+ },
93
+ {
94
+ name: "Топографічна карта 1:2000",
95
+ url: "/api/gis-rtile/3830082297432900636/{z}/{x}/{y}.png",
96
+ preview: "/api/gis-rtile/3830082297432900636/17/78138/45286.png",
97
+ },
98
+ ],
99
+ },
100
+ };
101
+ ```
102
+
103
+ ## Documentation
104
+
105
+ For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://gis.opengis.info/).
106
+
107
+ ## Technology stack
108
+
109
+ <a href="https://fastify.dev/" target="_blank">
110
+ <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
111
+
112
+ <a href="https://vuejs.org/" target="_blank">
113
+ <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
114
+
115
+ <a href="https://vite.dev/" target="_blank">
116
+ <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
117
+
118
+ <a href="https://www.postgresql.org/" target="_blank">
119
+ <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
120
+
121
+ <a href="https://redis.io/" target="_blank">
122
+ <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
123
+
124
+ <a href="https://nodejs.org/" target="_blank">
125
+ <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
126
+
127
+ ## Contribute
128
+
129
+ Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
130
+
131
+ - Report bugs
132
+ - Share your ideas
133
+ - Ask questions
134
+
135
+ ## Follow Us
136
+
137
+ [Official site](https://softpro.ua)
138
+
139
+ <p>
140
+ <a href="https://www.instagram.com/gissoftpro/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/instagram.png" alt="Softpro Instagram" title="oftpro Instagram"></a>&nbsp;&nbsp;
141
+ <a href="https://www.facebook.com/gissoftpro" target="_blank"><img src="https://cdn.softpro.ua/data/npm/facebook.png" alt="Softpro Facebook" title="Softpro Facebook"></a>&nbsp;&nbsp;
142
+ <a href="https://t.me/softprogis" target="_blank"><img src="https://cdn.softpro.ua/data/npm/telegram.png" alt="Softpro Telegram" title="Softpro Telegram"></a>&nbsp;&nbsp;
143
+ <a href="https://www.linkedin.com/in/softpro-ukraine-a8876b282/recent-activity/all/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/social/linkedin.png" alt="Softpro Linkedin" title="Softpro LinkedIn"></a>&nbsp;&nbsp;
144
+ </p>
145
+
146
+ ## License
147
+
148
+ Copyright © SOFTPRO. All rights reserved.
@@ -1,5 +1,5 @@
1
1
  import { openBlock as t, createElementBlock as n, createElementVNode as l } from "vue";
2
- import { _ as o } from "./index-4aSsUBB8.js";
2
+ import { _ as o } from "./index-Ba6SE4TN.js";
3
3
  const s = {}, a = {
4
4
  xmlns: "http://www.w3.org/2000/svg",
5
5
  width: "24",
@@ -1,7 +1,7 @@
1
- import { defineComponent as O, defineAsyncComponent as z, ref as s, computed as u, onMounted as D, resolveComponent as I, openBlock as h, createElementBlock as C, Fragment as $, createVNode as c, createSlots as K, withCtx as n, createTextVNode as j, toDisplayString as y, createElementVNode as o, unref as k, createCommentVNode as E, createBlock as L } from "vue";
1
+ import { defineComponent as O, defineAsyncComponent as z, ref as s, computed as u, onMounted as D, resolveComponent as I, openBlock as h, createElementBlock as C, Fragment as $, createVNode as c, createSlots as K, withCtx as n, createElementVNode as o, unref as y, toDisplayString as k, createTextVNode as j, createCommentVNode as E, createBlock as L } from "vue";
2
2
  import { notify as d } from "@opengis/core";
3
3
  import { useRouter as P, useRoute as R } from "vue-router";
4
- import { LucideChevronRight as A, ArrowLeft as F } from "lucide-vue-next";
4
+ import { ArrowLeft as A, LucideChevronRight as F } from "lucide-vue-next";
5
5
  import { _ as U } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
6
6
  const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]" }, q = { class: "flex-1 px-4 sm:px-6 pb-4 overflow-y-auto" }, G = { class: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden" }, H = { class: "w-full relative overflow-auto p-5 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500" }, Q = { class: "vs-form w-full" }, te = /* @__PURE__ */ O({
7
7
  __name: "EntityCreatePage",
@@ -9,15 +9,15 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
9
9
  entityKey: { default: "" }
10
10
  },
11
11
  setup(S) {
12
- const V = z(() => import("@opengis/form")), m = s({}), p = s(null), b = s(null), f = P(), v = R(), N = S, g = s({}), w = s(""), l = u(() => v.path.replace(/\/(add|new)$/, "")), i = u(() => {
12
+ const V = z(() => import("@opengis/form")), m = s({}), p = s(null), b = s(null), v = P(), f = R(), N = S, g = s({}), w = s(""), l = u(() => f.path.replace(/\/(add|new)$/, "")), i = u(() => {
13
13
  var t;
14
- return ((t = f.resolve(l.value).meta) == null ? void 0 : t.title) ?? "";
14
+ return ((t = v.resolve(l.value).meta) == null ? void 0 : t.title) ?? "";
15
15
  }), T = u(() => i.value ? `Додати в ${i.value.toLowerCase()}` : "Додати"), x = u(() => {
16
16
  var t;
17
- return ((t = v.meta) == null ? void 0 : t.description) ?? "";
17
+ return ((t = f.meta) == null ? void 0 : t.description) ?? "";
18
18
  });
19
19
  function _() {
20
- f.push(l.value || "/");
20
+ v.push(l.value || "/");
21
21
  }
22
22
  async function B() {
23
23
  if (!b.value) {
@@ -49,10 +49,10 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
49
49
  });
50
50
  return;
51
51
  }
52
- await e.json(), d({ title: "Success!", message: "Object created." }), f.back();
52
+ await e.json(), d({ title: "Success!", message: "Object created." }), v.back();
53
53
  }
54
54
  return D(async () => {
55
- const t = N.entityKey || String(v.name ?? "").split("-")[0], e = await fetch(`/api/form/gis.${t}.table`).then((r) => r.json());
55
+ const t = N.entityKey || String(f.name ?? "").split("-")[0], e = await fetch(`/api/form/gis.${t}.table`).then((r) => r.json());
56
56
  b.value = e.token, w.value = e.id, p.value = e.schema, document.title = T.value;
57
57
  }), (t, e) => {
58
58
  const r = I("router-link");
@@ -65,12 +65,12 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
65
65
  class: "text-gray-500 hover:text-gray-700"
66
66
  }, {
67
67
  default: n(() => [
68
- j(y(i.value), 1)
68
+ j(k(i.value), 1)
69
69
  ]),
70
70
  _: 1
71
71
  }, 8, ["to"]),
72
72
  o("span", J, [
73
- c(k(A), {
73
+ c(y(F), {
74
74
  size: 16,
75
75
  class: "shrink-0"
76
76
  })
@@ -86,12 +86,12 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
86
86
  onClick: _,
87
87
  "aria-label": "Назад"
88
88
  }, [
89
- c(k(F), {
89
+ c(y(A), {
90
90
  size: 20,
91
91
  class: "shrink-0"
92
92
  })
93
93
  ]),
94
- o("span", null, y(i.value || "Створення"), 1)
94
+ o("span", null, k(i.value || "Створення"), 1)
95
95
  ])
96
96
  ]),
97
97
  actions: n(() => [
@@ -109,7 +109,7 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
109
109
  x.value ? {
110
110
  name: "description",
111
111
  fn: n(() => [
112
- j(y(x.value), 1)
112
+ j(k(x.value), 1)
113
113
  ]),
114
114
  key: "0"
115
115
  } : void 0
@@ -118,7 +118,7 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
118
118
  o("div", G, [
119
119
  o("div", H, [
120
120
  o("div", Q, [
121
- p.value ? (h(), L(k(V), {
121
+ p.value ? (h(), L(y(V), {
122
122
  key: 0,
123
123
  values: m.value,
124
124
  "onUpdate:values": e[0] || (e[0] = (a) => m.value = a),
@@ -1,7 +1,7 @@
1
- import { defineComponent as D, defineAsyncComponent as R, ref as i, computed as p, onMounted as U, resolveComponent as A, openBlock as d, createElementBlock as w, Fragment as _, createVNode as s, createSlots as F, withCtx as n, createTextVNode as C, toDisplayString as v, createElementVNode as r, unref as b, createCommentVNode as $, createBlock as K } from "vue";
1
+ import { defineComponent as D, defineAsyncComponent as R, ref as i, computed as p, onMounted as U, resolveComponent as A, openBlock as d, createElementBlock as w, Fragment as _, createVNode as s, createSlots as F, withCtx as n, createElementVNode as o, unref as v, toDisplayString as b, createTextVNode as C, createCommentVNode as $, createBlock as K } from "vue";
2
2
  import { notify as f } from "@opengis/core";
3
3
  import { useRoute as L, useRouter as O } from "vue-router";
4
- import { LucideChevronRight as j, ArrowLeft as J } from "lucide-vue-next";
4
+ import { ArrowLeft as J, LucideChevronRight as j } from "lucide-vue-next";
5
5
  import { _ as M } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
6
6
  const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-center gap-2 mt-[0.4rem]" }, H = { class: "flex-1 px-4 sm:px-6 pb-4 overflow-y-auto" }, I = { class: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden" }, Q = { class: "w-full relative overflow-auto p-5 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500" }, W = { class: "vs-form w-full" }, ae = /* @__PURE__ */ D({
7
7
  __name: "EntityEditPage",
@@ -9,17 +9,17 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
9
9
  entityKey: { default: "" }
10
10
  },
11
11
  setup(N) {
12
- const T = R(() => import("@opengis/form")), u = i({}), g = i(null), h = i(null), y = i({}), c = i(""), m = L(), k = O(), z = N.entityKey || String(m.name ?? "").split("-")[0], { id: x } = m.params, o = p(
12
+ const T = R(() => import("@opengis/form")), u = i({}), g = i(null), h = i(null), y = i({}), c = i(""), m = L(), k = O(), z = N.entityKey || String(m.name ?? "").split("-")[0], { id: x } = m.params, r = p(
13
13
  () => m.path.replace(/\/edit\/[^/]+$/, "").replace(/\/[^/]+\/edit$/, "")
14
- ), B = p(() => x ? `${o.value}/${x}` : o.value || "/"), E = p(() => {
14
+ ), B = p(() => x ? `${r.value}/${x}` : r.value || "/"), E = p(() => {
15
15
  var t;
16
- return ((t = k.resolve(o.value).meta) == null ? void 0 : t.title) ?? "";
16
+ return ((t = k.resolve(r.value).meta) == null ? void 0 : t.title) ?? "";
17
17
  }), S = p(() => {
18
18
  var t;
19
19
  return ((t = m.meta) == null ? void 0 : t.description) ?? "";
20
20
  });
21
21
  function V() {
22
- k.push(o.value || "/");
22
+ k.push(r.value || "/");
23
23
  }
24
24
  async function P() {
25
25
  const t = y.value.validate();
@@ -69,18 +69,18 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
69
69
  return d(), w(_, null, [
70
70
  s(M, { variant: "form" }, F({
71
71
  breadcrumbs: n(() => [
72
- o.value ? (d(), w(_, { key: 0 }, [
72
+ r.value ? (d(), w(_, { key: 0 }, [
73
73
  s(a, {
74
- to: o.value,
74
+ to: r.value,
75
75
  class: "text-gray-500 hover:text-gray-700"
76
76
  }, {
77
77
  default: n(() => [
78
- C(v(E.value), 1)
78
+ C(b(E.value), 1)
79
79
  ]),
80
80
  _: 1
81
81
  }, 8, ["to"]),
82
- r("span", Y, [
83
- s(b(j), {
82
+ o("span", Y, [
83
+ s(v(j), {
84
84
  size: 16,
85
85
  class: "shrink-0"
86
86
  })
@@ -92,41 +92,41 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
92
92
  class: "text-gray-500 hover:text-gray-700"
93
93
  }, {
94
94
  default: n(() => [
95
- C(v(c.value), 1)
95
+ C(b(c.value), 1)
96
96
  ]),
97
97
  _: 1
98
98
  }, 8, ["to"]),
99
- r("span", q, [
100
- s(b(j), {
99
+ o("span", q, [
100
+ s(v(j), {
101
101
  size: 16,
102
102
  class: "shrink-0"
103
103
  })
104
104
  ])
105
105
  ], 64)) : $("", !0),
106
- e[2] || (e[2] = r("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
106
+ e[2] || (e[2] = o("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
107
107
  ]),
108
108
  title: n(() => [
109
- r("div", G, [
110
- r("button", {
109
+ o("div", G, [
110
+ o("button", {
111
111
  type: "button",
112
112
  class: "p-0 m-0 border-0 bg-transparent cursor-pointer text-inherit hover:opacity-80",
113
113
  onClick: V,
114
114
  "aria-label": "Назад"
115
115
  }, [
116
- s(b(J), {
116
+ s(v(J), {
117
117
  size: 20,
118
118
  class: "shrink-0"
119
119
  })
120
120
  ]),
121
- r("span", null, v(c.value || E.value || "Редагування"), 1)
121
+ o("span", null, b(c.value || E.value || "Редагування"), 1)
122
122
  ])
123
123
  ]),
124
124
  actions: n(() => [
125
- r("button", {
125
+ o("button", {
126
126
  class: "cursor-pointer flex items-center px-3 py-2 text-sm font-medium text-gray-800 duration-300 bg-white border border-gray-100 rounded-lg shadow gap-x-2 focus:outline-none hover:bg-gray-50 hover:border-gray-100",
127
127
  onClick: V
128
128
  }, " Назад "),
129
- r("button", {
129
+ o("button", {
130
130
  onClick: P,
131
131
  class: "cursor-pointer inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 hover:bg-blue-700 border border-transparent rounded-lg gap-x-2 hover:text-white"
132
132
  }, " Зберегти ")
@@ -136,16 +136,16 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
136
136
  S.value ? {
137
137
  name: "description",
138
138
  fn: n(() => [
139
- C(v(S.value), 1)
139
+ C(b(S.value), 1)
140
140
  ]),
141
141
  key: "0"
142
142
  } : void 0
143
143
  ]), 1024),
144
- r("div", H, [
145
- r("div", I, [
146
- r("div", Q, [
147
- r("div", W, [
148
- g.value ? (d(), K(b(T), {
144
+ o("div", H, [
145
+ o("div", I, [
146
+ o("div", Q, [
147
+ o("div", W, [
148
+ g.value ? (d(), K(v(T), {
149
149
  key: 0,
150
150
  schema: g.value,
151
151
  values: u.value,