qwc2 2025.12.18 → 2025.12.24
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/actions/display.js +6 -6
- package/actions/theme.js +4 -19
- package/components/AppMenu.js +1 -1
- package/components/AttributeForm.js +7 -7
- package/components/AttributeTableWidget.js +2 -2
- package/components/AutoEditForm.js +6 -3
- package/components/EditComboField.js +1 -4
- package/components/IdentifyViewer.js +33 -34
- package/components/ImportLayer.js +78 -79
- package/components/OverviewMapButton.js +147 -0
- package/components/PluginsContainer.js +2 -2
- package/components/ResizeableWindow.js +8 -1
- package/components/SearchBox.js +2 -2
- package/components/SideBar.js +1 -0
- package/components/StandardApp.js +1 -2
- package/components/ThemeLayersListWindow.js +10 -1
- package/components/{map3d/View3DSwitcher.js → ViewSwitcher.js} +74 -29
- package/components/map/OlMap.js +1 -1
- package/components/map3d/Map3D.js +50 -48
- package/components/map3d/MapControls3D.js +4 -1
- package/components/map3d/drawtool/EditTool3D.js +1 -1
- package/components/map3d/layers/WFSLayer3D.js +1 -1
- package/components/share/ShareQRCode.js +1 -1
- package/{plugins/map3d/style/OverviewMap3D.css → components/style/OverviewMapButton.css} +4 -4
- package/components/style/ViewSwitcher.css +36 -0
- package/components/widgets/ColorButton.js +2 -2
- package/components/widgets/CopyButton.js +1 -1
- package/components/widgets/LayerCatalogWidget.js +4 -4
- package/libs/openlayers.js +11 -11
- package/package.json +54 -55
- package/plugins/API.js +4 -4
- package/plugins/FeatureForm.js +2 -2
- package/plugins/FeatureSearch.js +12 -12
- package/plugins/GeometryDigitizer.js +12 -13
- package/plugins/Map.js +11 -4
- package/plugins/MapFilter.js +12 -12
- package/plugins/MapTip.js +1 -1
- package/plugins/ObliqueView.js +115 -51
- package/plugins/Print.js +79 -91
- package/plugins/Routing.js +1 -1
- package/plugins/Share.js +5 -5
- package/plugins/TimeManager.js +1 -2
- package/plugins/View3D.js +135 -123
- package/plugins/map/RedliningSupport.js +3 -3
- package/plugins/map3d/Draw3D.js +4 -4
- package/plugins/map3d/ExportObjects3D.js +1 -1
- package/plugins/map3d/HideObjects3D.js +7 -7
- package/plugins/map3d/Identify3D.js +1 -1
- package/plugins/map3d/LayerTree3D.js +1 -1
- package/plugins/map3d/MapExport3D.js +25 -25
- package/plugins/map3d/Measure3D.js +1 -1
- package/plugins/map3d/OverviewMap3D.js +27 -102
- package/plugins/map3d/TopBar3D.js +7 -7
- package/plugins/style/ObliqueView.css +27 -11
- package/reducers/display.js +2 -2
- package/reducers/layers.js +11 -11
- package/scripts/gen-plugin-docs.js +11 -4
- package/scripts/makeIconkit.js +2 -2
- package/scripts/themesConfig.js +5 -5
- package/scripts/updateTranslations.js +2 -2
- package/utils/CoordinatesUtils.js +1 -1
- package/utils/EditingUtils.js +6 -6
- package/utils/FeatureStyles.js +1 -1
- package/utils/LayerUtils.js +73 -74
- package/utils/MiscUtils.js +10 -3
- package/utils/PermaLinkUtils.js +68 -71
- package/utils/SearchProviders.js +2 -2
- package/utils/ServiceLayerUtils.js +12 -12
- package/utils/ThemeUtils.js +1 -1
- package/utils/VectorLayerUtils.js +3 -3
- package/components/map3d/style/View3DSwitcher.css +0 -19
|
@@ -5,7 +5,9 @@ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Sym
|
|
|
5
5
|
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
6
6
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
7
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
-
function
|
|
8
|
+
function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
|
|
9
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
10
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
9
11
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
10
12
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
11
13
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
@@ -261,7 +263,7 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
261
263
|
try {
|
|
262
264
|
data = JSON.parse(ev.target.result);
|
|
263
265
|
_this.addGeoJSONLayer(file.name, data);
|
|
264
|
-
} catch (
|
|
266
|
+
} catch (_unused) {
|
|
265
267
|
/* Pass */
|
|
266
268
|
}
|
|
267
269
|
} else if (file.name.toLowerCase().endsWith(".pdf")) {
|
|
@@ -284,51 +286,49 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
284
286
|
});
|
|
285
287
|
});
|
|
286
288
|
_defineProperty(_this, "addKMZLayer", /*#__PURE__*/function () {
|
|
287
|
-
var _ref5 = _asyncToGenerator(/*#__PURE__*/
|
|
288
|
-
var _yield$import,
|
|
289
|
-
return
|
|
290
|
-
while (1) switch (_context.
|
|
289
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(file) {
|
|
290
|
+
var _yield$import, load, _yield$import2, ZipLoader, fileMap, fileName, decoder, _t, _t2;
|
|
291
|
+
return _regenerator().w(function (_context) {
|
|
292
|
+
while (1) switch (_context.n) {
|
|
291
293
|
case 0:
|
|
292
|
-
_context.
|
|
294
|
+
_context.n = 1;
|
|
293
295
|
return import('@loaders.gl/core');
|
|
294
|
-
case
|
|
295
|
-
_yield$import = _context.
|
|
296
|
-
_BrowserFileSystem = _yield$import._BrowserFileSystem;
|
|
296
|
+
case 1:
|
|
297
|
+
_yield$import = _context.v;
|
|
297
298
|
load = _yield$import.load;
|
|
298
|
-
_context.
|
|
299
|
+
_context.n = 2;
|
|
299
300
|
return import('@loaders.gl/zip');
|
|
300
|
-
case
|
|
301
|
-
_yield$import2 = _context.
|
|
301
|
+
case 2:
|
|
302
|
+
_yield$import2 = _context.v;
|
|
302
303
|
ZipLoader = _yield$import2.ZipLoader;
|
|
303
|
-
_context.
|
|
304
|
+
_context.n = 3;
|
|
304
305
|
return load(file, ZipLoader);
|
|
305
|
-
case
|
|
306
|
-
fileMap = _context.
|
|
307
|
-
|
|
308
|
-
case
|
|
309
|
-
if ((
|
|
310
|
-
_context.
|
|
306
|
+
case 3:
|
|
307
|
+
fileMap = _context.v;
|
|
308
|
+
_t = _regeneratorKeys(fileMap);
|
|
309
|
+
case 4:
|
|
310
|
+
if ((_t2 = _t()).done) {
|
|
311
|
+
_context.n = 6;
|
|
311
312
|
break;
|
|
312
313
|
}
|
|
313
|
-
fileName =
|
|
314
|
+
fileName = _t2.value;
|
|
314
315
|
if (!(fileName === "doc.kml")) {
|
|
315
|
-
_context.
|
|
316
|
+
_context.n = 5;
|
|
316
317
|
break;
|
|
317
318
|
}
|
|
318
319
|
decoder = new TextDecoder();
|
|
319
320
|
_this.addKMLLayer(file.name, decoder.decode(fileMap[fileName]));
|
|
320
|
-
return _context.
|
|
321
|
-
case
|
|
322
|
-
_context.
|
|
321
|
+
return _context.a(3, 6);
|
|
322
|
+
case 5:
|
|
323
|
+
_context.n = 4;
|
|
323
324
|
break;
|
|
324
|
-
case
|
|
325
|
+
case 6:
|
|
325
326
|
_this.setState({
|
|
326
327
|
file: null,
|
|
327
328
|
addingLayer: false
|
|
328
329
|
});
|
|
329
|
-
case
|
|
330
|
-
|
|
331
|
-
return _context.stop();
|
|
330
|
+
case 7:
|
|
331
|
+
return _context.a(2);
|
|
332
332
|
}
|
|
333
333
|
}, _callee);
|
|
334
334
|
}));
|
|
@@ -482,46 +482,46 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
482
482
|
reader.readAsDataURL(file);
|
|
483
483
|
});
|
|
484
484
|
_defineProperty(_this, "addSHPLayer", /*#__PURE__*/function () {
|
|
485
|
-
var _ref6 = _asyncToGenerator(/*#__PURE__*/
|
|
486
|
-
var _yield$import3, _BrowserFileSystem, load, _yield$import4, Proj4Projection, _yield$import5, ShapefileLoader, _yield$import6, ZipLoader, mimeTypes, projections, fileMap, EXTENSIONS, files, fileName, name, ext, fileList, blob, f, list, fileSystem, fetch, filename, data;
|
|
487
|
-
return
|
|
488
|
-
while (1) switch (_context2.
|
|
485
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(file) {
|
|
486
|
+
var _yield$import3, _BrowserFileSystem, load, _yield$import4, Proj4Projection, _yield$import5, ShapefileLoader, _yield$import6, ZipLoader, mimeTypes, projections, fileMap, EXTENSIONS, files, fileName, name, ext, fileList, blob, f, list, fileSystem, fetch, filename, data, _t3, _t4, _t5, _t6;
|
|
487
|
+
return _regenerator().w(function (_context2) {
|
|
488
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
489
489
|
case 0:
|
|
490
|
-
_context2.
|
|
490
|
+
_context2.n = 1;
|
|
491
491
|
return import('@loaders.gl/core');
|
|
492
|
-
case
|
|
493
|
-
_yield$import3 = _context2.
|
|
492
|
+
case 1:
|
|
493
|
+
_yield$import3 = _context2.v;
|
|
494
494
|
_BrowserFileSystem = _yield$import3._BrowserFileSystem;
|
|
495
495
|
load = _yield$import3.load;
|
|
496
|
-
_context2.
|
|
496
|
+
_context2.n = 2;
|
|
497
497
|
return import('@math.gl/proj4');
|
|
498
|
-
case
|
|
499
|
-
_yield$import4 = _context2.
|
|
498
|
+
case 2:
|
|
499
|
+
_yield$import4 = _context2.v;
|
|
500
500
|
Proj4Projection = _yield$import4.Proj4Projection;
|
|
501
|
-
_context2.
|
|
501
|
+
_context2.n = 3;
|
|
502
502
|
return import('@loaders.gl/shapefile');
|
|
503
|
-
case
|
|
504
|
-
_yield$import5 = _context2.
|
|
503
|
+
case 3:
|
|
504
|
+
_yield$import5 = _context2.v;
|
|
505
505
|
ShapefileLoader = _yield$import5.ShapefileLoader;
|
|
506
|
-
_context2.
|
|
506
|
+
_context2.n = 4;
|
|
507
507
|
return import('@loaders.gl/zip');
|
|
508
|
-
case
|
|
509
|
-
_yield$import6 = _context2.
|
|
508
|
+
case 4:
|
|
509
|
+
_yield$import6 = _context2.v;
|
|
510
510
|
ZipLoader = _yield$import6.ZipLoader;
|
|
511
511
|
// Import SHP layer from ZIP. Zip must contain all the required files : shp, dbf, shx, prj, cpg
|
|
512
512
|
mimeTypes = ['application/zip', 'application/zip-compressed', 'application/x-zip-compressed'];
|
|
513
513
|
if (!mimeTypes.includes(file.type)) {
|
|
514
|
-
_context2.
|
|
514
|
+
_context2.n = 16;
|
|
515
515
|
break;
|
|
516
516
|
}
|
|
517
517
|
projections = ConfigUtils.getConfigProp("projections") || [];
|
|
518
518
|
if (projections) {
|
|
519
519
|
Proj4Projection.defineProjectionAliases(projections);
|
|
520
520
|
}
|
|
521
|
-
_context2.
|
|
521
|
+
_context2.n = 5;
|
|
522
522
|
return load(file, ZipLoader);
|
|
523
|
-
case
|
|
524
|
-
fileMap = _context2.
|
|
523
|
+
case 5:
|
|
524
|
+
fileMap = _context2.v;
|
|
525
525
|
EXTENSIONS = ['shp', 'shx', 'dbf', 'cpg', 'prj'];
|
|
526
526
|
files = {}; // Iterate through all the files in ZIP to get a list of (SHP + sidecar files) by filename
|
|
527
527
|
for (fileName in fileMap) {
|
|
@@ -538,15 +538,15 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
540
|
// Load each SHP with sidecar files as GeoJSON features
|
|
541
|
-
|
|
542
|
-
case
|
|
543
|
-
if ((
|
|
544
|
-
_context2.
|
|
541
|
+
_t3 = _regeneratorKeys(files);
|
|
542
|
+
case 6:
|
|
543
|
+
if ((_t4 = _t3()).done) {
|
|
544
|
+
_context2.n = 15;
|
|
545
545
|
break;
|
|
546
546
|
}
|
|
547
|
-
f =
|
|
547
|
+
f = _t4.value;
|
|
548
548
|
if (!Object.hasOwn(files, f)) {
|
|
549
|
-
_context2.
|
|
549
|
+
_context2.n = 14;
|
|
550
550
|
break;
|
|
551
551
|
}
|
|
552
552
|
list = files[f];
|
|
@@ -554,8 +554,8 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
554
554
|
fetch = fileSystem.fetch.bind(fileSystem.fetch);
|
|
555
555
|
filename = "".concat(f, ".shp"); // Load SHP and reproject to mapCrs
|
|
556
556
|
data = null;
|
|
557
|
-
_context2.
|
|
558
|
-
_context2.
|
|
557
|
+
_context2.p = 7;
|
|
558
|
+
_context2.n = 8;
|
|
559
559
|
return load(filename, ShapefileLoader, {
|
|
560
560
|
fetch: fetch,
|
|
561
561
|
shapefile: {
|
|
@@ -567,15 +567,15 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
567
567
|
_targetCrs: _this.props.mapCrs
|
|
568
568
|
}
|
|
569
569
|
});
|
|
570
|
-
case
|
|
571
|
-
data = _context2.
|
|
572
|
-
_context2.
|
|
570
|
+
case 8:
|
|
571
|
+
data = _context2.v;
|
|
572
|
+
_context2.n = 13;
|
|
573
573
|
break;
|
|
574
|
-
case
|
|
575
|
-
_context2.
|
|
576
|
-
|
|
577
|
-
_context2.
|
|
578
|
-
_context2.
|
|
574
|
+
case 9:
|
|
575
|
+
_context2.p = 9;
|
|
576
|
+
_t5 = _context2.v;
|
|
577
|
+
_context2.p = 10;
|
|
578
|
+
_context2.n = 11;
|
|
579
579
|
return load(filename, ShapefileLoader, {
|
|
580
580
|
fetch: fetch,
|
|
581
581
|
shapefile: {
|
|
@@ -587,17 +587,17 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
587
587
|
_targetCrs: _this.props.mapCrs
|
|
588
588
|
}
|
|
589
589
|
});
|
|
590
|
-
case
|
|
591
|
-
data = _context2.
|
|
590
|
+
case 11:
|
|
591
|
+
data = _context2.v;
|
|
592
592
|
/* eslint-disable-next-line */
|
|
593
593
|
alert(LocaleUtils.tr("importlayer.shpreprojectionerror"));
|
|
594
|
-
_context2.
|
|
594
|
+
_context2.n = 13;
|
|
595
595
|
break;
|
|
596
|
-
case
|
|
597
|
-
_context2.
|
|
598
|
-
|
|
596
|
+
case 12:
|
|
597
|
+
_context2.p = 12;
|
|
598
|
+
_t6 = _context2.v;
|
|
599
599
|
data = null;
|
|
600
|
-
case
|
|
600
|
+
case 13:
|
|
601
601
|
if (data) {
|
|
602
602
|
data.crs = {
|
|
603
603
|
type: "name",
|
|
@@ -608,19 +608,18 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
|
|
|
608
608
|
// Add data as GeoJSON layer
|
|
609
609
|
_this.addGeoJSONLayer(f, data);
|
|
610
610
|
}
|
|
611
|
-
case
|
|
612
|
-
_context2.
|
|
611
|
+
case 14:
|
|
612
|
+
_context2.n = 6;
|
|
613
613
|
break;
|
|
614
|
-
case
|
|
614
|
+
case 15:
|
|
615
615
|
_this.setState({
|
|
616
616
|
file: null,
|
|
617
617
|
addingLayer: false
|
|
618
618
|
});
|
|
619
|
-
case
|
|
620
|
-
|
|
621
|
-
return _context2.stop();
|
|
619
|
+
case 16:
|
|
620
|
+
return _context2.a(2);
|
|
622
621
|
}
|
|
623
|
-
}, _callee2, null, [[
|
|
622
|
+
}, _callee2, null, [[10, 12], [7, 9]]);
|
|
624
623
|
}));
|
|
625
624
|
return function (_x2) {
|
|
626
625
|
return _ref6.apply(this, arguments);
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
5
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
6
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
7
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
9
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
12
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
13
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
14
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
|
+
/**
|
|
18
|
+
* Copyright 2024 Sourcepole AG
|
|
19
|
+
* All rights reserved.
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the BSD-style license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import React from 'react';
|
|
26
|
+
import ol from 'openlayers';
|
|
27
|
+
import PropTypes from 'prop-types';
|
|
28
|
+
import viewconeIcon from '../resources/viewcone.svg';
|
|
29
|
+
import OlLayer from './map/OlLayer';
|
|
30
|
+
import './style/OverviewMapButton.css';
|
|
31
|
+
var OverviewMapButton = /*#__PURE__*/function (_React$Component) {
|
|
32
|
+
function OverviewMapButton(props) {
|
|
33
|
+
var _this;
|
|
34
|
+
_classCallCheck(this, OverviewMapButton);
|
|
35
|
+
_this = _callSuper(this, OverviewMapButton, [props]);
|
|
36
|
+
_defineProperty(_this, "state", {
|
|
37
|
+
collapsed: true
|
|
38
|
+
});
|
|
39
|
+
_defineProperty(_this, "initOverviewMap", function (el) {
|
|
40
|
+
if (el) {
|
|
41
|
+
_this.map = new ol.Map({
|
|
42
|
+
layers: [_this.viewConeLayer],
|
|
43
|
+
controls: [],
|
|
44
|
+
target: el
|
|
45
|
+
});
|
|
46
|
+
_this.setupView();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
_defineProperty(_this, "setupView", function () {
|
|
50
|
+
var overviewView = new ol.View({
|
|
51
|
+
enableRotation: false,
|
|
52
|
+
projection: _this.props.projection
|
|
53
|
+
});
|
|
54
|
+
_this.map.setView(overviewView);
|
|
55
|
+
_this.updateViewCone();
|
|
56
|
+
});
|
|
57
|
+
_defineProperty(_this, "updateViewCone", function () {
|
|
58
|
+
if (_this.props.center) {
|
|
59
|
+
_this.map.getView().setCenter(_this.props.center);
|
|
60
|
+
_this.map.getView().setResolution(_this.props.resolution);
|
|
61
|
+
_this.viewConeFeature.getGeometry().setCoordinates(_this.props.center);
|
|
62
|
+
_this.viewConeFeature.set('rotation', _this.props.coneRotation, true);
|
|
63
|
+
_this.viewConeLayer.getSource().changed();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
_this.map = null;
|
|
67
|
+
_this.viewConeFeature = new ol.Feature(new ol.geom.Point([0, 0]));
|
|
68
|
+
_this.viewConeLayer = new ol.layer.Vector({
|
|
69
|
+
source: new ol.source.Vector({
|
|
70
|
+
features: [_this.viewConeFeature]
|
|
71
|
+
}),
|
|
72
|
+
style: function style(feature) {
|
|
73
|
+
return new ol.style.Style({
|
|
74
|
+
fill: new ol.style.Fill({
|
|
75
|
+
color: 'white'
|
|
76
|
+
}),
|
|
77
|
+
stroke: new ol.style.Stroke({
|
|
78
|
+
color: 'red',
|
|
79
|
+
width: 2
|
|
80
|
+
}),
|
|
81
|
+
image: new ol.style.Icon({
|
|
82
|
+
anchor: [0.5, 1],
|
|
83
|
+
anchorXUnits: 'fraction',
|
|
84
|
+
anchorYUnits: 'fraction',
|
|
85
|
+
src: viewconeIcon,
|
|
86
|
+
rotation: feature.get('rotation'),
|
|
87
|
+
scale: 2
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
zIndex: 10000
|
|
92
|
+
});
|
|
93
|
+
return _this;
|
|
94
|
+
}
|
|
95
|
+
_inherits(OverviewMapButton, _React$Component);
|
|
96
|
+
return _createClass(OverviewMapButton, [{
|
|
97
|
+
key: "componentDidUpdate",
|
|
98
|
+
value: function componentDidUpdate(prevProps, prevState) {
|
|
99
|
+
if (this.props.projection !== prevProps.projection) {
|
|
100
|
+
this.setupView();
|
|
101
|
+
}
|
|
102
|
+
if (this.map && (this.props.center !== prevProps.center || this.props.resolution !== prevProps.resolution || this.props.coneRotation !== prevProps.coneRotation)) {
|
|
103
|
+
this.updateViewCone();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "render",
|
|
108
|
+
value: function render() {
|
|
109
|
+
var _this2 = this;
|
|
110
|
+
var style = {
|
|
111
|
+
display: this.state.collapsed ? 'none' : 'initial'
|
|
112
|
+
};
|
|
113
|
+
return [/*#__PURE__*/React.createElement("div", {
|
|
114
|
+
className: "overview-map",
|
|
115
|
+
key: "OverivewMap"
|
|
116
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
117
|
+
className: "ol-overviewmap-map",
|
|
118
|
+
ref: this.initOverviewMap,
|
|
119
|
+
style: style
|
|
120
|
+
}), /*#__PURE__*/React.createElement("button", {
|
|
121
|
+
onClick: function onClick() {
|
|
122
|
+
return _this2.setState(function (state) {
|
|
123
|
+
return {
|
|
124
|
+
collapsed: !state.collapsed
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
type: "button"
|
|
129
|
+
}, this.state.collapsed ? '«' : '»')), this.map && this.props.layer ? /*#__PURE__*/React.createElement(OlLayer, {
|
|
130
|
+
key: this.props.layer.name,
|
|
131
|
+
map: this.map,
|
|
132
|
+
options: _objectSpread(_objectSpread({}, this.props.layer), {}, {
|
|
133
|
+
visibility: true
|
|
134
|
+
}),
|
|
135
|
+
projection: this.props.projection
|
|
136
|
+
}) : null];
|
|
137
|
+
}
|
|
138
|
+
}]);
|
|
139
|
+
}(React.Component);
|
|
140
|
+
_defineProperty(OverviewMapButton, "propTypes", {
|
|
141
|
+
center: PropTypes.array,
|
|
142
|
+
coneRotation: PropTypes.number,
|
|
143
|
+
layer: PropTypes.object,
|
|
144
|
+
projection: PropTypes.string,
|
|
145
|
+
resolution: PropTypes.number
|
|
146
|
+
});
|
|
147
|
+
export { OverviewMapButton as default };
|
|
@@ -60,8 +60,8 @@ var PluginsContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
60
60
|
var device = ConfigUtils.isMobile() ? 'mobile' : 'desktop';
|
|
61
61
|
var plugins = PluginStore.getPlugins();
|
|
62
62
|
return _toConsumableArray(_this.props.pluginsConfig).sort(function (a, b) {
|
|
63
|
-
var
|
|
64
|
-
return (
|
|
63
|
+
var _a$order, _b$order;
|
|
64
|
+
return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) - ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0);
|
|
65
65
|
}).map(function (pluginConf) {
|
|
66
66
|
var _this$props$theme, _this$props$theme2, _pluginConf$key;
|
|
67
67
|
var Plugin = plugins[pluginConf.name + "Plugin"];
|
|
@@ -244,7 +244,8 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
244
244
|
className: bodyclasses,
|
|
245
245
|
onMouseDown: function onMouseDown() {
|
|
246
246
|
return _this.props.raiseWindow(_this.id);
|
|
247
|
-
}
|
|
247
|
+
},
|
|
248
|
+
onScroll: _this.preventScroll
|
|
248
249
|
}, /*#__PURE__*/React.createElement("div", {
|
|
249
250
|
className: "resizeable-window-drag-shield",
|
|
250
251
|
ref: function ref(el) {
|
|
@@ -256,6 +257,12 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
256
257
|
node: _this.portalNode
|
|
257
258
|
})) : _this.props.children)));
|
|
258
259
|
});
|
|
260
|
+
_defineProperty(_this, "preventScroll", function (ev) {
|
|
261
|
+
if (!_this.props.scrollable) {
|
|
262
|
+
ev.target.scrollLeft = 0;
|
|
263
|
+
ev.target.scrollTop = 0;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
259
266
|
_defineProperty(_this, "setInitialSize", function (container) {
|
|
260
267
|
if (!container) {
|
|
261
268
|
return;
|
package/components/SearchBox.js
CHANGED
|
@@ -1090,8 +1090,8 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
|
|
|
1090
1090
|
styleName: 'marker'
|
|
1091
1091
|
};
|
|
1092
1092
|
if (!_this.props.searchOptions.hideResultLabels) {
|
|
1093
|
-
var
|
|
1094
|
-
var _label = ((
|
|
1093
|
+
var _ref0, _item$label2;
|
|
1094
|
+
var _label = ((_ref0 = (_item$label2 = item.label) !== null && _item$label2 !== void 0 ? _item$label2 : item.text) !== null && _ref0 !== void 0 ? _ref0 : '').replace(/<\/?\w+\s*\/?>/g, '');
|
|
1095
1095
|
marker.properties = {
|
|
1096
1096
|
label: _label
|
|
1097
1097
|
};
|
package/components/SideBar.js
CHANGED
|
@@ -149,6 +149,7 @@ var SideBar = /*#__PURE__*/function (_React$Component) {
|
|
|
149
149
|
}, /*#__PURE__*/React.createElement("div", {
|
|
150
150
|
className: "".concat(classes, " ").concat(this.props.extraClasses),
|
|
151
151
|
id: this.props.id,
|
|
152
|
+
inert: !visible,
|
|
152
153
|
ref: this.setRef,
|
|
153
154
|
style: style
|
|
154
155
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -120,7 +120,6 @@ var AppContainerComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
120
120
|
if (theme) {
|
|
121
121
|
var _params$bl;
|
|
122
122
|
// Compute initial view
|
|
123
|
-
var initialView = params.v;
|
|
124
123
|
var initialExtent = null;
|
|
125
124
|
if (params.c && params.s !== undefined) {
|
|
126
125
|
var coords = params.c.split(/[;,]/g).map(function (x) {
|
|
@@ -163,7 +162,7 @@ var AppContainerComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
163
162
|
if (layerParams && ConfigUtils.getConfigProp("urlReverseLayerOrder")) {
|
|
164
163
|
layerParams.reverse();
|
|
165
164
|
}
|
|
166
|
-
_this.props.setCurrentTheme(theme, themes, false, initialExtent, layerParams, (_params$bl = params.bl) !== null && _params$bl !== void 0 ? _params$bl : null, state.layers, _this.props.appConfig.themeLayerRestorer, _this.props.appConfig.externalLayerRestorer
|
|
165
|
+
_this.props.setCurrentTheme(theme, themes, false, initialExtent, layerParams, (_params$bl = params.bl) !== null && _params$bl !== void 0 ? _params$bl : null, state.layers, _this.props.appConfig.themeLayerRestorer, _this.props.appConfig.externalLayerRestorer);
|
|
167
166
|
} else if (!ConfigUtils.havePlugin("Portal")) {
|
|
168
167
|
_this.props.showNotification("missingdefaulttheme", LocaleUtils.tr("app.missingdefaulttheme", params.t), NotificationType.WARN, true);
|
|
169
168
|
}
|
|
@@ -32,6 +32,7 @@ import React from 'react';
|
|
|
32
32
|
import { connect } from 'react-redux';
|
|
33
33
|
import isEmpty from 'lodash.isempty';
|
|
34
34
|
import PropTypes from 'prop-types';
|
|
35
|
+
import url from 'url';
|
|
35
36
|
import { LayerRole, addLayer } from '../actions/layers';
|
|
36
37
|
import { setCurrentTask } from '../actions/task';
|
|
37
38
|
import { setThemeLayersList } from '../actions/theme';
|
|
@@ -61,9 +62,17 @@ var ThemeLayersListWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
61
62
|
}));
|
|
62
63
|
});
|
|
63
64
|
_defineProperty(_this, "addLayers", function (sublayers) {
|
|
65
|
+
var urlParts = url.parse(_this.props.theme.url, true);
|
|
66
|
+
// Resolve relative urls
|
|
67
|
+
if (!urlParts.host) {
|
|
68
|
+
var locationParts = url.parse(window.location.href);
|
|
69
|
+
urlParts.protocol = locationParts.protocol;
|
|
70
|
+
urlParts.host = locationParts.host;
|
|
71
|
+
}
|
|
72
|
+
var themeUrl = url.format(urlParts);
|
|
64
73
|
_this.props.closeWindow("existinglayers");
|
|
65
74
|
var existingSublayers = _this.props.layers.reduce(function (res, layer) {
|
|
66
|
-
if (layer.type === 'wms' && layer.url ===
|
|
75
|
+
if (layer.type === 'wms' && layer.url === themeUrl) {
|
|
67
76
|
return [].concat(_toConsumableArray(res), _toConsumableArray(LayerUtils.getSublayerNames(layer)), [layer.name]);
|
|
68
77
|
}
|
|
69
78
|
return res;
|