qwc2 2025.10.16 → 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 (69) hide show
  1. package/actions/locate.js +3 -2
  2. package/components/AttributeTableWidget.js +24 -15
  3. package/components/FeatureAttributesWindow.js +178 -0
  4. package/components/IdentifyViewer.js +80 -39
  5. package/components/LocationRecorder.js +138 -0
  6. package/components/NumericInputWindow.js +30 -22
  7. package/components/PickFeature.js +87 -26
  8. package/components/PluginsContainer.js +16 -3
  9. package/components/map/OlLayer.js +2 -1
  10. package/components/map/layers/MVTLayer.js +3 -0
  11. package/components/map/layers/VectorLayer.js +66 -65
  12. package/components/map3d/HeightProfile3D.js +2 -0
  13. package/components/map3d/drawtool/EditTool3D.js +1 -1
  14. package/components/style/App.css +14 -0
  15. package/components/style/AttributeTableWidget.css +1 -1
  16. package/components/style/FeatureAttributesWindow.css +16 -0
  17. package/components/style/IdentifyViewer.css +5 -0
  18. package/components/style/LocationRecorder.css +10 -0
  19. package/components/style/NumericInputWindow.css +22 -0
  20. package/components/style/PluginsContainer.css +16 -0
  21. package/components/widgets/LayerCatalogWidget.js +40 -16
  22. package/components/widgets/NavBar.js +10 -3
  23. package/components/widgets/TextInput.js +4 -2
  24. package/icons/circle_full.svg +75 -0
  25. package/package.json +1 -1
  26. package/plugins/AttributeTable.js +4 -0
  27. package/plugins/GeometryDigitizer.js +3 -0
  28. package/plugins/HeightProfile.js +5 -1
  29. package/plugins/Identify.js +7 -3
  30. package/plugins/ObjectList.js +116 -0
  31. package/plugins/Redlining.js +21 -56
  32. package/plugins/map/EditingSupport.js +22 -1
  33. package/plugins/map/LocateSupport.js +8 -1
  34. package/plugins/map/RedliningSupport.js +374 -224
  35. package/plugins/map/SnappingSupport.js +11 -6
  36. package/plugins/map/style/SnappingSupport.css +2 -13
  37. package/reducers/locate.js +4 -2
  38. package/reducers/redlining.js +7 -4
  39. package/scripts/updateTranslations.js +1 -1
  40. package/static/translations/bg-BG.json +15 -2
  41. package/static/translations/ca-ES.json +15 -2
  42. package/static/translations/cs-CZ.json +15 -2
  43. package/static/translations/de-CH.json +15 -2
  44. package/static/translations/de-DE.json +15 -2
  45. package/static/translations/en-US.json +15 -2
  46. package/static/translations/es-ES.json +15 -2
  47. package/static/translations/fi-FI.json +15 -2
  48. package/static/translations/fr-FR.json +15 -2
  49. package/static/translations/hu-HU.json +15 -2
  50. package/static/translations/it-IT.json +15 -2
  51. package/static/translations/ja-JP.json +15 -2
  52. package/static/translations/nl-NL.json +15 -2
  53. package/static/translations/no-NO.json +15 -2
  54. package/static/translations/pl-PL.json +15 -2
  55. package/static/translations/pt-BR.json +15 -2
  56. package/static/translations/pt-PT.json +15 -2
  57. package/static/translations/ro-RO.json +15 -2
  58. package/static/translations/ru-RU.json +15 -2
  59. package/static/translations/sv-SE.json +15 -2
  60. package/static/translations/tr-TR.json +15 -2
  61. package/static/translations/tsconfig.json +12 -2
  62. package/static/translations/uk-UA.json +15 -2
  63. package/utils/EditingInterface.js +18 -4
  64. package/utils/EditingUtils.js +3 -1
  65. package/utils/LayerUtils.js +16 -6
  66. package/utils/MiscUtils.js +65 -0
  67. package/utils/expr_grammar/grammar.js +104 -22
  68. package/utils/expr_grammar/grammar.ne +2 -0
  69. package/utils/expr_grammar/test.js +21 -4
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "",
26
26
  "MapLight3D": "",
27
+ "ObjectList": "",
27
28
  "Print": "Imprimir",
28
29
  "Reports": "",
29
30
  "Settings": "Configurações",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "",
