qwc2 2025.10.7 → 2025.10.9

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 (43) hide show
  1. package/components/PrintSelection.js +3 -3
  2. package/components/SearchBox.js +7 -5
  3. package/components/StandardApp.js +1 -1
  4. package/components/style/SearchBox.css +2 -2
  5. package/components/widgets/LayerCatalogWidget.js +2 -2
  6. package/package.json +1 -1
  7. package/plugins/FeatureSearch.js +2 -2
  8. package/plugins/LayerCatalog.js +3 -3
  9. package/plugins/Map.js +1 -1
  10. package/plugins/Print.js +4 -4
  11. package/plugins/Redlining.js +3 -3
  12. package/plugins/TopBar.js +3 -3
  13. package/plugins/map/RedliningSupport.js +1 -1
  14. package/plugins/style/FeatureSearch.css +6 -1
  15. package/plugins/style/Redlining.css +5 -0
  16. package/reducers/redlining.js +1 -1
  17. package/resources/rotate.svg +70 -0
  18. package/static/translations/bg-BG.json +2 -3
  19. package/static/translations/ca-ES.json +2 -3
  20. package/static/translations/cs-CZ.json +2 -3
  21. package/static/translations/de-CH.json +2 -3
  22. package/static/translations/de-DE.json +2 -3
  23. package/static/translations/en-US.json +2 -3
  24. package/static/translations/es-ES.json +2 -3
  25. package/static/translations/fi-FI.json +2 -3
  26. package/static/translations/fr-FR.json +2 -3
  27. package/static/translations/hu-HU.json +2 -3
  28. package/static/translations/it-IT.json +3 -4
  29. package/static/translations/ja-JP.json +2 -3
  30. package/static/translations/nl-NL.json +2 -3
  31. package/static/translations/no-NO.json +2 -3
  32. package/static/translations/pl-PL.json +2 -3
  33. package/static/translations/pt-BR.json +2 -3
  34. package/static/translations/pt-PT.json +2 -3
  35. package/static/translations/ro-RO.json +2 -3
  36. package/static/translations/ru-RU.json +2 -3
  37. package/static/translations/sv-SE.json +2 -3
  38. package/static/translations/tr-TR.json +2 -3
  39. package/static/translations/tsconfig.json +1 -2
  40. package/static/translations/uk-UA.json +2 -3
  41. package/utils/EditingUtils.js +3 -2
  42. package/utils/SearchProviders.js +3 -3
  43. package/utils/VectorLayerUtils.js +1 -1
@@ -479,7 +479,6 @@
479
479
  "loading": "Formular wird geladen..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Rand",
483
482
  "buffer": "Puffern",
484
483
  "buffercompute": "Berechnen",
485
484
  "bufferdistance": "Distanz",
@@ -507,8 +506,7 @@
507
506
  "size": "Grösse",
508
507
  "square": "Quadrat",
509
508
  "text": "Text",
510
- "transform": "Transformieren",
511
- "width": "Breite"
509
+ "transform": "Transformieren"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Alle",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Suchdienste",
580
578
  "recent": "Zuletzt gesucht",
581
579
  "search": "Suchen",
580
+ "tasks": "Menüwerkzeuge",
582
581
  "themelayers": "Themenebenen",
583
582
  "themes": "Themen",
584
583
  "unknownmore": "Weitere Treffer"
@@ -479,7 +479,6 @@
479
479
  "loading": "Formular wird geladen..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Rand",
483
482
  "buffer": "Puffern",
484
483
  "buffercompute": "Berechnen",
485
484
  "bufferdistance": "Distanz",
@@ -507,8 +506,7 @@
507
506
  "size": "Größe",
508
507
  "square": "Quadrat",
509
508
  "text": "Text",
510
- "transform": "Transformieren",
511
- "width": "Breite"
509
+ "transform": "Transformieren"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Alle",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Suchdienste",
580
578
  "recent": "Zuletzt gesucht",
581
579
  "search": "Suchen",
580
+ "tasks": "Menüwerkzeuge",
582
581
  "themelayers": "Themenebenen",
583
582
  "themes": "Themen",
584
583
  "unknownmore": "Weitere Treffer"
@@ -479,7 +479,6 @@
479
479
  "loading": "Loading form..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Border",
483
482
  "buffer": "Buffer",
484
483
  "buffercompute": "Compute",
485
484
  "bufferdistance": "Distance",
@@ -507,8 +506,7 @@
507
506
  "size": "Size",
508
507
  "square": "Square",
509
508
  "text": "Text",
510
- "transform": "Transform",
511
- "width": "Width"
509
+ "transform": "Transform"
512
510
  },
