qwc2 2025.10.24 → 2025.10.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/components/FeatureAttributesWindow.js +3 -2
  2. package/components/NumericInputWindow.js +30 -22
  3. package/components/map/layers/MVTLayer.js +3 -0
  4. package/components/map/layers/VectorLayer.js +66 -65
  5. package/components/map3d/drawtool/EditTool3D.js +1 -1
  6. package/components/style/NumericInputWindow.css +19 -4
  7. package/components/widgets/TextInput.js +4 -2
  8. package/package.json +1 -1
  9. package/plugins/HeightProfile.js +3 -1
  10. package/plugins/Redlining.js +7 -1
  11. package/plugins/map/RedliningSupport.js +279 -219
  12. package/reducers/redlining.js +5 -3
  13. package/scripts/updateTranslations.js +1 -1
  14. package/static/translations/bg-BG.json +3 -3
  15. package/static/translations/ca-ES.json +3 -3
  16. package/static/translations/cs-CZ.json +3 -3
  17. package/static/translations/de-CH.json +3 -3
  18. package/static/translations/de-DE.json +3 -3
  19. package/static/translations/en-US.json +3 -3
  20. package/static/translations/es-ES.json +3 -3
  21. package/static/translations/fi-FI.json +3 -3
  22. package/static/translations/fr-FR.json +3 -3
  23. package/static/translations/hu-HU.json +3 -3
  24. package/static/translations/it-IT.json +3 -3
  25. package/static/translations/ja-JP.json +3 -3
  26. package/static/translations/nl-NL.json +3 -3
  27. package/static/translations/no-NO.json +3 -3
  28. package/static/translations/pl-PL.json +3 -3
  29. package/static/translations/pt-BR.json +3 -3
  30. package/static/translations/pt-PT.json +3 -3
  31. package/static/translations/ro-RO.json +3 -3
  32. package/static/translations/ru-RU.json +3 -3
  33. package/static/translations/sv-SE.json +3 -3
  34. package/static/translations/tr-TR.json +3 -3
  35. package/static/translations/tsconfig.json +3 -3
  36. package/static/translations/uk-UA.json +3 -3
  37. package/utils/EditingInterface.js +15 -4
  38. package/utils/LayerUtils.js +16 -6
@@ -137,7 +137,6 @@
137
137
  "draw3d": {
138
138
  "clone": "",
139
139
  "cone": "",
140
- "ctrlhint": "",
141
140
  "cuboid": "",
142
141
  "cylinder": "",
143
142
  "delete": "",
@@ -195,7 +194,7 @@
195
194
  },
196
195
  "featureattributes": {
197
196
  "name": "",
198
- "nofeature": "",
197
+ "nofeatureormultiple": "",
199
198
  "value": "",
200
199
  "windowtitle": ""
201
200
  },
@@ -448,7 +447,7 @@
448
447
  "angle": "",
449
448
  "featureunsupported": "",
450
449
  "height": "",
451
- "nofeature": "",
450
+ "nofeatureormultiple": "",
452
451
  "side": "",
453
452
  "width": "",
454
453
  "windowtitle": ""
@@ -501,6 +500,7 @@
501
500
  "bufferlayername": "",
502
501
  "bufferselectfeature": "",
503
502
  "circle": "",
503
+ "ctrlhint": "",
504
504
  "delete": "",
505
505
  "draw": "",
506
506
  "edit": "",
@@ -137,7 +137,6 @@
137
137
  "draw3d": {
138
138
  "clone": "",
139
139
  "cone": "",
140
- "ctrlhint": "",
141
140
  "cuboid": "",
142
141
  "cylinder": "",
143
142
  "delete": "",
@@ -195,7 +194,7 @@
195
194
  },
196
195
  "featureattributes": {
197
196
  "name": "",
198
- "nofeature": "",
197
+ "nofeatureormultiple": "",
199
198
  "value": "",
200
199
  "windowtitle": ""
201
200
  },
@@ -448,7 +447,7 @@
448
447
  "angle": "",
449
448
  "featureunsupported": "",
450
449
  "height": "",
451
- "nofeature": "",
450
+ "nofeatureormultiple": "",
452
451
  "side": "",
453
452
  "width": "",
