@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.
- package/dist/{CardIcon-golqfa-Y.js → CardIcon-xkRDr3_E.js} +1 -1
- package/dist/{EntityTablePage-BhmxePgR.js → EntityTablePage-D1IR5Bmq.js} +1 -1
- package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BFa27smR.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJKIgAkD.js} +1 -1
- 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
- package/dist/{MapSettings-F_DT3xKl.js → MapSettings-DIOlNpt6.js} +1 -1
- package/dist/{RastersTablePage-3rXQ0baG.js → RastersTablePage-OD1VqHP8.js} +1 -1
- package/dist/{cartocss-CN-UrS7V.js → cartocss-BiamDcNB.js} +5 -5
- package/dist/{import-utils-F5ErbNz1.js → import-utils-CvUG1jV0.js} +1 -1
- package/dist/{index-CdB0VXro.js → index-C6W8IkTm.js} +1224 -1221
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +53 -40
- package/dist/{raster-DWmiWlf7.js → raster-BbIiZGoX.js} +3 -3
- package/dist/{register-D1jLD0hK.js → register-Dt2QoLZ3.js} +3 -3
- package/dist/service-CdUYntMi.js +3472 -0
- package/dist/{vs-datatable-BWItxbtK.js → vs-datatable-BELnJrfM.js} +2 -3
- package/module/gis/card/gis.metadata.table/index.yml +22 -22
- package/module/gis/card/gis.rasters.table/index.yml +11 -11
- package/module/gis/card/gis.registers.table/index.yml +23 -23
- package/module/gis/card/gis.services.table/index.yml +25 -25
- package/module/gis/cls/bool.yes_no.json +12 -12
- package/module/gis/cls/encoding.json +14 -14
- package/module/gis/cls/geom_type.json +14 -14
- package/module/gis/cls/gis.column_type.json +34 -34
- package/module/gis/cls/gis.column_view_type.json +26 -26
- package/module/gis/cls/gis.filter_type.json +22 -22
- package/module/gis/cls/language.json +10 -10
- package/module/gis/cls/meta.service_type.json +42 -42
- package/module/gis/cls/ogc.service.json +21 -21
- package/module/gis/cls/source_type.json +10 -10
- package/module/gis/cls/standarts.json +6 -6
- package/module/gis/cls/topic_category.json +106 -106
- package/module/gis/cls/update_frequency.json +29 -29
- package/module/gis/cls/view.json +21 -21
- package/module/gis/form/feedback.answer.form.json +10 -10
- package/module/gis/form/gis.cartocss.form.json +64 -64
- package/module/gis/form/gis.group_list.form.json +17 -17
- package/module/gis/form/gis.maps.form.json +61 -61
- package/module/gis/form/gis.metadata.form.json +240 -240
- package/module/gis/form/gis.metadata_new.form.json +195 -195
- package/module/gis/form/gis.ogc_service.form.json +51 -51
- package/module/gis/form/gis.rasters.form.json +76 -76
- package/module/gis/form/gis.registers.form.json +124 -124
- package/module/gis/form/gis.registers_column.form.json +84 -84
- package/module/gis/form/gis.registers_filter.form.json +65 -65
- package/module/gis/form/gis.services.form.json +111 -111
- package/module/gis/form/gis.services_attributes.form.json +75 -75
- package/module/gis/form/gis.services_filter.form.json +65 -65
- package/module/gis/menu.json +43 -43
- package/module/gis/select/admin.cls.name.sql +9 -9
- package/module/gis/select/layer_list.sql +7 -7
- package/module/gis/select/layer_list_text.sql +7 -7
- package/module/gis/select/pg.column_name.geometry.sql +12 -12
- package/module/gis/select/pg.columns.parent.sql +6 -6
- package/module/gis/select/pg.table_name.sql +17 -17
- package/module/gis/select/service_id.sql +1 -1
- package/module/gis/select/srid.sql +7 -7
- package/module/gis/table/gis.cartocss.table.json +74 -74
- package/module/gis/table/gis.group_list.table.json +58 -58
- package/module/gis/table/gis.maps.table.json +110 -110
- package/module/gis/table/gis.metadata.table.json +70 -70
- package/module/gis/table/gis.metadata_new.table.json +137 -137
- package/module/gis/table/gis.ogc_service.table.json +100 -100
- package/module/gis/table/gis.rasters.table.json +113 -113
- package/module/gis/table/gis.registers.table.json +143 -143
- package/module/gis/table/gis.services.table.json +120 -120
- package/module/gis/table/site.gis.registers.table.json +88 -88
- package/module/gis/table/site.gis.services.table.json +106 -106
- package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
- package/module/gis/tokens.yml +5 -5
- package/module/permissions/form/permissions.users.form.json +151 -151
- package/module/permissions/table/gis.permissions.table.json +97 -97
- package/module/test/map/addr.json +303 -0
- package/module/test/map/{addr.yml → addr1.yml} +3 -1
- package/module/test/select/address.str_id.sql +3 -0
- package/package.json +10 -10
- package/plugin.js +21 -12
- package/server/plugins/mapnik/funcs/checkRasterFile.js +1 -3
- package/server/routes/cartocss/cartocss.route.js +31 -0
- package/server/routes/cartocss/cartocss.route.test.js +79 -0
- package/server/routes/cartocss/cartocss.schema.js +73 -0
- package/server/routes/{gis/cartocss → cartocss/functions}/add.cartocss.js +8 -11
- package/server/routes/{gis/cartocss → cartocss/functions}/get.cartocss.js +11 -13
- package/server/routes/gis/functions/checkXML.js +107 -0
- package/server/routes/gis/functions/dashboard.js +24 -0
- package/server/routes/gis/gis.route.js +26 -0
- package/server/routes/gis/gis.route.test.js +34 -0
- package/server/routes/gis/gis.schema.js +1 -0
- package/server/routes/map/{controllers → functions}/clearTiles.js +9 -8
- package/server/routes/map/{controllers → functions}/geojson.js +43 -43
- package/server/routes/map/{controllers → functions}/gis.convert.js +15 -23
- package/server/routes/map/{controllers → functions}/gis.icon.js +23 -10
- package/server/routes/map/{controllers → functions}/jsonData.js +72 -71
- package/server/routes/map/{controllers → functions}/layerList.js +17 -17
- package/server/routes/map/{controllers → functions}/map.js +8 -9
- package/server/routes/map/{controllers → functions}/mapCatalog.js +7 -7
- package/server/routes/map/functions/mapCatalogAttribute.js +54 -0
- package/server/routes/map/{controllers → functions}/mapFeatures.js +22 -18
- package/server/routes/map/{controllers → functions}/mapFormat.js +25 -28
- package/server/routes/map/{controllers → functions}/mapTiles.js +39 -30
- package/server/routes/map/{controllers → functions}/maps.js +3 -3
- package/server/routes/map/{controllers → functions}/marker_icon.js +1 -1
- package/server/routes/map/{controllers → functions}/parseGeoFile.js +10 -11
- package/server/routes/map/{controllers → functions}/pointHeight.js +3 -7
- package/server/routes/map/{controllers → functions}/vtile.js +5 -3
- package/server/routes/map/{vtile1.js → functions/vtile1.js} +39 -33
- package/server/routes/map/map.route.js +280 -0
- package/server/routes/map/map.route.test.js +503 -0
- package/server/routes/map/map.schema.js +356 -0
- package/server/routes/mapnik/{controllers → functions}/clearTiles.js +26 -29
- package/server/routes/mapnik/{controllers → functions}/createXml.js +17 -20
- package/server/routes/mapnik/{controllers → functions}/createXmlMulti.js +11 -15
- package/server/routes/mapnik/{controllers → functions}/fileSearch.js +6 -9
- package/server/routes/mapnik/functions/fileStat.js +28 -0
- package/server/routes/mapnik/{controllers → functions}/pretile.js +29 -35
- package/server/routes/mapnik/{controllers → functions}/rasterInfo.js +19 -10
- package/server/routes/mapnik/{controllers → functions}/readDir.js +4 -4
- package/server/routes/mapnik/functions/rtile.js +164 -0
- package/server/routes/mapnik/{controllers → functions}/uploadRaster.js +19 -24
- package/server/routes/mapnik/functions/uploadXML.js +27 -0
- package/server/routes/mapnik/mapnik.route.js +102 -0
- package/server/routes/mapnik/mapnik.route.test.js +371 -0
- package/server/routes/mapnik/mapnik.schema.mjs +190 -0
- package/server/routes/mapnik.prefixless/functions/mapnikLogger.js +31 -0
- package/server/routes/{mapnik/controllers → mapnik.prefixless/functions}/mapnikStat.js +7 -5
- package/server/routes/mapnik.prefixless/mapnik.prefixless.route.js +20 -0
- package/server/routes/mapnik.prefixless/mapnik.prefixless.route.test.js +91 -0
- package/server/routes/mapnik.prefixless/mapnik.prefixless.schema.mjs +27 -0
- package/server/routes/maps/functions/add.map.js +42 -0
- package/server/routes/{map/maps → maps/functions}/del.map.js +6 -7
- package/server/routes/{map/maps → maps/functions}/get.map.js +12 -11
- package/server/routes/maps/maps.route.js +58 -0
- package/server/routes/maps/maps.route.test.js +231 -0
- package/server/routes/maps/maps.schema.js +10 -0
- package/server/routes/metadata/functions/editMetadata.js +35 -0
- package/server/routes/metadata/functions/metadataXML.js +19 -0
- package/server/routes/metadata/metadata.route.js +26 -0
- package/server/routes/metadata/metadata.route.test.js +47 -0
- package/server/routes/metadata/metadata.schema.js +53 -0
- package/server/routes/{gis/ogc → ogc/functions}/map.info.point.js +22 -29
- package/server/routes/ogc/ogc.route.js +21 -0
- package/server/routes/ogc/ogc.route.test.js +54 -0
- package/server/routes/ogc/ogc.schema.js +16 -0
- package/server/routes/permissions/functions/catalog.permissions.edit.js +20 -0
- package/server/routes/permissions/functions/catalog.permissions.js +13 -0
- package/server/routes/permissions/{controllers → functions}/gis.catalog.js +10 -10
- package/server/routes/permissions/permissions.route.js +35 -0
- package/server/routes/permissions/permissions.route.test.js +35 -0
- package/server/routes/permissions/permissions.schema.js +44 -0
- package/server/routes/registers/functions/add.registry.js +37 -0
- package/server/routes/{gis/registers/funcs → registers/functions}/classifiers.js +2 -2
- package/server/routes/{gis/registers → registers/functions}/del.registry.js +5 -5
- package/server/routes/{gis/registers/funcs → registers/functions}/get.info.js +9 -5
- package/server/routes/{gis/registers → registers/functions}/gis.export.js +27 -21
- package/server/routes/{gis/registers → registers/functions}/gis.registry.js +22 -15
- package/server/routes/{gis/registers → registers/functions}/gis.registry.list.js +12 -10
- package/server/routes/{gis/registers/funcs → registers/functions}/handleRegistryRequest.js +12 -11
- package/server/routes/registers/registers.route.js +80 -0
- package/server/routes/registers/registers.route.test.js +145 -0
- package/server/routes/registers/registers.schema.js +246 -0
- package/server/routes/{gis/services → services/functions}/add.service.js +14 -16
- package/server/routes/services/functions/create.route.js +93 -0
- package/server/routes/{gis/services → services/functions}/del.service.js +5 -5
- package/server/routes/{gis/services → services/functions}/get.service.users.js +15 -13
- package/server/routes/services/functions/get.services.col.js +34 -0
- package/server/routes/{gis/services → services/functions}/get.services.js +21 -16
- package/server/routes/services/services.route.js +76 -0
- package/server/routes/services/services.route.test.js +168 -0
- package/server/routes/services/services.schema.js +278 -0
- package/server/routes/widgets/functions/add.widget.js +39 -0
- package/server/routes/widgets/functions/del.widget.js +18 -0
- package/server/routes/{map/widgets → widgets/functions}/get.widget.js +12 -11
- package/server/routes/widgets/widgets.route.js +61 -0
- package/server/routes/widgets/widgets.route.test.js +144 -0
- package/server/routes/widgets/widgets.schema.js +25 -0
- package/dist/service-JGNtth-y.js +0 -2593
- package/module/cls.json +0 -7
- package/module/gis/card/gis.metadata.table/main_info.hbs +0 -21
- package/module/gis/card/gis.metadata.table/metadata_info.hbs +0 -28
- package/module/gis/card/gis.metadata.table/other.hbs +0 -26
- package/module/gis/card/gis.rasters.table/main_info.hbs +0 -27
- package/module/gis/card/gis.registers.table/cls.hbs +0 -36
- package/module/gis/card/gis.registers.table/columns.hbs +0 -89
- package/module/gis/card/gis.registers.table/filters.hbs +0 -80
- package/module/gis/card/gis.registers.table/main_info.hbs +0 -35
- package/module/gis/card/gis.registers.table/source.hbs +0 -45
- package/module/gis/card/gis.services.table/attributes.hbs +0 -91
- package/module/gis/card/gis.services.table/filters.hbs +0 -83
- package/module/gis/card/gis.services.table/main_info.hbs +0 -27
- package/module/gis/card/gis.services.table/source.hbs +0 -26
- package/module/test/cls/bp_build_type.json +0 -37
- package/module/test/cls/doc_status.json +0 -32
- package/module/test/cls/ts.temp_status.json +0 -18
- package/module/test/cls/ts.temp_structure.ts_class.json +0 -50
- package/module/test/cls/ts.temp_type.json +0 -10
- package/module/test/layer/bp.json +0 -60
- package/module/test/layer/bp1.yml +0 -33
- package/module/test/layer/individual.yml +0 -54
- package/module/test/layer/ts.linking_passport.yml +0 -56
- package/module/test/layer/ts.temp_structure.yml +0 -51
- package/module/test/map/bp_myo.json +0 -44
- package/module/test/map/bpf.json +0 -44
- package/module/test/map/main.json +0 -39
- package/module/test/map/mbd.json +0 -92
- package/module/test/map/ts.json +0 -53
- package/module/test/select/address_id.json +0 -3
- package/module/test/select/address_id.sql +0 -8
- package/module/test/select/core.user_uid.sql +0 -1
- package/module/test/table/data_address.street.table.json +0 -70
- package/module/test/table/data_bp_myo.bp.table.json +0 -123
- package/server/routes/gis/checkXML.js +0 -117
- package/server/routes/gis/dashboard.js +0 -29
- package/server/routes/gis/index.mjs +0 -92
- package/server/routes/gis/metadata/editMetadata.js +0 -34
- package/server/routes/gis/metadata/metadataXML.js +0 -13
- package/server/routes/gis/registers/add.registry.js +0 -35
- package/server/routes/gis/registers/insert.columns.js +0 -107
- package/server/routes/gis/registers/insert.filters.js +0 -110
- package/server/routes/gis/services/create.route.js +0 -96
- package/server/routes/gis/services/get.services.col.js +0 -33
- package/server/routes/map/controllers/mapCatalogAttribute.js +0 -56
- package/server/routes/map/index.mjs +0 -259
- package/server/routes/map/maps/add.map.js +0 -43
- package/server/routes/map/widgets/add.widget.js +0 -39
- package/server/routes/map/widgets/del.widget.js +0 -23
- package/server/routes/mapnik/controllers/fileStat.js +0 -28
- package/server/routes/mapnik/controllers/mapnikLogger.js +0 -29
- package/server/routes/mapnik/controllers/rtile.js +0 -167
- package/server/routes/mapnik/index.js +0 -40
- package/server/routes/permissions/controllers/catalog.permissions.edit.js +0 -22
- package/server/routes/permissions/controllers/catalog.permissions.js +0 -8
- package/server/routes/permissions/index.mjs +0 -18
- /package/server/routes/map/{controllers/pin → pin}/circle1.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/circle2.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/none.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin1.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin2.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin3.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin4.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin5.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin6.svg +0 -0
- /package/server/routes/map/{controllers/pin → pin}/pin7.svg +0 -0
- /package/server/routes/permissions/{controllers/utils → functions}/get.permissions.js +0 -0
- /package/server/routes/{gis/registers/funcs → registers/functions}/columns.js +0 -0
- /package/server/routes/{gis/registers/funcs → registers/functions}/content.type.js +0 -0
- /package/server/routes/{gis/registers → registers/functions}/map.registry.js +0 -0
- /package/server/routes/{gis/services → services/functions}/get.layer.geom.js +0 -0
- /package/server/routes/{gis/services → services/functions}/legend.auto.js +0 -0
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { getToken } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Автозаповнення фільтрів Реєстру
|
|
5
|
-
*
|
|
6
|
-
* @method put
|
|
7
|
-
* @summary Автозаповнення фільтрів Реєстру
|
|
8
|
-
* @alias createDatasetFromApplicationApi
|
|
9
|
-
* @type api
|
|
10
|
-
* @tag dataset
|
|
11
|
-
* @param {String} token - токен Реєстру
|
|
12
|
-
* @returns {Number} status - номер помилки
|
|
13
|
-
* @returns {String} error - опис помилки
|
|
14
|
-
* @returns {String} message - повідомлення про успішне виконання і передача певних даних
|
|
15
|
-
* @returns {String} headers - заголовки HTTP
|
|
16
|
-
*/
|
|
17
|
-
export default async function insertFilters(req,reply) {
|
|
18
|
-
const {
|
|
19
|
-
pg, user, params,
|
|
20
|
-
} =req;
|
|
21
|
-
const token = params.token ;
|
|
22
|
-
if (!token) return { message: 'empty token', status: 400 };
|
|
23
|
-
try {
|
|
24
|
-
|
|
25
|
-
const tokenData = await getToken({ token, uid: user?.uid });
|
|
26
|
-
if (!tokenData) return reply.code(400).send({ message: 'access restricted', status: 400 });
|
|
27
|
-
|
|
28
|
-
const { id, type } = JSON.parse(tokenData) || {};
|
|
29
|
-
|
|
30
|
-
if (!id||!type) return reply.code(403).send({ message: 'access restricted', status: 403 });
|
|
31
|
-
if (!['services','registers'].includes(type)) return reply.code(403).send({ message: 'invalid type', status: 403 });
|
|
32
|
-
|
|
33
|
-
const tableColumn = (type === 'registers') ? 'table_name':'source_path';
|
|
34
|
-
const pk = (type === 'registers')?'register_id':'service_id';
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const select = `update gis.${type} set filters=
|
|
38
|
-
(select
|
|
39
|
-
jsonb_agg(row_to_json(q)) as filter_list
|
|
40
|
-
from
|
|
41
|
-
(select
|
|
42
|
-
q.column_name as id,
|
|
43
|
-
case
|
|
44
|
-
when q.column_name='editor_id' and comment is null then 'Хто редагував'
|
|
45
|
-
when q.column_name ilike '%geom%' and comment is null then 'Геометрія'
|
|
46
|
-
when q.column_name='editor_date' and comment is null then 'Дата редагування'
|
|
47
|
-
when q.column_name='image' and comment is null then 'Зображення'
|
|
48
|
-
when q.column_name='file' and comment is null then 'Файл'
|
|
49
|
-
when q.column_name='files' and comment is null then 'Файли'
|
|
50
|
-
else comment
|
|
51
|
-
end as label,
|
|
52
|
-
case
|
|
53
|
-
when q.data_type in ('text','character varying','integer','numeric','double precision') then 'Text'
|
|
54
|
-
when q.data_type ='ARRAY' then 'Tags'
|
|
55
|
-
when q.data_type ='boolean' then 'Switcher'
|
|
56
|
-
when q.data_type in ('date','timestamp without time zone') then 'Date'
|
|
57
|
-
--else q.data_type
|
|
58
|
-
end as type,
|
|
59
|
-
'' as data,
|
|
60
|
-
false as disabled
|
|
61
|
-
from
|
|
62
|
-
(
|
|
63
|
-
select
|
|
64
|
-
column_name,
|
|
65
|
-
data_type,
|
|
66
|
-
table_schema || '.' || table_name as table_name
|
|
67
|
-
from
|
|
68
|
-
(
|
|
69
|
-
select
|
|
70
|
-
distinct table_name,
|
|
71
|
-
table_schema,
|
|
72
|
-
column_name,
|
|
73
|
-
data_type
|
|
74
|
-
from
|
|
75
|
-
information_schema.columns
|
|
76
|
-
) q
|
|
77
|
-
) q
|
|
78
|
-
|
|
79
|
-
left join lateral (
|
|
80
|
-
SELECT
|
|
81
|
-
pgd.description AS comment,
|
|
82
|
-
pgns.nspname||'.'||pgc.relname AS table_name,
|
|
83
|
-
pg_attribute.attname AS column_name
|
|
84
|
-
|
|
85
|
-
FROM
|
|
86
|
-
pg_catalog.pg_description pgd
|
|
87
|
-
JOIN pg_catalog.pg_class pgc ON pgd.objoid = pgc.oid
|
|
88
|
-
JOIN pg_catalog.pg_namespace pgns ON pgc.relnamespace = pgns.oid
|
|
89
|
-
JOIN pg_catalog.pg_attribute pg_attribute ON pgc.oid = pg_attribute.attrelid
|
|
90
|
-
AND pg_attribute.attnum = pgd.objsubid
|
|
91
|
-
)b on b.column_name=q.column_name and b.table_name=q.table_name
|
|
92
|
-
where
|
|
93
|
-
q.table_name = (
|
|
94
|
-
select
|
|
95
|
-
${tableColumn}
|
|
96
|
-
from
|
|
97
|
-
gis.${type}
|
|
98
|
-
where
|
|
99
|
-
${pk} = '${id}'
|
|
100
|
-
) and q.column_name not in ('cdate','uid','geom') and q.data_type not in ('json','USER-DEFINED'))q
|
|
101
|
-
)
|
|
102
|
-
where ${pk} = '${id}'
|
|
103
|
-
`;
|
|
104
|
-
await pg.one(select);
|
|
105
|
-
|
|
106
|
-
return { message: 'Фільтри заповнені упішно', status: 200 };
|
|
107
|
-
} catch (err) {
|
|
108
|
-
return reply.code(500).send({ message: err.message, status: 500 });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
const ROUTE_URL = 'https://data.gki.com.ua/api/osrm-routes'
|
|
2
|
-
|
|
3
|
-
function parseCoordPair(raw) {
|
|
4
|
-
const [lngRaw, latRaw] = String(raw || '').split(',')
|
|
5
|
-
const lng = Number(lngRaw)
|
|
6
|
-
const lat = Number(latRaw)
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
!Number.isFinite(lng)
|
|
10
|
-
|| !Number.isFinite(lat)
|
|
11
|
-
|| lng < -180
|
|
12
|
-
|| lng > 180
|
|
13
|
-
|| lat < -90
|
|
14
|
-
|| lat > 90
|
|
15
|
-
) {
|
|
16
|
-
throw new Error('invalid coordinate')
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return [lng, lat]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function buildRoutePoints(from, to, via) {
|
|
23
|
-
const points = [parseCoordPair(from)]
|
|
24
|
-
if (via) {
|
|
25
|
-
for (const segment of String(via).split(';')) {
|
|
26
|
-
const trimmed = segment.trim()
|
|
27
|
-
if (trimmed) points.push(parseCoordPair(trimmed))
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
points.push(parseCoordPair(to))
|
|
31
|
-
return points
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function routeOptionsQuery(query) {
|
|
35
|
-
const params = new URLSearchParams()
|
|
36
|
-
for (const key of ['optimize', 'surface', 'weight', 'mode']) {
|
|
37
|
-
const value = typeof query?.[key] === 'string' ? query[key].trim() : ''
|
|
38
|
-
if (value) params.set(key, value)
|
|
39
|
-
}
|
|
40
|
-
const qs = params.toString()
|
|
41
|
-
return qs ? `&${qs}` : ''
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function buildSegmentsBody(points) {
|
|
45
|
-
const segments = []
|
|
46
|
-
for (let i = 0; i < points.length - 1; i += 1) {
|
|
47
|
-
segments.push([
|
|
48
|
-
[points[i][0], points[i][1]],
|
|
49
|
-
[points[i + 1][0], points[i + 1][1]],
|
|
50
|
-
])
|
|
51
|
-
}
|
|
52
|
-
return JSON.stringify(segments)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default async function createRouteHandler(req, reply) {
|
|
56
|
-
try {
|
|
57
|
-
const points = buildRoutePoints(req.query.from, req.query.to, req.query.via)
|
|
58
|
-
const url = `${ROUTE_URL}?steps=true&alternatives=true${routeOptionsQuery(req.query)}`
|
|
59
|
-
|
|
60
|
-
const response = await fetch(url, {
|
|
61
|
-
method: 'POST',
|
|
62
|
-
headers: {
|
|
63
|
-
'Content-Type': 'application/json',
|
|
64
|
-
Accept: 'application/json',
|
|
65
|
-
},
|
|
66
|
-
body: buildSegmentsBody(points),
|
|
67
|
-
signal: AbortSignal.timeout(10_000),
|
|
68
|
-
}).catch(error => ({
|
|
69
|
-
ok: false,
|
|
70
|
-
status: 502,
|
|
71
|
-
headers: new Headers({ 'content-type': 'application/json' }),
|
|
72
|
-
text: async () => JSON.stringify({ error: String(error), code: 502 }),
|
|
73
|
-
}))
|
|
74
|
-
|
|
75
|
-
const contentType = response.headers?.get?.('content-type') || 'application/json'
|
|
76
|
-
const text = await response.text()
|
|
77
|
-
let payload = text
|
|
78
|
-
|
|
79
|
-
if (contentType.includes('application/json')) {
|
|
80
|
-
try {
|
|
81
|
-
payload = text ? JSON.parse(text) : null
|
|
82
|
-
} catch {
|
|
83
|
-
payload = text
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return reply
|
|
88
|
-
.status(response.status || 200)
|
|
89
|
-
.header('Content-Type', contentType)
|
|
90
|
-
.send(payload)
|
|
91
|
-
} catch (err) {
|
|
92
|
-
const message = err?.message || 'external route provider request failed'
|
|
93
|
-
const statusCode = /invalid coordinate/i.test(message) ? 400 : 502
|
|
94
|
-
return reply.status(statusCode).send({ error: message, code: statusCode })
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { metaFormat, pgClients, getTemplate } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
export default async function getServicesCol({ params = {}, pg = pgClients.client }, reply) {
|
|
4
|
-
const row = await getTemplate('layer', params.id) || await pg.query(`
|
|
5
|
-
SELECT
|
|
6
|
-
service_id, source_path, attributes
|
|
7
|
-
FROM gis.services where ${params.id ? 'service_id=$1' : '1=1'}
|
|
8
|
-
`, [params.id].filter(Boolean)).then(el => el.rows[0] || {});
|
|
9
|
-
|
|
10
|
-
if (!row.source_path) {
|
|
11
|
-
return reply.status(404).send({ code: 404, message: 'source not found' });
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const fields = await pg.query(` SELECT * FROM ${row.source_path} limit 0`).then(el => el.fields);
|
|
15
|
-
const field = fields.find(el => el.name === params.col);
|
|
16
|
-
|
|
17
|
-
if (!field) {
|
|
18
|
-
return reply.status(404).send({ message: { error: 'column not found', fields }, code: 404 });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const rows = await pg.query(`SELECT ${params.col}::text as id, ${params.col}, count(*) FROM ${row.source_path}
|
|
22
|
-
where ${params.col} is not null group by ${params.col} order by count(*) desc limit 10`).then(el => el.rows || []);
|
|
23
|
-
|
|
24
|
-
const cls = row.attributes?.filter?.((col) => col.name && col.data && ['select', 'badge', 'tags'].includes(col.format)).reduce((acc, curr) => ({ ...acc, [curr.name]: curr.data }), {}) || {};
|
|
25
|
-
|
|
26
|
-
await metaFormat({ rows, table: row.source_path, cls });
|
|
27
|
-
|
|
28
|
-
const rows1 = rows.map(row => ({
|
|
29
|
-
...row[`${params.col}_data`], ...row, [`${params.col}_data`]: undefined, [params.col]: undefined,
|
|
30
|
-
}));
|
|
31
|
-
|
|
32
|
-
return reply.status(200).send({ rows: rows1, field, fields });
|
|
33
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { pgClients, getMeta, getSelect, getSelectVal } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
|
|
3
|
-
export default async function mapCatalogAttribute({ pg = pgClients.client, params = {}, query = {} }, reply) {
|
|
4
|
-
const { service, attr } = params;
|
|
5
|
-
if (!service) {
|
|
6
|
-
return reply.status(404).send('not enough params: service');
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
if (!attr) {
|
|
10
|
-
return reply.status(404).send('not enough params: attr');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (!pg.pk?.['gis.services']) {
|
|
14
|
-
return reply.status(404).send('services table not found');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const source = await pg.query(
|
|
18
|
-
'select source_path from gis.services where service_id=$1 and is_active and is_public',
|
|
19
|
-
[params.service]
|
|
20
|
-
).then(el => el.rows?.[0]?.source_path);
|
|
21
|
-
|
|
22
|
-
if (!source) {
|
|
23
|
-
return reply.status(404).send('service not found');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const cls = await getSelect(query.cls || attr, pg);
|
|
27
|
-
const colname = query.cls ? attr : attr.split(':').pop();
|
|
28
|
-
|
|
29
|
-
if (!colname) {
|
|
30
|
-
return reply.status(400).send('invalid params: attr');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const { columns = [] } = await getMeta({ pg, table: source });
|
|
34
|
-
const { dataTypeID } = columns.find(el => el.name === colname) || {};
|
|
35
|
-
|
|
36
|
-
const q = pg.pgType[dataTypeID]?.includes('[]')
|
|
37
|
-
? `select unnest(${colname})::text as id,count(*) from ${source} group by unnest(${colname}) limit 100`
|
|
38
|
-
: `select ${colname}::text as id,count(*) from ${source} group by ${colname} limit 100`;
|
|
39
|
-
|
|
40
|
-
const countArr = await pg.queryCache(q);
|
|
41
|
-
|
|
42
|
-
const ids = countArr.rows.map(el => el.id);
|
|
43
|
-
|
|
44
|
-
const clsData = await getSelectVal({ pg, values: ids, name: query.cls || attr });
|
|
45
|
-
|
|
46
|
-
const legend = countArr.rows.map(cel => {
|
|
47
|
-
const data = cls?.arr?.find(c => c.id?.toString?.() === cel.id?.toString?.()) || { text: clsData?.[cel.id]?.text || clsData?.[cel.id] };
|
|
48
|
-
return { ...cel, ...data };
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const { min, max } = await pg.queryCache(
|
|
52
|
-
`select min(${attr}), max(${attr}) from ${source} where 1=1`,
|
|
53
|
-
).then(el => { return el.rows?.[0] || {}; });
|
|
54
|
-
|
|
55
|
-
return reply.status(200).send({ legend, min, max });
|
|
56
|
-
}
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import map from './controllers/map.js';
|
|
2
|
-
import mapTiles from './controllers/mapTiles.js';
|
|
3
|
-
import mapFeatures from './controllers/mapFeatures.js';
|
|
4
|
-
|
|
5
|
-
import mapCatalog from './controllers/mapCatalog.js';
|
|
6
|
-
import mapCatalogAttribute from './controllers/mapCatalogAttribute.js';
|
|
7
|
-
|
|
8
|
-
import vtile from './controllers/vtile.js';
|
|
9
|
-
import vtile1 from './vtile1.js';
|
|
10
|
-
import clearTiles from './controllers/clearTiles.js';
|
|
11
|
-
import geojson from './controllers/geojson.js';
|
|
12
|
-
import jsonData from './controllers/jsonData.js';
|
|
13
|
-
import layerList from './controllers/layerList.js';
|
|
14
|
-
|
|
15
|
-
import mapFormat from './controllers/mapFormat.js';
|
|
16
|
-
import parseGeoFile from './controllers/parseGeoFile.js';
|
|
17
|
-
import maps from './controllers/maps.js';
|
|
18
|
-
import gisIconApi from './controllers/gis.icon.js';
|
|
19
|
-
import markerIconApi from './controllers/marker_icon.js';
|
|
20
|
-
|
|
21
|
-
import getMap from './maps/get.map.js';
|
|
22
|
-
import addMap from './maps/add.map.js';
|
|
23
|
-
import delMap from './maps/del.map.js';
|
|
24
|
-
|
|
25
|
-
import getWidget from './widgets/get.widget.js';
|
|
26
|
-
import addWidget from './widgets/add.widget.js';
|
|
27
|
-
import delWidget from './widgets/del.widget.js';
|
|
28
|
-
|
|
29
|
-
import gisConvert from './controllers/gis.convert.js';
|
|
30
|
-
import pointHeight from './controllers/pointHeight.js';
|
|
31
|
-
|
|
32
|
-
const gisConvertSchema = {
|
|
33
|
-
body: {
|
|
34
|
-
type: 'object',
|
|
35
|
-
properties: {
|
|
36
|
-
encoding: {
|
|
37
|
-
type: 'string',
|
|
38
|
-
// python is case insensitive and ignores "-"
|
|
39
|
-
enum: ['LATIN-1', 'CP1251', 'UTF-8'],
|
|
40
|
-
},
|
|
41
|
-
srid: {
|
|
42
|
-
type: 'number',
|
|
43
|
-
minimum: 1,
|
|
44
|
-
},
|
|
45
|
-
file: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
},
|
|
48
|
-
filename: {
|
|
49
|
-
type: 'string',
|
|
50
|
-
},
|
|
51
|
-
filepath: {
|
|
52
|
-
type: 'string',
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
anyOf: [
|
|
56
|
-
{ required: ['file', 'filename'] },
|
|
57
|
-
{ required: ['filepath'] },
|
|
58
|
-
],
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const schemaInfo = {
|
|
63
|
-
type: 'object',
|
|
64
|
-
properties: {
|
|
65
|
-
publicParams: {
|
|
66
|
-
slug: {
|
|
67
|
-
type: 'string',
|
|
68
|
-
},
|
|
69
|
-
z: {
|
|
70
|
-
type: 'number',
|
|
71
|
-
},
|
|
72
|
-
y: {
|
|
73
|
-
type: 'number',
|
|
74
|
-
},
|
|
75
|
-
x: {
|
|
76
|
-
type: 'string',
|
|
77
|
-
pattern: '^\\d+\\.(pbf|vmt)$',
|
|
78
|
-
},
|
|
79
|
-
id: {
|
|
80
|
-
type: 'string',
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const mapFormatSchema = {
|
|
87
|
-
querystring: {
|
|
88
|
-
type: 'object',
|
|
89
|
-
properties: {
|
|
90
|
-
lat: {
|
|
91
|
-
type: 'number',
|
|
92
|
-
minimum: 1,
|
|
93
|
-
maximum: 90,
|
|
94
|
-
},
|
|
95
|
-
lng: {
|
|
96
|
-
type: 'number',
|
|
97
|
-
minimum: -180,
|
|
98
|
-
maximum: 180,
|
|
99
|
-
},
|
|
100
|
-
radius: {
|
|
101
|
-
type: 'number',
|
|
102
|
-
minimum: 1,
|
|
103
|
-
maximum: 1000,
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
const pointHeightSchema = {
|
|
110
|
-
querystring: {
|
|
111
|
-
type: 'object',
|
|
112
|
-
required: ['lat', 'lng'],
|
|
113
|
-
properties: {
|
|
114
|
-
lat: { type: 'number', minimum: -90, maximum: 90 },
|
|
115
|
-
lng: { type: 'number', minimum: -180, maximum: 180 },
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
response: {
|
|
119
|
-
200: {
|
|
120
|
-
type: 'object',
|
|
121
|
-
properties: {
|
|
122
|
-
lat: { type: 'number' },
|
|
123
|
-
lng: { type: 'number' },
|
|
124
|
-
height: { anyOf: [{ type: 'number' }, { type: 'null' }] },
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
const publicParams = {
|
|
131
|
-
config: { policy: 'L0' },
|
|
132
|
-
schema: schemaInfo,
|
|
133
|
-
package: 'gis',
|
|
134
|
-
}; // * L0 === public
|
|
135
|
-
const privilegedParams = {
|
|
136
|
-
config: { policy: 'L1', role: 'admin' },
|
|
137
|
-
schema: schemaInfo,
|
|
138
|
-
package: 'gis',
|
|
139
|
-
}; // ? just auth or admin
|
|
140
|
-
|
|
141
|
-
export default async function route(app) {
|
|
142
|
-
if (!app.hasRoute({ method: 'GET', url: '/gis-map/:id?' })) {
|
|
143
|
-
app.get('/gis-map/:id?', publicParams, getMap);
|
|
144
|
-
}
|
|
145
|
-
if (!app.hasRoute({ method: 'POST', url: '/gis-map/:id?' })) {
|
|
146
|
-
app.post('/gis-map/:id?', privilegedParams, addMap);
|
|
147
|
-
}
|
|
148
|
-
if (!app.hasRoute({ method: 'PUT', url: '/gis-map/:id' })) {
|
|
149
|
-
app.put('/gis-map/:id', privilegedParams, addMap);
|
|
150
|
-
}
|
|
151
|
-
if (!app.hasRoute({ method: 'DELETE', url: '/gis-map/:id' })) {
|
|
152
|
-
app.delete('/gis-map/:id', privilegedParams, delMap);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (!app.hasRoute({ method: 'GET', url: '/gis-widget/:map/:id?' })) {
|
|
156
|
-
app.get('/gis-widget/:map/:id?', publicParams, getWidget);
|
|
157
|
-
}
|
|
158
|
-
if (!app.hasRoute({ method: 'POST', url: '/gis-widget/:map/:id?' })) {
|
|
159
|
-
app.post('/gis-widget/:map/:id?', privilegedParams, addWidget);
|
|
160
|
-
}
|
|
161
|
-
if (!app.hasRoute({ method: 'PUT', url: '/gis-widget/:map/:id' })) {
|
|
162
|
-
app.put('/gis-widget/:map/:id', privilegedParams, addWidget);
|
|
163
|
-
}
|
|
164
|
-
if (!app.hasRoute({ method: 'DELETE', url: '/gis-widget/:map/:id' })) {
|
|
165
|
-
app.delete('/gis-widget/:map/:id', privilegedParams, delWidget);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (!app.hasRoute({ method: 'GET', url: '/maps' })) {
|
|
169
|
-
app.get('/maps', publicParams, maps);
|
|
170
|
-
}
|
|
171
|
-
if (!app.hasRoute({ method: 'GET', url: '/map/:slug' })) {
|
|
172
|
-
app.get('/map/:slug', publicParams, map);
|
|
173
|
-
}
|
|
174
|
-
if (!app.hasRoute({ method: 'GET', url: '/map-tiles/:slug/:z/:y/:x' })) {
|
|
175
|
-
app.get('/map-tiles/:slug/:z/:y/:x', publicParams, mapTiles);
|
|
176
|
-
}
|
|
177
|
-
if (!app.hasRoute({ method: 'GET', url: '/map-features/:slug/:id' })) {
|
|
178
|
-
app.get('/map-features/:slug/:id', publicParams, mapFeatures);
|
|
179
|
-
}
|
|
180
|
-
if (!app.hasRoute({ method: 'GET', url: '/map-features-point/:slug' })) {
|
|
181
|
-
app.get('/map-features-point/:slug', publicParams, mapFeatures);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (!app.hasRoute({ method: 'GET', url: '/map-catalog' })) {
|
|
185
|
-
app.get('/map-catalog', publicParams, mapCatalog);
|
|
186
|
-
}
|
|
187
|
-
if (!app.hasRoute({ method: 'GET', url: '/map-catalog/:service/:attr' })) {
|
|
188
|
-
app.get('/map-catalog/:service/:attr', publicParams, mapCatalogAttribute);
|
|
189
|
-
}
|
|
190
|
-
// if (!app.hasRoute({ method: 'GET', url: '/layer-rtile/:id/:z/:y/:x' })) {
|
|
191
|
-
// app.get('/layer-rtile/:id/:z/:y/:x', publicParams, rtile);
|
|
192
|
-
// }
|
|
193
|
-
if (!app.hasRoute({ method: 'GET', url: '/layer-vtile/:id/:z/:y/:x' })) {
|
|
194
|
-
app.get('/layer-vtile/:id/:z/:y/:x', publicParams, vtile);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
if (
|
|
198
|
-
!app.hasRoute({ method: 'GET', url: '/api/vtile/:layer/:lang/:z/:y/:x' })
|
|
199
|
-
) {
|
|
200
|
-
console.log('\x1b[34m%s\x1b[0m', 'add vtile from gis');
|
|
201
|
-
app.get('/vtile/:layer/:lang/:z/:y/:x', publicParams, vtile1);
|
|
202
|
-
}
|
|
203
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/gis-clear-vtile/:id' })) {
|
|
204
|
-
app.get('/gis-clear-vtile/:id', publicParams, clearTiles);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/geojson/:layer' })) {
|
|
208
|
-
console.log('\x1b[34m%s\x1b[0m', 'add geojson from gis');
|
|
209
|
-
app.get('/geojson/:layer', publicParams, geojson);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/json/:layer' })) {
|
|
213
|
-
console.log('\x1b[34m%s\x1b[0m', 'add json from gis');
|
|
214
|
-
app.get('/json/:layer', publicParams, jsonData);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/gis-layer-list' })) {
|
|
218
|
-
console.log('\x1b[34m%s\x1b[0m', 'add gis-layer-list from gis');
|
|
219
|
-
app.get('/gis-layer-list', publicParams, layerList);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (!app.hasRoute({ method: 'GET', url: '/gis-icon/*' })) {
|
|
223
|
-
app.get('/gis-icon/*', publicParams, gisIconApi);
|
|
224
|
-
}
|
|
225
|
-
if (!app.hasRoute({ method: 'GET', url: '/icon/*' })) {
|
|
226
|
-
app.get('/icon/*', publicParams, gisIconApi);
|
|
227
|
-
}
|
|
228
|
-
if (!app.hasRoute({ method: 'GET', url: '/marker-icon/*' })) {
|
|
229
|
-
app.get('/marker-icon/*', publicParams, gisIconApi);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/map-format' })) {
|
|
233
|
-
app.get(
|
|
234
|
-
'/map-format',
|
|
235
|
-
{ ...publicParams, schema: mapFormatSchema },
|
|
236
|
-
mapFormat,
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if (!app.hasRoute({ method: 'GET', url: '/api/coords/height' })) {
|
|
241
|
-
app.get(
|
|
242
|
-
'/coords/height',
|
|
243
|
-
{ ...publicParams, schema: pointHeightSchema },
|
|
244
|
-
pointHeight,
|
|
245
|
-
);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (!app.hasRoute({ method: 'POST', url: '/api/gis-parse-geo' })) {
|
|
249
|
-
app.post('/gis-parse-geo', publicParams, parseGeoFile);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (!app.hasRoute({ method: 'POST', url: '/api/gis-convert' })) {
|
|
253
|
-
app.post(
|
|
254
|
-
'/gis-convert',
|
|
255
|
-
{ config: { policy: 'L0' }, schema: gisConvertSchema, package: 'gis' },
|
|
256
|
-
gisConvert,
|
|
257
|
-
);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { dataInsert, dataUpdate, pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
|
|
3
|
-
export default async function addMap({
|
|
4
|
-
method, params = {}, body, pg = pgClients.client, user = {},
|
|
5
|
-
}, reply) {
|
|
6
|
-
const { uid } = user;
|
|
7
|
-
|
|
8
|
-
if (!uid) {
|
|
9
|
-
return reply.status(401).send('unauthorized');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (method === 'POST') {
|
|
13
|
-
if (!body?.name) {
|
|
14
|
-
return reply.status(400).send('not enough body params: name');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (!body?.map_key) {
|
|
18
|
-
return reply.status(400).send('not enough body params: map_key');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const { rows = [] } = await dataInsert({
|
|
22
|
-
pg,
|
|
23
|
-
id: params.id,
|
|
24
|
-
table: 'gis.maps',
|
|
25
|
-
data: body,
|
|
26
|
-
uid,
|
|
27
|
-
});
|
|
28
|
-
return reply.status(200).send(rows[0]);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!params.id) {
|
|
32
|
-
return reply.status(400).send('not enough params: id');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const row = await dataUpdate({
|
|
36
|
-
pg,
|
|
37
|
-
id: params.id,
|
|
38
|
-
table: 'gis.maps',
|
|
39
|
-
data: body,
|
|
40
|
-
uid,
|
|
41
|
-
});
|
|
42
|
-
return reply.status(200).send(row);
|
|
43
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { dataInsert, dataUpdate, pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
export default async function addWidget({
|
|
3
|
-
method, params = {}, body, pg = pgClients.client, user = {},
|
|
4
|
-
}, reply) {
|
|
5
|
-
const { uid } = user;
|
|
6
|
-
|
|
7
|
-
if (!uid) {
|
|
8
|
-
return reply.status(401).send('unauthorized');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (!params.map) {
|
|
12
|
-
return reply.status(400).send('not enough params: map id');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (method === 'PUT' && !params.id) {
|
|
16
|
-
return reply.status(400).send('not enough params: id');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (method === 'POST') {
|
|
20
|
-
Object.assign(body, { map_id: params.map });
|
|
21
|
-
const { rows = [] } = await dataInsert({
|
|
22
|
-
pg,
|
|
23
|
-
id: params.id,
|
|
24
|
-
table: 'gis.widgets',
|
|
25
|
-
data: body,
|
|
26
|
-
uid,
|
|
27
|
-
});
|
|
28
|
-
return reply.status(200).send(rows[0]);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const row = await dataUpdate({
|
|
32
|
-
pg,
|
|
33
|
-
id: params.id,
|
|
34
|
-
table: 'gis.widgets',
|
|
35
|
-
data: body,
|
|
36
|
-
uid,
|
|
37
|
-
});
|
|
38
|
-
return reply.status(200).send(row);
|
|
39
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { dataDelete, pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
|
|
3
|
-
export default async function delWidget({
|
|
4
|
-
params = {}, pg = pgClients.client, user = {},
|
|
5
|
-
}, reply) {
|
|
6
|
-
const { uid } = user;
|
|
7
|
-
|
|
8
|
-
if (!uid) {
|
|
9
|
-
return reply.status(401).send('unauthorized');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (!params.map) {
|
|
13
|
-
return reply.status(400).send('not enough params: map id');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const row = await dataDelete({
|
|
17
|
-
pg,
|
|
18
|
-
id: params.id,
|
|
19
|
-
table: 'gis.widgets',
|
|
20
|
-
uid,
|
|
21
|
-
});
|
|
22
|
-
return reply.status(200).send(row);
|
|
23
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { config } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
import mapnik from '../../../plugins/mapnik/funcs/mapnik.js';
|
|
4
|
-
|
|
5
|
-
const { FileStat } = mapnik();
|
|
6
|
-
|
|
7
|
-
// example: GET /api/gis-file-info?path=raster/henplan_osnovne_kreslennia.tif
|
|
8
|
-
export default async function fileStat({
|
|
9
|
-
query,
|
|
10
|
-
}, reply) {
|
|
11
|
-
if (!config.mapnik?.server) {
|
|
12
|
-
return reply.status(400).send({ error: 'mapnik server not configured', code: 400 });
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (config.ready?.mapnik !== true) {
|
|
16
|
-
return reply.status(400).send({ error: 'mapnik server not ready', code: 400 });
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const { path } = query || {};
|
|
20
|
-
|
|
21
|
-
if (!path) {
|
|
22
|
-
return reply.status(400).send({ error: 'not enough query params: path', code: 400 });
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const relpath = `raster/${[config.mapnik?.folder, path].filter(Boolean).join('/')}`;
|
|
26
|
-
const data = await FileStat({ path: relpath });
|
|
27
|
-
return { data };
|
|
28
|
-
}
|