513
511
  "reports": {
514
512
  "all": "All",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Search providers",
580
578
  "recent": "Recent searches",
581
579
  "search": "Search",
580
+ "tasks": "Menu tasks",
582
581
  "themelayers": "Theme layers",
583
582
  "themes": "Themes",
584
583
  "unknownmore": "More results"
@@ -479,7 +479,6 @@
479
479
  "loading": "Cargando formulario..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Límite",
483
482
  "buffer": "Bufer",
484
483
  "buffercompute": "Computar",
485
484
  "bufferdistance": "Distancia",
@@ -507,8 +506,7 @@
507
506
  "size": "Tamaño",
508
507
  "square": "Cuadrado",
509
508
  "text": "Texto",
510
- "transform": "Transformar",
511
- "width": "Ancho"
509
+ "transform": "Transformar"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Todo",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Proveedores de búsqueda",
580
578
  "recent": "Búsquedas recientes",
581
579
  "search": "Buscar",
580
+ "tasks": "",
582
581
  "themelayers": "Capas del tema",
583
582
  "themes": "Temas",
584
583
  "unknownmore": "Más resultados"
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Reunat",
483
482
  "buffer": "Bufferi",
484
483
  "buffercompute": "Laske",
485
484
  "bufferdistance": "Etäisyys",
@@ -507,8 +506,7 @@
507
506
  "size": "Koko",
508
507
  "square": "",
509
508
  "text": "Teksti",
510
- "transform": "",
511
- "width": "Leveys"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "Viimeisimmät haut",
581
579
  "search": "Etsi",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Teemat",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": "Chargement du formulaire..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Bordure",
483
482
  "buffer": "Tampon",
484
483
  "buffercompute": "Calculer",
485
484
  "bufferdistance": "Distance",
@@ -507,8 +506,7 @@
507
506
  "size": "Taille",
508
507
  "square": "Carré",
509
508
  "text": "Texte",
510
- "transform": "Transformer",
511
- "width": "Largeur"
509
+ "transform": "Transformer"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Tous",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Services de recherche",
580
578
  "recent": "Recherches récentes",
581
579
  "search": "Chercher",
580
+ "tasks": "Outils",
582
581
  "themelayers": "Couches de thèmes",
583
582
  "themes": "Cartes",
584
583
  "unknownmore": "Plus de résultats"
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Szegély",
483
482
  "buffer": "",
484
483
  "buffercompute": "",
485
484
  "bufferdistance": "",
@@ -507,8 +506,7 @@
507
506
  "size": "Méret",
508
507
  "square": "",
509
508
  "text": "Szöveg",
510
- "transform": "",
511
- "width": "Szélesség"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "",
581
579
  "search": "Keresés",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "",
584
583
  "unknownmore": ""
@@ -3,7 +3,7 @@
3
3
  "messages": {
4
4
  "app": {
5
5
  "missingbg": "Impossibile trovare lo sfondo \"{0}\", viene visualizzato lo sfondo predefinito.",
6
- "missingdefaulttheme": "",
6
+ "missingdefaulttheme": "Impossibile caricare il tema predefinito.",
7
7
  "missinglayers": "Impossibile trovare i seguenti livelli: {0}.",
8
8
  "missingpermalink": "Il permalink o il segnalibro non è valido o è scaduto.",
9
9
  "missingprojection": "Impossibile caricare il tema \"{0}\": la proiezione {1} non è definita.",
@@ -479,7 +479,6 @@
479
479
  "loading": "Caricando formulario..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Bordo",
483
482
  "buffer": "Buffer",
484
483
  "buffercompute": "Calcola",
485
484
  "bufferdistance": "Distanza",
@@ -507,8 +506,7 @@
507
506
  "size": "Dimensione",
508
507
  "square": "Quadrato",
509
508
  "text": "Testo",
510
- "transform": "Transforma",
511
- "width": "Larghezza"
509
+ "transform": "Transforma"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Tutti",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Selezione provider",
580
578
  "recent": "Ricerche recenti",
581
579
  "search": "Cerca",
580
+ "tasks": "Strumenti",
582
581
  "themelayers": "Livelli di temi",
583
582
  "themes": "Temi",
584
583
  "unknownmore": "Ulteriori risultati"
@@ -479,7 +479,6 @@
479
479
  "loading": "フォームをロード中..."
480
480
  },
481
481
  "redlining": {
482
- "border": "境界線",
483
482
  "buffer": "バッファ",
484
483
  "buffercompute": "計算",
485
484
  "bufferdistance": "距離",
@@ -507,8 +506,7 @@
507
506
  "size": "サイズ",
508
507
  "square": "四角形",
509
508
  "text": "テキスト",
510
- "transform": "変形",
511
- "width": "幅"
509
+ "transform": "変形"
512
510
  },
513
511
  "reports": {
514
512
  "all": "全て",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "検索プロバイダ",
580
578
  "recent": "最近の検索",
581
579
  "search": "検索",
580
+ "tasks": "",
582
581
  "themelayers": "テーマのレイヤ",
583
582
  "themes": "テーマ",
584
583
  "unknownmore": "更なる結果"
@@ -479,7 +479,6 @@
479
479
  "loading": "Formulier laden..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Rand",
483
482
  "buffer": "Buffer",
484
483
  "buffercompute": "Berekenen",
485
484
  "bufferdistance": "Afstand",
@@ -507,8 +506,7 @@
507
506
  "size": "Afmeting",
508
507
  "square": "",
509
508
  "text": "Tekst",
510
- "transform": "Transformeer",
511
- "width": "Breedte"
509
+ "transform": "Transformeer"
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Zoek providers",
580
578
  "recent": "",
581
579
  "search": "Zoeken",
580
+ "tasks": "",
582
581
  "themelayers": "Kaartlagen",
583
582
  "themes": "Kaarten",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Kant",
483
482
  "buffer": "Buffer",
484
483
  "buffercompute": "Beregner",
485
484
  "bufferdistance": "Avstand",
@@ -507,8 +506,7 @@
507
506
  "size": "Størrelse",
508
507
  "square": "",
509
508
  "text": "Tekst",
510
- "transform": "",
511
- "width": "Bredde"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "Nylige søk",
581
579
  "search": "Søk",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Tema",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Obramowanie",
483
482
  "buffer": "Buforuj",
484
483
  "buffercompute": "Oblicz",
485
484
  "bufferdistance": "Odległość",
@@ -507,8 +506,7 @@
507
506
  "size": "Rozmiar",
508
507
  "square": "",
509
508
  "text": "Tekst",
510
- "transform": "",
511
- "width": "Szerokość"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "",
581
579
  "search": "Szukaj",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Motywy",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": "Carregando"
480
480
  },
481
481
  "redlining": {
482
- "border": "Borda",
483
482
  "buffer": "Buffer",
484
483
  "buffercompute": "Compute",
485
484
  "bufferdistance": "Distância",
@@ -507,8 +506,7 @@
507
506
  "size": "Tamanho",
508
507
  "square": "Praça",
509
508
  "text": "Texto",
510
- "transform": "Transformar",
511
- "width": "Largura"
509
+ "transform": "Transformar"
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Escolher o provedor",
580
578
  "recent": "Pesquisas recentes",
581
579
  "search": "Pesquisa",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Temas",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": "A carregar..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Fronteira",
483
482
  "buffer": "Tampão",
484
483
  "buffercompute": "Calcular",
485
484
  "bufferdistance": "Distância do Tampão",
@@ -507,8 +506,7 @@
507
506
  "size": "Tamanho",
508
507
  "square": "Quadrado",
509
508
  "text": "Texto",
510
- "transform": "Transformar",
511
- "width": "Largura"
509
+ "transform": "Transformar"
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Seleção do Provedor",
580
578
  "recent": "Pesquisas Recentes",
581
579
  "search": "Pesquisar",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Temas",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": "Formularul se încarcă"
480
480
  },
481
481
  "redlining": {
482
- "border": "Margine",
483
482
  "buffer": "Zonă tampon",
484
483
  "buffercompute": "Calcul",
485
484
  "bufferdistance": "Distanța",
@@ -507,8 +506,7 @@
507
506
  "size": "Dimeniuni",
508
507
  "square": "Pătrat",
509
508
  "text": "Text",
510
- "transform": "Transformare",
511
- "width": "Lățime"
509
+ "transform": "Transformare"
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Selectare furnizor",
580
578
  "recent": "Căutări recente",
581
579
  "search": "Caută",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "Hărți tematice",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Граница",
483
482
  "buffer": "",
484
483
  "buffercompute": "",
485
484
  "bufferdistance": "",
@@ -507,8 +506,7 @@
507
506
  "size": "Размер",
508
507
  "square": "",
509
508
  "text": "Текст",
510
- "transform": "",
511
- "width": "Ширина"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "",
581
579
  "search": "Поиск",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Kant",
483
482
  "buffer": "Buffert",
484
483
  "buffercompute": "Beräkna",
485
484
  "bufferdistance": "Avstånd",
@@ -507,8 +506,7 @@
507
506
  "size": "Storlek",
508
507
  "square": "",
509
508
  "text": "Text",
510
- "transform": "",
511
- "width": "Bredd"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "",
581
579
  "search": "",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "",
584
583
  "unknownmore": ""
@@ -479,7 +479,6 @@
479
479
  "loading": "Form yükleniyor..."
480
480
  },
481
481
  "redlining": {
482
- "border": "Sınır",
483
482
  "buffer": "Tampon",
484
483
  "buffercompute": "Hesapla",
485
484
  "bufferdistance": "Mesafe",
@@ -507,8 +506,7 @@
507
506
  "size": "Boyut",
508
507
  "square": "Kare",
509
508
  "text": "Metin",
510
- "transform": "Dönüşüm",
511
- "width": "Genişlik"
509
+ "transform": "Dönüşüm"
512
510
  },
513
511
  "reports": {
514
512
  "all": "Tümü",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "Arama sağlayıcılar",
580
578
  "recent": "Son aramalar",
581
579
  "search": "Ara",
580
+ "tasks": "",
582
581
  "themelayers": "Tema katmanları",
583
582
  "themes": "Temalar",
584
583
  "unknownmore": ""
@@ -411,7 +411,6 @@
411
411
  "print.submit",
412
412
  "print.wait",
413
413
  "qtdesignerform.loading",
414
- "redlining.border",
415
414
  "redlining.buffer",
416
415
  "redlining.buffercompute",
417
416
  "redlining.bufferdistance",
@@ -440,7 +439,6 @@
440
439
  "redlining.square",
441
440
  "redlining.text",
442
441
  "redlining.transform",
443
- "redlining.width",
444
442
  "reports.all",
445
443
  "reports.download",
446
444
  "reports.pick",
@@ -503,6 +501,7 @@
503
501
  "search.providerselection",
504
502
  "search.recent",
505
503
  "search.search",
504
+ "search.tasks",
506
505
  "search.themelayers",
507
506
  "search.themes",
508
507
  "search.unknownmore",
@@ -479,7 +479,6 @@
479
479
  "loading": ""
480
480
  },
481
481
  "redlining": {
482
- "border": "Межа",
483
482
  "buffer": "",
484
483
  "buffercompute": "",
485
484
  "bufferdistance": "",
@@ -507,8 +506,7 @@
507
506
  "size": "Розмір",
508
507
  "square": "",
509
508
  "text": "Текст",
510
- "transform": "",
511
- "width": "Ширина"
509
+ "transform": ""
512
510
  },
513
511
  "reports": {
514
512
  "all": "",
@@ -579,6 +577,7 @@
579
577
  "providerselection": "",
580
578
  "recent": "",
581
579
  "search": "Пошук",
580
+ "tasks": "",
582
581
  "themelayers": "",
583
582
  "themes": "",
584
583
  "unknownmore": ""
@@ -11,7 +11,8 @@ newfeature.properties[field]=parser.results[0];return _objectSpread(_objectSprea
11
11
  Promise.all(promises).then(function(){parseExpressionsAsync(fieldExpressions,newfeature,editConfig,editIface,mapPrefix,mapCrs,asFilter).then(function(results2){return resolve(results2)})})}else{resolve(results)}})}var FeatureTemplateFactories={};export function setFeatureTemplateFactory(dataset,factory){FeatureTemplateFactories[dataset]=factory}export function getFeatureTemplate(editConfig,feature,editIface,mapPrefix,mapCrs,callback){if(editConfig.editDataset in FeatureTemplateFactories){feature=FeatureTemplateFactories[editConfig.editDataset](feature)}// Apply default values
12
12
  var defaultFieldExpressions=editConfig.fields.reduce(function(res,field){if(field.defaultValue){return[].concat(_toConsumableArray(res),[{field:field.id,expression:field.defaultValue.replace(/^expr:/,"")}])}return res},[]);FeatureCache.clear();parseExpressionsAsync(defaultFieldExpressions,feature,editConfig,editIface,mapPrefix,mapCrs).then(function(result){// Adjust values based on field type
13
13
  editConfig.fields.forEach(function(field){if(field.id in result&&field.type==="date"){result[field.id]=result[field.id].split("T")[0]}});callback(_objectSpread(_objectSpread({},feature),{},{properties:_objectSpread(_objectSpread({},feature.properties),result)}))})}export function computeExpressionFields(editConfig,feature,editIface,mapCrs,callback){// Collect field expressions and dependencies
14
- var dependencies={};var fieldExpressions=editConfig.fields.reduce(function(res,field){var _field$constraints2;if(field.expression&&!((_field$constraints2=field.constraints)!==null&&_field$constraints2!==void 0&&_field$constraints2.hidden)){var matches=_toConsumableArray(field.expression.matchAll(/"([^"]+)"/g)).map(function(m){return m[1]});dependencies[field.id]=_toConsumableArray(new Set(matches));return _objectSpread(_objectSpread({},res),{},_defineProperty({},field.id,field.expression))}return res},{});// Topologically sort expressions so that fields depending on other fields are evaluated later
14
+ var dependencies={};var fieldExpressions=editConfig.fields.reduce(function(res,field){if(field.expression){var matches=_toConsumableArray(field.expression.matchAll(/"([^"]+)"/g)).map(function(m){return m[1]});dependencies[field.id]=_toConsumableArray(new Set(matches));return _objectSpread(_objectSpread({},res),{},_defineProperty({},field.id,field.expression))}return res},{});// Topologically sort expressions so that fields depending on other fields are evaluated later
15
15
  var edges=[];var roots=[];Object.entries(dependencies).forEach(function(_ref2){var _ref3=_slicedToArray(_ref2,2),parent=_ref3[0],children=_ref3[1];if(children.length>0){children.forEach(function(child){return edges.push([child,parent])})}else{roots.push(parent)}});try{var sortededges=toposort(edges);fieldExpressions=roots.concat(sortededges).reduce(function(res,field){if(field in fieldExpressions){return[].concat(_toConsumableArray(res),[{field:field,expression:fieldExpressions[field]}])}else{return res}},[])}catch(e){/* eslint-disable-next-line */console.warn("Failed to sort expressions, they probably contain cyclic dependencies");fieldExpressions=Object.entries(fieldExpressions).map(function(res,_ref4){var _ref5=_slicedToArray(_ref4,2),field=_ref5[0],expression=_ref5[1];return[].concat(_toConsumableArray(res),[{field:field,expression:expression}])},{})}// Evaluate expressions
16
16
  FeatureCache.clear();var mapPrefix=(editConfig.editDataset.match(/^[^.]+\./)||[""])[0];parseExpressionsAsync(fieldExpressions,feature,editConfig,editIface,mapPrefix,mapCrs).then(function(result){// Adjust values based on field type
17
- editConfig.fields.forEach(function(field){if(field.id in result&&field.type==="date"){result[field.id]=result[field.id].split("T")[0]}});callback(_objectSpread(_objectSpread({},feature),{},{properties:_objectSpread(_objectSpread({},feature.properties),result)}))})}
17
+ editConfig.fields.forEach(function(field){var _field$constraints2;if(!((_field$constraints2=field.constraints)!==null&&_field$constraints2!==void 0&&_field$constraints2.hidden)){// Remove hidden fields from result
18
+ delete result[field.id]}else if(field.id in result&&field.type==="date"){result[field.id]=result[field.id].split("T")[0]}});callback(_objectSpread(_objectSpread({},feature),{},{properties:_objectSpread(_objectSpread({},feature.properties),result)}))})}
@@ -4,7 +4,7 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
- */import axios from"axios";import yaml from"js-yaml";import polygonIntersectTest from"polygon-intersect-test";import{LayerRole}from"../actions/layers";import ConfigUtils from"./ConfigUtils";import CoordinatesUtils from"./CoordinatesUtils";import IdentifyUtils from"./IdentifyUtils";import LayerUtils from"./LayerUtils";import LocaleUtils from"./LocaleUtils";import VectorLayerUtils from"./VectorLayerUtils";export var SearchResultType={PLACE:0,THEMELAYER:1,THEME:2,EXTERNALLAYER:3};function coordinatesSearch(text,searchParams,callback){var displaycrs=searchParams.displaycrs||"EPSG:4326";var matches=text.replace(/[’']/g,"").match(/^\s*([+-]?\d+\.?\d*)[,\s]\s*([+-]?\d+\.?\d*)\s*$/);var items=[];if(matches&&matches.length>=3){var x=parseFloat(matches[1]);var y=parseFloat(matches[2]);if(displaycrs!=="EPSG:4326"){items.push({id:"coord0",text:x+", "+y+" ("+displaycrs+")",x:x,y:y,crs:displaycrs,bbox:[x,y,x,y]})}if(x>=-180&&x<=180&&y>=-90&&y<=90){var title=Math.abs(x)+(x>=0?"\xB0E":"\xB0W")+", "+Math.abs(y)+(y>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:title,x:x,y:y,crs:"EPSG:4326",bbox:[x,y,x,y]})}if(x>=-90&&x<=90&&y>=-180&&y<=180&&x!==y){var _title=Math.abs(y)+(y>=0?"\xB0E":"\xB0W")+", "+Math.abs(x)+(x>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:_title,x:y,y:x,crs:"EPSG:4326",bbox:[y,x,y,x]})}}var results=[];if(items.length>0){results.push({id:"coords",titlemsgid:LocaleUtils.trmsg("search.coordinates"),type:SearchResultType.PLACE,items:items})}callback({results:results})}/** ************************************************************************ **/var NominatimSearch=/*#__PURE__*/function(){function NominatimSearch(){_classCallCheck(this,NominatimSearch)}return _createClass(NominatimSearch,null,[{key:"search",value:function search(text,searchParams,callback){var viewboxParams={};if(searchParams.filterBBox){viewboxParams.viewbox=CoordinatesUtils.reprojectBbox(searchParams.filterBBox,searchParams.mapcrs,"EPSG:4326").join(",");viewboxParams.bounded=1}axios.get("https://nominatim.openstreetmap.org/search",{params:_objectSpread(_objectSpread({"q":text,"addressdetails":1,"polygon_geojson":1,"limit":20,"format":"json","accept-language":searchParams.lang},searchParams.cfgParams||{}),viewboxParams)}).then(function(response){var locale=searchParams.lang;if(NominatimSearch.TRANSLATIONS[locale]===undefined){NominatimSearch.TRANSLATIONS[locale]={promise:NominatimSearch.loadLocale(locale)};NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].promise){NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].strings){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)}})}},{key:"parseResults",value:function parseResults(obj,translations,callback){var results=[];var groups={};var groupcounter=0;(obj||[]).map(function(entry){if(!(entry["class"]in groups)){var title=entry.type;try{title=translations[entry["class"]][entry.type]||entry.type}catch(e){/* pass */}groups[entry["class"]]={id:"nominatimgroup"+groupcounter++,// capitalize class
7
+ */import axios from"axios";import yaml from"js-yaml";import polygonIntersectTest from"polygon-intersect-test";import{LayerRole}from"../actions/layers";import ConfigUtils from"./ConfigUtils";import CoordinatesUtils from"./CoordinatesUtils";import IdentifyUtils from"./IdentifyUtils";import LayerUtils from"./LayerUtils";import LocaleUtils from"./LocaleUtils";import VectorLayerUtils from"./VectorLayerUtils";export var SearchResultType={PLACE:0,THEMELAYER:1,THEME:2,EXTERNALLAYER:3,TASK:4};function coordinatesSearch(text,searchParams,callback){var displaycrs=searchParams.displaycrs||"EPSG:4326";var matches=text.replace(/[’']/g,"").match(/^\s*([+-]?\d+\.?\d*)[,\s]\s*([+-]?\d+\.?\d*)\s*$/);var items=[];if(matches&&matches.length>=3){var x=parseFloat(matches[1]);var y=parseFloat(matches[2]);if(displaycrs!=="EPSG:4326"){items.push({id:"coord0",text:x+", "+y+" ("+displaycrs+")",x:x,y:y,crs:displaycrs,bbox:[x,y,x,y]})}if(x>=-180&&x<=180&&y>=-90&&y<=90){var title=Math.abs(x)+(x>=0?"\xB0E":"\xB0W")+", "+Math.abs(y)+(y>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:title,x:x,y:y,crs:"EPSG:4326",bbox:[x,y,x,y]})}if(x>=-90&&x<=90&&y>=-180&&y<=180&&x!==y){var _title=Math.abs(y)+(y>=0?"\xB0E":"\xB0W")+", "+Math.abs(x)+(x>=0?"\xB0N":"\xB0S");items.push({id:"coord"+items.length,text:_title,x:y,y:x,crs:"EPSG:4326",bbox:[y,x,y,x]})}}var results=[];if(items.length>0){results.push({id:"coords",titlemsgid:LocaleUtils.trmsg("search.coordinates"),type:SearchResultType.PLACE,items:items})}callback({results:results})}/** ************************************************************************ **/var NominatimSearch=/*#__PURE__*/function(){function NominatimSearch(){_classCallCheck(this,NominatimSearch)}return _createClass(NominatimSearch,null,[{key:"search",value:function search(text,searchParams,callback){var viewboxParams={};if(searchParams.filterBBox){viewboxParams.viewbox=CoordinatesUtils.reprojectBbox(searchParams.filterBBox,searchParams.mapcrs,"EPSG:4326").join(",");viewboxParams.bounded=1}axios.get("https://nominatim.openstreetmap.org/search",{params:_objectSpread(_objectSpread({"q":text,"addressdetails":1,"polygon_geojson":1,"limit":20,"format":"json","accept-language":searchParams.lang},searchParams.cfgParams||{}),viewboxParams)}).then(function(response){var locale=searchParams.lang;if(NominatimSearch.TRANSLATIONS[locale]===undefined){NominatimSearch.TRANSLATIONS[locale]={promise:NominatimSearch.loadLocale(locale)};NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].promise){NominatimSearch.TRANSLATIONS[locale].promise.then(function(){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)})}else if(NominatimSearch.TRANSLATIONS[locale].strings){NominatimSearch.parseResults(response.data,NominatimSearch.TRANSLATIONS[locale].strings,callback)}})}},{key:"parseResults",value:function parseResults(obj,translations,callback){var results=[];var groups={};var groupcounter=0;(obj||[]).map(function(entry){if(!(entry["class"]in groups)){var title=entry.type;try{title=translations[entry["class"]][entry.type]||entry.type}catch(e){/* pass */}groups[entry["class"]]={id:"nominatimgroup"+groupcounter++,// capitalize class
8
8
  title:title,type:SearchResultType.PLACE,items:[]};results.push(groups[entry["class"]])}// shorten display_name
9
9
  var text=entry.display_name.split(", ").slice(0,3).join(", ");// map label
10
10
  var label=text;// collect address fields
@@ -16,9 +16,9 @@ var _formatLayerEntry=function formatLayerEntry(dataproduct){return{type:SearchR
16
16
  results.push({id:"fulltext.places",titlemsgid:LocaleUtils.trmsg("search.places"),resultCount:placeResultCount,type:SearchResultType.PLACE,items:data.results.filter(function(entry){return entry.feature}).map(function(entry){return{id:entry.feature.feature_id,text:entry.feature.display,x:0.5*(entry.feature.bbox[0]+entry.feature.bbox[2]),y:0.5*(entry.feature.bbox[1]+entry.feature.bbox[3]),crs:entry.feature.srid?"EPSG:"+String(entry.feature.srid).replace(/^EPSG:/,""):null,bbox:entry.feature.bbox,thumbnail:iconPath+entry.feature.dataproduct_id+".svg",// fulltext specific info
17
17
  dataproduct_id:entry.feature.dataproduct_id,id_field_name:entry.feature.id_field_name}})});callback({results:results,result_counts:data.result_counts})})["catch"](function(e){// eslint-disable-next-line
18
18
  console.warn("Fulltext search failed: "+e);callback({results:[]})})}},{key:"filterFulltextResults",value:function filterFulltextResults(data,filterPoly,mapCrs){if(!filterPoly){return data}data.results=data.results.filter(function(result){if(!result.feature||!result.feature.bbox){return true}var _CoordinatesUtils$rep=CoordinatesUtils.reprojectBbox(result.feature.bbox,"EPSG:"+result.feature.srid,mapCrs),_CoordinatesUtils$rep2=_slicedToArray(_CoordinatesUtils$rep,4),xmin=_CoordinatesUtils$rep2[0],ymin=_CoordinatesUtils$rep2[1],xmax=_CoordinatesUtils$rep2[2],ymax=_CoordinatesUtils$rep2[3];var intersects=polygonIntersectTest([[xmin,ymin],[xmax,ymin],[xmax,ymax],[xmin,ymax],[xmin,ymin]],filterPoly);if(!intersects){data.result_counts.find(function(entry){return entry.dataproduct_id===result.feature.dataproduct_id}).count-=1}return intersects});return data}},{key:"getResultGeometry",value:function getResultGeometry(resultItem,callback){var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!dataServiceUrl){callback(null)}// URL example: /api/data/v1/ch.so.afu.fliessgewaesser.netz/?filter=[["gewissnr","=",1179]]
19
- var quot=typeof resultItem.id==="string"?"\"":"";var filter="[[\"".concat(resultItem.id_field_name,"\",\"=\", ").concat(quot).concat(resultItem.id).concat(quot,"]]");axios.get(dataServiceUrl.replace(/\/?$/,"/")+resultItem.dataproduct_id+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var center=bbox?[0.5*(bbox[0]+bbox[2]),0.5*(bbox[1]+bbox[3])]:null;callback({bbox:bbox,center:center,feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){callback(null)})}},{key:"getLayerDefinition",value:function getLayerDefinition(resultItem,callback){var dataProductServiceUrl=ConfigUtils.getConfigProp("dataproductServiceUrl");if(!dataProductServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search: failed to get layer definition, dataproductServiceUrl is not defined");callback(null)}var params={filter:resultItem.id};axios.get(dataProductServiceUrl.replace(/\/?$/,"/")+"weblayers",{params:params}).then(function(response){var _response$data$result;callback((_response$data$result=response.data[resultItem.id])===null||_response$data$result===void 0?void 0:_response$data$result[0])})["catch"](function(){callback(null)})}},{key:"handleHighlightParameters",value:function handleHighlightParameters(hp,hf,st,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!searchServiceUrl||!dataServiceUrl){return}var queryFeature=function queryFeature(filter){axios.get(dataServiceUrl.replace(/\/?$/,"/")+hp+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var item={x:0.5*[bbox[0]+bbox[2]],y:0.5*[bbox[1]+bbox[3]],label:st,crs:response.data.crs.properties.name,bbox:bbox};callback(item,{feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){})};if(hp&&hf){queryFeature(hf)}else if(hp&&st){var params={searchtext:st,filter:hp,limit:1};axios.get(searchServiceUrl,{params:params}).then(function(response){if(response.data.results&&response.data.results.length===1){var result=response.data.results[0].feature;var quot=typeof result.feature_id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.feature_id).concat(quot,"]]");queryFeature(filter)}})["catch"](function(){})}}}])}();/** ************************************************************************ **/var SearchProviders={coordinates:{labelmsgid:"search.coordinates",onSearch:coordinatesSearch,handlesGeomFilter:false},nominatim:{label:"OpenStreetMap",onSearch:NominatimSearch.search,handlesGeomFilter:false},qgis:{label:"QGIS",onSearch:QgisSearch.search,getResultGeometry:QgisSearch.getResultGeometry,handlesGeomFilter:false},fulltext:{label:"Fulltext",onSearch:FulltextSearch.search,getResultGeometry:FulltextSearch.getResultGeometry,getLayerDefinition:FulltextSearch.getLayerDefinition,handlesGeomFilter:true}};export default SearchProviders;/** ************************************************************************ **/// Uniformize the response of getResultGeometry
19
+ var quot=typeof resultItem.id==="string"?"\"":"";var filter="[[\"".concat(resultItem.id_field_name,"\",\"=\", ").concat(quot).concat(resultItem.id).concat(quot,"]]");axios.get(dataServiceUrl.replace(/\/?$/,"/")+resultItem.dataproduct_id+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var center=bbox?[0.5*(bbox[0]+bbox[2]),0.5*(bbox[1]+bbox[3])]:null;callback({bbox:bbox,center:center,feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){callback(null)})}},{key:"getLayerDefinition",value:function getLayerDefinition(resultItem,callback){var dataProductServiceUrl=ConfigUtils.getConfigProp("dataproductServiceUrl");if(!dataProductServiceUrl){/* eslint-disable-next-line */console.warn("Fulltext search: failed to get layer definition, dataproductServiceUrl is not defined");callback(null)}var params={filter:resultItem.id};axios.get(dataProductServiceUrl.replace(/\/?$/,"/")+"weblayers",{params:params}).then(function(response){var _response$data$result;callback((_response$data$result=response.data[resultItem.id])===null||_response$data$result===void 0?void 0:_response$data$result[0])})["catch"](function(){callback(null)})}},{key:"handleHighlightParameters",value:function handleHighlightParameters(hp,hf,st,callback){var searchServiceUrl=ConfigUtils.getConfigProp("searchServiceUrl");var dataServiceUrl=ConfigUtils.getConfigProp("searchDataServiceUrl")||ConfigUtils.getConfigProp("dataServiceUrl");if(!searchServiceUrl||!dataServiceUrl){return}var queryFeature=function queryFeature(filter){axios.get(dataServiceUrl.replace(/\/?$/,"/")+hp+"/?filter="+filter).then(function(response){var bbox=response.data.bbox;var item={x:0.5*[bbox[0]+bbox[2]],y:0.5*[bbox[1]+bbox[3]],label:st,crs:response.data.crs.properties.name,bbox:bbox};callback(item,{feature:response.data,crs:response.data.crs.properties.name})})["catch"](function(){})};if(hp&&hf){queryFeature(hf)}else if(hp&&st){var params={searchtext:st,filter:hp,limit:1};axios.get(searchServiceUrl,{params:params}).then(function(response){if(response.data.results&&response.data.results.length===1){var result=response.data.results[0].feature;var quot=typeof result.feature_id==="string"?"\"":"";var filter="[[\"".concat(result.id_field_name,"\",\"=\", ").concat(quot).concat(result.feature_id).concat(quot,"]]");queryFeature(filter)}})["catch"](function(){})}}}])}();/** ************************************************************************ **/var SearchProviders={coordinates:{labelmsgid:"search.coordinates",onSearch:coordinatesSearch,handlesGeomFilter:false},nominatim:{label:"OpenStreetMap",onSearch:NominatimSearch.search,handlesGeomFilter:false},qgis:{label:"QGIS",onSearch:QgisSearch.search,getResultGeometry:QgisSearch.getResultGeometry,handlesGeomFilter:false},fulltext:{label:"Fulltext",onSearch:FulltextSearch.search,getResultGeometry:FulltextSearch.getResultGeometry,getLayerDefinition:FulltextSearch.getLayerDefinition,handlesGeomFilter:true}};/** ************************************************************************ **/var addedSearchProviders=new Set;export function registerSearchProvider(key,config){SearchProviders[key]=config;addedSearchProviders.add(key)}export function unregisterSearchProvider(key){delete SearchProviders[key];addedSearchProviders["delete"](key)}// Uniformize the response of getResultGeometry
20
20
  function getResultGeometry(provider,item,callback){provider.getResultGeometry(item,function(response){var features=[];if(response!==null&&response!==void 0&&response.geometry){var highlightFeature=response.geometry.coordinates?{type:"Feature",geometry:response.geometry}:VectorLayerUtils.wktToGeoJSON(response.geometry,response.crs,response.crs);if(highlightFeature){features.push(highlightFeature)}}else if(response!==null&&response!==void 0&&response.feature){if(response.feature.features){features.push.apply(features,_toConsumableArray(response.feature.features))}else{features.push(response.feature)}}if(features.length===0){callback(null)}else{callback(_objectSpread(_objectSpread({feature:{type:"FeatureCollection",features:features},crs:response.crs,hidemarker:response.hidemarker},response.bbox&&{bbox:response.bbox}),response.center&&{center:response.center}))}})}export function collectSearchProviders(theme,layers){var mapScale=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;// Collect active layers/search terms
21
- var searchTerms=[];var activeLayers=[];var _iterator=_createForOfIteratorHelper(LayerUtils.explodeLayers(layers)),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var entry=_step.value;if(entry.layer.role===LayerRole.THEME&&entry.sublayer.visibility===true&&mapScale!==null&&LayerUtils.layerScaleInRange(entry.sublayer,mapScale)){searchTerms=searchTerms.concat(entry.sublayer.searchterms||[]);activeLayers.push(entry.sublayer.name)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}var searchProviders=_objectSpread(_objectSpread({},SearchProviders),window.QWC2SearchProviders||{});var availableProviders={};var themeLayerNames=layers.map(function(layer){return layer.role===LayerRole.THEME?layer.params.LAYERS:""}).join(",").split(",").filter(function(entry){return entry});var providerKeys=new Set;var _iterator2=_createForOfIteratorHelper((theme===null||theme===void 0?void 0:theme.searchProviders)||[]),_step2;try{var _loop=function _loop(){var _entry;var entry=_step2.value;if(typeof entry==="string"){entry={provider:entry}}// Omit qgis provider with field configuration, this is only supported through the FeatureSearch plugin
21
+ var searchTerms=[];var activeLayers=[];var _iterator=_createForOfIteratorHelper(LayerUtils.explodeLayers(layers)),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var entry=_step.value;if(entry.layer.role===LayerRole.THEME&&entry.sublayer.visibility===true&&mapScale!==null&&LayerUtils.layerScaleInRange(entry.sublayer,mapScale)){searchTerms=searchTerms.concat(entry.sublayer.searchterms||[]);activeLayers.push(entry.sublayer.name)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}var searchProviders=_objectSpread(_objectSpread({},SearchProviders),window.QWC2SearchProviders||{});var availableProviders={};var themeLayerNames=layers.map(function(layer){return layer.role===LayerRole.THEME?layer.params.LAYERS:""}).join(",").split(",").filter(function(entry){return entry});var providerKeys=new Set;var enabledProviders=[].concat(_toConsumableArray((theme===null||theme===void 0?void 0:theme.searchProviders)||[]),_toConsumableArray(addedSearchProviders));var _iterator2=_createForOfIteratorHelper(enabledProviders),_step2;try{var _loop=function _loop(){var _entry;var entry=_step2.value;if(typeof entry==="string"){entry={provider:entry}}// Omit qgis provider with field configuration, this is only supported through the FeatureSearch plugin
22
22
  if(entry.provider==="qgis"&&(_entry=entry)!==null&&_entry!==void 0&&(_entry=_entry.params)!==null&&_entry!==void 0&&_entry.fields){return 0;// continue
23
23
  }var provider=searchProviders[entry.provider];if(provider){var _entry$key,_entry$label,_entry$labelmsgid;if(provider.requiresLayer&&!themeLayerNames.includes(provider.requiresLayer)){return 0;// continue
24
24
  }var key=(_entry$key=entry.key)!==null&&_entry$key!==void 0?_entry$key:entry.provider;if(providerKeys.has(key)){var i=0;for(i=0;providerKeys.has(key+"_"+i);++i);key=key+"_"+i}providerKeys.add(key);availableProviders[key]=_objectSpread(_objectSpread({},provider),{},{label:(_entry$label=entry.label)!==null&&_entry$label!==void 0?_entry$label:provider.label,labelmsgid:(_entry$labelmsgid=entry.labelmsgid)!==null&&_entry$labelmsgid!==void 0?_entry$labelmsgid:provider.labelmsgid,getResultGeometry:provider.getResultGeometry?function(item,callback){return getResultGeometry(provider,item,callback)}:null,cfgParams:entry.params||{},params:{searchTerms:searchTerms,activeLayers:activeLayers,theme:theme}})}},_ret;for(_iterator2.s();!(_step2=_iterator2.n()).done;){_ret=_loop();if(_ret===0)continue}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return availableProviders}