454
453
  "windowtitle": ""
@@ -501,6 +500,7 @@
501
500
  "bufferlayername": "Buffert",
502
501
  "bufferselectfeature": "Välj ett objekt att buffra",
503
502
  "circle": "",
503
+ "ctrlhint": "",
504
504
  "delete": "Radera",
505
505
  "draw": "Rita",
506
506
  "edit": "Redigera",
@@ -137,7 +137,6 @@
137
137
  "draw3d": {
138
138
  "clone": "",
139
139
  "cone": "Koni",
140
- "ctrlhint": "",
141
140
  "cuboid": "Kübik",
142
141
  "cylinder": "Silindir",
143
142
  "delete": "Sil",
@@ -195,7 +194,7 @@
195
194
  },
196
195
  "featureattributes": {
197
196
  "name": "",
198
- "nofeature": "",
197
+ "nofeatureormultiple": "",
199
198
  "value": "",
200
199
  "windowtitle": ""
201
200
  },
@@ -448,7 +447,7 @@
448
447
  "angle": "Açı",
449
448
  "featureunsupported": "Sayısal değer bu geometri için kullanılamaz",
450
449
  "height": "Yükseklik",
451
- "nofeature": "Aktif obje yok",
450
+ "nofeatureormultiple": "",
452
451
  "side": "Taraf",
453
452
  "width": "Genişlik",
454
453
  "windowtitle": "Sayısal giriş"
@@ -501,6 +500,7 @@
501
500
  "bufferlayername": "Tampon",
502
501
  "bufferselectfeature": "Tampon atılacak bir obje seçiniz...",
503
502
  "circle": "Daire",
503
+ "ctrlhint": "",
504
504
  "delete": "Sil",
505
505
  "draw": "Çiz",
506
506
  "edit": "Düzenle",
@@ -146,7 +146,6 @@
146
146
  "cyclomedia.title",
147
147
  "draw3d.clone",
148
148
  "draw3d.cone",
149
- "draw3d.ctrlhint",
150
149
  "draw3d.cuboid",
151
150
  "draw3d.cylinder",
152
151
  "draw3d.delete",
@@ -198,7 +197,7 @@
198
197
  "editing.takepicture",
199
198
  "editing.unsavedchanged",
200
199
  "featureattributes.name",
201
- "featureattributes.nofeature",
200
+ "featureattributes.nofeatureormultiple",
202
201
  "featureattributes.value",
203
202
  "featureattributes.windowtitle",
204
203
  "featureform.feature",
@@ -389,7 +388,7 @@
389
388
  "numericinput.angle",
390
389
  "numericinput.featureunsupported",
391
390
  "numericinput.height",
392
- "numericinput.nofeature",
391
+ "numericinput.nofeatureormultiple",
393
392
  "numericinput.side",
394
393
  "numericinput.width",
395
394
  "numericinput.windowtitle",
@@ -430,6 +429,7 @@
430
429
  "redlining.bufferlayername",
431
430
  "redlining.bufferselectfeature",
432
431
  "redlining.circle",
432
+ "redlining.ctrlhint",
433
433
  "redlining.delete",
434
434
  "redlining.draw",
435
435
  "redlining.edit",
@@ -137,7 +137,6 @@
137
137
  "draw3d": {
138
138
  "clone": "",
139
139
  "cone": "",
140
- "ctrlhint": "",
141
140
  "cuboid": "",
142
141
  "cylinder": "",
143
142
  "delete": "",
@@ -195,7 +194,7 @@
195
194
  },
196
195
  "featureattributes": {
197
196
  "name": "",
198
- "nofeature": "",
197
+ "nofeatureormultiple": "",
199
198
  "value": "",
200
199
  "windowtitle": ""
201
200
  },
@@ -448,7 +447,7 @@
448
447
  "angle": "",
449
448
  "featureunsupported": "",
450
449
  "height": "",
451
- "nofeature": "",
450
+ "nofeatureormultiple": "",
452
451
  "side": "",
453
452
  "width": "",
454
453
  "windowtitle": ""
@@ -501,6 +500,7 @@
501
500
  "bufferlayername": "",
502
501
  "bufferselectfeature": "",
503
502
  "circle": "",