139
- "ctrlhint": "",
140
140
  "cuboid": "",
141
141
  "cylinder": "",
142
142
  "delete": "",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "Tirar Fotografia",
193
193
  "unsavedchanged": "Alterações Não Guardadas"
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "Recurso",
197
203
  "noresults": "Sem Resultados",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "",
246
252
  "clipboard": "Área de Transferência",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "",
249
256
  "export": "Exportar",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Posição: permissão negada"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "A carregar...",
350
361
  "resetrotation": "Redefinir Rotação"
@@ -436,7 +447,7 @@
436
447
  "angle": "Ângulo",
437
448
  "featureunsupported": "Recurso Não Suportado",
438
449
  "height": "Altura",
439
- "nofeature": "Nenhum Recurso Selecionado",
450
+ "nofeatureormultiple": "",
440
451
  "side": "Lado",
441
452
  "width": "Largura",
442
453
  "windowtitle": "Entrada Numérica"
@@ -481,6 +492,7 @@
481
492
  "loading": "A carregar..."
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "Tampão",
485
497
  "buffercompute": "Calcular",
486
498
  "bufferdistance": "Distância do Tampão",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "Nome da Camada de Tampão",
489
501
  "bufferselectfeature": "Selecione uma característica para o tampão...",
490
502
  "circle": "Círculo",
503
+ "ctrlhint": "",
491
504
  "delete": "Excluir",
492
505
  "draw": "Desenhar",
493
506
  "edit": "Editar",
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "",
26
26
  "MapLight3D": "",
27
+ "ObjectList": "",
27
28
  "Print": "Tipărire",
28
29
  "Reports": "",
29
30
  "Settings": "Setări",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "",
139
- "ctrlhint": "",
140
140
  "cuboid": "",
141
141
  "cylinder": "",
142
142
  "delete": "",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "Fotografiază",
193
193
  "unsavedchanged": "Modificările nu sunt salvate. Doriți să părăsiți pagina oricum?"
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "Obiect spațial",
197
203
  "noresults": "Nu există rezultate",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "",
246
252
  "clipboard": "Copiere în clipboard",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "",
249
256
  "export": "Export",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Poziția: acces refuzat"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "Se încarcă...",
350
361
  "resetrotation": "Resetează rotația"
@@ -436,7 +447,7 @@
436
447
  "angle": "Unghi",
437
448
  "featureunsupported": "Valorile numerice nu pot fi introduse pentru acest tip de geometrie",
438
449
  "height": "Înălțimea",
439
- "nofeature": "Nu există obiecte spațiale active",
450
+ "nofeatureormultiple": "",
440
451
  "side": "Partea",
441
452
  "width": "Lățimea",
442
453
  "windowtitle": "Valori numerice"
@@ -481,6 +492,7 @@
481
492
  "loading": "Formularul se încarcă"
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "Zonă tampon",
485
497
  "buffercompute": "Calcul",
486
498
  "bufferdistance": "Distanța",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "Zonă tampon",
489
501
  "bufferselectfeature": "Selectați o entitate...",
490
502
  "circle": "Cerc",
503
+ "ctrlhint": "",
491
504
  "delete": "Elimină",
492
505
  "draw": "Desenare",
493
506
  "edit": "Modifică",
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "",
26
26
  "MapLight3D": "",
27
+ "ObjectList": "",
27
28
  "Print": "Печать",
28
29
  "Reports": "",
29
30
  "Settings": "",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "",
139
- "ctrlhint": "",
140
140
  "cuboid": "",
141
141
  "cylinder": "",
142
142
  "delete": "",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "",
193
193
  "unsavedchanged": ""
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "",
197
203
  "noresults": "",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "",
246
252
  "clipboard": "",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "",
249
256
  "export": "Экспорт",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Геолокация: доступ воспрещен"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "Загрузка...",
350
361
  "resetrotation": ""
@@ -436,7 +447,7 @@
436
447
  "angle": "",
437
448
  "featureunsupported": "",
438
449
  "height": "",
439
- "nofeature": "",
450
+ "nofeatureormultiple": "",
440
451
  "side": "",
441
452
  "width": "",
442
453
  "windowtitle": ""
@@ -481,6 +492,7 @@
481
492
  "loading": ""
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "",
485
497
  "buffercompute": "",
