geonetwork-ui 2.5.0-dev.b51c2cb0f → 2.5.0-dev.d4eff86c8

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 (151) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +34 -28
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +22 -2
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  8. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +24 -14
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
  10. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +2 -1
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  13. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  14. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -3
  15. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
  16. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  17. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  18. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  20. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  21. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  22. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  23. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  24. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
  25. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
  26. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  27. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +7 -2
  28. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  29. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  30. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  31. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  32. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  33. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  34. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  35. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  36. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +6 -6
  37. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +9 -7
  38. package/esm2022/translations/de.json +2 -3
  39. package/esm2022/translations/en.json +2 -3
  40. package/esm2022/translations/es.json +2 -3
  41. package/esm2022/translations/fr.json +4 -5
  42. package/esm2022/translations/it.json +2 -3
  43. package/esm2022/translations/nl.json +2 -3
  44. package/esm2022/translations/pt.json +2 -3
  45. package/fesm2022/geonetwork-ui.mjs +399 -165
  46. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  47. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  48. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  49. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  50. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
  51. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  52. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  53. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  54. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  55. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  56. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  57. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  58. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  59. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  60. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  61. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  62. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
  63. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  64. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  65. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  66. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +1 -0
  67. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  68. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  69. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  70. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  71. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  72. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  73. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  74. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  75. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  76. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  77. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  78. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  79. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  80. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  81. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  82. package/libs/ui/elements/src/index.d.ts +1 -0
  83. package/libs/ui/elements/src/index.d.ts.map +1 -1
  84. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
  85. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
  86. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  87. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  88. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  89. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  90. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  91. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  92. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  93. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  94. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  95. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  96. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  97. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  98. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +3 -3
  99. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  100. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  101. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  102. package/package.json +1 -1
  103. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  104. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  105. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +36 -27
  106. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +41 -2
  107. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  108. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  109. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
  110. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -1
  111. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +43 -20
  112. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
  113. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  114. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +1 -0
  115. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  116. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  117. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
  118. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -0
  119. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
  120. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  121. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  122. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  123. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  124. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  125. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  126. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  127. package/src/libs/ui/elements/src/index.ts +1 -0
  128. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
  129. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
  130. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
  131. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
  132. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  133. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +6 -0
  134. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  135. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  136. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  137. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  138. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  139. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  140. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  141. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  142. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +10 -5
  143. package/src/libs/util/data-fetcher/src/lib/utils.ts +36 -32
  144. package/translations/de.json +2 -3
  145. package/translations/en.json +2 -3
  146. package/translations/es.json +2 -3
  147. package/translations/fr.json +4 -5
  148. package/translations/it.json +2 -3
  149. package/translations/nl.json +2 -3
  150. package/translations/pt.json +2 -3
  151. package/translations/sk.json +2 -3
@@ -27,7 +27,7 @@ import EmblaCarousel from 'embla-carousel';
27
27
  import * as i2$2 from '@ng-icons/core';
28
28
  import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
29
29
  import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
30
- import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matMoreHoriz, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
30
+ import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matMoreHoriz, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
31
31
  import * as i1$4 from '@angular/material/tooltip';
32
32
  import { MatTooltipModule } from '@angular/material/tooltip';
33
33
  import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
