geonetwork-ui 2.6.0-dev.86c0fa7b5 → 2.6.0-dev.913451557

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 (541) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  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 +14 -11
  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/iso19115-3/read-parts.mjs +4 -8
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -6
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  11. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  12. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  13. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +17 -15
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +3 -3
  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 +17 -13
  18. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  19. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  20. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  21. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  22. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  23. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  24. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  25. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  26. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  27. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  28. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  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 +11 -9
  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/lib/data-view/data-view.component.mjs +5 -5
  59. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  60. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  61. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  62. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  63. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  64. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  65. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  66. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +5 -4
  67. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
  68. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  69. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  70. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -6
  71. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -6
  72. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  73. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  74. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  75. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  76. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  77. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  78. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  79. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -4
  80. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  81. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  82. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  83. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  84. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  85. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  86. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  87. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  88. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  89. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +4 -5
  90. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  91. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +5 -7
  92. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +5 -6
  93. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +7 -10
  94. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +4 -5
  95. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  96. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  97. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -5
  98. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -7
  99. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -7
  100. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +4 -5
  101. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  102. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +6 -7
  103. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +5 -4
  104. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  105. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  106. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  107. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +5 -6
  108. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  109. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  110. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  111. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  112. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  113. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  114. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +12 -7
  115. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +7 -3
  116. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  117. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  118. package/esm2022/libs/ui/layout/src/index.mjs +1 -2
  119. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  120. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  121. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +4 -5
  122. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  123. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  124. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  125. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +5 -7
  126. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  127. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  128. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  129. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +5 -7
  130. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +15 -12
  131. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +23 -24
  132. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  133. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  134. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  135. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  136. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  137. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -69
  138. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  139. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  140. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +40 -2
  141. package/esm2022/libs/util/shared/src/index.mjs +2 -2
  142. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  143. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  144. package/esm2022/translations/de.json +1 -16
  145. package/esm2022/translations/en.json +2 -17
  146. package/esm2022/translations/es.json +1 -16
  147. package/esm2022/translations/fr.json +6 -21
  148. package/esm2022/translations/it.json +1 -16
  149. package/esm2022/translations/nl.json +1 -16
  150. package/esm2022/translations/pt.json +1 -16
  151. package/esm2022/translations/sk.json +603 -0
  152. package/fesm2022/geonetwork-ui.mjs +10547 -10712
  153. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  154. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  155. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  156. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  157. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  158. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  159. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  160. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  161. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  162. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  163. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  164. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +8 -6
  165. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  166. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  167. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  168. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  169. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  170. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  171. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  172. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +4 -3
  173. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  174. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -2
  175. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  176. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  177. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  178. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  179. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  180. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  181. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  182. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  183. package/libs/feature/editor/src/index.d.ts +0 -3
  184. package/libs/feature/editor/src/index.d.ts.map +1 -1
  185. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  186. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  187. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  188. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  189. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  190. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  191. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  192. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  193. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  194. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  195. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  196. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  197. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  198. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  199. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  200. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  201. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  202. 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
  203. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  204. 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
  205. 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
  206. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  207. 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
  208. 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
  209. 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
  210. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  211. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  212. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  213. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  214. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  215. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  216. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  217. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  218. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  219. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  220. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  221. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  222. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  223. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  224. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  225. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  226. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  227. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  228. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  229. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  230. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  231. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
  232. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  233. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  234. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  235. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  236. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  237. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  238. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  239. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  240. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  241. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  242. package/libs/ui/dataviz/src/index.d.ts +0 -1
  243. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  244. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  245. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  246. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  247. package/libs/ui/elements/src/index.d.ts +0 -1
  248. package/libs/ui/elements/src/index.d.ts.map +1 -1
  249. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  250. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  251. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  252. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  253. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  254. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  255. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +1 -1
  256. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  257. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  258. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  259. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  260. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  261. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  262. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  263. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  264. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  265. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  266. package/libs/ui/inputs/src/index.d.ts +0 -1
  267. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  268. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  269. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  270. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  271. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  272. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  273. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  274. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  275. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  276. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  277. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  278. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts +2 -1
  279. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  280. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  281. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  282. package/libs/ui/layout/src/index.d.ts +0 -1
  283. package/libs/ui/layout/src/index.d.ts.map +1 -1
  284. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  285. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  286. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  287. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  288. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +1 -1
  289. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  290. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  291. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  292. package/libs/ui/search/src/lib/ui-search.module.d.ts +11 -11
  293. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  294. package/libs/ui/widgets/src/index.d.ts +0 -1
  295. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  296. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  297. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  298. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  299. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  300. package/libs/util/i18n/src/index.d.ts +1 -2
  301. package/libs/util/i18n/src/index.d.ts.map +1 -1
  302. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  303. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  304. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -16
  305. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  306. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  307. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  308. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  309. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  310. package/libs/util/i18n/src/lib/language-codes.d.ts +3 -29
  311. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  312. package/libs/util/shared/src/index.d.ts +1 -1
  313. package/libs/util/shared/src/index.d.ts.map +1 -1
  314. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  315. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  316. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  317. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  318. package/package.json +3 -3
  319. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  320. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  321. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4196 -0
  322. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +12 -6
  323. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  324. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +3 -7
  325. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -6
  326. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  327. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  328. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +5 -7
  329. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  330. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  331. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +13 -5
  332. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +4 -3
  333. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  334. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  335. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +13 -20
  336. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -2
  337. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -0
  338. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  339. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  340. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -2
  341. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  342. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -2
  343. package/src/libs/feature/editor/src/index.ts +0 -3
  344. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  345. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  346. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  347. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  348. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  349. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  350. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  351. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +16 -10
  352. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  353. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  354. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  355. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  356. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  357. 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
  358. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  359. 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
  360. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  361. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  362. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  363. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  364. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  365. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  366. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  367. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  368. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  369. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  370. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  371. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  372. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  373. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  374. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  375. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  376. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  377. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  378. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -4
  379. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  380. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  381. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  382. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  383. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  384. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  385. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  386. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +7 -2
  387. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -0
  388. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +4 -3
  389. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  390. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +4 -0
  391. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  392. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  393. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  394. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  395. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  396. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  397. package/src/libs/ui/dataviz/src/index.ts +0 -1
  398. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +2 -2
  399. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  400. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  401. package/src/libs/ui/elements/src/index.ts +0 -1
  402. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  403. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  404. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  405. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  406. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  407. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  408. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  409. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  410. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  411. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +2 -2
  412. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  413. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +5 -7
  414. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +3 -3
  415. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +4 -5
  416. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +2 -2
  417. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  418. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  419. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  420. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  421. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +3 -4
  422. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +2 -2
  423. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  424. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +4 -4
  425. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +7 -2
  426. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  427. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  428. package/src/libs/ui/inputs/src/index.ts +0 -1
  429. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  430. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  431. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  432. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  433. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  434. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  435. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  436. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  437. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +9 -3
  438. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +0 -1
  439. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -1
  440. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +3 -1
  441. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  442. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  443. package/src/libs/ui/layout/src/index.ts +0 -1
  444. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  445. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  446. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +2 -2
  447. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  448. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  449. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  450. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +3 -10
  451. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  452. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  453. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +3 -4
  454. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +0 -2
  455. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +21 -8
  456. package/src/libs/ui/search/src/lib/ui-search.module.ts +12 -11
  457. package/src/libs/ui/widgets/src/index.ts +0 -1
  458. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  459. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  460. package/src/libs/util/i18n/src/index.ts +1 -2
  461. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  462. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -71
  463. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  464. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  465. package/src/libs/util/i18n/src/lib/language-codes.ts +44 -1
  466. package/src/libs/util/shared/src/index.ts +1 -1
  467. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  468. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  469. package/translations/de.json +1 -16
  470. package/translations/en.json +2 -17
  471. package/translations/es.json +1 -16
  472. package/translations/fr.json +6 -21
  473. package/translations/it.json +1 -16
  474. package/translations/nl.json +1 -16
  475. package/translations/pt.json +1 -16
  476. package/translations/sk.json +1 -16
  477. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  478. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  479. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  480. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  481. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  482. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  483. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  484. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  485. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -134
  486. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  487. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  488. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  489. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  490. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  491. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  492. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  493. 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
  494. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  495. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  496. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  497. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  498. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  499. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  500. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  501. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  502. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  503. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  504. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  505. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  506. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  507. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  508. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -32
  509. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  510. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  511. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  512. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  513. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  514. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  515. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  516. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  517. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  518. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  519. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  520. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  521. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  522. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  523. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  524. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  525. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  526. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  527. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  528. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  529. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  530. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  531. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  532. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  533. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  534. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  535. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -74
  536. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  537. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  538. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  539. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  540. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  541. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