486
498
  "bufferdistance": "",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "",
489
501
  "bufferselectfeature": "",
490
502
  "circle": "",
503
+ "ctrlhint": "",
491
504
  "delete": "",
492
505
  "draw": "",
493
506
  "edit": "",
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "",
26
26
  "MapLight3D": "",
27
+ "ObjectList": "",
27
28
  "Print": "Skriv ut",
28
29
  "Reports": "",
29
30
  "Settings": "",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "",
139
- "ctrlhint": "",
140
140
  "cuboid": "",
141
141
  "cylinder": "",
142
142
  "delete": "",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "",
193
193
  "unsavedchanged": ""
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "",
197
203
  "noresults": "",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "",
246
252
  "clipboard": "",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "",
249
256
  "export": "Exportera",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Position: tillåts inte"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "Laddar...",
350
361
  "resetrotation": ""
@@ -436,7 +447,7 @@
436
447
  "angle": "",
437
448
  "featureunsupported": "",
438
449
  "height": "",
439
- "nofeature": "",
450
+ "nofeatureormultiple": "",
440
451
  "side": "",
441
452
  "width": "",
442
453
  "windowtitle": ""
@@ -481,6 +492,7 @@
481
492
  "loading": ""
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "Buffert",
485
497
  "buffercompute": "Beräkna",
486
498
  "bufferdistance": "Avstånd",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "Buffert",
489
501
  "bufferselectfeature": "Välj ett objekt att buffra",
490
502
  "circle": "",
503
+ "ctrlhint": "",
491
504
  "delete": "Radera",
492
505
  "draw": "Rita",
493
506
  "edit": "Redigera",
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "Harita Filtresi",
26
26
  "MapLight3D": "Tarih Zaman",
27
+ "ObjectList": "",
27
28
  "Print": "Yazdır",
28
29
  "Reports": "Raporlar",
29
30
  "Settings": "Ayarlar",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "Koni",
139
- "ctrlhint": "",
140
140
  "cuboid": "Kübik",
141
141
  "cylinder": "Silindir",
142
142
  "delete": "Sil",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "Fotoğraf çek",
193
193
  "unsavedchanged": "Kaydedilmemiş değişiklikler mevcut. Yine de sayfadan ayrılmak istiyor musunuz?"
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "Obje",
197
203
  "noresults": "Sonuç yok",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "Toplu rapor",
246
252
  "clipboard": "Panoya kopyala",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "İndir",
249
256
  "export": "Dışarıya aktar",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Konum: izin verilmedi"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "Yükleniyor...",
350
361
  "resetrotation": "Dönüklüğü sıfırla"
@@ -436,7 +447,7 @@
436
447
  "angle": "Açı",
437
448
  "featureunsupported": "Sayısal değer bu geometri için kullanılamaz",
438
449
  "height": "Yükseklik",
439
- "nofeature": "Aktif obje yok",
450
+ "nofeatureormultiple": "",
440
451
  "side": "Taraf",
441
452
  "width": "Genişlik",
442
453
  "windowtitle": "Sayısal giriş"
@@ -481,6 +492,7 @@
481
492
  "loading": "Form yükleniyor..."
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "Tampon",
485
497
  "buffercompute": "Hesapla",
486
498
  "bufferdistance": "Mesafe",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "Tampon",
489
501
  "bufferselectfeature": "Tampon atılacak bir obje seçiniz...",
490
502
  "circle": "Daire",
503
+ "ctrlhint": "",
491
504
  "delete": "Sil",
492
505
  "draw": "Çiz",
493
506
  "edit": "Düzenle",
@@ -45,6 +45,7 @@
45
45
  "appmenu.items.MeasureLineString",
46
46
  "appmenu.items.MeasurePolygon",
47
47
  "appmenu.items.NewsPopup",
48
+ "appmenu.items.ObjectList",
48
49
  "appmenu.items.Panoramax",
49
50
  "appmenu.items.Portal",
50
51
  "appmenu.items.PrintScreen3D",
@@ -79,6 +80,7 @@
79
80
  "appmenu.items.MapExport3D",
80
81
  "appmenu.items.MapFilter",
81
82
  "appmenu.items.MapLight3D",
83
+ "appmenu.items.ObjectList",
82
84
  "appmenu.items.Print",
83
85
  "appmenu.items.Reports",
