@opengis/gis 0.2.178 → 0.2.179
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-CMRD1LLh.js → CardIcon-DXkwtXRm.js} +1 -1
- package/dist/{EntityTablePage-XNNCltAN.js → EntityTablePage-VVLGYH2c.js} +1 -1
- package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BqUjKTDY.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-Dm5Fyjh9.js} +1 -1
- package/dist/{MapSettings-P3h-vHn3.js → MapSettings-CqgwRydf.js} +1 -1
- package/dist/MapToolbarRight.vue_vue_type_script_setup_true_lang-k3Zo1Hqm.js +1230 -0
- package/dist/{RastersTablePage-DnhGZLiH.js → RastersTablePage-Br_0QBMH.js} +1 -1
- package/dist/cartocss-C9OJk3VI.js +1460 -0
- package/dist/{import-utils-BCATsbB5.js → import-utils-DV6Yls6G.js} +1 -1
- package/dist/{index-cUagVqgA.js → index-hX98i4hU.js} +11 -11
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +29 -29
- package/dist/{raster-CP0tUp3j.js → raster-NZ1TCJvt.js} +225 -219
- package/dist/{register-Cr-uQcby.js → register-BcPTINMn.js} +3 -3
- package/dist/{service-DwJaKrOd.js → service-NBe9fmay.js} +603 -597
- package/dist/{vs-datatable-B9WoVk-b.js → vs-datatable-CyjZaDoO.js} +3 -2
- 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_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/package.json +1 -1
- package/server/routes/registers/functions/gis.suggest.js +1 -1
- package/dist/HeaderActions.vue_vue_type_script_setup_true_lang-BXQ3hKwa.js +0 -1099
- package/dist/cartocss-BkrOeQg4.js +0 -1586
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { defineComponent as te, resolveDirective as
|
|
1
|
+
import { defineComponent as te, resolveDirective as Xe, openBlock as u, createElementBlock as m, createElementVNode as n, Fragment as W, renderList as X, toDisplayString as d, withDirectives as $e, createTextVNode as Ke, normalizeClass as ae, ref as $, watch as I, computed as h, vModelText as Ye, onMounted as Ze, onBeforeUnmount as He, createCommentVNode as q, createVNode as k, withCtx as be, createBlock as F, resolveDynamicComponent as Je } from "vue";
|
|
2
2
|
import { useRouter as et, useRoute as tt } from "vue-router";
|
|
3
|
-
import { TooltipDirective as st, notify as
|
|
4
|
-
import { _ as nt, u as lt, f as rt, M as ot, i as it, j as
|
|
5
|
-
import { _ as ut, a as ct, b as dt, c as ft } from "./
|
|
6
|
-
import { _ as
|
|
7
|
-
const
|
|
3
|
+
import { TooltipDirective as st, notify as S } from "@opengis/core";
|
|
4
|
+
import { _ as nt, u as lt, f as rt, M as ot, i as it, j as he, F as at } from "./index-hX98i4hU.js";
|
|
5
|
+
import { _ as ut, a as ct, b as dt, c as ft, d as mt, e as pt, f as gt, g as yt } from "./MapToolbarRight.vue_vue_type_script_setup_true_lang-k3Zo1Hqm.js";
|
|
6
|
+
import { _ as _e } from "./ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-Dm5Fyjh9.js";
|
|
7
|
+
const xt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, vt = { class: "space-y-3" }, bt = { class: "bg-white p-3 rounded-xl border border-gray-200 shadow-sm" }, ht = { class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2" }, _t = { class: "text-xs text-gray-500 mb-1" }, wt = {
|
|
8
8
|
key: 0,
|
|
9
9
|
class: "text-base text-md font-semibold text-gray-900"
|
|
10
|
-
},
|
|
10
|
+
}, $t = {
|
|
11
11
|
key: 1,
|
|
12
12
|
class: "text-base text-md font-semibold text-gray-900"
|
|
13
|
-
},
|
|
13
|
+
}, kt = { class: "bg-white p-3 rounded-xl border border-gray-200 shadow-sm" }, Ct = { class: "space-y-2" }, Et = { class: "bg-gradient-to-br from-blue-50 to-blue-100/30 p-4 rounded-lg border border-blue-200" }, Lt = { class: "text-sm font-semibold text-gray-900" }, Rt = { class: "text-xs text-gray-600 mt-1" }, Mt = { class: "grid grid-cols-2 gap-3" }, St = { class: "text-xs text-gray-500 mb-1" }, It = { class: "text-sm font-semibold text-gray-900" }, jt = { class: "bg-gray-50 p-4 rounded-lg" }, zt = { class: "grid grid-cols-2 gap-4" }, Bt = { class: "text-xs text-gray-500 mb-1" }, Pt = { class: "text-sm font-semibold text-gray-900" }, Nt = /* @__PURE__ */ te({
|
|
14
14
|
directives: {
|
|
15
15
|
tooltip: st
|
|
16
16
|
},
|
|
@@ -19,59 +19,59 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
|
|
|
19
19
|
details: {}
|
|
20
20
|
},
|
|
21
21
|
setup(_) {
|
|
22
|
-
return (y,
|
|
23
|
-
const o =
|
|
24
|
-
return u(), m("div",
|
|
25
|
-
n("div",
|
|
26
|
-
n("div",
|
|
27
|
-
|
|
22
|
+
return (y, x) => {
|
|
23
|
+
const o = Xe("tooltip");
|
|
24
|
+
return u(), m("div", xt, [
|
|
25
|
+
n("div", vt, [
|
|
26
|
+
n("div", bt, [
|
|
27
|
+
x[0] || (x[0] = n("div", { class: "mb-4" }, [
|
|
28
28
|
n("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Основні параметри")
|
|
29
29
|
], -1)),
|
|
30
|
-
n("div",
|
|
30
|
+
n("div", ht, [
|
|
31
31
|
(u(!0), m(W, null, X(_.details.baseParams, (f) => (u(), m("div", {
|
|
32
32
|
key: f.label,
|
|
33
33
|
class: "bg-gray-50 p-2 rounded-lg"
|
|
34
34
|
}, [
|
|
35
|
-
n("p",
|
|
36
|
-
f.tooltip ?
|
|
37
|
-
|
|
35
|
+
n("p", _t, d(f.label), 1),
|
|
36
|
+
f.tooltip ? $e((u(), m("p", wt, [
|
|
37
|
+
Ke(d(f.value), 1)
|
|
38
38
|
])), [
|
|
39
39
|
[o, f.tooltip]
|
|
40
|
-
]) : (u(), m("p",
|
|
40
|
+
]) : (u(), m("p", $t, d(f.value), 1))
|
|
41
41
|
]))), 128))
|
|
42
42
|
])
|
|
43
43
|
]),
|
|
44
|
-
n("div",
|
|
45
|
-
|
|
44
|
+
n("div", kt, [
|
|
45
|
+
x[3] || (x[3] = n("div", { class: "mb-2" }, [
|
|
46
46
|
n("h4", { class: "text-sm font-semibold text-gray-900 uppercase tracking-wide" }, "Просторова інформація")
|
|
47
47
|
], -1)),
|
|
48
|
-
n("div",
|
|
48
|
+
n("div", Ct, [
|
|
49
49
|
n("div", null, [
|
|
50
|
-
|
|
51
|
-
n("div",
|
|
52
|
-
n("p",
|
|
53
|
-
n("p",
|
|
50
|
+
x[1] || (x[1] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Система координат", -1)),
|
|
51
|
+
n("div", Et, [
|
|
52
|
+
n("p", Lt, d(_.details.spatial.crs.code), 1),
|
|
53
|
+
n("p", Rt, d(_.details.spatial.crs.description), 1)
|
|
54
54
|
])
|
|
55
55
|
]),
|
|
56
56
|
n("div", null, [
|
|
57
|
-
|
|
58
|
-
n("div",
|
|
57
|
+
x[2] || (x[2] = n("p", { class: "text-xs text-gray-500 mb-2" }, "Межі покриття", -1)),
|
|
58
|
+
n("div", Mt, [
|
|
59
59
|
(u(!0), m(W, null, X(_.details.spatial.bounds, (f) => (u(), m("div", {
|
|
60
60
|
key: f.label,
|
|
61
61
|
class: "bg-gray-50 p-2 rounded-lg border border-gray-200"
|
|
62
62
|
}, [
|
|
63
|
-
n("p",
|
|
64
|
-
n("p",
|
|
63
|
+
n("p", St, d(f.label), 1),
|
|
64
|
+
n("p", It, d(f.value), 1)
|
|
65
65
|
]))), 128))
|
|
66
66
|
])
|
|
67
67
|
]),
|
|
68
|
-
n("div",
|
|
69
|
-
n("div",
|
|
68
|
+
n("div", jt, [
|
|
69
|
+
n("div", zt, [
|
|
70
70
|
(u(!0), m(W, null, X(_.details.spatial.resolution, (f) => (u(), m("div", {
|
|
71
71
|
key: f.label
|
|
72
72
|
}, [
|
|
73
|
-
n("p",
|
|
74
|
-
n("p",
|
|
73
|
+
n("p", Bt, d(f.label), 1),
|
|
74
|
+
n("p", Pt, d(f.value), 1)
|
|
75
75
|
]))), 128))
|
|
76
76
|
])
|
|
77
77
|
])
|
|
@@ -81,20 +81,20 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
|
|
|
81
81
|
]);
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
}),
|
|
84
|
+
}), Dt = { class: "flex-1 overflow-y-auto space-y-3 pr-1" }, Ut = { class: "font-medium text-sm text-gray-800" }, Tt = { class: "text-xs text-gray-500" }, qt = /* @__PURE__ */ te({
|
|
85
85
|
__name: "raster-files-tab",
|
|
86
86
|
props: {
|
|
87
87
|
files: {}
|
|
88
88
|
},
|
|
89
89
|
setup(_) {
|
|
90
|
-
return (y,
|
|
90
|
+
return (y, x) => (u(), m("div", Dt, [
|
|
91
91
|
(u(!0), m(W, null, X(_.files, (o) => (u(), m("div", {
|
|
92
92
|
key: o.name,
|
|
93
93
|
class: "border border-gray-100 rounded-xl p-4 shadow-sm bg-white flex items-start justify-between"
|
|
94
94
|
}, [
|
|
95
95
|
n("div", null, [
|
|
96
|
-
n("p",
|
|
97
|
-
n("p",
|
|
96
|
+
n("p", Ut, d(o.name), 1),
|
|
97
|
+
n("p", Tt, d(o.resolution) + " • " + d(o.size) + "MB", 1)
|
|
98
98
|
]),
|
|
99
99
|
n("span", {
|
|
100
100
|
class: ae(["text-[11px] font-semibold px-2 py-0.5 rounded-full", o.statusClass])
|
|
@@ -102,7 +102,7 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
|
|
|
102
102
|
]))), 128))
|
|
103
103
|
]));
|
|
104
104
|
}
|
|
105
|
-
}),
|
|
105
|
+
}), Ft = {}, Vt = {
|
|
106
106
|
xmlns: "http://www.w3.org/2000/svg",
|
|
107
107
|
width: "24",
|
|
108
108
|
height: "24",
|
|
@@ -113,8 +113,8 @@ const mt = { class: "flex-1 overflow-y-auto p-4 sm:p-6" }, pt = { class: "space-
|
|
|
113
113
|
"stroke-linecap": "round",
|
|
114
114
|
"stroke-linejoin": "round"
|
|
115
115
|
};
|
|
116
|
-
function
|
|
117
|
-
return u(), m("svg",
|
|
116
|
+
function At(_, y) {
|
|
117
|
+
return u(), m("svg", Vt, [...y[0] || (y[0] = [
|
|
118
118
|
n("circle", {
|
|
119
119
|
cx: "12",
|
|
120
120
|
cy: "12",
|
|
@@ -129,7 +129,7 @@ function Tt(_, y) {
|
|
|
129
129
|
n("path", { d: "M11 12h1v4h1" }, null, -1)
|
|
130
130
|
])]);
|
|
131
131
|
}
|
|
132
|
-
const
|
|
132
|
+
const Ot = /* @__PURE__ */ nt(Ft, [["render", At]]), Gt = { class: "absolute top-[5.5rem] left-4 z-30 flex flex-col items-start gap-2" }, Qt = { class: "rounded-2xl bg-white/90 px-3 py-2 text-xs font-medium text-slate-600 shadow-sm backdrop-blur" }, Wt = { class: "flex items-center gap-2" }, Xt = { class: "rounded-2xl bg-white/90 px-3 py-2 text-xs font-medium text-slate-600 shadow-sm backdrop-blur" }, Kt = { class: "inline-flex items-center gap-2 text-[11px] text-slate-600" }, Yt = ["checked"], Zt = /* @__PURE__ */ te({
|
|
133
133
|
__name: "RasterLayer",
|
|
134
134
|
props: {
|
|
135
135
|
tileUrl: {},
|
|
@@ -140,7 +140,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
140
140
|
},
|
|
141
141
|
emits: ["toggle-extent"],
|
|
142
142
|
setup(_) {
|
|
143
|
-
const y = _,
|
|
143
|
+
const y = _, x = y.layerId || "raster-preview-layer", o = `${x}-source`, f = y.extent && y.extent.length === 4 ? [...y.extent] : void 0, P = lt(x, {
|
|
144
144
|
sourceId: o,
|
|
145
145
|
source: {
|
|
146
146
|
type: "raster",
|
|
@@ -149,13 +149,13 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
149
149
|
...f ? { bounds: f } : {}
|
|
150
150
|
},
|
|
151
151
|
layer: {
|
|
152
|
-
id: `${
|
|
152
|
+
id: `${x}-raster`,
|
|
153
153
|
type: "raster",
|
|
154
154
|
paint: { "raster-opacity": 1 }
|
|
155
155
|
},
|
|
156
156
|
beforeId: y.beforeId ?? null
|
|
157
157
|
}), { fitBounds: V } = rt(), N = $(1);
|
|
158
|
-
|
|
158
|
+
I(
|
|
159
159
|
() => y.tileUrl,
|
|
160
160
|
(p) => {
|
|
161
161
|
if (!p) {
|
|
@@ -165,21 +165,21 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
165
165
|
P.setVisible(!0), P.setTiles([p]);
|
|
166
166
|
},
|
|
167
167
|
{ immediate: !0 }
|
|
168
|
-
),
|
|
168
|
+
), I(
|
|
169
169
|
() => N.value,
|
|
170
170
|
(p) => {
|
|
171
171
|
P.setOpacity(p);
|
|
172
172
|
},
|
|
173
173
|
{ immediate: !0 }
|
|
174
174
|
);
|
|
175
|
-
let
|
|
176
|
-
|
|
175
|
+
let v = null, c = !1;
|
|
176
|
+
I(
|
|
177
177
|
() => y.extent,
|
|
178
178
|
(p) => {
|
|
179
179
|
if (!p || p.length !== 4) return;
|
|
180
180
|
const b = p.join(",");
|
|
181
|
-
if (b !==
|
|
182
|
-
if (
|
|
181
|
+
if (b !== v) {
|
|
182
|
+
if (v = b, !c) {
|
|
183
183
|
c = !0;
|
|
184
184
|
return;
|
|
185
185
|
}
|
|
@@ -192,21 +192,21 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
192
192
|
{ immediate: !0 }
|
|
193
193
|
);
|
|
194
194
|
const A = h(() => `${Math.round(N.value * 100)}%`);
|
|
195
|
-
return (p, b) => (u(), m("div",
|
|
196
|
-
n("div",
|
|
197
|
-
n("div",
|
|
195
|
+
return (p, b) => (u(), m("div", Gt, [
|
|
196
|
+
n("div", Qt, [
|
|
197
|
+
n("div", Wt, [
|
|
198
198
|
b[2] || (b[2] = n("span", null, "Прозорість:", -1)),
|
|
199
|
-
|
|
199
|
+
$e(n("input", {
|
|
200
200
|
type: "range",
|
|
201
201
|
min: "0",
|
|
202
202
|
max: "1",
|
|
203
203
|
step: "0.01",
|
|
204
|
-
"onUpdate:modelValue": b[0] || (b[0] = (
|
|
204
|
+
"onUpdate:modelValue": b[0] || (b[0] = (j) => N.value = j),
|
|
205
205
|
class: "h-1 w-28 cursor-pointer appearance-none rounded-full bg-slate-300 focus:outline-none",
|
|
206
206
|
style: { "accent-color": "#3b82f6" }
|
|
207
207
|
}, null, 512), [
|
|
208
208
|
[
|
|
209
|
-
|
|
209
|
+
Ye,
|
|
210
210
|
N.value,
|
|
211
211
|
void 0,
|
|
212
212
|
{ number: !0 }
|
|
@@ -215,29 +215,29 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
215
215
|
n("span", null, d(A.value), 1)
|
|
216
216
|
])
|
|
217
217
|
]),
|
|
218
|
-
n("div",
|
|
219
|
-
n("label",
|
|
218
|
+
n("div", Xt, [
|
|
219
|
+
n("label", Kt, [
|
|
220
220
|
n("input", {
|
|
221
221
|
type: "checkbox",
|
|
222
222
|
class: "h-3.5 w-3.5 rounded border-slate-300 text-blue-600 focus:ring-blue-200",
|
|
223
223
|
checked: _.showRasterExtent,
|
|
224
|
-
onChange: b[1] || (b[1] = (
|
|
225
|
-
}, null, 40,
|
|
224
|
+
onChange: b[1] || (b[1] = (j) => p.$emit("toggle-extent", j.target.checked))
|
|
225
|
+
}, null, 40, Yt),
|
|
226
226
|
b[3] || (b[3] = n("span", null, "Межі растру", -1))
|
|
227
227
|
])
|
|
228
228
|
])
|
|
229
229
|
]));
|
|
230
230
|
}
|
|
231
|
-
}),
|
|
231
|
+
}), Ht = { class: "flex h-full bg-gradient-to-br from-slate-50 to-white" }, Jt = { class: "flex-1 relative overflow-hidden" }, es = { class: "absolute top-0 left-0 w-full z-20" }, ts = { class: "px-4 sm:px-6 py-4 border-b border-gray-200 bg-white shadow-sm" }, ss = { class: "flex items-start justify-between gap-4" }, ns = { class: "flex-1 min-w-0" }, ls = { class: "flex items-center text-sm text-gray-500 mb-3" }, rs = { class: "text-gray-900 font-medium truncate max-w-xs" }, os = { class: "flex items-center justify-between gap-4" }, is = { class: "flex-1 min-w-0" }, as = { class: "flex items-center gap-3 mb-1" }, us = { class: "text-base font-semibold text-gray-900 truncate" }, cs = ["title"], ds = { class: "flex items-center gap-4 min-w-0" }, fs = { class: "flex-1 min-w-0" }, ms = ["title"], ps = { class: "w-full h-full bg-gradient-to-br from-sky-50 via-white to-blue-50 flex items-center justify-center relative pt-[105px]" }, gs = { class: "relative w-full h-full" }, ys = { class: "absolute top-4 left-4 z-20" }, xs = {
|
|
232
232
|
key: 1,
|
|
233
233
|
class: "absolute bottom-4 left-1/2 z-30 -translate-x-1/2 rounded-2xl border border-sky-200 bg-white/95 px-4 py-2 text-xs font-medium text-slate-700 shadow-lg backdrop-blur"
|
|
234
|
-
},
|
|
234
|
+
}, vs = { class: "flex-1 flex flex-col h-full" }, bs = { class: "px-3 pt-3 pb-2 border-b border-gray-100" }, hs = { class: "items-center justify-center text-muted-foreground grid w-full grid-cols-3 h-12 p-1 bg-gray-50 rounded-xl shadow-sm" }, _s = ["aria-selected", "onClick"], ws = { class: "leading-none" }, $s = { class: "flex flex-col flex-1 overflow-y-hidden p-3" }, ks = {
|
|
235
235
|
key: 0,
|
|
236
236
|
class: "mb-3 text-xs text-slate-500"
|
|
237
|
-
},
|
|
237
|
+
}, Cs = {
|
|
238
238
|
key: 1,
|
|
239
239
|
class: "mb-3 text-xs text-rose-600"
|
|
240
|
-
},
|
|
240
|
+
}, Es = "OpenGIS", we = 2, ee = 5, Ls = 5, Ps = /* @__PURE__ */ te({
|
|
241
241
|
__name: "raster",
|
|
242
242
|
setup(_) {
|
|
243
243
|
const y = [
|
|
@@ -245,7 +245,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
245
245
|
{ cardClass: "bg-gradient-to-br from-blue-50 to-blue-100/30 border-blue-200", titleClass: "text-blue-900" },
|
|
246
246
|
{ cardClass: "bg-gradient-to-br from-purple-50 to-purple-100/30 border-purple-200", titleClass: "text-purple-900" },
|
|
247
247
|
{ cardClass: "bg-gradient-to-br from-gray-50 to-gray-100/30 border-gray-200", titleClass: "text-gray-900" }
|
|
248
|
-
],
|
|
248
|
+
], x = et(), o = tt(), f = $(null), P = h(() => {
|
|
249
249
|
var s;
|
|
250
250
|
const e = (s = o.matched[o.matched.length - 1]) == null ? void 0 : s.path;
|
|
251
251
|
return (typeof e == "string" && e ? e : o.path).replace(/\/:id\??$/, "") || "/";
|
|
@@ -255,16 +255,16 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
255
255
|
return typeof e == "string" && e.trim() ? e : "Растри";
|
|
256
256
|
});
|
|
257
257
|
function N() {
|
|
258
|
-
|
|
258
|
+
x.push(P.value);
|
|
259
259
|
}
|
|
260
|
-
const
|
|
260
|
+
const v = h(() => {
|
|
261
261
|
var t;
|
|
262
262
|
const e = (t = o.params) == null ? void 0 : t.id;
|
|
263
263
|
return typeof e == "string" ? e : void 0;
|
|
264
|
-
}), c = $(null), A = $(!1), p = $(!1), b = $(null),
|
|
264
|
+
}), c = $(null), A = $(!1), p = $(!1), b = $(null), j = $(!0), E = $(!1), O = $(null);
|
|
265
265
|
let G = null, D = null;
|
|
266
266
|
const se = $(!1);
|
|
267
|
-
let
|
|
267
|
+
let z = null, Q = !1;
|
|
268
268
|
function K(e) {
|
|
269
269
|
if (Array.isArray(e)) return K(e[0]);
|
|
270
270
|
if (typeof e != "string" && typeof e != "number") return null;
|
|
@@ -278,42 +278,42 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
278
278
|
const l = 0.5 * 10 ** -s;
|
|
279
279
|
return Math.abs(e - t) > l;
|
|
280
280
|
}
|
|
281
|
-
function
|
|
281
|
+
function B() {
|
|
282
282
|
var e;
|
|
283
283
|
return (e = f.value) == null ? void 0 : e.ctx;
|
|
284
284
|
}
|
|
285
285
|
function ue() {
|
|
286
|
-
var a, g,
|
|
287
|
-
const e = (g = (a =
|
|
286
|
+
var a, g, M, C;
|
|
287
|
+
const e = (g = (a = B()) == null ? void 0 : a.map) == null ? void 0 : g.value;
|
|
288
288
|
if (!e) return;
|
|
289
289
|
const t = K(o.query.z), s = K(o.query.x), l = K(o.query.y);
|
|
290
290
|
if (t == null || s == null || l == null) return;
|
|
291
|
-
const r = (
|
|
292
|
-
(!r || le(r.lng, s, ee) || le(r.lat, l, ee) || le(i ?? 0, t,
|
|
291
|
+
const r = (M = e.getCenter) == null ? void 0 : M.call(e), i = (C = e.getZoom) == null ? void 0 : C.call(e);
|
|
292
|
+
(!r || le(r.lng, s, ee) || le(r.lat, l, ee) || le(i ?? 0, t, we)) && (se.value = !0, e.jumpTo({ center: [s, l], zoom: t }), se.value = !1);
|
|
293
293
|
}
|
|
294
|
-
function
|
|
294
|
+
function ke() {
|
|
295
295
|
var r, i, w, a;
|
|
296
296
|
if (se.value) return;
|
|
297
|
-
const e = (i = (r =
|
|
297
|
+
const e = (i = (r = B()) == null ? void 0 : r.map) == null ? void 0 : i.value;
|
|
298
298
|
if (!e) return;
|
|
299
299
|
const t = (w = e.getCenter) == null ? void 0 : w.call(e), s = (a = e.getZoom) == null ? void 0 : a.call(e);
|
|
300
300
|
if (!t || s == null) return;
|
|
301
301
|
const l = {
|
|
302
302
|
...o.query,
|
|
303
|
-
z: ne(s,
|
|
303
|
+
z: ne(s, we),
|
|
304
304
|
x: ne(t.lng, ee),
|
|
305
305
|
y: ne(t.lat, ee)
|
|
306
306
|
};
|
|
307
|
-
o.query.z === l.z && o.query.x === l.x && o.query.y === l.y ||
|
|
307
|
+
o.query.z === l.z && o.query.x === l.x && o.query.y === l.y || x.replace({ query: l });
|
|
308
308
|
}
|
|
309
|
-
function
|
|
309
|
+
function Ce() {
|
|
310
310
|
var t;
|
|
311
311
|
if (typeof document > "u") return;
|
|
312
312
|
const e = (t = T.value) == null ? void 0 : t.name;
|
|
313
|
-
document.title = e ? `${e} — Растер` :
|
|
313
|
+
document.title = e ? `${e} — Растер` : Es;
|
|
314
314
|
}
|
|
315
315
|
function Y(e) {
|
|
316
|
-
return Number(e.toFixed(
|
|
316
|
+
return Number(e.toFixed(Ls));
|
|
317
317
|
}
|
|
318
318
|
function ce(e, t) {
|
|
319
319
|
const [s, l] = e, [r, i] = t;
|
|
@@ -324,7 +324,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
324
324
|
Y(Math.max(l, i))
|
|
325
325
|
];
|
|
326
326
|
}
|
|
327
|
-
function
|
|
327
|
+
function Ee(e) {
|
|
328
328
|
const [t, s, l, r] = e;
|
|
329
329
|
return {
|
|
330
330
|
type: "Polygon",
|
|
@@ -339,19 +339,19 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
339
339
|
}
|
|
340
340
|
function re(e) {
|
|
341
341
|
var l, r, i;
|
|
342
|
-
const t = (r = (l =
|
|
342
|
+
const t = (r = (l = B()) == null ? void 0 : l.map) == null ? void 0 : r.value, s = (i = t == null ? void 0 : t.getCanvas) == null ? void 0 : i.call(t);
|
|
343
343
|
s != null && s.style && (s.style.cursor = e);
|
|
344
344
|
}
|
|
345
|
-
async function
|
|
346
|
-
if (!(!
|
|
345
|
+
async function Le(e, t) {
|
|
346
|
+
if (!(!v.value || !c.value))
|
|
347
347
|
try {
|
|
348
|
-
const s =
|
|
348
|
+
const s = Ee(e), l = await fetch(`/api/gis-metadata/raster/${encodeURIComponent(v.value)}`, {
|
|
349
349
|
method: "POST",
|
|
350
350
|
headers: { "Content-Type": "application/json" },
|
|
351
351
|
body: JSON.stringify({ geom: s })
|
|
352
352
|
});
|
|
353
353
|
if (!l.ok) throw new Error(`Failed to save raster metadata geom: ${l.status}`);
|
|
354
|
-
|
|
354
|
+
S({
|
|
355
355
|
type: "success",
|
|
356
356
|
title: "Extent збережено",
|
|
357
357
|
message: "Нові межі успішно збережено."
|
|
@@ -360,7 +360,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
360
360
|
console.error("Failed to save raster extent", s), c.value && (c.value = {
|
|
361
361
|
...c.value,
|
|
362
362
|
extent: t ? [...t] : void 0
|
|
363
|
-
}),
|
|
363
|
+
}), S({
|
|
364
364
|
type: "error",
|
|
365
365
|
title: "Помилка",
|
|
366
366
|
message: "Не вдалося зберегти Extent"
|
|
@@ -369,61 +369,61 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
369
369
|
}
|
|
370
370
|
function de(e) {
|
|
371
371
|
var s, l, r;
|
|
372
|
-
const t = (l = (s =
|
|
372
|
+
const t = (l = (s = B()) == null ? void 0 : s.map) == null ? void 0 : l.value;
|
|
373
373
|
if ((r = t == null ? void 0 : t.dragPan) != null && r.enable && t.dragPan.enable(), (e == null ? void 0 : e.length) === 4 && c.value) {
|
|
374
374
|
const i = Array.isArray(c.value.extent) ? [...c.value.extent] : null;
|
|
375
375
|
c.value = {
|
|
376
376
|
...c.value,
|
|
377
377
|
extent: [...e]
|
|
378
|
-
},
|
|
378
|
+
}, Le(e, i);
|
|
379
379
|
}
|
|
380
|
-
|
|
380
|
+
z = null, Q = !1, O.value = null, E.value = !1, re("");
|
|
381
381
|
}
|
|
382
382
|
function oe() {
|
|
383
383
|
de(null);
|
|
384
384
|
}
|
|
385
|
-
function
|
|
385
|
+
function Re() {
|
|
386
386
|
var i, w;
|
|
387
|
-
const e = (w = (i =
|
|
387
|
+
const e = (w = (i = B()) == null ? void 0 : i.map) == null ? void 0 : w.value;
|
|
388
388
|
if (!e) return;
|
|
389
389
|
const t = (a) => {
|
|
390
|
-
var
|
|
391
|
-
if (!
|
|
390
|
+
var M, C, J;
|
|
391
|
+
if (!E.value || ((M = a == null ? void 0 : a.originalEvent) == null ? void 0 : M.button) != null && a.originalEvent.button !== 0) return;
|
|
392
392
|
const g = a == null ? void 0 : a.lngLat;
|
|
393
|
-
g && (
|
|
393
|
+
g && (z = [g.lng, g.lat], Q = !0, O.value = [g.lng, g.lat, g.lng, g.lat], (J = (C = e.dragPan) == null ? void 0 : C.disable) == null || J.call(C));
|
|
394
394
|
}, s = (a) => {
|
|
395
|
-
if (!
|
|
395
|
+
if (!E.value || !Q || !z) return;
|
|
396
396
|
const g = a == null ? void 0 : a.lngLat;
|
|
397
|
-
g && (O.value = ce(
|
|
397
|
+
g && (O.value = ce(z, [g.lng, g.lat]));
|
|
398
398
|
}, l = (a) => {
|
|
399
|
-
if (!
|
|
399
|
+
if (!E.value || !Q || !z) return;
|
|
400
400
|
const g = a == null ? void 0 : a.lngLat;
|
|
401
401
|
if (!g) {
|
|
402
402
|
oe();
|
|
403
403
|
return;
|
|
404
404
|
}
|
|
405
|
-
const
|
|
406
|
-
if (!(Math.abs(
|
|
407
|
-
|
|
405
|
+
const M = ce(z, [g.lng, g.lat]), [C, J, Qe, We] = M;
|
|
406
|
+
if (!(Math.abs(Qe - C) > 0 && Math.abs(We - J) > 0)) {
|
|
407
|
+
S({
|
|
408
408
|
type: "warning",
|
|
409
409
|
title: "Bounds не змінено",
|
|
410
410
|
message: "Потрібно протягнути прямокутник з ненульовою площею."
|
|
411
411
|
}), oe();
|
|
412
412
|
return;
|
|
413
413
|
}
|
|
414
|
-
de(
|
|
414
|
+
de(M);
|
|
415
415
|
}, r = (a) => {
|
|
416
|
-
|
|
416
|
+
E.value && a.key === "Escape" && (a.preventDefault(), oe());
|
|
417
417
|
};
|
|
418
418
|
e.on("mousedown", t), e.on("mousemove", s), e.on("mouseup", l), window.addEventListener("keydown", r), D = () => {
|
|
419
419
|
e.off("mousedown", t), e.off("mousemove", s), e.off("mouseup", l), window.removeEventListener("keydown", r);
|
|
420
420
|
};
|
|
421
421
|
}
|
|
422
|
-
async function
|
|
422
|
+
async function Me() {
|
|
423
423
|
var s;
|
|
424
|
-
if (
|
|
425
|
-
const e =
|
|
426
|
-
!(e != null && e.ready) || (await e.ready(), !((s = e.map) == null ? void 0 : s.value)) || (D ||
|
|
424
|
+
if (E.value) return;
|
|
425
|
+
const e = B();
|
|
426
|
+
!(e != null && e.ready) || (await e.ready(), !((s = e.map) == null ? void 0 : s.value)) || (D || Re(), E.value = !0, Q = !1, z = null, O.value = null, re("crosshair"), S({
|
|
427
427
|
type: "info",
|
|
428
428
|
title: "Редагування Bounds",
|
|
429
429
|
message: "Протягніть прямокутник на карті, щоб задати нові межі."
|
|
@@ -436,10 +436,10 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
436
436
|
}), U = h(() => {
|
|
437
437
|
var e;
|
|
438
438
|
return ((e = c.value) == null ? void 0 : e.extent) ?? null;
|
|
439
|
-
}), me = h(() =>
|
|
439
|
+
}), me = h(() => v.value ? `raster-${v.value}` : void 0), Se = h(() => v.value ? `raster-extent-${v.value}` : "raster-extent"), Ie = h(() => v.value ? `raster-extent-draft-${v.value}` : "raster-extent-draft"), je = h(() => {
|
|
440
440
|
const e = me.value ?? "raster", t = U.value && U.value.length === 4 ? U.value.join(",") : "no-extent";
|
|
441
441
|
return `${e}-${t}`;
|
|
442
|
-
}),
|
|
442
|
+
}), ze = h(() => !!fe.value), pe = h(() => {
|
|
443
443
|
const e = U.value;
|
|
444
444
|
if (!e || e.length !== 4) return null;
|
|
445
445
|
const [t, s, l, r] = e;
|
|
@@ -448,7 +448,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
448
448
|
) ? null : [(t + l) / 2, (s + r) / 2];
|
|
449
449
|
}), T = h(() => {
|
|
450
450
|
var i, w;
|
|
451
|
-
const e = c.value, t = e == null ? void 0 : e.extent, l =
|
|
451
|
+
const e = c.value, t = e == null ? void 0 : e.extent, l = v.value ?? "—", r = [
|
|
452
452
|
e != null && e.extension ? `Формат ${String(e.extension).toUpperCase()}` : null,
|
|
453
453
|
(e == null ? void 0 : e.resolution) || null
|
|
454
454
|
].filter(Boolean).join(", ");
|
|
@@ -456,7 +456,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
456
456
|
id: l,
|
|
457
457
|
name: (e == null ? void 0 : e.name) || ((w = (i = e == null ? void 0 : e.files) == null ? void 0 : i[0]) == null ? void 0 : w.name),
|
|
458
458
|
description: (e == null ? void 0 : e.description) || r || "Попередній перегляд растрового шару.",
|
|
459
|
-
coverage: t && t.length === 4 ? `${
|
|
459
|
+
coverage: t && t.length === 4 ? `${R(t[0])}, ${R(t[1])} → ${R(t[2])}, ${R(t[3])}` : "Покриття уточнюється",
|
|
460
460
|
crs: e != null && e.srid ? `EPSG:${e.srid}` : "EPSG:4326",
|
|
461
461
|
source: e != null && e.proj4 ? e.proj4 : "Джерело: Mapnik",
|
|
462
462
|
updatedAt: e != null && e.cache ? "Дані кешовано" : "Нові дані"
|
|
@@ -471,53 +471,53 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
471
471
|
e.cache ? "Кешовано" : null
|
|
472
472
|
].filter((t) => t).join(", ") : "";
|
|
473
473
|
}), ge = [
|
|
474
|
-
{ key: "info", label: "Інформація", icon:
|
|
474
|
+
{ key: "info", label: "Інформація", icon: Ot },
|
|
475
475
|
{ key: "files", label: "Файли", icon: at },
|
|
476
|
-
{ key: "metadata", label: "Метадані", icon:
|
|
477
|
-
], ye = ge.map((e) => e.key),
|
|
478
|
-
|
|
479
|
-
e && ye.includes(e) &&
|
|
480
|
-
}),
|
|
481
|
-
o.query.tab !== e &&
|
|
476
|
+
{ key: "metadata", label: "Метадані", icon: yt }
|
|
477
|
+
], ye = ge.map((e) => e.key), L = $(ye.includes(o.query.tab) ? o.query.tab : "info"), Z = $(!0);
|
|
478
|
+
I(() => o.query.tab, (e) => {
|
|
479
|
+
e && ye.includes(e) && L.value !== e && (L.value = e);
|
|
480
|
+
}), I(L, (e) => {
|
|
481
|
+
o.query.tab !== e && x.replace({ query: { ...o.query, tab: e } });
|
|
482
482
|
});
|
|
483
|
-
const
|
|
484
|
-
|
|
483
|
+
const Be = h(() => De(c.value)), xe = h(() => Te(c.value));
|
|
484
|
+
I(
|
|
485
485
|
() => c.value,
|
|
486
486
|
() => {
|
|
487
|
-
|
|
487
|
+
Ce();
|
|
488
488
|
},
|
|
489
489
|
{ immediate: !0 }
|
|
490
490
|
);
|
|
491
|
-
async function
|
|
491
|
+
async function Pe() {
|
|
492
492
|
var l;
|
|
493
|
-
const e =
|
|
493
|
+
const e = B();
|
|
494
494
|
if (!(e != null && e.ready)) return;
|
|
495
495
|
await e.ready(), ue();
|
|
496
496
|
const t = (l = e.map) == null ? void 0 : l.value;
|
|
497
497
|
if (!t) return;
|
|
498
|
-
const s = () =>
|
|
498
|
+
const s = () => ke();
|
|
499
499
|
t.on("moveend", s), t.on("zoomend", s), G = () => {
|
|
500
500
|
t.off("moveend", s), t.off("zoomend", s);
|
|
501
501
|
};
|
|
502
502
|
}
|
|
503
|
-
|
|
503
|
+
I(
|
|
504
504
|
() => [o.query.z, o.query.x, o.query.y],
|
|
505
505
|
() => {
|
|
506
506
|
ue();
|
|
507
507
|
}
|
|
508
|
-
),
|
|
509
|
-
|
|
510
|
-
}),
|
|
508
|
+
), Ze(() => {
|
|
509
|
+
Pe();
|
|
510
|
+
}), He(() => {
|
|
511
511
|
G == null || G(), G = null, D == null || D(), D = null, re("");
|
|
512
|
-
}),
|
|
512
|
+
}), I(v, () => {
|
|
513
513
|
H();
|
|
514
514
|
}, { immediate: !0 });
|
|
515
|
-
async function
|
|
515
|
+
async function Ne(e) {
|
|
516
516
|
var t;
|
|
517
|
-
H(), ((t = c.value) == null ? void 0 : t.srid) !== e.srid && (
|
|
517
|
+
H(), ((t = c.value) == null ? void 0 : t.srid) !== e.srid && (S({ title: "XML start", type: "info", message: "зміна системи координат, оновлюємо карту ..." }), await ve(`/api/gis-xml/${encodeURIComponent(v.value)}`), S({ title: "XML created", type: "info", message: "карта створена" }), location.reload());
|
|
518
518
|
}
|
|
519
519
|
async function H() {
|
|
520
|
-
const e =
|
|
520
|
+
const e = v.value;
|
|
521
521
|
if (!e) {
|
|
522
522
|
c.value = null, b.value = null;
|
|
523
523
|
return;
|
|
@@ -528,14 +528,14 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
528
528
|
if (!t.ok)
|
|
529
529
|
throw new Error(`HTTP ${t.status}`);
|
|
530
530
|
const s = await t.json();
|
|
531
|
-
s.xml && (p.value = !0), c.value = s, s.xml || (
|
|
531
|
+
s.xml && (p.value = !0), c.value = s, s.xml || (S({ title: "XML not found", type: "info", message: "йде створення xml ... зачекайте" }), await ve(`/api/gis-xml/${encodeURIComponent(e)}`), S({ title: "XML created", type: "info", message: "карта створена" }), fetch(`/api/gis-raster/${encodeURIComponent(e)}?nocache=1`), p.value = !0);
|
|
532
532
|
} catch (t) {
|
|
533
533
|
console.error("Failed to load raster info", t), c.value = null, b.value = t instanceof Error ? t.message : String(t);
|
|
534
534
|
} finally {
|
|
535
535
|
A.value = !1;
|
|
536
536
|
}
|
|
537
537
|
}
|
|
538
|
-
function
|
|
538
|
+
function ve(e) {
|
|
539
539
|
return new Promise((t, s) => {
|
|
540
540
|
const l = new EventSource(e), r = [];
|
|
541
541
|
l.onmessage = (i) => {
|
|
@@ -547,36 +547,36 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
547
547
|
};
|
|
548
548
|
});
|
|
549
549
|
}
|
|
550
|
-
function
|
|
550
|
+
function De(e) {
|
|
551
551
|
var t;
|
|
552
552
|
return (t = e == null ? void 0 : e.files) != null && t.length ? e.files.map((s) => ({
|
|
553
553
|
name: s.name,
|
|
554
|
-
resolution:
|
|
554
|
+
resolution: Ue(s.name, e),
|
|
555
555
|
size: s.size || "—",
|
|
556
556
|
status: "Готово",
|
|
557
557
|
statusClass: "bg-emerald-50 text-emerald-600 border border-emerald-100"
|
|
558
558
|
})) : [];
|
|
559
559
|
}
|
|
560
|
-
function
|
|
560
|
+
function Ue(e, t) {
|
|
561
561
|
const s = e.toLowerCase();
|
|
562
562
|
return s.endsWith(".tfw") ? "Georeference" : s.endsWith(".xml") ? "Опис" : s.endsWith(".tif") || s.endsWith(".tiff") ? t != null && t.resolution ? t.resolution : "Растер" : (t == null ? void 0 : t.resolution) ?? "Файл";
|
|
563
563
|
}
|
|
564
|
-
function
|
|
564
|
+
function Te(e) {
|
|
565
565
|
return e ? {
|
|
566
|
-
baseParams:
|
|
566
|
+
baseParams: Fe(e),
|
|
567
567
|
spatial: {
|
|
568
568
|
crs: {
|
|
569
569
|
code: e.srid ? `EPSG:${e.srid}` : "EPSG:4326",
|
|
570
570
|
description: e.proj4 || "WGS 84 — World Geodetic System 1984"
|
|
571
571
|
},
|
|
572
|
-
bounds:
|
|
573
|
-
resolution:
|
|
572
|
+
bounds: Ve(e.extent),
|
|
573
|
+
resolution: Ae(e)
|
|
574
574
|
},
|
|
575
|
-
statistics:
|
|
576
|
-
technical:
|
|
575
|
+
statistics: Oe(e),
|
|
576
|
+
technical: Ge(e)
|
|
577
577
|
} : null;
|
|
578
578
|
}
|
|
579
|
-
function
|
|
579
|
+
function qe(e) {
|
|
580
580
|
return e != null && e.length ? e.map((s) => {
|
|
581
581
|
var r;
|
|
582
582
|
if (!s) return "";
|
|
@@ -584,9 +584,9 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
584
584
|
return ((r = l == null ? void 0 : l[0]) == null ? void 0 : r.toUpperCase()) || "";
|
|
585
585
|
}).filter(Boolean).join("") : "";
|
|
586
586
|
}
|
|
587
|
-
function
|
|
587
|
+
function Fe(e) {
|
|
588
588
|
var i, w;
|
|
589
|
-
const t = e.bands_count ?? ((i = e.bands) == null ? void 0 : i.length) ?? "—", s =
|
|
589
|
+
const t = e.bands_count ?? ((i = e.bands) == null ? void 0 : i.length) ?? "—", s = qe(e.bands), l = (e.bands ?? []).map((a) => a.trim()).filter((a) => a.length > 0), r = l.length ? l.join(", ") : void 0;
|
|
590
590
|
return [
|
|
591
591
|
{
|
|
592
592
|
label: "Розмір растру, px",
|
|
@@ -603,21 +603,21 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
603
603
|
{ label: "Стиснення", value: e.compression || "—" }
|
|
604
604
|
];
|
|
605
605
|
}
|
|
606
|
-
function
|
|
606
|
+
function Ve(e) {
|
|
607
607
|
return !e || e.length !== 4 ? [] : [
|
|
608
|
-
{ label: "Північ", value:
|
|
609
|
-
{ label: "Схід", value:
|
|
610
|
-
{ label: "Південь", value:
|
|
611
|
-
{ label: "Захід", value:
|
|
608
|
+
{ label: "Північ", value: R(e[3], "N") },
|
|
609
|
+
{ label: "Схід", value: R(e[2], "E") },
|
|
610
|
+
{ label: "Південь", value: R(e[1], "S") },
|
|
611
|
+
{ label: "Захід", value: R(e[0], "W") }
|
|
612
612
|
];
|
|
613
613
|
}
|
|
614
|
-
function
|
|
614
|
+
function Ae(e) {
|
|
615
615
|
const t = [
|
|
616
616
|
{ label: "Роздільна здатність", value: e.resolution || "—" }
|
|
617
617
|
];
|
|
618
618
|
return e.width && e.height && t.push({ label: "Розмір пікселя", value: `${e.width} × ${e.height} px` }), t;
|
|
619
619
|
}
|
|
620
|
-
function
|
|
620
|
+
function Oe(e) {
|
|
621
621
|
var t;
|
|
622
622
|
return (t = e.bands) != null && t.length ? e.bands.map((s, l) => {
|
|
623
623
|
const r = y[l % y.length];
|
|
@@ -633,7 +633,7 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
633
633
|
};
|
|
634
634
|
}) : [];
|
|
635
635
|
}
|
|
636
|
-
function
|
|
636
|
+
function Ge(e) {
|
|
637
637
|
var t;
|
|
638
638
|
return [
|
|
639
639
|
{ label: "Тип даних", value: e.color_depth ? `Unsigned Integer ${e.color_depth}-bit` : "—" },
|
|
@@ -644,18 +644,18 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
644
644
|
{ label: "URL тайла", value: e.url || "—" }
|
|
645
645
|
];
|
|
646
646
|
}
|
|
647
|
-
function
|
|
647
|
+
function R(e, t) {
|
|
648
648
|
if (e == null || Number.isNaN(e)) return "—";
|
|
649
649
|
const s = `${e.toFixed(5)}°`;
|
|
650
650
|
return t ? `${s} ${t}` : s;
|
|
651
651
|
}
|
|
652
|
-
return (e, t) => (u(), m("div",
|
|
653
|
-
n("div",
|
|
654
|
-
n("div",
|
|
655
|
-
n("div",
|
|
656
|
-
n("div",
|
|
657
|
-
n("div",
|
|
658
|
-
n("div",
|
|
652
|
+
return (e, t) => (u(), m("div", Ht, [
|
|
653
|
+
n("div", Jt, [
|
|
654
|
+
n("div", es, [
|
|
655
|
+
n("div", ts, [
|
|
656
|
+
n("div", ss, [
|
|
657
|
+
n("div", ns, [
|
|
658
|
+
n("div", ls, [
|
|
659
659
|
n("button", {
|
|
660
660
|
type: "button",
|
|
661
661
|
class: "hover:text-gray-700 cursor-pointer transition-colors",
|
|
@@ -675,85 +675,91 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
675
675
|
}, [
|
|
676
676
|
n("path", { d: "m9 18 6-6-6-6" })
|
|
677
677
|
], -1)),
|
|
678
|
-
n("span",
|
|
678
|
+
n("span", rs, d(T.value.name || "Растер"), 1)
|
|
679
679
|
]),
|
|
680
|
-
n("div",
|
|
681
|
-
n("div",
|
|
682
|
-
n("div",
|
|
683
|
-
n("h1",
|
|
680
|
+
n("div", os, [
|
|
681
|
+
n("div", is, [
|
|
682
|
+
n("div", as, [
|
|
683
|
+
n("h1", us, d(T.value.name || "Растер"), 1)
|
|
684
684
|
]),
|
|
685
685
|
ie.value ? (u(), m("p", {
|
|
686
686
|
key: 0,
|
|
687
687
|
class: "text-xs text-gray-500 truncate",
|
|
688
688
|
title: ie.value
|
|
689
|
-
}, d(ie.value), 9,
|
|
689
|
+
}, d(ie.value), 9, cs)) : q("", !0)
|
|
690
690
|
])
|
|
691
691
|
])
|
|
692
692
|
]),
|
|
693
|
-
n("div",
|
|
694
|
-
n("div",
|
|
693
|
+
n("div", ds, [
|
|
694
|
+
n("div", fs, [
|
|
695
695
|
n("div", {
|
|
696
696
|
class: "w-full text-xs text-gray-600 truncate",
|
|
697
697
|
title: T.value.description
|
|
698
|
-
}, d(T.value.description), 9,
|
|
698
|
+
}, d(T.value.description), 9, ms)
|
|
699
699
|
]),
|
|
700
|
-
|
|
701
|
-
"entity-id":
|
|
700
|
+
k(ut, {
|
|
701
|
+
"entity-id": v.value || "",
|
|
702
702
|
"entity-info": { name: T.value.name },
|
|
703
703
|
table: "gis.rasters.table",
|
|
704
704
|
"entity-label": "Растер",
|
|
705
705
|
"save-method": "put",
|
|
706
706
|
"edit-button-text": "Редагувати",
|
|
707
|
-
onSaved:
|
|
707
|
+
onSaved: Ne
|
|
708
708
|
}, null, 8, ["entity-id", "entity-info"])
|
|
709
709
|
])
|
|
710
710
|
])
|
|
711
711
|
])
|
|
712
712
|
]),
|
|
713
|
-
n("div",
|
|
714
|
-
n("div",
|
|
715
|
-
|
|
713
|
+
n("div", ps, [
|
|
714
|
+
n("div", gs, [
|
|
715
|
+
k(ot, {
|
|
716
716
|
ref_key: "mapViewRef",
|
|
717
717
|
ref: f
|
|
718
718
|
}, {
|
|
719
|
-
default:
|
|
720
|
-
|
|
721
|
-
key:
|
|
719
|
+
default: be(() => [
|
|
720
|
+
ze.value && p.value ? (u(), F(Zt, {
|
|
721
|
+
key: je.value,
|
|
722
722
|
"tile-url": fe.value,
|
|
723
723
|
extent: U.value,
|
|
724
724
|
"layer-id": me.value,
|
|
725
|
-
"show-raster-extent":
|
|
726
|
-
onToggleExtent: t[0] || (t[0] = (s) =>
|
|
725
|
+
"show-raster-extent": j.value,
|
|
726
|
+
onToggleExtent: t[0] || (t[0] = (s) => j.value = s)
|
|
727
727
|
}, null, 8, ["tile-url", "extent", "layer-id", "show-raster-extent"])) : q("", !0),
|
|
728
|
-
|
|
729
|
-
extent:
|
|
730
|
-
"layer-id":
|
|
728
|
+
k(_e, {
|
|
729
|
+
extent: j.value ? U.value : null,
|
|
730
|
+
"layer-id": Se.value
|
|
731
731
|
}, null, 8, ["extent", "layer-id"]),
|
|
732
|
-
|
|
732
|
+
k(_e, {
|
|
733
733
|
extent: O.value,
|
|
734
|
-
"layer-id":
|
|
734
|
+
"layer-id": Ie.value,
|
|
735
735
|
"line-color": "#0ea5e9",
|
|
736
736
|
"line-width": 3
|
|
737
737
|
}, null, 8, ["extent", "layer-id"]),
|
|
738
|
-
n("div",
|
|
739
|
-
|
|
738
|
+
n("div", ys, [
|
|
739
|
+
k(it)
|
|
740
740
|
]),
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
741
|
+
E.value ? (u(), m("div", xs, " Потягніть на карті, щоб намалювати нові Bounds. Esc скасовує редагування. ")) : q("", !0),
|
|
742
|
+
k(ct, null, {
|
|
743
|
+
default: be(() => [
|
|
744
|
+
k(dt),
|
|
745
|
+
k(ft),
|
|
746
|
+
k(mt),
|
|
747
|
+
k(he),
|
|
748
|
+
pe.value ? (u(), F(he, {
|
|
749
|
+
key: 0,
|
|
750
|
+
targetCenter: pe.value,
|
|
751
|
+
targetLabel: "Центр даних",
|
|
752
|
+
targetAriaLabel: "Перейти до центру даних"
|
|
753
|
+
}, null, 8, ["targetCenter"])) : q("", !0)
|
|
754
|
+
]),
|
|
755
|
+
_: 1
|
|
756
|
+
})
|
|
751
757
|
]),
|
|
752
758
|
_: 1
|
|
753
759
|
}, 512)
|
|
754
760
|
])
|
|
755
761
|
]),
|
|
756
|
-
|
|
762
|
+
k(pt, {
|
|
757
763
|
open: Z.value,
|
|
758
764
|
onToggle: t[1] || (t[1] = (s) => Z.value = !Z.value)
|
|
759
765
|
}, null, 8, ["open"])
|
|
@@ -761,37 +767,37 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
761
767
|
n("div", {
|
|
762
768
|
class: ae(["bg-white border-l border-gray-100 flex flex-col overflow-hidden shadow-lg flex-shrink-0 transition-[width] duration-100 ease-in-out", Z.value ? "w-[650px]" : "w-0"])
|
|
763
769
|
}, [
|
|
764
|
-
n("div",
|
|
765
|
-
n("div",
|
|
766
|
-
n("div",
|
|
770
|
+
n("div", vs, [
|
|
771
|
+
n("div", bs, [
|
|
772
|
+
n("div", hs, [
|
|
767
773
|
(u(), m(W, null, X(ge, (s) => n("button", {
|
|
768
774
|
key: s.key,
|
|
769
775
|
type: "button",
|
|
770
776
|
role: "tab",
|
|
771
|
-
"aria-selected":
|
|
772
|
-
class: ae(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group",
|
|
773
|
-
onClick: (l) =>
|
|
777
|
+
"aria-selected": L.value === s.key,
|
|
778
|
+
class: ae(["whitespace-nowrap flex flex-col items-center justify-center gap-0.5 py-1 px-1 text-[9px] font-medium transition-all duration-300 hover:bg-white/70 rounded-lg group", L.value === s.key ? "bg-white shadow-sm text-gray-700" : ""]),
|
|
779
|
+
onClick: (l) => L.value = s.key
|
|
774
780
|
}, [
|
|
775
781
|
(u(), F(Je(s.icon), { class: "h-3.5 w-3.5 mb-0.5" })),
|
|
776
|
-
n("span",
|
|
777
|
-
], 10,
|
|
782
|
+
n("span", ws, d(s.label), 1)
|
|
783
|
+
], 10, _s)), 64))
|
|
778
784
|
])
|
|
779
785
|
]),
|
|
780
|
-
n("div",
|
|
781
|
-
A.value ? (u(), m("div",
|
|
782
|
-
|
|
786
|
+
n("div", $s, [
|
|
787
|
+
A.value ? (u(), m("div", ks, " Завантаження метаданих растру… ")) : b.value ? (u(), m("div", Cs, " Не вдалося отримати дані: " + d(b.value), 1)) : q("", !0),
|
|
788
|
+
L.value === "files" ? (u(), F(qt, {
|
|
783
789
|
key: 2,
|
|
784
|
-
files:
|
|
785
|
-
}, null, 8, ["files"])) :
|
|
790
|
+
files: Be.value
|
|
791
|
+
}, null, 8, ["files"])) : L.value === "metadata" ? (u(), F(gt, {
|
|
786
792
|
key: 3,
|
|
787
793
|
data: c.value,
|
|
788
|
-
"entity-id":
|
|
794
|
+
"entity-id": v.value,
|
|
789
795
|
"entity-type": "raster",
|
|
790
796
|
onSaved: H,
|
|
791
|
-
onEditCssBounds:
|
|
792
|
-
}, null, 8, ["data", "entity-id"])) :
|
|
797
|
+
onEditCssBounds: Me
|
|
798
|
+
}, null, 8, ["data", "entity-id"])) : xe.value ? (u(), F(Nt, {
|
|
793
799
|
key: 4,
|
|
794
|
-
details:
|
|
800
|
+
details: xe.value
|
|
795
801
|
}, null, 8, ["details"])) : q("", !0)
|
|
796
802
|
])
|
|
797
803
|
])
|
|
@@ -800,5 +806,5 @@ const qt = /* @__PURE__ */ nt(Dt, [["render", Tt]]), Ft = { class: "absolute top
|
|
|
800
806
|
}
|
|
801
807
|
});
|
|
802
808
|
export {
|
|
803
|
-
|
|
809
|
+
Ps as default
|
|
804
810
|
};
|