geonetwork-ui 2.6.0-dev.857b51517 → 2.6.0-dev.87d6e6c1b

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 (652) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +52 -13
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +6 -6
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +5 -5
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  11. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  12. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +5 -2
  13. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -18
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +79 -16
  15. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  16. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  17. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +23 -13
  18. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  19. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  20. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  21. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  22. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  23. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +47 -11
  24. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  25. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  26. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -3
  27. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +27 -8
  28. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  29. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  30. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  31. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  32. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +267 -11
  33. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  34. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +8 -14
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +4 -4
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  48. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  49. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  50. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  51. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  52. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  53. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  54. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  55. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  56. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  57. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  58. package/esm2022/libs/feature/record/src/index.mjs +2 -3
  59. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +20 -19
  60. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  61. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  62. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  63. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  64. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  65. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  66. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  67. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +96 -21
  68. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  69. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
  70. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -13
  71. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  72. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  73. package/esm2022/libs/feature/search/src/lib/constants.mjs +4 -2
  74. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  75. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  76. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  77. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  78. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +12 -8
  79. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  80. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  81. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  82. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  83. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  84. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  85. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  86. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  87. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  88. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +13 -8
  89. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  90. package/esm2022/libs/ui/elements/src/index.mjs +3 -3
  91. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  92. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  93. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  94. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  95. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  96. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  97. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +54 -0
  98. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  99. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +42 -85
  100. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +58 -0
  101. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +26 -12
  102. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +4 -5
  103. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  104. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  105. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +5 -6
  106. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +7 -8
  107. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +40 -17
  108. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  109. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  110. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +71 -0
  111. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +15 -6
  112. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  113. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  114. package/esm2022/libs/ui/inputs/src/index.mjs +2 -2
  115. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +6 -7
  116. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  117. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  118. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  119. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  120. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  121. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  122. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +73 -0
  123. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  124. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  125. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  126. package/esm2022/libs/ui/layout/src/index.mjs +2 -2
  127. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  128. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  129. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  130. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  131. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +21 -12
  132. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  133. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  134. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  135. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +38 -23
  136. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  137. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  138. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +2 -1
  139. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  140. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  141. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  142. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +5 -5
  143. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  144. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  145. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +24 -17
  146. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +41 -21
  147. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +32 -27
  148. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  149. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  150. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  151. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  152. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  153. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -28
  154. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  155. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  156. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +63 -3
  157. package/esm2022/libs/util/shared/src/index.mjs +1 -2
  158. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  159. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
  160. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
  161. package/esm2022/translations/de.json +47 -23
  162. package/esm2022/translations/en.json +47 -25
  163. package/esm2022/translations/es.json +46 -22
  164. package/esm2022/translations/fr.json +47 -25
  165. package/esm2022/translations/it.json +76 -52
  166. package/esm2022/translations/nl.json +46 -22
  167. package/esm2022/translations/pt.json +46 -22
  168. package/esm2022/translations/sk.json +602 -0
  169. package/fesm2022/geonetwork-ui.mjs +11031 -10019
  170. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  171. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  172. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  173. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  174. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  175. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  176. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  177. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  178. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  179. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  180. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  181. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +9 -7
  182. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  183. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
  184. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  185. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  186. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  187. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  188. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  189. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +6 -3
  190. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  191. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  192. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  193. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -15
  194. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  195. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
  196. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  197. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  198. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  199. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  200. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  201. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  202. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  203. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  204. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  205. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  206. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  207. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  208. package/libs/feature/editor/src/index.d.ts +0 -3
  209. package/libs/feature/editor/src/index.d.ts.map +1 -1
  210. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  211. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  212. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  213. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  214. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  215. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
  216. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  217. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  218. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  219. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  220. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  221. 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
  222. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  223. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  224. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  225. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  226. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  227. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  228. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  229. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  230. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  231. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  232. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  233. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  234. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  235. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  236. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  237. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  238. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  239. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  240. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  241. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  242. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  243. package/libs/feature/record/src/index.d.ts +1 -2
  244. package/libs/feature/record/src/index.d.ts.map +1 -1
  245. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +7 -4
  246. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  247. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  248. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  249. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  250. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  251. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  252. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  253. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  254. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  255. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  256. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
  257. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  258. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  259. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  260. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  261. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  262. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  263. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  264. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  265. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  266. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  267. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  268. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  269. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  270. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  271. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  272. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  273. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  274. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  275. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  276. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  277. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  278. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  279. package/libs/ui/dataviz/src/index.d.ts +0 -1
  280. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  281. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  282. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  283. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  284. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  285. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  286. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  287. package/libs/ui/elements/src/index.d.ts +2 -2
  288. package/libs/ui/elements/src/index.d.ts.map +1 -1
  289. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  290. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  291. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  292. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  293. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  294. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  295. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +7 -14
  296. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  297. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  298. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  299. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +3 -1
  300. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  301. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  302. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  303. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  304. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  305. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  306. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  307. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +27 -0
  308. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  309. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
  310. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  311. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  312. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  313. package/libs/ui/inputs/src/index.d.ts +1 -1
  314. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  315. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  316. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  317. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  318. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  319. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  320. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  321. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  322. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  323. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  324. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  325. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  326. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  327. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  328. package/libs/ui/layout/src/index.d.ts +1 -1
  329. package/libs/ui/layout/src/index.d.ts.map +1 -1
  330. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  331. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  332. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  333. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  334. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  335. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  336. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  337. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  338. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  339. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  340. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +13 -9
  341. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  342. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  343. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  344. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -1
  345. package/libs/ui/search/src/index.d.ts +1 -0
  346. package/libs/ui/search/src/index.d.ts.map +1 -1
  347. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  348. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  349. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  350. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  351. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  352. package/libs/ui/search/src/lib/ui-search.module.d.ts +12 -11
  353. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  354. package/libs/ui/widgets/src/index.d.ts +0 -1
  355. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  356. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  357. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  358. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  359. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  360. package/libs/util/i18n/src/index.d.ts +1 -2
  361. package/libs/util/i18n/src/index.d.ts.map +1 -1
  362. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  363. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  364. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -15
  365. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  366. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  367. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  368. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  369. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  370. package/libs/util/i18n/src/lib/language-codes.d.ts +15 -19
  371. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  372. package/libs/util/shared/src/index.d.ts +0 -1
  373. package/libs/util/shared/src/index.d.ts.map +1 -1
  374. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  375. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  376. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  377. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  378. package/package.json +4 -4
  379. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  380. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  381. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  382. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +73 -9
  383. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  384. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  385. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +11 -5
  386. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  387. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +10 -6
  388. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  389. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  390. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +4 -1
  391. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +16 -8
  392. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +118 -16
  393. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  394. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  395. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -20
  396. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  397. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +22 -9
  398. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
  399. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
  400. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
  401. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +62 -1
  402. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  403. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  404. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  405. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +56 -12
  406. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  407. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +40 -1
  408. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  409. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +29 -3
  410. package/src/libs/feature/editor/src/index.ts +0 -3
  411. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  412. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  413. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  414. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
  415. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +321 -6
  416. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  417. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  418. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  419. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  420. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  421. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +5 -9
  422. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  423. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +2 -2
  424. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  425. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  426. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  427. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  428. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  429. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  430. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  431. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  432. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  433. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  434. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  435. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  436. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  437. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  438. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  439. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  440. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  441. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  442. package/src/libs/feature/record/src/index.ts +1 -2
  443. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +3 -1
  444. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +22 -19
  445. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  446. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  447. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  448. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  449. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  450. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  451. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  452. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +31 -10
  453. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +135 -21
  454. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  455. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
  456. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +22 -15
  457. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  458. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  459. package/src/libs/feature/search/src/lib/constants.ts +3 -1
  460. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  461. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  462. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  463. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  464. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
  465. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  466. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  467. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  468. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  469. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  470. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  471. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  472. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  473. package/src/libs/ui/dataviz/src/index.ts +0 -1
  474. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  475. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  476. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +7 -6
  477. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  478. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  479. package/src/libs/ui/elements/src/index.ts +2 -2
  480. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  481. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  482. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  483. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  484. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  485. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  486. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  487. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  488. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  489. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  490. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  491. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +68 -141
  492. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +40 -101
  493. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  494. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  495. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +7 -5
  496. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +24 -6
  497. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +2 -2
  498. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  499. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  500. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +6 -3
  501. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  502. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +4 -0
  503. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  504. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -1
  505. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +51 -13
  506. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  507. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  508. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +107 -0
  509. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +83 -0
  510. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +15 -1
  511. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +16 -3
  512. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  513. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  514. package/src/libs/ui/inputs/src/index.ts +1 -1
  515. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  516. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  517. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  518. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  519. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  520. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  521. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  522. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  523. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  524. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  525. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +83 -0
  526. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +1 -2
  527. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  528. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  529. package/src/libs/ui/layout/src/index.ts +1 -1
  530. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  531. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  532. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  533. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  534. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  535. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  536. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  537. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +15 -8
  538. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  539. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  540. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  541. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -44
  542. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +41 -19
  543. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  544. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  545. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  546. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +1 -0
  547. package/src/libs/ui/search/src/index.ts +1 -0
  548. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  549. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  550. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -0
  551. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  552. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  553. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  554. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  555. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +18 -15
  556. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  557. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
  558. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +46 -18
  559. package/src/libs/ui/search/src/lib/ui-search.module.ts +15 -11
  560. package/src/libs/ui/widgets/src/index.ts +0 -1
  561. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  562. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  563. package/src/libs/util/i18n/src/index.ts +1 -2
  564. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  565. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -29
  566. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  567. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  568. package/src/libs/util/i18n/src/lib/language-codes.ts +67 -2
  569. package/src/libs/util/shared/src/index.ts +0 -1
  570. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  571. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
  572. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
  573. package/tailwind.base.css +1 -1
  574. package/translations/de.json +47 -23
  575. package/translations/en.json +47 -25
  576. package/translations/es.json +46 -22
  577. package/translations/fr.json +47 -25
  578. package/translations/it.json +76 -52
  579. package/translations/nl.json +46 -22
  580. package/translations/pt.json +46 -22
  581. package/translations/sk.json +46 -22
  582. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  583. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  584. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  585. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  586. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  587. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  588. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  589. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  590. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -46
  591. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -124
  592. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  593. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  594. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  595. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  596. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  597. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  598. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  599. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +0 -1
  600. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  601. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  602. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  603. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  604. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  605. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  606. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  607. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  608. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  609. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  610. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  611. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  612. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  613. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  614. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -12
  615. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  616. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -30
  617. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  618. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  619. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  620. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  621. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  622. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  623. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  624. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  625. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  626. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  627. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  628. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  629. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  630. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  631. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  632. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  633. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  634. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  635. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  636. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  637. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  638. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  639. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  640. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  641. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  642. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  643. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -30
  644. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -48
  645. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -70
  646. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  647. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  648. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  649. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  650. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  651. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
  652. /package/src/libs/ui/{elements/src/lib/related-record-card/related-record-card.component.css → inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css} +0 -0