84
86
  "appmenu.items.Settings",
@@ -144,7 +146,6 @@
144
146
  "cyclomedia.title",
145
147
  "draw3d.clone",
146
148
  "draw3d.cone",
147
- "draw3d.ctrlhint",
148
149
  "draw3d.cuboid",
149
150
  "draw3d.cylinder",
150
151
  "draw3d.delete",
@@ -195,6 +196,10 @@
195
196
  "editing.select",
196
197
  "editing.takepicture",
197
198
  "editing.unsavedchanged",
199
+ "featureattributes.name",
200
+ "featureattributes.nofeatureormultiple",
201
+ "featureattributes.value",
202
+ "featureattributes.windowtitle",
198
203
  "featureform.feature",
199
204
  "featureform.noresults",
200
205
  "featureform.querying",
@@ -234,6 +239,7 @@
234
239
  "hideobjects3d.restoreall",
235
240
  "identify.aggregatedreport",
236
241
  "identify.clipboard",
242
+ "identify.compare",
237
243
  "identify.comparing",
238
244
  "identify.download",
239
245
  "identify.export",
@@ -312,6 +318,8 @@
312
318
  "locate.statustooltip.FOLLOWING",
313
319
  "locate.statustooltip.LOCATING",
314
320
  "locate.statustooltip.PERMISSION_DENIED",
321
+ "locationrecorder.record",
322
+ "locationrecorder.stop",
315
323
  "map.loading",
316
324
  "map.resetrotation",
317
325
  "map3d.lockview",
@@ -380,7 +388,7 @@
380
388
  "numericinput.angle",
381
389
  "numericinput.featureunsupported",
382
390
  "numericinput.height",
383
- "numericinput.nofeature",
391
+ "numericinput.nofeatureormultiple",
384
392
  "numericinput.side",
385
393
  "numericinput.width",
386
394
  "numericinput.windowtitle",
@@ -413,6 +421,7 @@
413
421
  "print.submit",
414
422
  "print.wait",
415
423
  "qtdesignerform.loading",
424
+ "redlining.attributes",
416
425
  "redlining.buffer",
417
426
  "redlining.buffercompute",
418
427
  "redlining.bufferdistance",
@@ -420,6 +429,7 @@
420
429
  "redlining.bufferlayername",
421
430
  "redlining.bufferselectfeature",
422
431
  "redlining.circle",
432
+ "redlining.ctrlhint",
423
433
  "redlining.delete",
424
434
  "redlining.draw",
425
435
  "redlining.edit",
@@ -24,6 +24,7 @@
24
24
  "MapExport3D": "",
25
25
  "MapFilter": "",
26
26
  "MapLight3D": "",
27
+ "ObjectList": "",
27
28
  "Print": "Друк",
28
29
  "Reports": "",
29
30
  "Settings": "",
@@ -136,7 +137,6 @@
136
137
  "draw3d": {
137
138
  "clone": "",
138
139
  "cone": "",
139
- "ctrlhint": "",
140
140
  "cuboid": "",
141
141
  "cylinder": "",
142
142
  "delete": "",
@@ -192,6 +192,12 @@
192
192
  "takepicture": "",
193
193
  "unsavedchanged": ""
194
194
  },
195
+ "featureattributes": {
196
+ "name": "",
197
+ "nofeatureormultiple": "",
198
+ "value": "",
199
+ "windowtitle": ""
200
+ },
195
201
  "featureform": {
196
202
  "feature": "",
197
203
  "noresults": "",
@@ -244,6 +250,7 @@
244
250
  "identify": {
245
251
  "aggregatedreport": "",
246
252
  "clipboard": "",
253
+ "compare": "",
247
254
  "comparing": "",
248
255
  "download": "",
249
256
  "export": "Експорт",
@@ -345,6 +352,10 @@
345
352
  "PERMISSION_DENIED": "Геолокація: доступ заборонено"
346
353
  }
347
354
  },
355
+ "locationrecorder": {
356
+ "record": "",
357
+ "stop": ""
358
+ },
348
359
  "map": {
349
360
  "loading": "Завантаження...",
350
361
  "resetrotation": ""
@@ -436,7 +447,7 @@
436
447
  "angle": "",
437
448
  "featureunsupported": "",
438
449
  "height": "",
439
- "nofeature": "",
450
+ "nofeatureormultiple": "",
440
451
  "side": "",
441
452
  "width": "",
442
453
  "windowtitle": ""
@@ -481,6 +492,7 @@
481
492
  "loading": ""
482
493
  },
