@opengis/gis 0.2.120 → 0.2.122

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 (195) hide show
  1. package/README.md +148 -148
  2. package/dist/{CardIcon-Dx_myDwM.js → CardIcon-Bu_mm6QX.js} +1 -1
  3. package/dist/{EntityCreatePage-Ch8NU_Yw.js → EntityCreatePage-Da8XgBKU.js} +14 -14
  4. package/dist/{EntityEditPage-CRRcW7FL.js → EntityEditPage-QktKEAxz.js} +27 -27
  5. package/dist/{EntityTablePage-DY9v1aWL.js → EntityTablePage-BQKMFYxV.js} +26 -26
  6. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DgQHLSak.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-CF1EEob3.js} +1 -1
  7. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-BQ32ioLC.js → HeaderActions.vue_vue_type_script_setup_true_lang-B2ErIdAR.js} +30 -30
  8. package/dist/{MapSettings-CaGPr5uG.js → MapSettings-eE5rNSLf.js} +33 -33
  9. package/dist/{RastersTablePage-CJyO2DoI.js → RastersTablePage-B_vF9yl7.js} +29 -29
  10. package/dist/{cartocss-Bhat1m61.js → cartocss-DcepkzNt.js} +12 -12
  11. package/dist/{import-utils-BxeYqcn7.js → import-utils-CDIgsIUf.js} +33 -33
  12. package/dist/{index-Ba6SE4TN.js → index-CActL7Mw.js} +64 -64
  13. package/dist/index.css +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.umd.cjs +12 -12
  16. package/dist/{raster-Cbs1xR5Y.js → raster-BsBJMgM3.js} +101 -101
  17. package/dist/{register-D0AsH83v.js → register-BSlpAeRe.js} +8 -8
  18. package/dist/{service-C4nt_DBO.js → service-CbPCldfY.js} +11 -11
  19. package/dist/{vs-datatable-QG5b0CCL.js → vs-datatable-RkRQEa10.js} +28 -28
  20. package/module/cls.json +6 -6
  21. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  22. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  23. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  24. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  25. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  26. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  27. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  28. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  29. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  30. package/module/gis/card/gis.registers.table/index.yml +23 -23
  31. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  32. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  33. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  34. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  35. package/module/gis/card/gis.services.table/index.yml +25 -25
  36. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  37. package/module/gis/card/gis.services.table/source.hbs +25 -25
  38. package/module/gis/cls/bool.yes_no.json +12 -12
  39. package/module/gis/cls/encoding.json +14 -14
  40. package/module/gis/cls/geom_type.json +14 -14
  41. package/module/gis/cls/gis.column_type.json +34 -34
  42. package/module/gis/cls/gis.column_view_type.json +26 -26
  43. package/module/gis/cls/gis.filter_type.json +22 -22
  44. package/module/gis/cls/language.json +10 -10
  45. package/module/gis/cls/meta.service_type.json +42 -42
  46. package/module/gis/cls/ogc.service.json +21 -21
  47. package/module/gis/cls/service_type.json +42 -42
  48. package/module/gis/cls/source_type.json +10 -10
  49. package/module/gis/cls/standarts.json +6 -6
  50. package/module/gis/cls/topic_category.json +106 -106
  51. package/module/gis/cls/update_frequency.json +29 -29
  52. package/module/gis/cls/view.json +21 -21
  53. package/module/gis/form/feedback.answer.form.json +10 -10
  54. package/module/gis/form/gis.cartocss.form.json +54 -54
  55. package/module/gis/form/gis.group_list.form.json +17 -17
  56. package/module/gis/form/gis.maps.form.json +61 -61
  57. package/module/gis/form/gis.metadata.form.json +240 -240
  58. package/module/gis/form/gis.metadata_new.form.json +195 -195
  59. package/module/gis/form/gis.ogc_service.form.json +51 -51
  60. package/module/gis/form/gis.rasters.form.json +76 -76
  61. package/module/gis/form/gis.registers.form.json +124 -124
  62. package/module/gis/form/gis.registers_column.form.json +84 -84
  63. package/module/gis/form/gis.registers_filter.form.json +65 -65
  64. package/module/gis/form/gis.services.form.json +111 -111
  65. package/module/gis/form/gis.services_attributes.form.json +75 -75
  66. package/module/gis/form/gis.services_filter.form.json +65 -65
  67. package/module/gis/menu.json +43 -43
  68. package/module/gis/select/admin.cls.name.sql +2 -2
  69. package/module/gis/select/layer_list.sql +7 -7
  70. package/module/gis/select/layer_list_text.sql +7 -7
  71. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  72. package/module/gis/select/pg.columns.parent.sql +6 -6
  73. package/module/gis/select/pg.table_name.sql +17 -17
  74. package/module/gis/select/service_id.sql +1 -1
  75. package/module/gis/table/gis.cartocss.table.json +74 -74
  76. package/module/gis/table/gis.group_list.table.json +58 -58
  77. package/module/gis/table/gis.maps.table.json +110 -110
  78. package/module/gis/table/gis.metadata.table.json +70 -70
  79. package/module/gis/table/gis.metadata_new.table.json +137 -137
  80. package/module/gis/table/gis.ogc_service.table.json +100 -100
  81. package/module/gis/table/gis.rasters.table.json +101 -101
  82. package/module/gis/table/gis.registers.table.json +143 -143
  83. package/module/gis/table/gis.services.table.json +120 -120
  84. package/module/gis/table/site.gis.registers.table.json +88 -88
  85. package/module/gis/table/site.gis.services.table.json +106 -106
  86. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  87. package/module/gis/tokens.yml +5 -5
  88. package/module/permissions/form/permissions.users.form.json +151 -151
  89. package/module/permissions/table/gis.permissions.table.json +97 -97
  90. package/module/test/cls/bp_build_type.json +37 -37
  91. package/module/test/cls/ts.temp_status.json +18 -18
  92. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  93. package/module/test/cls/ts.temp_type.json +9 -9
  94. package/module/test/layer/bp.json +59 -59
  95. package/module/test/layer/bp1.yml +33 -33
  96. package/module/test/layer/individual.yml +53 -53
  97. package/module/test/layer/ts.linking_passport.yml +55 -55
  98. package/module/test/layer/ts.temp_structure.yml +50 -50
  99. package/module/test/map/addr.yml +21 -21
  100. package/module/test/map/bp_myo.json +43 -43
  101. package/module/test/map/bpf.json +43 -43
  102. package/module/test/map/main.json +37 -37
  103. package/module/test/map/mbd.json +92 -92
  104. package/module/test/map/ts.json +53 -53
  105. package/module/test/select/address_id.json +2 -2
  106. package/module/test/select/address_id.sql +7 -7
  107. package/module/test/table/data_address.street.table.json +69 -69
  108. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  109. package/package.json +75 -75
  110. package/plugin.js +55 -55
  111. package/server/migrations/array_intersect.sql +13 -13
  112. package/server/migrations/cartocss.sql +27 -27
  113. package/server/migrations/group_list.sql +74 -74
  114. package/server/migrations/maps.sql +30 -30
  115. package/server/migrations/metadata.sql +415 -415
  116. package/server/migrations/ogc.sql +106 -106
  117. package/server/migrations/rasters.sql +265 -265
  118. package/server/migrations/services.sql +247 -247
  119. package/server/migrations/services_users_rel.sql +22 -22
  120. package/server/migrations/widgets.sql +20 -20
  121. package/server/plugins/crons.js +21 -21
  122. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -109
  123. package/server/plugins/mapnik/funcs/mapnik.js +146 -146
  124. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  125. package/server/plugins/mapnik/map.proto +234 -234
  126. package/server/plugins/vite.js +74 -74
  127. package/server/routes/gis/cartocss/add.cartocss.js +42 -42
  128. package/server/routes/gis/cartocss/get.cartocss.js +50 -50
  129. package/server/routes/gis/checkXML.js +118 -118
  130. package/server/routes/gis/dashboard.js +29 -29
  131. package/server/routes/gis/index.mjs +87 -87
  132. package/server/routes/gis/metadata/editMetadata.js +34 -34
  133. package/server/routes/gis/metadata/metadataXML.js +13 -13
  134. package/server/routes/gis/ogc/map.info.point.js +124 -124
  135. package/server/routes/gis/registers/add.registry.js +35 -35
  136. package/server/routes/gis/registers/del.registry.js +14 -14
  137. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  138. package/server/routes/gis/registers/funcs/columns.js +4 -4
  139. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  140. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  141. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +146 -146
  142. package/server/routes/gis/registers/gis.export.js +153 -153
  143. package/server/routes/gis/registers/gis.registry.js +64 -64
  144. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  145. package/server/routes/gis/registers/insert.columns.js +107 -107
  146. package/server/routes/gis/registers/insert.filters.js +110 -110
  147. package/server/routes/gis/registers/map.registry.js +79 -79
  148. package/server/routes/gis/services/add.service.js +64 -64
  149. package/server/routes/gis/services/del.service.js +12 -12
  150. package/server/routes/gis/services/get.layer.geom.js +27 -27
  151. package/server/routes/gis/services/get.services.col.js +33 -33
  152. package/server/routes/gis/services/get.services.js +84 -84
  153. package/server/routes/gis/services/legend.auto.js +77 -77
  154. package/server/routes/map/controllers/clearTiles.js +34 -34
  155. package/server/routes/map/controllers/geojson.js +187 -187
  156. package/server/routes/map/controllers/jsonData.js +205 -205
  157. package/server/routes/map/controllers/layerList.js +102 -102
  158. package/server/routes/map/controllers/map.js +123 -123
  159. package/server/routes/map/controllers/mapCatalog.js +72 -72
  160. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  161. package/server/routes/map/controllers/mapFeatures.js +128 -128
  162. package/server/routes/map/controllers/mapFormat.js +222 -222
  163. package/server/routes/map/controllers/mapTiles.js +152 -152
  164. package/server/routes/map/controllers/maps.js +15 -15
  165. package/server/routes/map/controllers/marker_icon.js +43 -43
  166. package/server/routes/map/controllers/vtile.js +172 -172
  167. package/server/routes/map/index.mjs +169 -169
  168. package/server/routes/map/maps/add.map.js +43 -43
  169. package/server/routes/map/maps/del.map.js +18 -18
  170. package/server/routes/map/maps/get.map.js +112 -112
  171. package/server/routes/map/vtile1.js +179 -179
  172. package/server/routes/map/widgets/add.widget.js +38 -38
  173. package/server/routes/map/widgets/del.widget.js +22 -22
  174. package/server/routes/map/widgets/get.widget.js +40 -40
  175. package/server/routes/mapnik/controllers/clearTiles.js +106 -106
  176. package/server/routes/mapnik/controllers/createXml.js +67 -67
  177. package/server/routes/mapnik/controllers/createXmlMulti.js +76 -76
  178. package/server/routes/mapnik/controllers/fileSearch.js +38 -38
  179. package/server/routes/mapnik/controllers/fileStat.js +28 -28
  180. package/server/routes/mapnik/controllers/mapnikLogger.js +29 -29
  181. package/server/routes/mapnik/controllers/mapnikStat.js +20 -20
  182. package/server/routes/mapnik/controllers/rasterInfo.js +54 -54
  183. package/server/routes/mapnik/controllers/readDir.js +22 -22
  184. package/server/routes/mapnik/controllers/rtile.js +150 -150
  185. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  186. package/server/routes/mapnik/functions/cartoBounds.js +28 -28
  187. package/server/routes/mapnik/functions/uploadXML.js +110 -110
  188. package/server/routes/mapnik/index.js +27 -27
  189. package/server/routes/permissions/controllers/catalog.permissions.edit.js +22 -22
  190. package/server/routes/permissions/controllers/catalog.permissions.js +7 -7
  191. package/server/routes/permissions/controllers/gis.catalog.js +80 -80
  192. package/server/routes/permissions/controllers/utils/get.permissions.js +59 -59
  193. package/server/routes/permissions/index.mjs +18 -18
  194. package/server/routes/root.mjs +3 -3
  195. package/utils.js +13 -13
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-Ba6SE4TN.js";
2
+ import { _ as o } from "./index-CActL7Mw.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, createElementVNode as o, unref as y, toDisplayString as k, createTextVNode as j, 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, createTextVNode as j, toDisplayString as y, createElementVNode as o, unref as k, 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 { ArrowLeft as A, LucideChevronRight as F } from "lucide-vue-next";
4
+ import { LucideChevronRight as A, ArrowLeft 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), v = P(), f = R(), N = S, g = s({}), w = s(""), l = u(() => f.path.replace(/\/(add|new)$/, "")), i = u(() => {
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(() => {
13
13
  var t;
14
- return ((t = v.resolve(l.value).meta) == null ? void 0 : t.title) ?? "";
14
+ return ((t = f.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 = f.meta) == null ? void 0 : t.description) ?? "";
17
+ return ((t = v.meta) == null ? void 0 : t.description) ?? "";
18
18
  });
19
19
  function _() {
20
- v.push(l.value || "/");
20
+ f.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." }), v.back();
52
+ await e.json(), d({ title: "Success!", message: "Object created." }), f.back();
53
53
  }
54
54
  return D(async () => {
55
- const t = N.entityKey || String(f.name ?? "").split("-")[0], e = await fetch(`/api/form/gis.${t}.table`).then((r) => r.json());
55
+ const t = N.entityKey || String(v.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(k(i.value), 1)
68
+ j(y(i.value), 1)
69
69
  ]),
70
70
  _: 1
71
71
  }, 8, ["to"]),
72
72
  o("span", J, [
73
- c(y(F), {
73
+ c(k(A), {
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(y(A), {
89
+ c(k(F), {
90
90
  size: 20,
91
91
  class: "shrink-0"
92
92
  })
93
93
  ]),
94
- o("span", null, k(i.value || "Створення"), 1)
94
+ o("span", null, y(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(k(x.value), 1)
112
+ j(y(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(y(V), {
121
+ p.value ? (h(), L(k(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, createElementVNode as o, unref as v, toDisplayString as b, createTextVNode as C, 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, createTextVNode as C, toDisplayString as v, createElementVNode as r, unref as b, 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 { ArrowLeft as J, LucideChevronRight as j } from "lucide-vue-next";
4
+ import { LucideChevronRight as j, ArrowLeft 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, r = 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, o = p(
13
13
  () => m.path.replace(/\/edit\/[^/]+$/, "").replace(/\/[^/]+\/edit$/, "")
14
- ), B = p(() => x ? `${r.value}/${x}` : r.value || "/"), E = p(() => {
14
+ ), B = p(() => x ? `${o.value}/${x}` : o.value || "/"), E = p(() => {
15
15
  var t;
16
- return ((t = k.resolve(r.value).meta) == null ? void 0 : t.title) ?? "";
16
+ return ((t = k.resolve(o.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(r.value || "/");
22
+ k.push(o.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
- r.value ? (d(), w(_, { key: 0 }, [
72
+ o.value ? (d(), w(_, { key: 0 }, [
73
73
  s(a, {
74
- to: r.value,
74
+ to: o.value,
75
75
  class: "text-gray-500 hover:text-gray-700"
76
76
  }, {
77
77
  default: n(() => [
78
- C(b(E.value), 1)
78
+ C(v(E.value), 1)
79
79
  ]),
80
80
  _: 1
81
81
  }, 8, ["to"]),
82
- o("span", Y, [
83
- s(v(j), {
82
+ r("span", Y, [
83
+ s(b(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(b(c.value), 1)
95
+ C(v(c.value), 1)
96
96
  ]),
97
97
  _: 1
98
98
  }, 8, ["to"]),
99
- o("span", q, [
100
- s(v(j), {
99
+ r("span", q, [
100
+ s(b(j), {
101
101
  size: 16,
102
102
  class: "shrink-0"
103
103
  })
104
104
  ])
105
105
  ], 64)) : $("", !0),
106
- e[2] || (e[2] = o("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
106
+ e[2] || (e[2] = r("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
107
107
  ]),
108
108
  title: n(() => [
109
- o("div", G, [
110
- o("button", {
109
+ r("div", G, [
110
+ r("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(v(J), {
116
+ s(b(J), {
117
117
  size: 20,
118
118
  class: "shrink-0"
119
119
  })
120
120
  ]),
121
- o("span", null, b(c.value || E.value || "Редагування"), 1)
121
+ r("span", null, v(c.value || E.value || "Редагування"), 1)
122
122
  ])
123
123
  ]),
124
124
  actions: n(() => [
125
- o("button", {
125
+ r("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
- o("button", {
129
+ r("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(b(S.value), 1)
139
+ C(v(S.value), 1)
140
140
  ]),
141
141
  key: "0"
142
142
  } : void 0
143
143
  ]), 1024),
144
- o("div", H, [
145
- o("div", I, [
146
- o("div", Q, [
147
- o("div", W, [
148
- g.value ? (d(), K(v(T), {
144
+ r("div", H, [
145
+ r("div", I, [
146
+ r("div", Q, [
147
+ r("div", W, [
148
+ g.value ? (d(), K(b(T), {
149
149
  key: 0,
150
150
  schema: g.value,
151
151
  values: u.value,