@@ -18621,8 +18621,6 @@ var de = {
18621
18621
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
18622
18622
  "chart.type.pie": "Kreisdiagramm",
18623
18623
  "dashboard.catalog.allRecords": "Metadatenkatalog",
18624
- "dashboard.catalog.contacts": "Kontakte",
18625
- "dashboard.catalog.thesaurus": "Thesaurus",
18626
18624
  "dashboard.createRecord": "Neuer Eintrag",
18627
18625
  "dashboard.importRecord": "",
18628
18626
  "dashboard.importRecord.importExternal": "",
@@ -18635,7 +18633,6 @@ var de = {
18635
18633
  "dashboard.records.myDraft": "Meine Entwürfe",
18636
18634
  "dashboard.records.myRecords": "Meine Datensätze",
18637
18635
  "dashboard.records.search": "Suche nach \"{searchText}\"",
18638
- "dashboard.records.templates": "Vorlagen",
18639
18636
  "dashboard.records.userDetail": "Name",
18640
18637
  "dashboard.records.userEmail": "E-Mail",
18641
18638
  "dashboard.records.username": "Benutzername",
@@ -19148,6 +19145,8 @@ var de = {
19148
19145
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
19149
19146
  "search.field.any.placeholder": "Suche Datensätze ...",
19150
19147
  "search.field.sortBy": "Sortieren nach:",
19148
+ "search.filters.availableServices.download": "",
19149
+ "search.filters.availableServices.view": "",
19151
19150
  "search.filters.changeDate": "Letzte Aktualisierung",
19152
19151
  "search.filters.clear": "Zurücksetzen",
19153
19152
  "search.filters.contact": "Kontakte",
@@ -19238,8 +19237,6 @@ var en = {
19238
19237
  "chart.type.lineSmooth": "smooth line chart",
19239
19238
  "chart.type.pie": "pie chart",
19240
19239
  "dashboard.catalog.allRecords": "Datasets",
19241
- "dashboard.catalog.contacts": "Contacts",
19242
- "dashboard.catalog.thesaurus": "Thesaurus",
19243
19240
  "dashboard.createRecord": "New dataset",
19244
19241
  "dashboard.importRecord": "Import",
19245
19242
  "dashboard.importRecord.importExternal": "Import an external file",
@@ -19252,7 +19249,6 @@ var en = {
19252
19249
  "dashboard.records.myDraft": "My drafts",
19253
19250
  "dashboard.records.myRecords": "My datasets",
19254
19251
  "dashboard.records.search": "Search for \"{searchText}\"",
19255
- "dashboard.records.templates": "Templates",
19256
19252
  "dashboard.records.userDetail": "Name",
19257
19253
  "dashboard.records.userEmail": "Email",
19258
19254
  "dashboard.records.username": "Username",
@@ -19765,6 +19761,8 @@ var en = {
19765
19761
  "search.error.recordNotFound": "The dataset with identifier \"{ id }\" could not be found.",
19766
19762
  "search.field.any.placeholder": "Search datasets ...",
19767
19763
  "search.field.sortBy": "Sort by:",
19764
+ "search.filters.availableServices.download": "",
19765
+ "search.filters.availableServices.view": "",
19768
19766
  "search.filters.changeDate": "Updated",
19769
19767
  "search.filters.clear": "Reset",
19770
19768
  "search.filters.contact": "Contacts",
@@ -19855,8 +19853,6 @@ var es = {
19855
19853
  "chart.type.lineSmooth": "gráfico de líneas suave",
19856
19854
  "chart.type.pie": "gráfico circular",
19857
19855
  "dashboard.catalog.allRecords": "",
19858
- "dashboard.catalog.contacts": "",
19859
- "dashboard.catalog.thesaurus": "",
19860
19856
  "dashboard.createRecord": "",
19861
19857
  "dashboard.importRecord": "",
19862
19858
  "dashboard.importRecord.importExternal": "",
@@ -19869,7 +19865,6 @@ var es = {
19869
19865
  "dashboard.records.myDraft": "Mis borradores",
19870
19866
  "dashboard.records.myRecords": "Mis Registros",
19871
19867
  "dashboard.records.search": "Buscar \"{searchText}\"",
19872
- "dashboard.records.templates": "",
19873
19868
  "dashboard.records.userDetail": "",
19874
19869
  "dashboard.records.userEmail": "",
19875
19870
  "dashboard.records.username": "",
@@ -20382,6 +20377,8 @@ var es = {
20382
20377
  "search.error.recordNotFound": "",
20383
20378
  "search.field.any.placeholder": "",
20384
20379
  "search.field.sortBy": "",
20380
+ "search.filters.availableServices.download": "",
20381
+ "search.filters.availableServices.view": "",
20385
20382
  "search.filters.changeDate": "Última actualización",
20386
20383
  "search.filters.clear": "",
20387
20384
  "search.filters.contact": "",
@@ -20472,8 +20469,6 @@ var fr = {
20472
20469
  "chart.type.lineSmooth": "ligne lisse",
20473
20470
  "chart.type.pie": "camembert",
20474
20471
  "dashboard.catalog.allRecords": "Jeux de données",
20475
- "dashboard.catalog.contacts": "Annuaire",
20476
- "dashboard.catalog.thesaurus": "Thésaurus",
20477
20472
  "dashboard.createRecord": "Nouveau jeu de données",
20478
20473
  "dashboard.importRecord": "Importer",
20479
20474
  "dashboard.importRecord.importExternal": "Importer un jeu de données externe",
@@ -20486,7 +20481,6 @@ var fr = {
20486
20481
  "dashboard.records.myDraft": "Mes brouillons",
20487
20482
  "dashboard.records.myRecords": "Mes jeux de données",
20488
20483
  "dashboard.records.search": "Résultats pour \"{searchText}\"",
20489
- "dashboard.records.templates": "Modèles pré-remplis",
20490
20484
  "dashboard.records.userDetail": "Nom",
20491
20485
  "dashboard.records.userEmail": "Email",
20492
20486
  "dashboard.records.username": "Nom d'utilisateur",
@@ -20613,7 +20607,7 @@ var fr = {
20613
20607
  "domain.contact.role.point_of_contact": "Point de contact",
20614
20608
  "domain.contact.role.principal_investigator": "Chercheur principal",
20615
20609
  "domain.contact.role.processor": "Processeur",
20616
- "domain.contact.role.publisher": "Éditeur",
20610
+ "domain.contact.role.publisher": "Producteur",
20617
20611
  "domain.contact.role.resource_provider": "Fournisseur",
20618
20612
  "domain.contact.role.rights_holder": "Détenteur des droits",
20619
20613
  "domain.contact.role.sponsor": "Sponsor",
@@ -20677,7 +20671,7 @@ var fr = {
20677
20671
  "editor.record.form.constraint.otherConstraints": "Autres contraintes",
20678
20672
  "editor.record.form.constraint.securityConstraints": "Contraintes de sécurité",
20679
20673
  "editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
20680
- "editor.record.form.field.abstract": "Résumé",
20674
+ "editor.record.form.field.abstract": "Description",
20681
20675
  "editor.record.form.field.constraintsShortcuts": "",
20682
20676
  "editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
20683
20677
  "editor.record.form.field.contacts.placeholder": "Choisissez un contact",
@@ -20999,6 +20993,8 @@ var fr = {
20999
20993
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
21000
20994
  "search.field.any.placeholder": "Rechercher un jeu de données...",
21001
20995
  "search.field.sortBy": "Trier par :",
20996
+ "search.filters.availableServices.download": "",
20997
+ "search.filters.availableServices.view": "",
21002
20998
  "search.filters.changeDate": "Mise à jour",
21003
20999
  "search.filters.clear": "Réinitialiser",
21004
21000
  "search.filters.contact": "Contacts",
@@ -21089,8 +21085,6 @@ var it = {
21089
21085
  "chart.type.lineSmooth": "grafico a linea liscia",
21090
21086
  "chart.type.pie": "grafico a torta",
21091
21087
  "dashboard.catalog.allRecords": "Datasets",
21092
- "dashboard.catalog.contacts": "Contatti",
21093
- "dashboard.catalog.thesaurus": "Thesauri",
21094
21088
  "dashboard.createRecord": "Crea un record",
21095
21089
  "dashboard.importRecord": "Importare",
21096
21090
  "dashboard.importRecord.importExternal": "Importare un dataset esterno",
@@ -21103,7 +21097,6 @@ var it = {
21103
21097
  "dashboard.records.myDraft": "Le mie bozze",
21104
21098
  "dashboard.records.myRecords": "I miei dati",
21105
21099
  "dashboard.records.search": "Risultati per \"{searchText}\"",
21106
- "dashboard.records.templates": "Modelli precompilati",
21107
21100
  "dashboard.records.userDetail": "Nome",
21108
21101
  "dashboard.records.userEmail": "Email",
21109
21102
  "dashboard.records.username": "Nome utente",
@@ -21616,6 +21609,8 @@ var it = {
21616
21609
  "search.error.recordNotFound": "Impossibile trovare questi dati.",
21617
21610
  "search.field.any.placeholder": "Cerca un dataset...",
21618
21611
  "search.field.sortBy": "Ordina per:",
21612
+ "search.filters.availableServices.download": "",
21613
+ "search.filters.availableServices.view": "",
21619
21614
  "search.filters.changeDate": "Aggiornato",
21620
21615
  "search.filters.clear": "Ripristina",
21621
21616
  "search.filters.contact": "Contatti",
@@ -21706,8 +21701,6 @@ var nl = {
21706
21701
  "chart.type.lineSmooth": "glad lijndiagram",
21707
21702
  "chart.type.pie": "cirkeldiagram",
21708
21703
  "dashboard.catalog.allRecords": "",
21709
- "dashboard.catalog.contacts": "",
21710
- "dashboard.catalog.thesaurus": "",
21711
21704
  "dashboard.createRecord": "",
21712
21705
  "dashboard.importRecord": "",
21713
21706
  "dashboard.importRecord.importExternal": "",
@@ -21720,7 +21713,6 @@ var nl = {
21720
21713
  "dashboard.records.myDraft": "Mijn concepten",
21721
21714
  "dashboard.records.myRecords": "Mijn Records",
21722
21715
  "dashboard.records.search": "Zoeken naar \"{searchText}\"",
21723
- "dashboard.records.templates": "",
21724
21716
  "dashboard.records.userDetail": "",
21725
21717
  "dashboard.records.userEmail": "",
21726
21718
  "dashboard.records.username": "",
@@ -22233,6 +22225,8 @@ var nl = {
22233
22225
  "search.error.recordNotFound": "",
22234
22226
  "search.field.any.placeholder": "",
22235
22227
  "search.field.sortBy": "",
22228
+ "search.filters.availableServices.download": "",
22229
+ "search.filters.availableServices.view": "",
22236
22230
  "search.filters.changeDate": "",
22237
22231
  "search.filters.clear": "",
22238
22232
  "search.filters.contact": "",
@@ -22323,8 +22317,6 @@ var pt = {
22323
22317
  "chart.type.lineSmooth": "gráfico de linha suave",
22324
22318
  "chart.type.pie": "gráfico de pizza",
22325
22319
  "dashboard.catalog.allRecords": "",
22326
- "dashboard.catalog.contacts": "",
22327
- "dashboard.catalog.thesaurus": "",
22328
22320
  "dashboard.createRecord": "",
22329
22321
  "dashboard.importRecord": "",
22330
22322
  "dashboard.importRecord.importExternal": "",
@@ -22337,7 +22329,6 @@ var pt = {
22337
22329
  "dashboard.records.myDraft": "Meus rascunhos",
22338
22330
  "dashboard.records.myRecords": "Meus Registros",
22339
22331
  "dashboard.records.search": "Buscar por \"{searchText}\"",
22340
- "dashboard.records.templates": "",
22341
22332
  "dashboard.records.userDetail": "",
22342
22333
  "dashboard.records.userEmail": "",
22343
22334
  "dashboard.records.username": "",
@@ -22850,6 +22841,8 @@ var pt = {
22850
22841
  "search.error.recordNotFound": "",
22851
22842
  "search.field.any.placeholder": "",
22852
22843
  "search.field.sortBy": "",
22844
+ "search.filters.availableServices.download": "",
22845
+ "search.filters.availableServices.view": "",
22853
22846
  "search.filters.changeDate": "",
22854
22847
  "search.filters.clear": "",
22855
22848
  "search.filters.contact": "",
@@ -23092,6 +23085,16 @@ class Gn4FieldMapper {
23092
23085
  isOpenData: (output, source) => this.addExtra({
23093
23086
  isOpenData: selectField(source, 'isOpenData') !== 'false',
23094
23087
  }, output),
23088
+ featureTypes: (output, source) => this.addExtra({
23089
+ featureTypes: selectField(source, 'featureTypes'),
23090
+ }, output),
23091
+ related: (output, source) => {
23092
+ const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')), '_source');
23093
+ const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
23094
+ return featureCatalogIdentifier
23095
+ ? this.addExtra({ featureCatalogIdentifier }, output)
23096
+ : output;
23097
+ },
23095
23098
  isPublishedToAll: (output, source) => this.addExtra({
23096
23099
  isPublishedToAll: selectField(source, 'isPublishedToAll'),
23097
23100
  }, output),
@@ -23409,7 +23412,7 @@ class ElasticsearchService {
23409
23412
  this.runtimeFields = {};
23410
23413
  this.lang3 = this.langService.iso3;
23411
23414
  }
23412
- getSearchRequestBody(aggregations = {}, size = 0, from = 0, sortBy = null, requestFields = [], searchFilters = {}, configFilters = {}, uuids, geometry) {
23415
+ getSearchRequestBody(aggregations = {}, size = 0, from = 0, sortBy = null, requestFields = null, searchFilters = {}, configFilters = {}, uuids, geometry) {
23413
23416
  const payload = {
23414
23417
  aggregations,
23415
23418
  from,
@@ -23417,7 +23420,7 @@ class ElasticsearchService {
23417
23420
  sort: this.buildPayloadSort(sortBy),
23418
23421
  query: this.buildPayloadQuery(searchFilters, configFilters, uuids, geometry),
23419
23422
  ...(size > 0 ? { track_total_hits: true } : {}),
23420
- _source: requestFields,
23423
+ ...(requestFields && { _source: requestFields }),
23421
23424
  };
23422
23425
  this.processRuntimeFields(payload);
23423
23426
  return payload;
@@ -23564,6 +23567,7 @@ class ElasticsearchService {
23564
23567
  return this.metadataLang === 'current';
23565
23568
  }
23566
23569
  filtersToQuery(filters) {
23570
+ const addQuote = (key) => (/^\/.+\/$/.test(key) ? key : `"${key}"`);
23567
23571
  const makeQuery = (filter) => {
23568
23572
  if (typeof filter === 'string') {
23569
23573
  return filter;
@@ -23571,9 +23575,9 @@ class ElasticsearchService {
23571
23575
  return Object.keys(filter)
23572
23576
  .map((key) => {
23573
23577
  if (filter[key] === true) {
23574
- return `"${key}"`;
23578
+ return addQuote(key);
23575
23579
  }
23576
- return `-"${key}"`;
23580
+ return `-${addQuote(key)}`;
23577
23581
  })
23578
23582
  .join(' OR ');
23579
23583
  };
@@ -23616,16 +23620,26 @@ class ElasticsearchService {
23616
23620
  ].filter(Boolean);
23617
23621
  return queryParts.length > 0 ? queryParts : undefined;
23618
23622
  }
23623
+ mustNotFilters() {
23624
+ return [
23625
+ {
23626
+ ...this.queryFilterOnValues('resourceType', [
23627
+ 'service',
23628
+ 'map',
23629
+ 'map/static',
23630
+ 'mapDigital',
23631
+ ]),
23632
+ },
23633
+ {
23634
+ query_string: {
23635
+ query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
23636
+ },
23637
+ },
23638
+ ];
23639
+ }
23619
23640
  buildPayloadQuery({ any, ...fieldSearchFilters }, configFilters, uuids, geometry) {
23620
23641
  const must = [];
23621
- const must_not = {
23622
- ...this.queryFilterOnValues('resourceType', [
23623
- 'service',
23624
- 'map',
23625
- 'map/static',
23626
- 'mapDigital',
23627
- ]),
23628
- };
23642
+ const must_not = this.mustNotFilters();
23629
23643
  const should = [];
23630
23644
  const filter = [this.queryFilterOnValues('isTemplate', 'n')];
23631
23645
  if (any) {
@@ -23711,14 +23725,7 @@ class ElasticsearchService {
23711
23725
  },
23712
23726
  },
23713
23727
  ],
23714
- must_not: {
23715
- ...this.queryFilterOnValues('resourceType', [
23716
- 'service',
23717
- 'map',
23718
- 'map/static',
23719
- 'mapDigital',
23720
- ]),
23721
- },
23728
+ must_not: this.mustNotFilters(),
23722
23729
  },
23723
23730
  },
23724
23731
  _source: ['resourceTitleObject', 'uuid'],
@@ -23819,13 +23826,15 @@ class ElasticsearchService {
23819
23826
  switch (aggregation.type) {
23820
23827
  case 'filters':
23821
23828
  return {
23822
- filters: Object.keys(aggregation.filters).reduce((prev, curr) => {
23823
- const filter = aggregation.filters[curr];
23824
- return {
23825
- ...prev,
23826
- [curr]: this.filtersToQuery(filter)[0],
23827
- };
23828
- }, {}),
23829
+ filters: {
23830
+ filters: Object.keys(aggregation.filters).reduce((prev, curr) => {
23831
+ const filter = aggregation.filters[curr];
23832
+ return {
23833
+ ...prev,
23834
+ [curr]: this.filtersToQuery(filter)[0],
23835
+ };
23836
+ }, {}),
23837
+ },
23829
23838
  };
23830
23839
  case 'terms':
23831
23840
  return {
@@ -23933,9 +23942,29 @@ class Gn4Repository {
23933
23942
  }
23934
23943
  getRecord(uniqueIdentifier) {
23935
23944
  return this.gn4SearchApi
23936
- .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
23945
+ .search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
23937
23946
  .pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
23938
23947
  }
23948
+ getFeatureCatalog(record, visited = new Set() // prevent looping
23949
+ ) {
23950
+ if (record.extras &&
23951
+ record.extras['featureTypes'] &&
23952
+ record.extras['featureTypes'][0]?.attributeTable &&
23953
+ Array.isArray(record.extras['featureTypes'][0].attributeTable)) {
23954
+ return of({
23955
+ attributes: record.extras['featureTypes'][0]?.attributeTable?.map((attr) => ({
23956
+ name: attr.name,
23957
+ title: attr.definition,
23958
+ })),
23959
+ });
23960
+ }
23961
+ const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
23962
+ if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
23963
+ visited.add(featureCatalogIdentifier);
23964
+ return this.getRecord(featureCatalogIdentifier).pipe(switchMap((record) => record ? this.getFeatureCatalog(record, visited) : of(null)));
23965
+ }
23966
+ return of(null);
23967
+ }
23939
23968
  getSimilarRecords(similarTo) {
23940
23969
  return this.gn4SearchApi
23941
23970
  .search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
@@ -26681,7 +26710,12 @@ class AutocompleteComponent {
26681
26710
  const suggestionsFromAction = merge(newValue$.pipe(filter((value) => value.length >= this.minCharacterCount)), externalValueChange$).pipe(tap$1(() => {
26682
26711
  this.searching = true;
26683
26712
  this.error = null;
26684
- }), switchMap$1((value) => this.action(value)), catchError((error) => {
26713
+ }), switchMap$1((value) => this.action(value)), tap$1((suggestions) => {
26714
+ // forcing the panel to open if there are suggestions
26715
+ if (suggestions.length > 0) {
26716
+ this.triggerRef?.openPanel();
26717
+ }
26718
+ }), catchError((error) => {
26685
26719
  this.error = error.message;
26686
26720
  return of([]);
26687
26721
  }), finalize(() => (this.searching = false)));
@@ -30091,6 +30125,7 @@ class RecordApiFormComponent {
30091
30125
  maxFeatures: limit !== '-1' ? Number(limit) : undefined,
30092
30126
  limit: limit !== '-1' ? Number(limit) : -1,
30093
30127
  offset: offset !== '' ? Number(offset) : undefined,
30128
+ outputCrs: format === ('application/json' || 'geojson') ? 'EPSG:4326' : undefined,
30094
30129
  };
30095
30130
  if (this.endpoint instanceof WfsEndpoint) {
30096
30131
  delete options.limit;
@@ -30222,6 +30257,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30222
30257
  type: Input
30223
30258
  }] } });
30224
30259
 
30260
+ class ApplicationBannerComponent {
30261
+ constructor() {
30262
+ this.closeEnabled = false;
30263
+ this.extraClass = '';
30264
+ this.icon = '';
30265
+ this.msgClass = '';
30266
+ this.bannerOpen = true;
30267
+ }
30268
+ set type(value) {
30269
+ switch (value) {
30270
+ case 'primary':
30271
+ this.msgClass = 'bg-primary-darkest border-primary text-white';
30272
+ this.icon = 'matWarning';
30273
+ break;
30274
+ case 'light':
30275
+ this.msgClass =
30276
+ 'bg-primary-opacity-10 border-primary-lightest text-black';
30277
+ this.icon = 'matInfoOutline';
30278
+ break;
30279
+ case 'secondary':
30280
+ default:
30281
+ this.msgClass = 'bg-primary-opacity-50 border-primary-darker text-black';
30282
+ this.icon = 'matWarningAmberOutline';
30283
+ break;
30284
+ }
30285
+ }
30286
+ get classList() {
30287
+ if (this.message.length > 200) {
30288
+ return `${this.msgClass} ${this.extraClass} overflow-y-scroll items-start`;
30289
+ }
30290
+ return `${this.msgClass} ${this.extraClass} items-center`;
30291
+ }
30292
+ closeMessage() {
30293
+ this.bannerOpen = false;
30294
+ }
30295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApplicationBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30296
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApplicationBannerComponent, isStandalone: true, selector: "gn-ui-application-banner", inputs: { message: "message", title: "title", closeEnabled: "closeEnabled", extraClass: "extraClass", icon: "icon", type: "type" }, providers: [
30297
+ provideIcons({
30298
+ matWarningAmberOutline,
30299
+ matInfoOutline,
30300
+ matCloseOutline,
30301
+ matWarning,
30302
+ }),
30303
+ provideNgIconsConfig({ size: '1.5em' }),
30304
+ ], ngImport: i0, template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute top-0 text-wrap bg-white mt-4 max-h-24\"\n>\n <div\n class=\"flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20\"\n [ngClass]=\"classList\"\n >\n <div [ngClass]=\"{ 'pt-5': message.length > 200 }\">\n <ng-icon [name]=\"icon\"></ng-icon>\n </div>\n <div class=\"flex flex-col justify-start gap-2.5\">\n <span *ngIf=\"title\" class=\"font-bold\">{{ title }}</span>\n <span class=\"font-medium max-w-2xl\" [innerHTML]=\"message\"></span>\n </div>\n <button\n *ngIf=\"closeEnabled\"\n class=\"self-start\"\n type=\"button\"\n (click)=\"closeMessage()\"\n >\n <ng-icon name=\"matCloseOutline\"> </ng-icon>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30305
+ }
30306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApplicationBannerComponent, decorators: [{
30307
+ type: Component,
30308
+ args: [{ selector: 'gn-ui-application-banner', standalone: true, imports: [CommonModule, NgIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
30309
+ provideIcons({
30310
+ matWarningAmberOutline,
30311
+ matInfoOutline,
30312
+ matCloseOutline,
30313
+ matWarning,
30314
+ }),
30315
+ provideNgIconsConfig({ size: '1.5em' }),
30316
+ ], template: "<div\n *ngIf=\"message && bannerOpen\"\n class=\"absolute top-0 text-wrap bg-white mt-4 max-h-24\"\n>\n <div\n class=\"flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20\"\n [ngClass]=\"classList\"\n >\n <div [ngClass]=\"{ 'pt-5': message.length > 200 }\">\n <ng-icon [name]=\"icon\"></ng-icon>\n </div>\n <div class=\"flex flex-col justify-start gap-2.5\">\n <span *ngIf=\"title\" class=\"font-bold\">{{ title }}</span>\n <span class=\"font-medium max-w-2xl\" [innerHTML]=\"message\"></span>\n </div>\n <button\n *ngIf=\"closeEnabled\"\n class=\"self-start\"\n type=\"button\"\n (click)=\"closeMessage()\"\n >\n <ng-icon name=\"matCloseOutline\"> </ng-icon>\n </button>\n </div>\n</div>\n" }]
30317
+ }], propDecorators: { message: [{
30318
+ type: Input
30319
+ }], title: [{
30320
+ type: Input
30321
+ }], closeEnabled: [{
30322
+ type: Input
30323
+ }], extraClass: [{
30324
+ type: Input
30325
+ }], icon: [{
30326
+ type: Input
30327
+ }], type: [{
30328
+ type: Input
30329
+ }] } });
30330
+
30225
30331
  class UiElementsModule {
30226
30332
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
30227
30333
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
@@ -30239,11 +30345,13 @@ class UiElementsModule {
30239
30345
  BadgeComponent,
30240
30346
  MaxLinesComponent,
30241
30347
  TextInputComponent,
30242
- ImageInputComponent], exports: [ThumbnailComponent,
30348
+ ImageInputComponent,
30349
+ ApplicationBannerComponent], exports: [ThumbnailComponent,
30243
30350
  AvatarComponent,
30244
30351
  UserPreviewComponent,
30245
30352
  MarkdownParserComponent,
30246
- ImageInputComponent] }); }
30353
+ ImageInputComponent,
30354
+ ApplicationBannerComponent] }); }
30247
30355
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
30248
30356
  provideNgIconsConfig({
30249
30357
  size: '1.5em',
@@ -30262,7 +30370,8 @@ class UiElementsModule {
30262
30370
  BadgeComponent,
30263
30371
  MaxLinesComponent,
30264
30372
  TextInputComponent,
30265
- ImageInputComponent] }); }
30373
+ ImageInputComponent,
30374
+ ApplicationBannerComponent] }); }
30266
30375
  }
30267
30376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
30268
30377
  type: NgModule,
@@ -30286,6 +30395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30286
30395
  MaxLinesComponent,
30287
30396
  TextInputComponent,
30288
30397
  ImageInputComponent,
30398
+ ApplicationBannerComponent,
30289
30399
  ],
30290
30400
  providers: [
30291
30401
  provideNgIconsConfig({
@@ -30299,6 +30409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30299
30409
  UserPreviewComponent,
30300
30410
  MarkdownParserComponent,
30301
30411
  ImageInputComponent,
30412
+ ApplicationBannerComponent,
30302
30413
  ],
30303
30414
  }]
30304
30415
  }] });
@@ -32529,6 +32640,51 @@ class DateRangeSearchField extends SimpleSearchField {
32529
32640
  return 'dateRange';
32530
32641
  }
32531
32642
  }
32643
+ marker('search.filters.availableServices.view');
32644
+ marker('search.filters.availableServices.download');
32645
+ class AvailableServicesField extends SimpleSearchField {
32646
+ constructor(injector) {
32647
+ super('availableServices', injector, 'asc');
32648
+ this.translateService = this.injector.get(TranslateService);
32649
+ this.linkProtocolViewFilter = '/OGC:WMT?S.*/';
32650
+ this.linkProtocolDownloadFilter = '/OGC:WFS.*/';
32651
+ }
32652
+ async getBucketLabel(bucket) {
32653
+ return firstValueFrom(this.translateService.get(`search.filters.availableServices.${bucket.term}`));
32654
+ }
32655
+ getAggregations() {
32656
+ return {
32657
+ availableServices: {
32658
+ type: 'filters',
32659
+ filters: {
32660
+ view: `+linkProtocol:${this.linkProtocolViewFilter}`,
32661
+ download: `+linkProtocol:${this.linkProtocolDownloadFilter}`,
32662
+ },
32663
+ },
32664
+ };
32665
+ }
32666
+ getFiltersForValues(values) {
32667
+ const filters = {};
32668
+ if (values.includes('view'))
32669
+ filters[this.linkProtocolViewFilter] = true;
32670
+ if (values.includes('download'))
32671
+ filters[this.linkProtocolDownloadFilter] = true;
32672
+ return of({
32673
+ linkProtocol: filters,
32674
+ });
32675
+ }
32676
+ getValuesForFilter(filters) {
32677
+ const linkFilter = filters.linkProtocol;
32678
+ if (!linkFilter)
32679
+ return of([]);
32680
+ const values = [];
32681
+ if (linkFilter[this.linkProtocolViewFilter])
32682
+ values.push('view');
32683
+ if (linkFilter[this.linkProtocolDownloadFilter])
32684
+ values.push('download');
32685
+ return of(values);
32686
+ }
32687
+ }
32532
32688
 
32533
32689
  marker('search.filters.format');
32534
32690
  marker('search.filters.inspireKeyword');
@@ -32570,6 +32726,7 @@ class FieldsService {
32570
32726
  publisherOrg: new MultilingualSearchField('distributorOrgForResourceObject', this.injector, 'asc', 'key'),
32571
32727
  user: new UserSearchField(this.injector),
32572
32728
  changeDate: new DateRangeSearchField('changeDate', this.injector, 'desc'),
32729
+ availableServices: new AvailableServicesField(this.injector),
32573
32730
  };
32574
32731
  }
32575
32732
  getAvailableValues(fieldName) {
@@ -35060,6 +35217,9 @@ const loadFullMetadata = createAction('[Metadata view] Load full metadata', prop
35060
35217
  const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
35061
35218
  const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
35062
35219
  const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
35220
+ const loadFeatureCatalog = createAction("[Metadata view] Load metadata's feature catalog", props());
35221
+ const loadFeatureCatalogSuccess = createAction('[Metadata view] Load metadata feature catalog success', props());
35222
+ const loadFeatureCatalogFailure = createAction('[Metadata view] Load metadata feature catalog failure', props());
35063
35223
  const closeMetadata = createAction('[Metadata view] close');
35064
35224
  /*
35065
35225
  Related actions
@@ -35085,6 +35245,9 @@ var mdview_actions = /*#__PURE__*/Object.freeze({
35085
35245
  addUserFeedbackFailure: addUserFeedbackFailure,
35086
35246
  addUserFeedbackSuccess: addUserFeedbackSuccess,
35087
35247
  closeMetadata: closeMetadata,
35248
+ loadFeatureCatalog: loadFeatureCatalog,
35249
+ loadFeatureCatalogFailure: loadFeatureCatalogFailure,
35250
+ loadFeatureCatalogSuccess: loadFeatureCatalogSuccess,
35088
35251
  loadFullMetadata: loadFullMetadata,
35089
35252
  loadFullMetadataFailure: loadFullMetadataFailure,
35090
35253
  loadFullMetadataSuccess: loadFullMetadataSuccess,
@@ -35102,6 +35265,8 @@ const initialMetadataViewState = {
35102
35265
  loadingFull: false,
35103
35266
  allUserFeedbacksLoading: false,
35104
35267
  addUserFeedbackLoading: false,
35268
+ featureCatalogLoading: false,
35269
+ featureCatalogError: null,
35105
35270
  };
35106
35271
  const metadataViewReducer = createReducer(initialMetadataViewState,
35107
35272
  /*
@@ -35161,6 +35326,22 @@ on(loadUserFeedbacks, (state) => ({
35161
35326
  error: { otherError, notFound },
35162
35327
  addUserFeedbackLoading: false,
35163
35328
  allUserFeedbacksLoading: false,
35329
+ })),
35330
+ /**
35331
+ * FeatureCatalog reducers
35332
+ */
35333
+ on(loadFeatureCatalog, (state) => ({
35334
+ ...state,
35335
+ featureCatalogError: null,
35336
+ featureCatalogLoading: true,
35337
+ })), on(loadFeatureCatalogSuccess, (state, { datasetCatalog }) => ({
35338
+ ...state,
35339
+ featureCatalog: datasetCatalog,
35340
+ featureCatalogLoading: false,
35341
+ })), on(loadFeatureCatalogFailure, (state, { error }) => ({
35342
+ ...state,
35343
+ featureCatalogError: error,
35344
+ featureCatalogLoading: false,
35164
35345
  })));
35165
35346
  function reducer$1(metadataViewState, action) {
35166
35347
  return metadataViewReducer(metadataViewState, action);
@@ -35189,6 +35370,11 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
35189
35370
  const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
35190
35371
  const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
35191
35372
  const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
35373
+ /*
35374
+ Feature Catalog Selectors
35375
+ */
35376
+ const getFeatureCatalog = createSelector(getMdViewState, (state) => state.featureCatalog);
35377
+ const getFeatureCatalogIsLoading = createSelector(getMdViewState, (state) => state.featureCatalogLoading);
35192
35378
 
35193
35379
  class FetchError {
35194
35380
  constructor(type, info, httpStatus = 0) {
@@ -35304,8 +35490,8 @@ function fetchHeaders(url) {
35304
35490
  return parseHeaders(response.headers);
35305
35491
  });
35306
35492
  }
35307
- function fetchDataAsText(url) {
35308
- return useCache(() => sharedFetch(url)
35493
+ function fetchDataAsText(url, cacheActive) {
35494
+ const fetchFactory = () => sharedFetch(url)
35309
35495
  .catch((error) => {
35310
35496
  throw FetchError.corsOrNetwork(error.message);
35311
35497
  })
@@ -35314,10 +35500,11 @@ function fetchDataAsText(url) {
35314
35500
  throw FetchError.http(response.status, await response.text());
35315
35501
  }
35316
35502
  return response.text();
35317
- }), url, 'asText');
35503
+ });
35504
+ return cacheActive ? useCache(fetchFactory, url, 'asText') : fetchFactory();
35318
35505
  }
35319
- function fetchDataAsArrayBuffer(url) {
35320
- return useCache(() => sharedFetch(url)
35506
+ function fetchDataAsArrayBuffer(url, cacheActive) {
35507
+ const fetchFactory = () => sharedFetch(url)
35321
35508
  .catch((error) => {
35322
35509
  throw FetchError.corsOrNetwork(error.message);
35323
35510
  })
@@ -35327,7 +35514,8 @@ function fetchDataAsArrayBuffer(url) {
35327
35514
  }
35328
35515
  // convert to a numeric array so that we can store the response in cache
35329
35516
  return Array.from(new Uint8Array(await response.arrayBuffer()));
35330
- }), url, 'asArrayBuffer').then((array) => {
35517
+ });
35518
+ return (cacheActive ? useCache(fetchFactory, url, 'asArrayBuffer') : fetchFactory()).then((array) => {
35331
35519
  return new Uint8Array(array).buffer;
35332
35520
  });
35333
35521
  }
@@ -35473,68 +35661,6 @@ function getJsonDataItemsProxy(items) {
35473
35661
  });
35474
35662
  }
35475
35663
 
35476
- class BaseReader {
35477
- constructor(url) {
35478
- this.url = url;
35479
- this.selected = null;
35480
- this.groupedBy = null;
35481
- this.aggregations = null;
35482
- this.filter = null;
35483
- this.sort = null;
35484
- this.startIndex = null;
35485
- this.count = null;
35486
- }
35487
- load() {
35488
- throw new Error('not implemented');
35489
- }
35490
- get properties() {
35491
- throw new Error('not implemented');
35492
- }
35493
- get info() {
35494
- throw new Error('not implemented');
35495
- }
35496
- read() {
35497
- throw new Error('not implemented');
35498
- }
35499
- selectAll() {
35500
- this.groupedBy = null;
35501
- this.aggregations = null;
35502
- this.selected = null;
35503
- this.filter = null;
35504
- this.startIndex = null;
35505
- this.count = null;
35506
- return this;
35507
- }
35508
- select(...selectedFields) {
35509
- this.selected = selectedFields;
35510
- this.aggregations = null; // clear aggregations & groups when selecting fields
35511
- this.groupedBy = null;
35512
- return this;
35513
- }
35514
- groupBy(...groupBy) {
35515
- this.groupedBy = groupBy;
35516
- this.selected = null; // clear normal field selection when aggregating
35517
- return this;
35518
- }
35519
- aggregate(...aggregations) {
35520
- this.aggregations = aggregations;
35521
- return this;
35522
- }
35523
- where(filter) {
35524
- this.filter = filter;
35525
- return this;
35526
- }
35527
- orderBy(...fieldSorts) {
35528
- this.sort = fieldSorts;
35529
- return this;
35530
- }
35531
- limit(startIndex, count) {
35532
- this.startIndex = startIndex;
35533
- this.count = count;
35534
- return this;
35535
- }
35536
- }
35537
-
35538
35664
  function filterToSql(filter) {
35539
35665
  const operator = filter[0];
35540
35666
  const args = filter.slice(1);
@@ -35628,7 +35754,80 @@ function generateSqlQuery(selected = null, filter = null, sort = null, startInde
35628
35754
  return sqlSelect + sqlFrom + sqlGroupBy + sqlOrderBy + sqlWhere + sqlLimit;
35629
35755
  }
35630
35756
 
35631
- class BaseFileReader extends BaseReader {
35757
+ class BaseReader {
35758
+ constructor(url) {
35759
+ this.url = url;
35760
+ this.selected = null;
35761
+ this.groupedBy = null;
35762
+ this.aggregations = null;
35763
+ this.filter = null;
35764
+ this.sort = null;
35765
+ this.startIndex = null;
35766
+ this.count = null;
35767
+ }
35768
+ load() {
35769
+ throw new Error('not implemented');
35770
+ }
35771
+ get properties() {
35772
+ throw new Error('not implemented');
35773
+ }
35774
+ get info() {
35775
+ throw new Error('not implemented');
35776
+ }
35777
+ read() {
35778
+ throw new Error('not implemented');
35779
+ }
35780
+ selectAll() {
35781
+ this.groupedBy = null;
35782
+ this.aggregations = null;
35783
+ this.selected = null;
35784
+ this.filter = null;
35785
+ this.startIndex = null;
35786
+ this.count = null;
35787
+ return this;
35788
+ }
35789
+ select(...selectedFields) {
35790
+ this.selected = selectedFields;
35791
+ this.aggregations = null; // clear aggregations & groups when selecting fields
35792
+ this.groupedBy = null;
35793
+ return this;
35794
+ }
35795
+ groupBy(...groupBy) {
35796
+ this.groupedBy = groupBy;
35797
+ this.selected = null; // clear normal field selection when aggregating
35798
+ return this;
35799
+ }
35800
+ aggregate(...aggregations) {
35801
+ this.aggregations = aggregations;
35802
+ return this;
35803
+ }
35804
+ where(filter) {
35805
+ this.filter = filter;
35806
+ return this;
35807
+ }
35808
+ orderBy(...fieldSorts) {
35809
+ this.sort = fieldSorts;
35810
+ return this;
35811
+ }
35812
+ limit(startIndex, count) {
35813
+ this.startIndex = startIndex;
35814
+ this.count = count;
35815
+ return this;
35816
+ }
35817
+ }
35818
+
35819
+ class BaseCacheReader extends BaseReader {
35820
+ constructor(url, cacheActive = true) {
35821
+ super(url);
35822
+ this.url = url;
35823
+ this.cacheActive = cacheActive;
35824
+ }
35825
+ setCacheActive(value) {
35826
+ this.cacheActive = value;
35827
+ }
35828
+ }
35829
+
35830
+ class BaseFileReader extends BaseCacheReader {
35632
35831
  getData() {
35633
35832
  throw new Error('not implemented');
35634
35833
  }
@@ -35692,7 +35891,7 @@ function parseCsv(text) {
35692
35891
  }
35693
35892
  class CsvReader extends BaseFileReader {
35694
35893
  getData() {
35695
- return fetchDataAsText(this.url).then(parseCsv);
35894
+ return fetchDataAsText(this.url, this.cacheActive).then(parseCsv);
35696
35895
  }
35697
35896
  }
35698
35897
 
@@ -35709,7 +35908,7 @@ function parseJson(text) {
35709
35908
  }
35710
35909
  class JsonReader extends BaseFileReader {
35711
35910
  getData() {
35712
- return fetchDataAsText(this.url).then(parseJson);
35911
+ return fetchDataAsText(this.url, this.cacheActive).then(parseJson);
35713
35912
  }
35714
35913
  }
35715
35914
 
@@ -35728,7 +35927,7 @@ function parseGeojson(text) {
35728
35927
  }
35729
35928
  class GeojsonReader extends BaseFileReader {
35730
35929
  getData() {
35731
- return fetchDataAsText(this.url).then(parseGeojson);
35930
+ return fetchDataAsText(this.url, this.cacheActive).then(parseGeojson);
35732
35931
  }
35733
35932
  }
35734
35933
 
@@ -35750,7 +35949,7 @@ function parseExcel(buffer) {
35750
35949
  }
35751
35950
  class ExcelReader extends BaseFileReader {
35752
35951
  getData() {
35753
- return fetchDataAsArrayBuffer(this.url).then(parseExcel);
35952
+ return fetchDataAsArrayBuffer(this.url, this.cacheActive).then(parseExcel);
35754
35953
  }
35755
35954
  }
35756
35955
 
@@ -35777,19 +35976,21 @@ function parseGml(text, namespace, version) {
35777
35976
  throw Error("Couldn't retrieve namespace url");
35778
35977
  }
35779
35978
  class GmlReader extends BaseFileReader {
35780
- constructor(url, namespace, version) {
35979
+ constructor(url, namespace, version, cacheActive = true) {
35781
35980
  super(url);
35981
+ this.url = url;
35782
35982
  this.namespace = namespace;
35783
35983
  this.version = version;
35984
+ this.cacheActive = cacheActive;
35784
35985
  }
35785
35986
  getData() {
35786
- return fetchDataAsText(this.url).then((text) => parseGml(text, this.namespace, this.version));
35987
+ return fetchDataAsText(this.url, this.cacheActive).then((text) => parseGml(text, this.namespace, this.version));
35787
35988
  }
35788
35989
  }
35789
35990
 
35790
- class WfsReader extends BaseReader {
35791
- constructor(url, wfsEndpoint, featureTypeName) {
35792
- super(url);
35991
+ class WfsReader extends BaseCacheReader {
35992
+ constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
35993
+ super(url, cacheActive);
35793
35994
  this.endpoint = wfsEndpoint;
35794
35995
  this.featureTypeName = featureTypeName;
35795
35996
  this.version = this.endpoint.getVersion();
@@ -35866,7 +36067,7 @@ class WfsReader extends BaseReader {
35866
36067
  // Direct update on string url to prevent encoding of +A and +D
35867
36068
  url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`;
35868
36069
  }
35869
- return fetchDataAsText(url).then((text) => asJson
36070
+ return fetchDataAsText(url, this.cacheActive).then((text) => asJson
35870
36071
  ? parseGeojson(text)
35871
36072
  : parseGml(text, this.featureTypeName, this.version));
35872
36073
  }
@@ -35878,7 +36079,7 @@ class WfsReader extends BaseReader {
35878
36079
  }
35879
36080
  }
35880
36081
 
35881
- async function openDataset(url, typeHint, options) {
36082
+ async function openDataset(url, typeHint, options, cacheActive) {
35882
36083
  const fileType = await inferDatasetType(url, typeHint);
35883
36084
  let reader;
35884
36085
  try {
@@ -35902,6 +36103,7 @@ async function openDataset(url, typeHint, options) {
35902
36103
  reader = await WfsReader.createReader(url, options.wfsFeatureType);
35903
36104
  break;
35904
36105
  }
36106
+ reader.setCacheActive(cacheActive);
35905
36107
  reader.load();
35906
36108
  return reader;
35907
36109
  }
@@ -35918,8 +36120,8 @@ async function openDataset(url, typeHint, options) {
35918
36120
  * 2. otherwise, look for a Content-Type header in the response with a supported mime type
35919
36121
  * 3. if no valid mime type was found, look for an explicit file extension in the url (.csv, .geojson etc.)
35920
36122
  */
35921
- async function readDataset(url, typeHint, options) {
35922
- const reader = await openDataset(url, typeHint, options);
36123
+ async function readDataset(url, typeHint, options, cacheActive = true) {
36124
+ const reader = await openDataset(url, typeHint, options, cacheActive);
35923
36125
  try {
35924
36126
  return await reader.read();
35925
36127
  }
@@ -36023,18 +36225,28 @@ class DataService {
36023
36225
  }
36024
36226
  getDownloadLinksFromWfs(wfsLink) {
36025
36227
  // Pour DL toutes les données
36026
- return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => urls.all), map$1((urls) => Object.keys(urls).map((format) => ({
36027
- ...wfsLink,
36028
- type: 'download',
36029
- url: new URL(urls[format]),
36030
- mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
36031
- }))));
36228
+ return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => {
36229
+ if (urls.geojson) {
36230
+ urls.all['application/json'] = urls.geojson;
36231
+ }
36232
+ return urls;
36233
+ }), map$1((urls) => {
36234
+ const resources = Object.keys(urls.all).map((format) => ({
36235
+ ...wfsLink,
36236
+ name: wfsLink.name,
36237
+ type: 'download',
36238
+ url: new URL(urls.all[format]),
36239
+ mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
36240
+ }));
36241
+ return resources;
36242
+ }));
36032
36243
  }
36033
36244
  async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
36034
36245
  const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
36035
36246
  return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
36036
36247
  return {
36037
36248
  ...ogcApiLink,
36249
+ name: collectionInfo.id,
36038
36250
  type: 'download',
36039
36251
  url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
36040
36252
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
@@ -36070,18 +36282,18 @@ class DataService {
36070
36282
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
36071
36283
  }));
36072
36284
  }
36073
- readAsGeoJson(link) {
36074
- return this.getDataset(link).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
36285
+ readAsGeoJson(link, cacheActive) {
36286
+ return this.getDataset(link, cacheActive).pipe(switchMap$1((dataset) => dataset.selectAll().read()), map$1((features) => ({
36075
36287
  type: 'FeatureCollection',
36076
36288
  features,
36077
36289
  })));
36078
36290
  }
36079
- getDataset(link) {
36291
+ getDataset(link, cacheActive) {
36080
36292
  if (link.type === 'service' && link.accessServiceProtocol === 'wfs') {
36081
36293
  const wfsUrlEndpoint = this.proxy.getProxiedUrl(link.url.toString());
36082
36294
  return from(openDataset(wfsUrlEndpoint, 'wfs', {
36083
36295
  wfsFeatureType: link.name,
36084
- }));
36296
+ }, cacheActive));
36085
36297
  }
36086
36298
  else if (link.type === 'download') {
36087
36299
  const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString());
@@ -36089,18 +36301,18 @@ class DataService {
36089
36301
  const supportedType = SupportedTypes.indexOf(format) > -1
36090
36302
  ? format
36091
36303
  : undefined;
36092
- return from(openDataset(linkProxifiedUrl, supportedType)).pipe();
36304
+ return from(openDataset(linkProxifiedUrl, supportedType, undefined, cacheActive)).pipe();
36093
36305
  }
36094
36306
  else if (link.type === 'service' &&
36095
36307
  link.accessServiceProtocol === 'esriRest') {
36096
36308
  const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
36097
- return from(openDataset(url, 'geojson')).pipe();
36309
+ return from(openDataset(url, 'geojson', undefined, cacheActive)).pipe();
36098
36310
  }
36099
36311
  else if (link.type === 'service' &&
36100
36312
  link.accessServiceProtocol === 'ogcFeatures') {
36101
36313
  return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
36102
36314
  const geojsonUrl = collectionInfo.jsonDownloadLink;
36103
- return openDataset(geojsonUrl, 'geojson');
36315
+ return openDataset(geojsonUrl, 'geojson', undefined, cacheActive);
36104
36316
  }), tap$1((url) => {
36105
36317
  if (url === null) {
36106
36318
  throw new Error('wfs.geojsongml.notsupported');
@@ -36665,6 +36877,7 @@ class ChartViewComponent {
36665
36877
  this.dataService = dataService;
36666
36878
  this.changeDetector = changeDetector;
36667
36879
  this.translateService = translateService;
36880
+ this.cacheActive = true;
36668
36881
  this.currentLink$ = new BehaviorSubject(null);
36669
36882
  this.aggregation$ = new BehaviorSubject('sum');
36670
36883
  this.xProperty$ = new BehaviorSubject(undefined);
@@ -36694,7 +36907,7 @@ class ChartViewComponent {
36694
36907
  this.dataset$ = this.currentLink$.pipe(filter((link) => !!link), switchMap$1((link) => {
36695
36908
  this.error = null;
36696
36909
  this.loading = true;
36697
- return this.dataService.getDataset(link).pipe(catchError((error) => {
36910
+ return this.dataService.getDataset(link, this.cacheActive).pipe(catchError((error) => {
36698
36911
  this.handleError(error);
36699
36912
  return EMPTY;
36700
36913
  }));
@@ -36763,7 +36976,7 @@ class ChartViewComponent {
36763
36976
  this.changeDetector.detectChanges();
36764
36977
  }
36765
36978
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36766
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36979
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { cacheActive: "cacheActive", link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36767
36980
  }
36768
36981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
36769
36982
  type: Component,
@@ -36775,7 +36988,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36775
36988
  LoadingMaskComponent,
36776
36989
  PopupAlertComponent,
36777
36990
  ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
36778
- }], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { link: [{
36991
+ }], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
36992
+ type: Input
36993
+ }], link: [{
36779
36994
  type: Input
36780
36995
  }], aggregation: [{
36781
36996
  type: Input
@@ -36948,6 +37163,7 @@ class TableViewComponent {
36948
37163
  constructor(dataService, translateService) {
36949
37164
  this.dataService = dataService;
36950
37165
  this.translateService = translateService;
37166
+ this.cacheActive = true;
36951
37167
  this.currentLink$ = new BehaviorSubject(null);
36952
37168
  this.loading = false;
36953
37169
  this.error = null;
@@ -36965,7 +37181,7 @@ class TableViewComponent {
36965
37181
  }), startWith(undefined), shareReplay(1));
36966
37182
  }
36967
37183
  getDatasetReader(link) {
36968
- return this.dataService.getDataset(link);
37184
+ return this.dataService.getDataset(link, this.cacheActive);
36969
37185
  }
36970
37186
  onTableSelect(event) {
36971
37187
  console.log(event);
@@ -36988,7 +37204,7 @@ class TableViewComponent {
36988
37204
  this.loading = false;
36989
37205
  }
36990
37206
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
36991
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36992
37208
  }
36993
37209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
36994
37210
  type: Component,
@@ -36999,7 +37215,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36999
37215
  PopupAlertComponent,
37000
37216
  TranslateModule,
37001
37217
  ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
37002
- }], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { link: [{
37218
+ }], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
37219
+ type: Input
37220
+ }], link: [{
37003
37221
  type: Input
37004
37222
  }] } });
37005
37223
 
@@ -37018,7 +37236,15 @@ class MdViewFacade {
37018
37236
  this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
37019
37237
  this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
37020
37238
  this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
37239
+ this.featureCatalog$ = this.store.pipe(select(getFeatureCatalog));
37021
37240
  this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
37241
+ this.isHighUpdateFrequency$ = this.metadata$.pipe(map$1((record) => {
37242
+ if (record.updateFrequency instanceof Object) {
37243
+ return (record.updateFrequency.per === 'day' &&
37244
+ record.updateFrequency.updatedTimes > 1);
37245
+ }
37246
+ return record.updateFrequency === 'continual';
37247
+ }));
37022
37248
  this.error$ = this.store.pipe(select(getMetadataError));
37023
37249
  this.related$ = this.store.pipe(select(getRelated));
37024
37250
  this.chartConfig$ = this.store.pipe(select(getChartConfig));
@@ -37114,6 +37340,11 @@ class MdViewEffects {
37114
37340
  }
37115
37341
  return loadFullMetadataSuccess({ full: record });
37116
37342
  }), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
37343
+ this.loadFeatureCatalog$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), filter(({ full }) => full !== undefined), switchMap$1(({ full }) => this.recordsRepository.getFeatureCatalog(full)), map$1((featureCatalog) => loadFeatureCatalogSuccess({
37344
+ datasetCatalog: featureCatalog,
37345
+ })), catchError((error) => of(loadFeatureCatalogFailure({
37346
+ error: error.message,
37347
+ })))));
37117
37348
  /*
37118
37349
  Related effects
37119
37350
  */
@@ -37703,6 +37934,7 @@ class DataViewComponent {
37703
37934
  this.mdViewFacade = mdViewFacade;
37704
37935
  this.displaySource = true;
37705
37936
  this.chartConfig$ = new BehaviorSubject(null);
37937
+ this.cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(map$1((highF) => !highF));
37706
37938
  this.compatibleDataLinks$ = combineLatest([
37707
37939
  this.mdViewFacade.dataLinks$,
37708
37940
  this.mdViewFacade.geoDataLinks$,
@@ -37730,7 +37962,7 @@ class DataViewComponent {
37730
37962
  this.selectedLink$.next(link);
37731
37963
  }
37732
37964
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
37733
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37965
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["cacheActive", "link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37734
37966
  }
37735
37967
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
37736
37968
  type: Component,
@@ -37740,7 +37972,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37740
37972
  TableViewComponent,
37741
37973
  TranslateModule,
37742
37974
  ChartViewComponent,
37743
- ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37975
+ ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
37744
37976
  }], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
37745
37977
  type: Input
37746
37978
  }], displaySource: [{
@@ -38033,7 +38265,8 @@ class MapViewComponent {
38033
38265
  link.accessServiceProtocol === 'esriRest' ||
38034
38266
  link.accessServiceProtocol === 'ogcFeatures')) ||
38035
38267
  link.type === 'download') {
38036
- return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
38268
+ const cacheActive = true; // TODO implement whether should be true or false
38269
+ return this.dataService.readAsGeoJson(link, cacheActive).pipe(map$1((data) => ({
38037
38270
  type: 'geojson',
38038
38271
  data,
38039
38272
  })));
@@ -38548,8 +38781,8 @@ const DEFAULT_CONFIGURATION = {
38548
38781
  labelKey: marker('editor.record.form.page.description'),
38549
38782
  sections: [
38550
38783
  TITLE_SECTION,
38551
- ABOUT_SECTION,
38552
38784
  CLASSIFICATION_SECTION,
38785
+ ABOUT_SECTION,
38553
38786
  GEOGRAPHICAL_COVERAGE_SECTION,
38554
38787
  ],
38555
38788
  },
@@ -39708,7 +39941,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39708
39941
 
39709
39942
  class FormFieldRichComponent {
39710
39943
  constructor() {
39711
- this.placeholder = 'Votre texte ici'; //TODO: translate
39944
+ this.placeholder = '';
39712
39945
  this.valueChange = new EventEmitter();
39713
39946
  this.preview = false;
39714
39947
  }
@@ -39957,6 +40190,7 @@ class FormFieldContactsForResourceComponent {
39957
40190
  'owner',
39958
40191
  'point_of_contact',
39959
40192
  'author',
40193
+ 'publisher',
39960
40194
  ];
39961
40195
  this.roleSectionsToDisplay = [];
39962
40196
  this.allOrganizations = new Map();
@@ -41097,7 +41331,7 @@ class ConstraintCardComponent {
41097
41331
  provideNgIconsConfig({
41098
41332
  size: '1.5rem',
41099
41333
  }),
41100
- ], ngImport: i0, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [hint]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>&nbsp;\n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41334
+ ], ngImport: i0, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [placeholder]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>&nbsp;\n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41101
41335
  }
41102
41336
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConstraintCardComponent, decorators: [{
41103
41337
  type: Component,
@@ -41115,7 +41349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41115
41349
  provideNgIconsConfig({
41116
41350
  size: '1.5rem',
41117
41351
  }),
41118
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [hint]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>&nbsp;\n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
41352
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-1 border rounded-lg p-4\">\n <gn-ui-form-field-rich\n class=\"mt-[-8px]\"\n [label]=\"label\"\n [placeholder]=\"hint | translate\"\n [value]=\"constraint_.text ?? ''\"\n (valueChange)=\"handleConstraintTextChange($event)\"\n ></gn-ui-form-field-rich>\n\n <div *ngIf=\"!showUrl\" class=\"flex-none mt-1\">\n <gn-ui-button\n (buttonClick)=\"showUrl = true\"\n type=\"gray\"\n data-cy=\"add-url-btn\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>&nbsp;\n <span translate>input.image.displayUrlInput</span>\n </gn-ui-button>\n </div>\n <gn-ui-url-input\n *ngIf=\"showUrl\"\n class=\"mt-3.5\"\n [value]=\"constraint_.url?.toString()\"\n (valueChange)=\"handleURLChange($event)\"\n [showValidateButton]=\"false\"\n >\n </gn-ui-url-input>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
41119
41353
  }], propDecorators: { label: [{
41120
41354
  type: Input
41121
41355
  }], constraint: [{
@@ -41774,5 +42008,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41774
42008
  * Generated bundle index. Do not edit.
41775
42009
  */
41776
42010
 
41777
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
42011
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
41778
42012
  //# sourceMappingURL=geonetwork-ui.mjs.map