@@ -26,8 +26,12 @@ import {
26
26
  } from '../../../../../../libs/common/domain/src/lib/model/record'
27
27
  import { matchProtocol } from '../common/distribution.mapper'
28
28
  import { Thesaurus } from './types'
29
- import { LANG_3_TO_2_MAPPER, LangService } from '../../../../../../libs/util/i18n/src'
30
29
  import { getResourceType, getReuseType } from '../common/resource-types'
30
+ import { TranslateService } from '@ngx-translate/core'
31
+ import {
32
+ getLang2FromLang3,
33
+ getLocalizedIndexKey,
34
+ } from '../../../../../../libs/util/i18n/src'
31
35
 
32
36
  type ESResponseSource = SourceWithUnknownProps
33
37
 
@@ -42,10 +46,12 @@ type EsFieldMapperFn = (
42
46
  export class Gn4FieldMapper {
43
47
  constructor(
44
48
  private metadataUrlService: MetadataUrlService,
45
- private langService: LangService
49
+ private translateService: TranslateService
46
50
  ) {}
47
51
 
48
- private lang3 = this.langService.gnLang
52
+ private get lang3() {
53
+ return getLocalizedIndexKey(this.translateService.currentLang)
54
+ }
49
55
 
50
56
  protected fields: Record<string, EsFieldMapperFn> = {
51
57
  id: (output, source) =>
@@ -150,7 +156,7 @@ export class Gn4FieldMapper {
150
156
  const langList = getAsArray(
151
157
  selectField<string>(source, 'resourceLanguage')
152
158
  )
153
- const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
159
+ const languages = langList.map(getLang2FromLang3)
154
160
  const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null // set the first language as main one as fallback
155
161
 
156
162
  return {
@@ -160,7 +166,7 @@ export class Gn4FieldMapper {
160
166
  },
161
167
  otherLanguage: (output, source) => {
162
168
  const langList = getAsArray(selectField<string>(source, 'otherLanguage'))
163
- const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
169
+ const languages = langList.map(getLang2FromLang3)
164
170
  const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null
165
171
  const otherLanguages = languages.filter(
166
172
  (lang) => lang !== defaultLanguage
@@ -175,7 +181,7 @@ export class Gn4FieldMapper {
175
181
  const language = selectField<string>(source, 'mainLanguage')
176
182
  return {
177
183
  ...output,
178
- defaultLanguage: language ? LANG_3_TO_2_MAPPER[language] : null,
184
+ defaultLanguage: language ? getLang2FromLang3(language) : null,
179
185
  }
180
186
  },
181
187
  link: (output, source) => {
@@ -1,7 +1,7 @@
1
1
  import { Inject, Injectable } from '@angular/core'
2
2
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
3
3
  import { TranslateService } from '@ngx-translate/core'
4
- import { LANG_2_TO_3_MAPPER } from '../../../../../../libs/util/i18n/src'
4
+ import { getLang3FromLang2 } from '../../../../../../libs/util/i18n/src'
5
5
 
6
6
  @Injectable({
7
7
  providedIn: 'root',
@@ -14,8 +14,8 @@ export class MetadataUrlService {
14
14
 
15
15
  getUrl(uuid: string, apiPath: string = this.apiConfiguration.basePath) {
16
16
  const prefix = `${apiPath}/../`
17
- return `${prefix}${
18
- LANG_2_TO_3_MAPPER[this.translate.currentLang]
19
- }/catalog.search#/metadata/${uuid}`
17
+ return `${prefix}${getLang3FromLang2(
18
+ this.translate.currentLang
19
+ )}/catalog.search#/metadata/${uuid}`
20
20
  }
21
21
  }
@@ -22,9 +22,9 @@ import {
22
22
  extractDatasetOnlineResources,
23
23
  extractDateTime,
24
24
  extractLocalizedCharacterString,
25
+ extractReuseOnlineResources,
25
26
  extractRole,
26
27
  extractServiceOnlineResources,
27
- extractReuseOnlineResources,
28
28
  extractUrl,
29
29
  findIdentification,
30
30
  } from '../iso19139/read-parts'
@@ -41,7 +41,7 @@ import {
41
41
  } from '../../../../../../libs/common/domain/src/lib/model/record'
42
42
  import { matchMimeType } from '../common/distribution.mapper'
43
43
  import { fullNameToParts } from '../iso19139/utils/individual-name'
44
- import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src/lib/language-codes'
44
+ import { getLang2FromLang3 } from '../../../../../../libs/util/i18n/src/lib/language-codes'
45
45
  import { getResourceType, getReuseType } from '../common/resource-types'
46
46
 
47
47
  export function readKind(rootEl: XmlElement): RecordKind {
@@ -370,11 +370,7 @@ export function readLocaleElement(): ChainableFunction<
370
370
  return pipe(
371
371
  findChildElement('lan:LanguageCode'),
372
372
  readAttribute('codeListValue'),
373
- map((lang) => {
374
- const normalized = lang?.toLowerCase()
375
- const iso2Lang = LANG_3_TO_2_MAPPER[normalized]
376
- return iso2Lang ?? lang
377
- })
373
+ map((lang) => getLang2FromLang3(lang?.toLowerCase()) ?? lang)
378
374
  )
379
375
  }
380
376
 
@@ -49,7 +49,7 @@ import {
49
49
  } from '../iso19139/write-parts'
50
50
  import { findIdentification } from '../iso19139/read-parts'
51
51
  import { namePartsToFull } from '../iso19139/utils/individual-name'
52
- import { LANG_2_TO_3_MAPPER } from '../../../../../../libs/util/i18n/src/lib/language-codes'
52
+ import { getLang3FromLang2 } from '../../../../../../libs/util/i18n/src/lib/language-codes'
53
53
  import { kindToCodeListValue } from '../common/resource-types'
54
54
 
55
55
  export function writeUniqueIdentifier(
@@ -529,11 +529,7 @@ export function writeOnlineResources(
529
529
  }
530
530
 
531
531
  function writeLocaleElement(language: LanguageCode) {
532
- const normalizedLang = language.toLowerCase()
533
- const lang3 =
534
- normalizedLang.length === 2
535
- ? LANG_2_TO_3_MAPPER[normalizedLang]
536
- : normalizedLang
532
+ const lang3 = getLang3FromLang2(language.toLowerCase()) ?? language
537
533
  return pipe(
538
534
  findChildOrCreate('lan:PT_Locale'),
539
535
  writeAttribute('id', language.toUpperCase()),
@@ -11,6 +11,7 @@ import {
11
11
  import { XmlElement } from '@rgrove/parse-xml'
12
12
  import { BaseConverter } from '../base.converter'
13
13
  import { isEqual } from '../convert-utils'
14
+ import { isFieldTranslatable } from '../translate-utils'
14
15
  import {
15
16
  createDocument,
16
17
  createElement,
@@ -160,7 +161,7 @@ export class Iso19139Converter extends BaseConverter<string> {
160
161
  // TODO
161
162
  extras: () => undefined,
162
163
  landingPage: () => undefined,
163
- translations: () => undefined,
164
+ translations: () => undefined, // NB. translations are handled in properties
164
165
  }
165
166
 
166
167
  protected beforeDocumentCreation(rootElement: XmlElement) {
@@ -189,6 +190,7 @@ export class Iso19139Converter extends BaseConverter<string> {
189
190
  }
190
191
  }
191
192
  }
193
+
192
194
  fixLanguages(record)
193
195
  record.keywords.map(fixLanguages)
194
196
  record.onlineResources.map(fixLanguages)
@@ -275,7 +277,6 @@ export class Iso19139Converter extends BaseConverter<string> {
275
277
  async readRecord(document: string): Promise<CatalogRecord> {
276
278
  const doc = parseXmlString(document)
277
279
  const rootEl = getRootElement(doc)
278
-
279
280
  const tr: RecordTranslations = {}
280
281
  const kind = this.readers['kind'](rootEl, tr) as RecordKind
281
282
 
@@ -326,15 +327,19 @@ export class Iso19139Converter extends BaseConverter<string> {
326
327
  let rootEl: XmlElement
327
328
  let fieldChanged: (name: string) => boolean
328
329
  if (reference) {
330
+ // eslint-disable-next-line prefer-const
331
+ let languagesChanged: boolean
329
332
  const originalDoc = parseXmlString(reference)
330
333
  const originalRecord = await this.readRecord(reference)
331
334
  rootEl = getRootElement(originalDoc)
332
335
 
333
336
  fieldChanged = (name: string) => {
334
337
  return originalRecord !== null
335
- ? !isEqual(record[name], originalRecord[name])
338
+ ? !isEqual(record[name], originalRecord[name]) ||
339
+ (languagesChanged && isFieldTranslatable(name))
336
340
  : true
337
341
  }
342
+ languagesChanged = fieldChanged('otherLanguages')
338
343
  } else {
339
344
  rootEl = createElement('gmd:MD_Metadata')()
340
345
  fieldChanged = () => true
@@ -357,9 +362,10 @@ export class Iso19139Converter extends BaseConverter<string> {
357
362
  this.writers['recordCreated'](record, rootEl)
358
363
  fieldChanged('recordPublished') &&
359
364
  this.writers['recordPublished'](record, rootEl)
360
-
361
- fieldChanged('title') && this.writers['title'](record, rootEl)
362
- fieldChanged('abstract') && this.writers['abstract'](record, rootEl)
365
+ ;(fieldChanged('title') || fieldChanged('translations')) &&
366
+ this.writers['title'](record, rootEl)
367
+ ;(fieldChanged('abstract') || fieldChanged('translations')) &&
368
+ this.writers['abstract'](record, rootEl)
363
369
 
364
370
  fieldChanged('resourceCreated') &&
365
371
  this.writers['resourceCreated'](record, rootEl)
@@ -396,9 +402,9 @@ export class Iso19139Converter extends BaseConverter<string> {
396
402
  this.writers['temporalExtents'](record, rootEl)
397
403
  fieldChanged('spatialExtents') &&
398
404
  this.writers['spatialExtents'](record, rootEl)
399
- fieldChanged('lineage') && this.writers['lineage'](record, rootEl)
405
+ ;(fieldChanged('lineage') || fieldChanged('translations')) &&
406
+ this.writers['lineage'](record, rootEl)
400
407
  }
401
-
402
408
  fieldChanged('otherLanguages') &&
403
409
  this.writers['otherLanguages'](record, rootEl)
404
410
 
@@ -55,7 +55,7 @@ import { getKeywordTypeFromKeywordTypeCode } from './utils/keyword.mapper'
55
55
  import { getRoleFromRoleCode } from './utils/role.mapper'
56
56
  import { getStatusFromStatusCode } from './utils/status.mapper'
57
57
  import { getUpdateFrequencyFromFrequencyCode } from './utils/update-frequency.mapper'
58
- import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src/lib/language-codes'
58
+ import { getLang2FromLang3 } from '../../../../../../libs/util/i18n/src/lib/language-codes'
59
59
  import { getResourceType, getReuseType } from '../common/resource-types'
60
60
 
61
61
  export function extractCharacterString(): ChainableFunction<
@@ -1164,7 +1164,7 @@ export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
1164
1164
  pipe(
1165
1165
  findChildElement('lan:LanguageCode'),
1166
1166
  readAttribute('codeListValue'),
1167
- map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang)
1167
+ map((lang) => getLang2FromLang3(lang?.toLowerCase()) ?? lang)
1168
1168
  )
1169
1169
  ),
1170
1170
  map((languages) =>
@@ -1179,7 +1179,7 @@ export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
1179
1179
  findChildElement('gmd:language', false),
1180
1180
  findChildElement('lan:LanguageCode'),
1181
1181
  readAttribute('codeListValue'),
1182
- map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null))
1182
+ map((lang) => (lang ? getLang2FromLang3(lang.toLowerCase()) : null))
1183
1183
  )(rootEl)
1184
1184
  }
1185
1185
 
@@ -53,7 +53,7 @@ import {
53
53
  import { readKind } from './read-parts'
54
54
  import { writeGeometry } from './utils/geometry'
55
55
  import { namePartsToFull } from './utils/individual-name'
56
- import { LANG_2_TO_3_MAPPER } from '../../../../../../libs/util/i18n/src/lib/language-codes'
56
+ import { getLang3FromLang2 } from '../../../../../../libs/util/i18n/src/lib/language-codes'
57
57
  import { kindToCodeListValue } from '../common/resource-types'
58
58
 
59
59
  function writeLocalizedElement(
@@ -62,7 +62,8 @@ function writeLocalizedElement(
62
62
  translations: FieldTranslation,
63
63
  defaultLanguage: LanguageCode
64
64
  ): ChainableFunction<XmlElement, XmlElement> {
65
- if (!translations) return writeFn
65
+ if (!translations)
66
+ return pipe(writeFn, removeChildrenByName('gmd:PT_FreeText')) // If no translations, remove existing if any
66
67
  function createLocalized(lang: LanguageCode, translation: string) {
67
68
  return pipe(
68
69
  createNestedElement('gmd:textGroup', 'gmd:LocalisedCharacterString'),
@@ -1471,10 +1472,7 @@ export function writeLanguages(record: DatasetRecord, rootEl: XmlElement) {
1471
1472
  writeAttribute('id', lang.toUpperCase()),
1472
1473
  createNestedChild('gmd:languageCode', 'gmd:LanguageCode'),
1473
1474
  writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'),
1474
- writeAttribute(
1475
- 'codeListValue',
1476
- lang.length === 2 ? LANG_2_TO_3_MAPPER[lang] : lang
1477
- )
1475
+ writeAttribute('codeListValue', getLang3FromLang2(lang) ?? lang)
1478
1476
  )
1479
1477
 
1480
1478
  // add new languages (only if other than default one)
@@ -1488,7 +1486,7 @@ export function writeDefaultLanguage(
1488
1486
  record: DatasetRecord,
1489
1487
  rootEl: XmlElement
1490
1488
  ) {
1491
- const lang3 = LANG_2_TO_3_MAPPER[record.defaultLanguage.toLowerCase()]
1489
+ const lang3 = getLang3FromLang2(record.defaultLanguage.toLowerCase())
1492
1490
  return pipe(
1493
1491
  findNestedChildOrCreate('gmd:language', 'gmd:LanguageCode'),
1494
1492
  writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'),
@@ -0,0 +1,17 @@
1
+ const TRANSLATABLE_GN4_FIELDS = [
2
+ 'abstract',
3
+ 'constraint',
4
+ 'keywords',
5
+ 'lineage',
6
+ 'onlineResources',
7
+ 'spatialExtents',
8
+ 'title',
9
+ // TODO, also add these fields in writers
10
+ // 'contact',
11
+ // 'pointOfContact'
12
+ // 'extent'
13
+ ] as const
14
+
15
+ export function isFieldTranslatable(fieldName: string) {
16
+ return (TRANSLATABLE_GN4_FIELDS as unknown as string[]).includes(fieldName)
17
+ }
@@ -1,5 +1,5 @@
1
1
  import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'
2
- import { LANG_2_TO_3_MAPPER } from '../../../../../../../libs/util/i18n/src'
2
+ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src'
3
3
  import { TranslateService } from '@ngx-translate/core'
4
4
  import { Location } from '@angular/common'
5
5
 
@@ -36,10 +36,7 @@ export class AuthService {
36
36
  new URL(this.location.path(), window.location.href).toString()
37
37
  )
38
38
  .replace('${lang2}', this.translateService.currentLang)
39
- .replace(
40
- '${lang3}',
41
- LANG_2_TO_3_MAPPER[this.translateService.currentLang]
42
- )
39
+ .replace('${lang3}', getLang3FromLang2(this.translateService.currentLang))
43
40
  }
44
41
 
45
42
  get logoutUrl() {
@@ -49,7 +46,7 @@ export class AuthService {
49
46
  get settingsUrl() {
50
47
  return this.baseSettingsUrl.replace(
51
48
  '${lang3}',
52
- LANG_2_TO_3_MAPPER[this.translateService.currentLang]
49
+ getLang3FromLang2(this.translateService.currentLang)
53
50
  )
54
51
  }
55
52
 
@@ -1,4 +1,4 @@
1
- import { Inject, Injectable, Optional } from '@angular/core'
1
+ import { Injectable, Injector } from '@angular/core'
2
2
  import { Geometry } from 'geojson'
3
3
  import {
4
4
  ES_QUERY_FIELDS_PRIORITY,
@@ -26,9 +26,10 @@ import {
26
26
  SortParams,
27
27
  TermsAggregationResult,
28
28
  } from '../../../../../../../libs/api/metadata-converter/src'
29
- import { LangService } from '../../../../../../../libs/util/i18n/src'
29
+ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src'
30
30
  import { formatDate, isDateRange } from './date-range.utils'
31
31
  import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
32
+ import { TranslateService } from '@ngx-translate/core'
32
33
 
33
34
  export type DateRange = { start?: Date; end?: Date }
34
35
 
@@ -39,11 +40,18 @@ export class ElasticsearchService {
39
40
  // runtime fields are computed using a Painless script
40
41
  // see: https://www.elastic.co/guide/en/elasticsearch/reference/current/runtime-mapping-fields.html
41
42
  private runtimeFields: Record<string, string> = {}
42
- private lang3 = this.langService.iso3
43
+
44
+ // we're using getters in case the defined languages change over time
45
+ private get lang3() {
46
+ return getLang3FromLang2(this.translateService.currentLang)
47
+ }
48
+ private get metadataLang() {
49
+ return this.injector.get(METADATA_LANGUAGE, null)
50
+ }
43
51
 
44
52
  constructor(
45
- private langService: LangService,
46
- @Optional() @Inject(METADATA_LANGUAGE) private metadataLang: string
53
+ private translateService: TranslateService,
54
+ private injector: Injector
47
55
  ) {}
48
56
 
49
57
  getSearchRequestBody(
@@ -16,6 +16,7 @@ import {
16
16
  CatalogRecord,
17
17
  DatasetFeatureCatalog,
18
18
  DatasetFeatureType,
19
+ LanguageCode,
19
20
  } from '../../../../../../libs/common/domain/src/lib/model/record'
20
21
  import {
21
22
  Aggregations,
@@ -33,7 +34,6 @@ import {
33
34
  RecordsApiService,
34
35
  SearchApiService,
35
36
  } from '../../../../../../libs/data-access/gn4/src'
36
- import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src'
37
37
  import {
38
38
  combineLatest,
39
39
  exhaustMap,
@@ -48,6 +48,7 @@ import {
48
48
  import { catchError, map, tap } from 'rxjs/operators'
49
49
  import { lt } from 'semver'
50
50
  import { ElasticsearchService } from './elasticsearch'
51
+ import { getLang2FromLang3 } from '../../../../../../libs/util/i18n/src'
51
52
  import { Gn4SettingsService } from './settings/gn4-settings.service'
52
53
 
53
54
  const minPublicationApiVersion = '4.2.5'
@@ -555,13 +556,13 @@ export class Gn4Repository implements RecordsRepositoryInterface {
555
556
  )
556
557
  }
557
558
 
558
- getApplicationLanguages(): Observable<string[]> {
559
+ getApplicationLanguages(): Observable<LanguageCode[]> {
559
560
  return this.gn4LanguagesApi
560
561
  .getApplicationLanguages()
561
562
  .pipe(
562
563
  map((languages) =>
563
564
  languages
564
- .map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
565
+ .map((lang) => getLang2FromLang3(lang.id))
565
566
  .filter((code): code is string => !!code)
566
567
  )
567
568
  )
@@ -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
 
@@ -95,6 +96,10 @@ export class Gn4PlatformService implements PlatformServiceInterface {
95
96
  */
96
97
  private keywordsByThesauri: Record<string, Observable<Keyword[]>> = {}
97
98
 
99
+ private get lang3() {
100
+ return getLang3FromLang2(this.translateService.currentLang)
101
+ }
102
+
98
103
  constructor(
99
104
  private siteApiService: SiteApiService,
100
105
  private meApi: MeApiService,
@@ -102,7 +107,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
102
107
  private mapper: Gn4PlatformMapper,
103
108
  private toolsApiService: ToolsApiService,
104
109
  private registriesApiService: RegistriesApiService,
105
- private langService: LangService,
110
+ private translateService: TranslateService,
106
111
  private userfeedbackApiService: UserfeedbackApiService,
107
112
  private httpClient: HttpClient,
108
113
  private recordsApiService: RecordsApiService
@@ -198,7 +203,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
198
203
 
199
204
  return this.registriesApiService.searchKeywords(
200
205
  query,
201
- this.langService.iso3,
206
+ this.lang3,
202
207
  10,
203
208
  0,
204
209
  null,
@@ -211,11 +216,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
211
216
 
212
217
  return combineLatest([keywords$, this.allThesaurus$]).pipe(
213
218
  map(([keywords, thesaurus]) => {
214
- return this.mapper.keywordsFromApi(
215
- keywords,
216
- thesaurus,
217
- this.langService.iso3
218
- )
219
+ return this.mapper.keywordsFromApi(keywords, thesaurus, this.lang3)
219
220
  })
220
221
  )
221
222
  }
@@ -226,7 +227,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
226
227
  }
227
228
  const keywords$ = this.registriesApiService.searchKeywords(
228
229
  null,
229
- this.langService.iso3,
230
+ this.lang3,
230
231
  1000,
231
232
  0,
232
233
  null,
@@ -240,11 +241,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
240
241
  this.allThesaurus$,
241
242
  ]).pipe(
242
243
  map(([keywords, thesaurus]) => {
243
- return this.mapper.keywordsFromApi(
244
- keywords,
245
- thesaurus,
246
- this.langService.iso3
247
- )
244
+ return this.mapper.keywordsFromApi(keywords, thesaurus, this.lang3)
248
245
  }),
249
246
  shareReplay(1)
250
247
  )
@@ -264,7 +261,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
264
261
  return this.registriesApiService
265
262
  .searchKeywords(
266
263
  query,
267
- this.langService.iso3,
264
+ this.lang3,
268
265
  100,
269
266
  0,
270
267
  null,
@@ -273,11 +270,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
273
270
  )
274
271
  .pipe(
275
272
  map((keywords: KeywordApiResponse[]) =>
276
- this.mapper.keywordsFromApi(
277
- keywords,
278
- thesauri,
279
- this.langService.iso3
280
- )
273
+ this.mapper.keywordsFromApi(keywords, thesauri, this.lang3)
281
274
  )
282
275
  )
283
276
  })
@@ -6,7 +6,11 @@ import {
6
6
  SearchParams,
7
7
  SearchResults,
8
8
  } from '../model/search'
9
- import { CatalogRecord, DatasetFeatureCatalog } from '../model/record'
9
+ import {
10
+ CatalogRecord,
11
+ DatasetFeatureCatalog,
12
+ LanguageCode,
13
+ } from '../model/record'
10
14
 
11
15
  export abstract class RecordsRepositoryInterface {
12
16
  abstract search(params: SearchParams): Observable<SearchResults>
@@ -100,5 +104,5 @@ export abstract class RecordsRepositoryInterface {
100
104
  localRecord: CatalogRecord
101
105
  ): Observable<{ user: string; date: Date }>
102
106
  abstract getRecordPublicationStatus(uuid: string): Observable<boolean>
103
- abstract getApplicationLanguages(): Observable<string[]>
107
+ abstract getApplicationLanguages(): Observable<LanguageCode[]>
104
108
  }