483
494
  "redlining": {
495
+ "attributes": "",
484
496
  "buffer": "",
485
497
  "buffercompute": "",
486
498
  "bufferdistance": "",
@@ -488,6 +500,7 @@
488
500
  "bufferlayername": "",
489
501
  "bufferselectfeature": "",
490
502
  "circle": "",
503
+ "ctrlhint": "",
491
504
  "delete": "",
492
505
  "draw": "",
493
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()
@@ -159,17 +170,19 @@ var EditingInterface = {
159
170
  * @param callback Callback invoked with the picked features, taking `{features: [...]}` on success and `null` on failure
160
171
  * @param filter An optional feature attribute filter expression
161
172
  * @param filterGeom An optional filter geometry
173
+ * @param fields An optional list of fields to query, if unspecified all fields are queried
162
174
  */
163
175
  getFeatures: function getFeatures(editConfig, mapCrs, callback) {
164
176
  var bbox = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
165
177
  var filter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
166
178
  var filterGeom = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
179
+ var fields = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
167
180
  var editServiceUrl = ConfigUtils.getConfigProp("editServiceUrl").replace(/\/$/, '');
168
181
  var requestUrl = editServiceUrl + '/' + editConfig.editDataset + '/';
169
182
  var params = {
170
183
  crs: mapCrs,
171
184
  bbox: bbox ? bbox.join(",") : undefined,
172
- filter: filter ? JSON.stringify(filter) : undefined,
185
+ filter: filter ? JSON.stringify(filter, this.replacer(mapCrs)) : undefined,
173
186
  filter_geom: filterGeom ? JSON.stringify(_objectSpread(_objectSpread({}, filterGeom), {}, {
174
187
  crs: {
175
188
  type: "name",
@@ -177,7 +190,8 @@ var EditingInterface = {
177
190
  name: mapCrs
178
191
  }
179
192
  }
180
- })) : undefined
193
+ }), this.replacer(mapCrs)) : undefined,
194
+ fields: fields ? fields.join(",") : undefined
181
195
  };
182
196
  var headers = {
183
197
  "Accept-Language": LocaleUtils.lang()
@@ -233,7 +247,7 @@ var EditingInterface = {
233
247
  name: mapCrs
234
248
  }
235
249
  }
236
- })) : undefined
250
+ }), this.replacer(mapCrs)) : undefined
237
251
  };
238
252
  var headers = {
239
253
  "Accept-Language": LocaleUtils.lang()
@@ -32,6 +32,7 @@ import { v5 as uuidv5 } from 'uuid';
32
32
  import StandardApp from '../components/StandardApp';
33
33
  import ConfigUtils from './ConfigUtils';
34
34
  import LocaleUtils from './LocaleUtils';
35
+ import MiscUtils from './MiscUtils';
35
36
  import grammar from './expr_grammar/grammar';
36
37
  var UUID_NS = '5ae5531d-8e21-4456-b45d-77e9840a5bb7';
37
38
  export var FeatureCache = /*#__PURE__*/_createClass(function FeatureCache() {
@@ -176,6 +177,7 @@ export function parseExpression(expr, feature, editConfig, editIface, mapPrefix,
176
177
  representValue: function representValue(attr) {
177
178
  return _representValue(attr, editConfig, editIface, promises);
178
179
  },
180
+ formatDate: MiscUtils.formatDate,
179
181
  asFilter: asFilter,
180
182
  username: ConfigUtils.getConfigProp("username"),
181
183
  layer: editConfig.layerName,
@@ -267,7 +269,7 @@ export function getFeatureTemplate(editConfig, feature, editIface, mapPrefix, ma
267
269
  }
268
270
  // Apply default values
269
271
  var defaultFieldExpressions = editConfig.fields.reduce(function (res, field) {
270
- if (field.defaultValue) {
272
+ if (field.defaultValue && !(field.id in feature.properties)) {
271
273
  return [].concat(_toConsumableArray(res), [{
272
274
  field: field.id,
273
275
  expression: field.defaultValue.replace(/^expr:/, '')
@@ -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;