@@ -14,8 +14,8 @@ import {
14
14
  import { PublicationVersionError } from '../../../../../../libs/common/domain/src/lib/model/error'
15
15
  import {
16
16
  CatalogRecord,
17
- DatasetFeatureType,
18
17
  DatasetFeatureCatalog,
18
+ DatasetFeatureType,
19
19
  } from '../../../../../../libs/common/domain/src/lib/model/record'
20
20
  import {
21
21
  Aggregations,
@@ -29,9 +29,9 @@ import {
29
29
  import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
30
30
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
31
31
  import {
32
+ LanguagesApiService,
32
33
  RecordsApiService,
33
34
  SearchApiService,
34
- FeatureResponseApiModel,
35
35
  } from '../../../../../../libs/data-access/gn4/src'
36
36
  import {
37
37
  combineLatest,
@@ -47,6 +47,8 @@ import {
47
47
  import { catchError, map, tap } from 'rxjs/operators'
48
48
  import { lt } from 'semver'
49
49
  import { ElasticsearchService } from './elasticsearch'
50
+ import { getLang2FromLang3 } from '../../../../../../libs/util/i18n/src'
51
+ import { Gn4SettingsService } from './settings/gn4-settings.service'
50
52
 
51
53
  const minPublicationApiVersion = '4.2.5'
52
54
 
@@ -65,7 +67,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
65
67
  private gn4SearchHelper: ElasticsearchService,
66
68
  private gn4Mapper: Gn4Converter,
67
69
  private gn4RecordsApi: RecordsApiService,
68
- private platformService: PlatformServiceInterface
70
+ private platformService: PlatformServiceInterface,
71
+ private gn4LanguagesApi: LanguagesApiService,
72
+ private settingsService: Gn4SettingsService
69
73
  ) {}
70
74
 
71
75
  search({
@@ -129,9 +133,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
129
133
  return this.gn4SearchApi
130
134
  .search(
131
135
  'bucket',
132
- ['fcats'],
136
+ ['fcats', 'hassources'],
133
137
  JSON.stringify(
134
- this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)
138
+ this.gn4SearchHelper.getMetadataByIdsPayload([uniqueIdentifier])
135
139
  )
136
140
  )
137
141
  .pipe(
@@ -142,6 +146,27 @@ export class Gn4Repository implements RecordsRepositoryInterface {
142
146
  )
143
147
  }
144
148
 
149
+ getMultipleRecords(
150
+ uniqueIdentifiers: string[]
151
+ ): Observable<CatalogRecord[] | null> {
152
+ return this.gn4SearchApi
153
+ .search(
154
+ 'bucket',
155
+ undefined,
156
+ JSON.stringify(
157
+ this.gn4SearchHelper.getMetadataByIdsPayload(uniqueIdentifiers)
158
+ )
159
+ )
160
+ .pipe(
161
+ map((results: Gn4SearchResults) => results.hits.hits),
162
+ switchMap((records) =>
163
+ records && records.length > 0
164
+ ? this.gn4Mapper.readRecords(records)
165
+ : of(null)
166
+ )
167
+ )
168
+ }
169
+
145
170
  private mapEmbeddedFeatureCatalog(
146
171
  featureTypes: Array<DatasetFeatureType>
147
172
  ): DatasetFeatureCatalog {
@@ -150,10 +175,21 @@ export class Gn4Repository implements RecordsRepositoryInterface {
150
175
  name: featureType.typeName || '',
151
176
  definition: featureType.definition || '',
152
177
  attributes: Array.isArray(featureType.attributeTable)
153
- ? featureType.attributeTable.map((attr) => ({
154
- name: attr.name,
155
- title: attr.definition,
156
- }))
178
+ ? featureType.attributeTable.map((attr) => {
179
+ const values = attr.values
180
+ ?.filter((v) => v.code || v.label)
181
+ .map((v) => ({
182
+ code: v.code,
183
+ label: v.label,
184
+ }))
185
+ return {
186
+ name: attr.name,
187
+ code: attr.code,
188
+ definition: attr.definition,
189
+ type: attr.type,
190
+ ...(values?.length > 0 ? { values } : {}),
191
+ }
192
+ })
157
193
  : [],
158
194
  })),
159
195
  }
@@ -164,7 +200,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
164
200
  ): Observable<DatasetFeatureCatalog | null> {
165
201
  if (
166
202
  record.extras?.['featureTypes'] &&
167
- Array.isArray(record.extras['featureTypes'])
203
+ Array.isArray(record.extras['featureTypes']) &&
204
+ record.extras['featureTypes'].length > 0
168
205
  ) {
169
206
  return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']))
170
207
  }
@@ -200,6 +237,24 @@ export class Gn4Repository implements RecordsRepositoryInterface {
200
237
  )
201
238
  }
202
239
 
240
+ getSources(record: CatalogRecord): Observable<CatalogRecord[]> {
241
+ const sourcesIdentifiers = record.extras?.['sourcesIdentifiers'] as string[]
242
+ if (sourcesIdentifiers && sourcesIdentifiers.length > 0) {
243
+ return this.getMultipleRecords(sourcesIdentifiers)
244
+ }
245
+ return of(null)
246
+ }
247
+
248
+ getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]> {
249
+ const sourceOfIdentifiers = record.extras?.[
250
+ 'sourceOfIdentifiers'
251
+ ] as string[]
252
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
253
+ return this.getMultipleRecords(sourceOfIdentifiers)
254
+ }
255
+ return of(null)
256
+ }
257
+
203
258
  aggregate(params: AggregationsParams): Observable<Aggregations> {
204
259
  // if aggregations are empty, return an empty object right away
205
260
  if (Object.keys(params).length === 0) return of({})
@@ -252,14 +307,46 @@ export class Gn4Repository implements RecordsRepositoryInterface {
252
307
  : of(true)
253
308
  }
254
309
 
255
- canEditRecord(uniqueIdentifier: string): Observable<boolean> {
256
- return this.getRecord(uniqueIdentifier).pipe(
257
- map((record) => {
258
- return record.extras['edit'] as boolean
310
+ canDuplicate(record: CatalogRecord): boolean {
311
+ return record.kind === 'dataset'
312
+ }
313
+
314
+ canDelete(record: CatalogRecord): Observable<boolean> {
315
+ return this.settingsService.allowEditHarvested$.pipe(
316
+ map((allowEditHarvested) => {
317
+ return (
318
+ record.extras['edit'] &&
319
+ (!record.extras['isHarvested'] || allowEditHarvested)
320
+ )
259
321
  })
260
322
  )
261
323
  }
262
324
 
325
+ private canEdit(record: CatalogRecord, allowEditHarvested: boolean): boolean {
326
+ return (
327
+ record.kind === 'dataset' &&
328
+ record.extras['edit'] &&
329
+ (!record.extras['isHarvested'] || allowEditHarvested)
330
+ )
331
+ }
332
+
333
+ canEditRecord(uniqueIdentifier: string): Observable<boolean> {
334
+ return combineLatest([
335
+ this.getRecord(uniqueIdentifier),
336
+ this.settingsService.allowEditHarvested$,
337
+ ]).pipe(
338
+ map(([record, allowEditHarvested]) =>
339
+ record ? this.canEdit(record, allowEditHarvested) : false
340
+ )
341
+ )
342
+ }
343
+
344
+ canEditIndexedRecord(record: CatalogRecord): Observable<boolean> {
345
+ return this.settingsService.allowEditHarvested$.pipe(
346
+ map((allowEditHarvested) => this.canEdit(record, allowEditHarvested))
347
+ )
348
+ }
349
+
263
350
  openRecordForEdition(
264
351
  uniqueIdentifier: string
265
352
  ): Observable<[CatalogRecord, string, boolean] | null> {
@@ -362,9 +449,12 @@ export class Gn4Repository implements RecordsRepositoryInterface {
362
449
  const record = await converter.readRecord(fetchedRecordAsXml)
363
450
 
364
451
  record.title = `${record.title} (Copy)`
365
- await converter.writeRecord(record, fetchedRecordAsXml)
452
+ const recordAsXml = await converter.writeRecord(
453
+ record,
454
+ fetchedRecordAsXml
455
+ )
366
456
 
367
- return this.saveRecord(record, '', false)
457
+ return this.saveRecord(record, recordAsXml, false)
368
458
  }),
369
459
  exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
370
460
  catchError((error: HttpErrorResponse) => {
@@ -465,6 +555,18 @@ export class Gn4Repository implements RecordsRepositoryInterface {
465
555
  )
466
556
  }
467
557
 
558
+ getApplicationLanguages(): Observable<string[]> {
559
+ return this.gn4LanguagesApi
560
+ .getApplicationLanguages()
561
+ .pipe(
562
+ map((languages) =>
563
+ languages
564
+ .map((lang) => getLang2FromLang3(lang.id))
565
+ .filter((code): code is string => !!code)
566
+ )
567
+ )
568
+ }
569
+
468
570
  private getRecordAsXml(uniqueIdentifier: string): Observable<string | null> {
469
571
  return this.gn4RecordsApi
470
572
  .getRecordAs(
@@ -7,7 +7,7 @@ import {
7
7
  import { forkJoin, Observable, of } from 'rxjs'
8
8
  import { map, shareReplay } from 'rxjs/operators'
9
9
  import { TranslateService } from '@ngx-translate/core'
10
- import { LANG_2_TO_3_MAPPER } from '../../../../../../../libs/util/i18n/src'
10
+ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src'
11
11
  import { FieldFilters } from '../../../../../../../libs/common/domain/src/lib/model/search'
12
12
  import {
13
13
  CatalogRecord,
@@ -51,6 +51,10 @@ export class OrganizationsFromGroupsService
51
51
  )
52
52
  organisationsCount$ = this.organisations$.pipe(map((orgs) => orgs.length))
53
53
 
54
+ private get lang3() {
55
+ return getLang3FromLang2(this.translateService.currentLang)
56
+ }
57
+
54
58
  constructor(
55
59
  private esService: ElasticsearchService,
56
60
  private searchApiService: SearchApiService,
@@ -72,9 +76,8 @@ export class OrganizationsFromGroupsService
72
76
  }
73
77
 
74
78
  private mapOrgFromGroup(group: GroupApiModel) {
75
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang]
76
79
  return {
77
- name: group.label[lang3],
80
+ name: group.label[this.lang3],
78
81
  ...(group.description && { description: group.description }),
79
82
  ...(group.email && { email: group.email }),
80
83
  ...(group.logo && {
@@ -89,9 +92,8 @@ export class OrganizationsFromGroupsService
89
92
  getFiltersForOrgs(orgs: Organization[]): Observable<FieldFilters> {
90
93
  return this.groups$.pipe(
91
94
  map((allGroups) => {
92
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang]
93
95
  const groups = orgs.map((org) =>
94
- allGroups.find((group) => group.label[lang3] === org.name)
96
+ allGroups.find((group) => group.label[this.lang3] === org.name)
95
97
  )
96
98
  return {
97
99
  groupOwner: groups.reduce(
@@ -108,10 +110,9 @@ export class OrganizationsFromGroupsService
108
110
  return forkJoin([this.groups$, this.organisations$]).pipe(
109
111
  map(([groups, orgs]) => {
110
112
  const groupIds = Object.keys(filters['groupOwner'])
111
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang]
112
113
  return groupIds.map((id) => {
113
114
  const group = groups.find((group) => group.id.toString() === id)
114
- return orgs.find((org) => org.name === group.label[lang3])
115
+ return orgs.find((org) => org.name === group.label[this.lang3])
115
116
  })
116
117
  })
117
118
  )
@@ -33,9 +33,10 @@ import {
33
33
  tap,
34
34
  withLatestFrom,
35
35
  } from 'rxjs/operators'
36
- import { LangService } from '../../../../../../../libs/util/i18n/src'
36
+ import { getLocalizedIndexKey } from '../../../../../../../libs/util/i18n/src'
37
37
  import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
38
38
  import { coerce, satisfies, valid } from 'semver'
39
+ import { TranslateService } from '@ngx-translate/core'
39
40
 
40
41
  const IMAGE_URL = '/geonetwork/images/harvesting/'
41
42
 
@@ -121,10 +122,12 @@ export class OrganizationsFromMetadataService
121
122
  private searchApiService: SearchApiService,
122
123
  private groupsApiService: GroupsApiService,
123
124
  private platformService: PlatformServiceInterface,
124
- private langService: LangService
125
+ private translateService: TranslateService
125
126
  ) {}
126
127
 
127
- private lang3 = this.langService.gnLang
128
+ private get langIndex() {
129
+ return getLocalizedIndexKey(this.translateService.currentLang)
130
+ }
128
131
 
129
132
  equalsNormalizedStrings(
130
133
  str1: string,
@@ -287,19 +290,23 @@ export class OrganizationsFromMetadataService
287
290
  ): Observable<CatalogRecord> {
288
291
  const contacts: SourceWithUnknownProps[] = getAsArray(
289
292
  selectFallback(
290
- selectTranslatedField(source, 'contactObject', this.lang3),
293
+ selectTranslatedField(source, 'contactObject', this.langIndex),
291
294
  selectField(source, 'contact')
292
295
  )
293
296
  )
294
297
  const resourceContacts: SourceWithUnknownProps[] = getAsArray(
295
298
  selectFallback(
296
- selectTranslatedField(source, 'contactForResourceObject', this.lang3),
299
+ selectTranslatedField(
300
+ source,
301
+ 'contactForResourceObject',
302
+ this.langIndex
303
+ ),
297
304
  selectField(source, 'contactForResource')
298
305
  )
299
306
  )
300
307
  const allContactOrgs = resourceContacts
301
308
  .concat(contacts)
302
- .map((contact) => mapOrganization(contact, this.lang3))
309
+ .map((contact) => mapOrganization(contact, this.langIndex))
303
310
 
304
311
  if (!allContactOrgs.length) return of(record)
305
312
 
@@ -29,7 +29,6 @@ import {
29
29
  } from '../../../../../../../libs/common/domain/src/lib/model/record'
30
30
  import { Gn4PlatformMapper } from './gn4-platform.mapper'
31
31
  import { ltr } from 'semver'
32
- import { LangService } from '../../../../../../../libs/util/i18n/src'
33
32
  import { HttpClient, HttpEventType } from '@angular/common/http'
34
33
  import {
35
34
  KeywordApiResponse,
@@ -45,6 +44,8 @@ import {
45
44
  switchMap,
46
45
  throwError,
47
46
  } from 'rxjs'
47
+ import { TranslateService } from '@ngx-translate/core'
48
+ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src'
48
49
 
49
50
  const minApiVersion = '4.2.2'
50
51
 
@@ -82,12 +83,23 @@ export class Gn4PlatformService implements PlatformServiceInterface {
82
83
  shareReplay(1)
83
84
  )
84
85
 
86
+ private readonly allowEditHarvestedMd$ = this.settings$.pipe(
87
+ map((info) => {
88
+ return info['system/harvester/enableEditing'] as boolean
89
+ }),
90
+ shareReplay(1)
91
+ )
92
+
85
93
  /**
86
94
  * A map of already loaded thesauri (groups of keywords); the key is a URI
87
95
  * @private
88
96
  */
89
97
  private keywordsByThesauri: Record<string, Observable<Keyword[]>> = {}
90
98
 
99
+ private get lang3() {
100
+ return getLang3FromLang2(this.translateService.currentLang)
101
+ }
102
+
91
103
  constructor(
92
104
  private siteApiService: SiteApiService,
93
105
  private meApi: MeApiService,
@@ -95,7 +107,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
95
107
  private mapper: Gn4PlatformMapper,
96
108
  private toolsApiService: ToolsApiService,
97
109
  private registriesApiService: RegistriesApiService,
98
- private langService: LangService,
110
+ private translateService: TranslateService,
99
111
  private userfeedbackApiService: UserfeedbackApiService,
100
112
  private httpClient: HttpClient,
101
113
  private recordsApiService: RecordsApiService
@@ -123,6 +135,10 @@ export class Gn4PlatformService implements PlatformServiceInterface {
123
135
  return this.apiVersion$
124
136
  }
125
137
 
138
+ getAllowEditHarvestedMd(): Observable<boolean> {
139
+ return this.allowEditHarvestedMd$
140
+ }
141
+
126
142
  getMe(): Observable<UserModel> {
127
143
  return this.me$
128
144
  }
@@ -187,7 +203,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
187
203
 
188
204
  return this.registriesApiService.searchKeywords(
189
205
  query,
190
- this.langService.iso3,
206
+ this.lang3,
191
207
  10,
192
208
  0,
193
209
  null,
@@ -200,11 +216,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
200
216
 
201
217
  return combineLatest([keywords$, this.allThesaurus$]).pipe(
202
218
  map(([keywords, thesaurus]) => {
203
- return this.mapper.keywordsFromApi(
204
- keywords,
205
- thesaurus,
206
- this.langService.iso3
207
- )
219
+ return this.mapper.keywordsFromApi(keywords, thesaurus, this.lang3)
208
220
  })
209
221
  )
210
222
  }
@@ -215,7 +227,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
215
227
  }
216
228
  const keywords$ = this.registriesApiService.searchKeywords(
217
229
  null,
218
- this.langService.iso3,
230
+ this.lang3,
219
231
  1000,
220
232
  0,
221
233
  null,
@@ -229,11 +241,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
229
241
  this.allThesaurus$,
230
242
  ]).pipe(
231
243
  map(([keywords, thesaurus]) => {
232
- return this.mapper.keywordsFromApi(
233
- keywords,
234
- thesaurus,
235
- this.langService.iso3
236
- )
244
+ return this.mapper.keywordsFromApi(keywords, thesaurus, this.lang3)
237
245
  }),
238
246
  shareReplay(1)
239
247
  )
@@ -253,7 +261,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
253
261
  return this.registriesApiService
254
262
  .searchKeywords(
255
263
  query,
256
- this.langService.iso3,
264
+ this.lang3,
257
265
  100,
258
266
  0,
259
267
  null,
@@ -262,11 +270,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
262
270
  )
263
271
  .pipe(
264
272
  map((keywords: KeywordApiResponse[]) =>
265
- this.mapper.keywordsFromApi(
266
- keywords,
267
- thesauri,
268
- this.langService.iso3
269
- )
273
+ this.mapper.keywordsFromApi(keywords, thesauri, this.lang3)
270
274
  )
271
275
  )
272
276
  })
@@ -11,6 +11,9 @@ export class Gn4SettingsService {
11
11
  'system/users/identicon'
12
12
  )
13
13
 
14
+ public allowEditHarvested$: Observable<boolean> =
15
+ this.getSettingsSetValueByKey('system/harvester/enableEditing')
16
+
14
17
  constructor(private siteApiService: SiteApiService) {}
15
18
 
16
19
  private getSettingsSetValueByKey(key: string) {
@@ -152,6 +152,8 @@ export type ServiceProtocol =
152
152
  | 'esriRest'
153
153
  | 'ogcFeatures'
154
154
  | 'GPFDL'
155
+ | 'tms'
156
+ | 'maplibre-style'
155
157
  | 'other'
156
158
 
157
159
  export type OnlineResourceType = 'service' | 'download' | 'link' | 'endpoint'
@@ -231,14 +233,6 @@ export interface DatasetRecord extends BaseRecord {
231
233
  spatialRepresentation?: SpatialRepresentationType
232
234
  }
233
235
 
234
- export type DatasetFeatureCatalog = {
235
- featureTypes: Array<{
236
- name: string
237
- definition: string
238
- attributes: Array<{ name: string; title: string }>
239
- }>
240
- }
241
-
242
236
  export interface ServiceEndpoint {
243
237
  url: URL
244
238
  accessServiceProtocol: ServiceProtocol
@@ -266,13 +260,32 @@ export interface ReuseRecord extends BaseRecord {
266
260
  temporalExtents: Array<DatasetTemporalExtent>
267
261
  }
268
262
 
263
+ export type DatasetFeatureCatalog = {
264
+ featureTypes: Array<{
265
+ name: string
266
+ definition: string
267
+ attributes: DatasetFeatureAttribute[]
268
+ }>
269
+ }
270
+ export interface DatasetFeatureAttributeValue {
271
+ code?: string
272
+ definition?: string
273
+ label?: string
274
+ }
275
+ export interface DatasetFeatureAttribute {
276
+ name: string
277
+ definition: string
278
+ type: string
279
+ code: string
280
+ values?: Array<DatasetFeatureAttributeValue>
281
+ }
269
282
  export interface DatasetFeatureType {
270
283
  aliases: string
271
284
  code: string
272
285
  isAbstract: string
273
286
  typeName: string
274
287
  definition: string
275
- attributeTable: Array<{ name: string; definition: string }>
288
+ attributeTable: Array<DatasetFeatureAttribute>
276
289
  }
277
290
 
278
291
  export type ReuseType = 'application' | 'map' | 'other'
@@ -19,8 +19,13 @@ export abstract class RecordsRepositoryInterface {
19
19
  abstract getSimilarRecords(
20
20
  similarTo: CatalogRecord
21
21
  ): Observable<CatalogRecord[]>
22
+ abstract getSources(record: CatalogRecord): Observable<CatalogRecord[]>
23
+ abstract getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]>
22
24
  abstract fuzzySearch(query: string): Observable<SearchResults>
25
+ abstract canDuplicate(record: CatalogRecord): boolean
26
+ abstract canDelete(record: CatalogRecord): Observable<boolean>
23
27
  abstract canEditRecord(uniqueIdentifier: string): Observable<boolean>
28
+ abstract canEditIndexedRecord(record: CatalogRecord): Observable<boolean>
24
29
  /**
25
30
  * This emits once:
26
31
  * - record object; if a draft exists, this will return it
@@ -95,4 +100,5 @@ export abstract class RecordsRepositoryInterface {
95
100
  localRecord: CatalogRecord
96
101
  ): Observable<{ user: string; date: Date }>
97
102
  abstract getRecordPublicationStatus(uuid: string): Observable<boolean>
103
+ abstract getApplicationLanguages(): Observable<string[]>
98
104
  }
@@ -144,4 +144,14 @@ export const elasticLinkFixture = (): Record<string, unknown> => ({
144
144
  name: 'ogcapi features layer',
145
145
  url: 'https://mel.integration.apps.gs-fr-prod.camptocamp.com/data/ogcapi/collections/comptages_velo/items?',
146
146
  },
147
+ maplayerTms: {
148
+ accessServiceProtocol: 'TMS',
149
+ name: 'mytmslayer',
150
+ url: 'https://my.tms.server/MapServer',
151
+ },
152
+ maplayerTms2: {
153
+ accessServiceProtocol: 'OSGeo:TMS',
154
+ name: 'myothertmslayer',
155
+ url: 'https://my.tms.server/MapServer',
156
+ },
147
157
  })
@@ -185,6 +185,20 @@ export const aSetOfLinksFixture = () => ({
185
185
  url: new URL('https://my.ogc.server/wms'),
186
186
  accessServiceProtocol: 'wms',
187
187
  }) as DatasetServiceDistribution,
188
+ geodataTms: () =>
189
+ ({
190
+ name: 'mytmslayer',
191
+ type: 'service',
192
+ url: new URL('https://my.ogc.server/tms'),
193
+ accessServiceProtocol: 'tms',
194
+ }) as DatasetServiceDistribution,
195
+ geodataAsMaplibreStyle: () =>
196
+ ({
197
+ name: 'mytmslayerAsMaplibreJson',
198
+ type: 'service',
199
+ url: new URL('https://my.ogc.server/tms/layer/style.json'),
200
+ accessServiceProtocol: 'maplibre-style',
201
+ }) as DatasetServiceDistribution,
188
202
  geodataWfs2: () =>
189
203
  ({
190
204
  name: 'myotherlayer',
@@ -3,6 +3,7 @@ import {
3
3
  DatasetRecord,
4
4
  DatasetSpatialExtent,
5
5
  Keyword,
6
+ ServiceRecord,
6
7
  } from '../../../../../libs/common/domain/src/lib/model/record'
7
8
 
8
9
  export const datasetRecordsFixture: () => CatalogRecord[] = () => [
@@ -176,6 +177,20 @@ As such, **it is not very interesting at all.**`,
176
177
  link: '',
177
178
  definition: 'Nom de la rue',
178
179
  type: 'String (48)',
180
+ values: [
181
+ {
182
+ code: 'Pomme',
183
+ label: 'Les Pommiers',
184
+ description: 'Sous les pommiers',
185
+ },
186
+ {
187
+ code: 'Cotton',
188
+ label: 'Rue Cotton',
189
+ description: 'Rue Cotton',
190
+ },
191
+ { code: "Passage de l'échiquier" },
192
+ { description: 'Rue du Charlieu' },
193
+ ],
179
194
  },
180
195
  {
181
196
  code: 'RUE',
@@ -231,7 +246,7 @@ As such, **it is not very interesting at all.**`,
231
246
  recordUpdated: new Date('2022-04-15T14:18:19'),
232
247
  resourceUpdated: new Date('2022-03-29'),
233
248
  title:
234
- "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022",
249
+ "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022 (Ce lot informe du droit à bâtir sur la commune d'Avrigny)",
235
250
  abstract: `Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022.
236
251
 
237
252
  Ce lot informe du droit à bâtir sur la commune d'Avrigny.
@@ -811,6 +826,52 @@ export const importDatasetRecordAsXmlFixture = (): string => `
811
826
  </gmd:identificationInfo>
812
827
  </gmd:MD_Metadata>`
813
828
 
829
+ export const simpleServiceRecordFixture = (): ServiceRecord => ({
830
+ abstract: `Ce service de visualisation WMS permet de consulter la série de couches de données "Sites de gestion des déchets miniers - Série".`,
831
+ kind: 'service',
832
+ recordUpdated: new Date('2023-03-17T07:38:08.875Z'),
833
+ recordPublished: null,
834
+ ownerOrganization: null,
835
+ licenses: [],
836
+ legalConstraints: [],
837
+ securityConstraints: [],
838
+ otherConstraints: [],
839
+ contacts: [],
840
+ contactsForResource: [],
841
+ keywords: [],
842
+ topics: [],
843
+ spatialExtents: [],
844
+ overviews: [],
845
+ defaultLanguage: null,
846
+ otherLanguages: [],
847
+ title: 'Sites de gestion des déchets miniers - Service de visualisation WMS',
848
+ onlineResources: [
849
+ {
850
+ name: 'Rapport de disponibilité du service WMS',
851
+ description:
852
+ 'Ce service de visualisation WMS permet de consulter la série de couches de données "Sites de gestion des déchets miniers - Série".',
853
+ mimeType: 'text/html',
854
+ type: 'link',
855
+ url: new URL(
856
+ 'https://geoservices.wallonie.be/rapportDisponibilite/wms/sites_de_gestion_des_dechets_miniers_srie.html'
857
+ ),
858
+ accessRestricted: false,
859
+ },
860
+ ],
861
+ uniqueIdentifier: '00b22798-ec8e-4500-89e8-90eeeda45919',
862
+ landingPage: new URL(
863
+ 'http://localhost:4200/geonetwork/srv/fre/catalog.search#/metadata/00b22798-ec8e-4500-89e8-90eeeda45919'
864
+ ),
865
+ extras: {
866
+ isPublishedToAll: true,
867
+ id: '723',
868
+ isHarvested: true,
869
+ ownerInfo: 'admin|admin|admin|Administrator',
870
+ edit: true,
871
+ },
872
+ recordCreated: new Date('2023-03-17T07:38:08.875Z'),
873
+ })
874
+
814
875
  export const NATIONAL_KEYWORD = {
815
876
  key: 'http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/national',
816
877
  label: 'National',