503
+ "ctrlhint": "",
504
504
  "delete": "",
505
505
  "draw": "",
506
506
  "edit": "",
@@ -56,6 +56,17 @@ var EditingInterface = {
56
56
  }
57
57
  return message;
58
58
  },
59
+ replacer: function replacer(mapCrs) {
60
+ if (mapCrs === "EPSG:4326") {
61
+ return function (key, val) {
62
+ return val.toFixed ? Number(val.toFixed(5)) : val;
63
+ };
64
+ } else {
65
+ return function (key, val) {
66
+ return val.toFixed ? Number(val.toFixed(2)) : val;
67
+ };
68
+ }
69
+ },
59
70
  /**
60
71
  * Gets features at the specified map position.
61
72
  *
@@ -88,7 +99,7 @@ var EditingInterface = {
88
99
  name: mapCrs
89
100
  }
90
101
  }
91
- })) : undefined
102
+ }), this.replacer(mapCrs)) : undefined
92
103
  };
93
104
  var headers = {
94
105
  "Accept-Language": LocaleUtils.lang()
@@ -171,7 +182,7 @@ var EditingInterface = {
171
182
  var params = {
172
183
  crs: mapCrs,
173
184
  bbox: bbox ? bbox.join(",") : undefined,
174
- filter: filter ? JSON.stringify(filter) : undefined,
185
+ filter: filter ? JSON.stringify(filter, this.replacer(mapCrs)) : undefined,
175
186
  filter_geom: filterGeom ? JSON.stringify(_objectSpread(_objectSpread({}, filterGeom), {}, {
176
187
  crs: {
177
188
  type: "name",
@@ -179,7 +190,7 @@ var EditingInterface = {
179
190
  name: mapCrs
180
191
  }
181
192
  }
182
- })) : undefined,
193
+ }), this.replacer(mapCrs)) : undefined,
183
194
  fields: fields ? fields.join(",") : undefined
184
195
  };
185
196
  var headers = {
@@ -236,7 +247,7 @@ var EditingInterface = {
236
247
  name: mapCrs
237
248
  }
238
249
  }
239
- })) : undefined
250
+ }), this.replacer(mapCrs)) : undefined
240
251
  };
241
252
  var headers = {
242
253
  "Accept-Language": LocaleUtils.lang()
@@ -520,13 +520,18 @@ var LayerUtils = {
520
520
  return layers;
521
521
  }
522
522
  // Avoid splitting sibling groups when reordering
523
- var siblinggrouppath = exploded[idx + delta].path.length > level ? exploded[idx + delta].path.slice(0, level) : null;
524
- if (siblinggrouppath !== null) {
525
- var dir = delta > 0 ? 1 : -1;
526
- while (idx + delta + dir >= 0 && idx + delta + dir < exploded.length && LayerUtils.pathEqualOrBelow(siblinggrouppath, exploded[idx + delta + dir].path)) {
527
- delta += dir;
528
- }
523
+ var group = sublayerpath.slice(0, -1).reduce(function (sublayer, i) {
524
+ return sublayer.sublayers[i];
525
+ }, movelayer);
526
+ // Compute move offset
527
+ var dir = delta > 0 ? 1 : -1;
528
+ var oldIndex = sublayerpath[sublayerpath.length - 1];
529
+ var newIndex = oldIndex + delta;
530
+ var offset = 0;
531
+ for (var i = oldIndex + dir; dir * i <= dir * newIndex; i += dir) {
532
+ offset += LayerUtils.layerTreeCount(group.sublayers[i]) * dir;
529
533
  }
534
+ delta = offset;
530
535
  }
531
536
  // Reorder layer
532
537
  if (delta < 0) {
@@ -766,6 +771,11 @@ var LayerUtils = {
766
771
  }
767
772
  }
768
773
  },
774
+ layerTreeCount: function layerTreeCount(layer) {
775
+ return isEmpty(layer.sublayers) ? 1 : layer.sublayers.reduce(function (sum, sublayer) {
776
+ return sum + LayerUtils.layerTreeCount(sublayer);
777
+ }, 0);
778
+ },
769
779
  getSublayerNames: function getSublayerNames(layer) {
770
780
  var _this2 = this;
771
781
  var toplevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;