geonetwork-ui 2.6.0-dev.9df114cd4 → 2.6.0-dev.a8e63e487

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 (469) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +39 -6
  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 +8 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +6 -6
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  11. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
  12. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +4 -12
  13. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +42 -9
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  15. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  17. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +45 -9
  18. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  19. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  20. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +25 -6
  21. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  22. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +273 -0
  23. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  24. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  25. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  26. package/esm2022/libs/feature/record/src/index.mjs +2 -4
  27. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  28. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  29. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  30. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  31. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
  32. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +33 -7
  33. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  34. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  35. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +14 -5
  36. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -15
  37. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  38. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  39. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  40. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  41. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  42. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  43. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  44. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
  45. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  46. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  47. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  48. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  49. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +30 -10
  50. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  51. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  52. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  53. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  54. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  55. package/esm2022/libs/ui/elements/src/index.mjs +5 -1
  56. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  57. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
  58. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
  59. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  60. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  61. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +27 -53
  62. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +68 -0
  63. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
  64. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  65. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  67. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  68. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
  69. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
  70. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +169 -0
  71. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +22 -4
  72. package/esm2022/libs/ui/inputs/src/index.mjs +3 -1
  73. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  74. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  75. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  76. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  77. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  78. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  79. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  80. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  81. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
  82. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  83. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  84. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  85. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  86. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  87. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
  88. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  89. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +107 -0
  90. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
  91. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  92. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  93. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  94. package/esm2022/libs/ui/search/src/index.mjs +3 -1
  95. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  96. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  97. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  98. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  99. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  100. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +19 -12
  101. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +29 -15
  102. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +19 -5
  103. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  104. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  105. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  106. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
  107. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
  108. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  109. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  110. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  111. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +16 -6
  112. package/esm2022/translations/de.json +64 -7
  113. package/esm2022/translations/en.json +66 -9
  114. package/esm2022/translations/es.json +63 -6
  115. package/esm2022/translations/fr.json +65 -8
  116. package/esm2022/translations/it.json +70 -13
  117. package/esm2022/translations/nl.json +63 -6
  118. package/esm2022/translations/pt.json +63 -6
  119. package/fesm2022/geonetwork-ui.mjs +2912 -1096
  120. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  121. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  122. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  123. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  125. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  126. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  127. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  128. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  129. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  130. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  131. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  132. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  133. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  134. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  135. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  136. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  137. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  138. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +7 -2
  139. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  140. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  141. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -3
  142. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  143. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +3 -0
  144. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  145. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  146. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  147. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  148. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  149. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  150. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  151. package/libs/feature/editor/src/index.d.ts +1 -0
  152. package/libs/feature/editor/src/index.d.ts.map +1 -1
  153. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +52 -0
  154. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  155. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  156. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  157. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  158. 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
  159. package/libs/feature/record/src/index.d.ts +1 -3
  160. package/libs/feature/record/src/index.d.ts.map +1 -1
  161. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  162. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  163. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  164. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  165. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  166. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  167. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  168. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  169. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  170. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  171. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  172. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  173. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +9 -1
  174. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  175. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  176. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  177. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  178. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  179. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  180. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  181. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  182. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  183. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  184. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  185. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  186. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  187. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  188. package/libs/feature/search/src/index.d.ts +1 -1
  189. package/libs/feature/search/src/index.d.ts.map +1 -1
  190. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  191. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  192. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  193. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  194. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  195. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  196. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  197. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  198. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  199. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  200. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  201. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  202. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  203. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  204. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  205. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  206. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  207. package/libs/ui/elements/src/index.d.ts +4 -0
  208. package/libs/ui/elements/src/index.d.ts.map +1 -1
  209. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  210. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  211. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  212. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  213. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  214. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  215. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -7
  216. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  217. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +13 -0
  218. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  219. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  220. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  221. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  222. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  223. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
  224. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  225. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
  226. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  227. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +31 -0
  228. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  229. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +4 -1
  230. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  231. package/libs/ui/inputs/src/index.d.ts +2 -0
  232. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  233. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  234. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  235. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  236. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  237. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  238. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  239. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  240. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  241. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  242. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  243. package/libs/ui/layout/src/index.d.ts +1 -0
  244. package/libs/ui/layout/src/index.d.ts.map +1 -1
  245. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  246. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  247. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  248. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  249. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  250. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  251. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +27 -0
  252. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  253. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  254. package/libs/ui/map/src/index.d.ts +1 -0
  255. package/libs/ui/map/src/index.d.ts.map +1 -1
  256. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  257. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  258. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  259. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  260. package/libs/ui/search/src/index.d.ts +2 -0
  261. package/libs/ui/search/src/index.d.ts.map +1 -1
  262. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  263. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  264. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  265. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +3 -3
  266. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  267. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +5 -1
  268. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  269. package/libs/ui/search/src/lib/ui-search.module.d.ts +22 -19
  270. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  271. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  272. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  273. package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
  274. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  275. package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
  276. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  277. package/libs/util/shared/src/index.d.ts +1 -0
  278. package/libs/util/shared/src/index.d.ts.map +1 -1
  279. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  280. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  281. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  282. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  283. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  284. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  285. package/package.json +2 -2
  286. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  287. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  288. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  289. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  290. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  291. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +3 -3
  292. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  293. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  294. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +57 -6
  295. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  296. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
  297. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
  298. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +10 -6
  299. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +7 -4
  300. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
  301. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +3 -11
  302. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +66 -7
  303. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  304. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -4
  305. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
  306. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +36 -26
  307. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +16 -2
  308. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  309. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
  310. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  311. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +54 -10
  312. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  313. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  314. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +27 -1
  315. package/src/libs/feature/editor/src/index.ts +1 -0
  316. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +120 -0
  317. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +325 -0
  318. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  319. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  320. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  321. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  322. package/src/libs/feature/record/src/index.ts +1 -3
  323. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +16 -10
  324. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  325. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  326. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  327. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  328. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
  329. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +25 -16
  330. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +35 -4
  331. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  332. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  333. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +27 -3
  334. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +21 -17
  335. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  336. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  337. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  338. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  339. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  340. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  341. package/src/libs/feature/search/src/index.ts +1 -1
  342. package/src/libs/feature/search/src/lib/constants.ts +1 -0
  343. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  344. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  345. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  346. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
  347. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  348. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  349. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  350. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +26 -5
  351. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  352. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  353. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  354. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  355. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  356. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  357. package/src/libs/ui/elements/src/index.ts +4 -0
  358. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  359. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  360. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  361. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  362. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
  363. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  364. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  365. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  366. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  367. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +133 -138
  368. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +19 -47
  369. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  370. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +11 -0
  371. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +70 -0
  372. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  373. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
  374. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  375. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  376. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  377. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  378. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  379. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
  380. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
  381. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
  382. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
  383. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
  384. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  385. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +110 -0
  386. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +191 -0
  387. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -1
  388. package/src/libs/ui/inputs/src/index.ts +2 -0
  389. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  390. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  391. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  392. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  393. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  394. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  395. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  396. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  397. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  398. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  399. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +3 -4
  400. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  401. package/src/libs/ui/layout/src/index.ts +1 -0
  402. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  403. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  404. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  405. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  406. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  407. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  408. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  409. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +4 -7
  410. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  411. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  412. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  413. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  414. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +44 -0
  415. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +130 -0
  416. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -5
  417. package/src/libs/ui/map/src/index.ts +1 -0
  418. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  419. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  420. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  421. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  422. package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +8 -8
  423. package/src/libs/ui/search/src/index.ts +2 -0
  424. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  425. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  426. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  427. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  428. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  429. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  430. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  431. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +11 -3
  432. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +14 -11
  433. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  434. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +29 -16
  435. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +22 -11
  436. package/src/libs/ui/search/src/lib/ui-search.module.ts +8 -0
  437. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
  438. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  439. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  440. package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
  441. package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
  442. package/src/libs/util/shared/src/index.ts +1 -0
  443. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  444. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +15 -3
  445. package/src/libs/util/shared/src/lib/links/link-utils.ts +33 -12
  446. package/tailwind.base.config.js +3 -0
  447. package/tailwind.base.css +5 -17
  448. package/translations/de.json +64 -7
  449. package/translations/en.json +66 -9
  450. package/translations/es.json +63 -6
  451. package/translations/fr.json +65 -8
  452. package/translations/it.json +70 -13
  453. package/translations/nl.json +63 -6
  454. package/translations/pt.json +63 -6
  455. package/translations/sk.json +63 -6
  456. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  457. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  458. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  459. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  460. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
  461. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  462. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  463. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  464. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  465. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  466. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  467. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  468. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  469. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-map-container/form-field-map-container.component.css → multilingual-panel/multilingual-panel.component.css} +0 -0
@@ -1,4 +1,4 @@
1
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record';
1
+ import { DatasetOnlineResource, ServiceOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare enum LinkUsage {
4
4
  API = "api",
@@ -10,8 +10,8 @@ export declare enum LinkUsage {
10
10
  UNKNOWN = "unknown"
11
11
  }
12
12
  export declare class LinkClassifierService {
13
- getUsagesForLink(link: DatasetOnlineResource): LinkUsage[];
14
- hasUsage(link: DatasetOnlineResource, usage: LinkUsage): boolean;
13
+ getUsagesForLink(link: DatasetOnlineResource | ServiceOnlineResource): LinkUsage[];
14
+ hasUsage(link: DatasetOnlineResource | ServiceOnlineResource, usage: LinkUsage): boolean;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<LinkClassifierService, never>;
16
16
  static ɵprov: i0.ɵɵInjectableDeclaration<LinkClassifierService>;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;;AAGjG,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,EAAE;IAsC1D,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS;yCAvC3C,qBAAqB;6CAArB,qBAAqB;CA0CjC"}
1
+ {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAGlE,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CACd,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,SAAS,EAAE;IA0Cd,QAAQ,CACN,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,SAAS;yCA/CP,qBAAqB;6CAArB,qBAAqB;CAmDjC"}
@@ -1,4 +1,4 @@
1
- import { DatasetOnlineResource, ServiceProtocol } from '../../../../../../libs/common/domain/src/lib/model/record';
1
+ import { DatasetOnlineResource, ServiceOnlineResource, ServiceProtocol } from '../../../../../../libs/common/domain/src/lib/model/record';
2
2
  export declare const FORMATS: {
3
3
  readonly csv: {
4
4
  readonly extensions: readonly ["csv"];
@@ -99,14 +99,21 @@ export declare const FORMATS: {
99
99
  };
100
100
  export type FileFormat = keyof typeof FORMATS;
101
101
  export declare function getFormatPriority(linkFormat: FileFormat): number;
102
- export declare function getLinkPriority(link: DatasetOnlineResource): number;
102
+ export declare function getLinkPriority(link: DatasetOnlineResource | ServiceOnlineResource): number;
103
103
  export declare function getFileFormatFromServiceOutput(serviceOutput: string): FileFormat | null;
104
- export declare function getFileFormat(link: DatasetOnlineResource): FileFormat;
105
- export declare function isFormatInQueryParam(link: DatasetOnlineResource, alias: string): boolean;
104
+ export declare function getFileFormat(link: DatasetOnlineResource | ServiceOnlineResource): FileFormat;
105
+ export declare function isFormatInQueryParam(link: DatasetOnlineResource | ServiceOnlineResource, alias: string): boolean;
106
106
  export declare function mimeTypeToFormat(mimeType: string): FileFormat;
107
- export declare function checkFileFormat(link: DatasetOnlineResource, format: FileFormat): boolean;
107
+ export declare function checkFileFormat(link: DatasetOnlineResource | ServiceOnlineResource, format: FileFormat): boolean;
108
108
  export declare function getBadgeColor(linkFormat: FileFormat): string;
109
- export declare function getLinkLabel(link: DatasetOnlineResource): string;
110
- export declare function getLayers(url: string, serviceProtocol: ServiceProtocol): Promise<any[]>;
109
+ export declare function getLinkLabel(link: DatasetOnlineResource | ServiceOnlineResource): string;
110
+ export declare function getLayers(url: string, serviceProtocol: ServiceProtocol): Promise<{
111
+ name: string;
112
+ hasRecords?: boolean;
113
+ hasFeatures?: boolean;
114
+ hasVectorTiles?: boolean;
115
+ hasMapTiles?: boolean;
116
+ }[] | import("@camptocamp/ogc-client").WfsFeatureTypeFull[] | import("@camptocamp/ogc-client").WmsLayerFull[] | import("@camptocamp/ogc-client").WmtsLayer[]>;
117
+ export declare function wmsLayerFlatten(layerFull: any): any[];
111
118
  export declare function getMimeTypeForFormat(format: FileFormat): string | null;
112
119
  //# sourceMappingURL=link-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAcrE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA0BhE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,kBAwB5E;AAcD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,UAAU,CAcZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CA6BR;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;;;;;;8JAmC5E;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,SAUxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.6.0-dev.9df114cd4",
3
+ "version": "2.6.0-dev.a8e63e487",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -62,7 +62,7 @@
62
62
  "@nx/angular": "20.2.2",
63
63
  "@rgrove/parse-xml": "4.2.0",
64
64
  "alasql": "4.6.0",
65
- "axios": "1.7.9",
65
+ "axios": "1.8.2",
66
66
  "basiclightbox": "^5.0.4",
67
67
  "chart.js": "4.4.7",
68
68
  "chroma-js": "3.1.2",
@@ -5,3 +5,4 @@ export * from './lib/gn4'
5
5
  export * from './lib/dcat-ap'
6
6
  export * from './lib/xml-utils'
7
7
  export * from './lib/base.converter'
8
+ export * from './lib/common/resource-types'
@@ -1,7 +1,4 @@
1
- import {
2
- CatalogRecord,
3
- DatasetRecord,
4
- } from '../../../../../libs/common/domain/src/lib/model/record'
1
+ import { CatalogRecord } from '../../../../../libs/common/domain/src/lib/model/record'
5
2
 
6
3
  export class MetadataMapperContext {
7
4
  readonly location?
@@ -4,6 +4,7 @@ export function matchProtocol(protocol: string): ServiceProtocol {
4
4
  if (/wms/i.test(protocol)) return 'wms'
5
5
  if (/wfs/i.test(protocol)) return 'wfs'
6
6
  if (/wmts/i.test(protocol)) return 'wmts'
7
+ if (/tms/i.test(protocol)) return 'tms'
7
8
  if (/wps/i.test(protocol)) return 'wps'
8
9
  if (/ogc\W*api\W*features/i.test(protocol)) return 'ogcFeatures'
9
10
  if (/esri/i.test(protocol)) return 'esriRest'
@@ -4,23 +4,37 @@ import {
4
4
  ReuseType,
5
5
  } from '../../../../../../libs/common/domain/src/lib/model/record'
6
6
 
7
- export function getResourceType(type: string): RecordKind {
8
- const possibleResourceTypes = {
9
- application: 'reuse',
10
- dataset: 'dataset',
11
- map: 'reuse',
12
- 'map/static': 'reuse', // old index field
13
- 'map/interactive': 'reuse', // old index field
14
- 'map-interactive': 'reuse', // new index field since Oct 10, 2024
15
- 'map-static': 'reuse', // new index field
16
- mapDigital: 'reuse',
17
- interactiveMap: 'reuse',
18
- staticMap: 'reuse',
19
- service: 'service',
20
- } as const
7
+ export const PossibleResourceTypes = {
8
+ application: 'reuse',
9
+ dataset: 'dataset',
10
+ interactiveMap: 'reuse',
11
+ map: 'reuse',
12
+ 'map/static': 'reuse', // old index field
13
+ 'map/interactive': 'reuse', // old index field
14
+ 'map-interactive': 'reuse', // new index field since Oct 10, 2024
15
+ 'map-static': 'reuse', // new index field
16
+ mapDigital: 'reuse',
17
+ series: 'dataset',
18
+ service: 'service',
19
+ staticMap: 'reuse',
20
+ } as const
21
+
22
+ type KindType = keyof typeof PossibleResourceTypes
23
+ type ResourceType = 'reuse' | 'dataset' | 'service'
24
+ type PossibleResourceTypesGrouped = {
25
+ [K in ResourceType]: KindType[]
26
+ }
27
+
28
+ export const PossibleResourceTypesDefinition = Object.entries(
29
+ PossibleResourceTypes
30
+ ).reduce(
31
+ (acc, [key, val]) => ((acc[val] ??= []).push(key), acc),
32
+ {}
33
+ ) as PossibleResourceTypesGrouped
21
34
 
35
+ export function getResourceType(type: string): RecordKind {
22
36
  return (
23
- possibleResourceTypes[type as keyof typeof possibleResourceTypes] ||
37
+ PossibleResourceTypes[type as keyof typeof PossibleResourceTypes] ||
24
38
  'dataset'
25
39
  )
26
40
  }
@@ -174,10 +174,10 @@ export const GEO2FRANCE_SERVICE_EAUXUSEES_RECORD: ServiceRecord = {
174
174
  onlineResources: [
175
175
  {
176
176
  type: 'endpoint',
177
- endpointUrl: new URL(
177
+ url: new URL(
178
178
  'https://services.sandre.eaufrance.fr/geo/odp?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities'
179
179
  ),
180
- protocol: 'wfs',
180
+ accessServiceProtocol: 'wfs',
181
181
  description:
182
182
  'Ouvrages de dépollution - Système de traitement des eaux usées - France entière',
183
183
  translations: {},
@@ -617,7 +617,7 @@ Die Quelle ist zu bezeichnen: „Quelle: Stadt Zürich“.`,
617
617
  status: 'completed',
618
618
  updateFrequency: 'asNeeded',
619
619
  defaultLanguage: 'de',
620
- otherLanguages: ['fr', 'it', 'en', 'rm'],
620
+ otherLanguages: ['fr', 'it', 'en', 'rm', 'aar'],
621
621
  translations: {
622
622
  abstract: {
623
623
  en: 'The perimeters of the Alpine Convention in Switzerland. The Alpine Convention is an international treaty between the eight Alpine countries: Germany, France, Italy, Liechtenstein, Monaco, Austria, Switzerland and Slovenia, plus the European Union. The aim of the treaty is to protect the Alps by means of cross-sectoral, integrated and sustainable policies.',
@@ -772,10 +772,10 @@ export const GEOCAT_CH_SERVICE_RECORD: ServiceRecord = {
772
772
  },
773
773
  {
774
774
  type: 'endpoint',
775
- endpointUrl: new URL(
775
+ url: new URL(
776
776
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS'
777
777
  ),
778
- protocol: 'wms',
778
+ accessServiceProtocol: 'wms',
779
779
  description:
780
780
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS',
781
781
  translations: {
@@ -629,10 +629,10 @@ export const METAWAL_SERVICE_RECORD: ServiceRecord = {
629
629
  {
630
630
  description:
631
631
  'Ce service ESRI-REST permet de visualiser la couche de données "Plan parcellaire cadastral - situation 01/01/2016" (uniquement les données du bâti et le parcellaire)',
632
- endpointUrl: new URL(
632
+ url: new URL(
633
633
  'https://geoservices.wallonie.be/arcgis/rest/services/PLAN_REGLEMENT/CADMAP_2016_PARCELLES/MapServer'
634
634
  ),
635
- protocol: 'esriRest',
635
+ accessServiceProtocol: 'esriRest',
636
636
  type: 'endpoint',
637
637
  translations: {},
638
638
  },
@@ -274,10 +274,10 @@ export const WALLONIE_SERVICE_NAPITSWALLONIA_RECORD: ServiceRecord = {
274
274
  onlineResources: [
275
275
  {
276
276
  type: 'endpoint',
277
- endpointUrl: new URL(
277
+ url: new URL(
278
278
  'https://metawal.wallonie.be/geonetwork/api/collections/napits'
279
279
  ),
280
- protocol: 'other',
280
+ accessServiceProtocol: 'other',
281
281
  description: "Point d'accès OGC API Records pour NAP-ITS-Wallonia.",
282
282
  translations: {},
283
283
  },
@@ -152,12 +152,22 @@ export class Gn4FieldMapper {
152
152
  )
153
153
  const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
154
154
  const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null // set the first language as main one as fallback
155
+
156
+ return {
157
+ ...output,
158
+ defaultLanguage,
159
+ }
160
+ },
161
+ otherLanguage: (output, source) => {
162
+ const langList = getAsArray(selectField<string>(source, 'otherLanguage'))
163
+ const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang])
164
+ const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null
155
165
  const otherLanguages = languages.filter(
156
166
  (lang) => lang !== defaultLanguage
157
167
  )
168
+
158
169
  return {
159
170
  ...output,
160
- defaultLanguage,
161
171
  otherLanguages,
162
172
  }
163
173
  },
@@ -294,12 +304,52 @@ export class Gn4FieldMapper {
294
304
  ) ?? {},
295
305
  '_source'
296
306
  )
297
- const featureCatalogIdentifier = selectField(
307
+ const featureCatalogIdentifier: string = selectField(
298
308
  <SourceWithUnknownProps>fcatSource,
299
309
  'uuid'
300
310
  )
301
- return featureCatalogIdentifier
302
- ? this.addExtra({ featureCatalogIdentifier }, output)
311
+ const sourceOfLinks = getAsArray(
312
+ selectField(
313
+ <SourceWithUnknownProps>selectField(source, 'related'),
314
+ 'hassources'
315
+ )
316
+ )
317
+ const sourceOfIdentifiers: string[] = sourceOfLinks
318
+ .filter((link) => link['origin'] === 'catalog')
319
+ .map((link) => {
320
+ return selectField(
321
+ selectField(<SourceWithUnknownProps>link, '_source'),
322
+ 'uuid'
323
+ )
324
+ })
325
+ const extraValues: Record<string, string | string[]> = {}
326
+ if (featureCatalogIdentifier) {
327
+ extraValues.featureCatalogIdentifier = featureCatalogIdentifier
328
+ }
329
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
330
+ extraValues.sourceOfIdentifiers = sourceOfIdentifiers
331
+ }
332
+ return Object.keys(extraValues).length > 0
333
+ ? this.addExtra(extraValues, output)
334
+ : output
335
+ },
336
+ recordLink: (output, source) => {
337
+ const recordLinks = getAsArray(
338
+ selectField<SourceWithUnknownProps[]>(source, 'recordLink')
339
+ )
340
+ const sourcesIdentifiers: string[] = recordLinks
341
+ .filter(
342
+ (link) => link['origin'] === 'catalog' && link['type'] === 'sources'
343
+ )
344
+ .map((link) => selectField(<SourceWithUnknownProps>link, 'to'))
345
+
346
+ return sourcesIdentifiers && sourcesIdentifiers.length > 0
347
+ ? this.addExtra(
348
+ {
349
+ sourcesIdentifiers,
350
+ },
351
+ output
352
+ )
303
353
  : output
304
354
  },
305
355
  isPublishedToAll: (output, source) =>
@@ -430,6 +480,7 @@ export class Gn4FieldMapper {
430
480
  /^OGC:WMS/.test(protocol) ||
431
481
  /^OGC:WFS/.test(protocol) ||
432
482
  /^OGC:WMTS/.test(protocol) ||
483
+ /TMS/i.test(protocol) ||
433
484
  /ogc\W*api\W*features/i.test(protocol) ||
434
485
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
435
486
  ) {
@@ -509,8 +560,8 @@ export class Gn4FieldMapper {
509
560
  return {
510
561
  ...distribution,
511
562
  type,
512
- endpointUrl: url,
513
- protocol: accessServiceProtocol,
563
+ url: url,
564
+ accessServiceProtocol: accessServiceProtocol,
514
565
  }
515
566
  }
516
567
  }
@@ -164,7 +164,6 @@ export type MetadataObject = Partial<{
164
164
  resourceDate: ResourceDate[]
165
165
  resourceEdition: string
166
166
  resourceIdentifier: ResourceIdentifier[]
167
- resourceLanguage: string[]
168
167
  resourceTemporalDateRange: ResourceTemporalDateRange[]
169
168
  resourceTemporalExtentDateRange: ResourceTemporalDateRange[]
170
169
  resourceTitleObject: MultilingualField
@@ -363,11 +363,18 @@ export function readOnlineResources(rootEl: XmlElement): OnlineResource[] {
363
363
  )(rootEl)
364
364
  }
365
365
 
366
- function readLocaleElement(): ChainableFunction<XmlElement, LanguageCode> {
366
+ export function readLocaleElement(): ChainableFunction<
367
+ XmlElement,
368
+ LanguageCode
369
+ > {
367
370
  return pipe(
368
371
  findChildElement('lan:LanguageCode'),
369
372
  readAttribute('codeListValue'),
370
- map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null))
373
+ map((lang) => {
374
+ const normalized = lang?.toLowerCase()
375
+ const iso2Lang = LANG_3_TO_2_MAPPER[normalized]
376
+ return iso2Lang ?? lang
377
+ })
371
378
  )
372
379
  }
373
380
 
@@ -381,6 +388,9 @@ export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
381
388
  export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
382
389
  return pipe(
383
390
  findChildrenElement('mdb:otherLocale', false),
384
- mapArray(readLocaleElement())
391
+ mapArray(readLocaleElement()),
392
+ map((languages) =>
393
+ languages.filter((lang): lang is LanguageCode => lang !== null)
394
+ )
385
395
  )(rootEl)
386
396
  }
@@ -529,7 +529,11 @@ export function writeOnlineResources(
529
529
  }
530
530
 
531
531
  function writeLocaleElement(language: LanguageCode) {
532
- const lang3 = LANG_2_TO_3_MAPPER[language.toLowerCase()]
532
+ const normalizedLang = language.toLowerCase()
533
+ const lang3 =
534
+ normalizedLang.length === 2
535
+ ? LANG_2_TO_3_MAPPER[normalizedLang]
536
+ : normalizedLang
533
537
  return pipe(
534
538
  findChildOrCreate('lan:PT_Locale'),
535
539
  writeAttribute('id', language.toUpperCase()),
@@ -65,7 +65,8 @@ export function extractCharacterString(): ChainableFunction<
65
65
  return pipe(
66
66
  fallback(
67
67
  findChildElement('gco:CharacterString', false),
68
- findChildElement('gmx:Anchor', false)
68
+ findChildElement('gmx:Anchor', false),
69
+ findChildElement('gmx:MimeFileType', false)
69
70
  ),
70
71
  readText()
71
72
  )
@@ -965,8 +966,8 @@ export function extractServiceOnlineResources(): ChainableFunction<
965
966
  } else {
966
967
  return {
967
968
  type: 'endpoint',
968
- endpointUrl: url,
969
- protocol,
969
+ url: url,
970
+ accessServiceProtocol: protocol,
970
971
  ...(description && { description }),
971
972
  translations,
972
973
  }
@@ -1161,11 +1162,14 @@ export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
1161
1162
  findChildrenElement('gmd:locale', false),
1162
1163
  mapArray(
1163
1164
  pipe(
1164
- findChildElement('gmd:LanguageCode'),
1165
+ findChildElement('lan:LanguageCode'),
1165
1166
  readAttribute('codeListValue'),
1166
- map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()])
1167
+ map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang)
1167
1168
  )
1168
1169
  ),
1170
+ map((languages) =>
1171
+ languages.filter((lang): lang is LanguageCode => lang !== null)
1172
+ ),
1169
1173
  map((languages) => (languages.length ? languages : [defaultLanguage]))
1170
1174
  )(rootEl)
1171
1175
  }
@@ -1173,7 +1177,7 @@ export function readOtherLanguages(rootEl: XmlElement): LanguageCode[] {
1173
1177
  export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
1174
1178
  return pipe(
1175
1179
  findChildElement('gmd:language', false),
1176
- findChildElement('gmd:LanguageCode'),
1180
+ findChildElement('lan:LanguageCode'),
1177
1181
  readAttribute('codeListValue'),
1178
1182
  map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null))
1179
1183
  )(rootEl)
@@ -1227,7 +1227,7 @@ export function writeLineage(record: DatasetRecord, rootEl: XmlElement) {
1227
1227
  }
1228
1228
 
1229
1229
  export function getServiceEndpointProtocol(endpoint: ServiceEndpoint): string {
1230
- switch (endpoint.protocol.toLowerCase()) {
1230
+ switch (endpoint.accessServiceProtocol.toLowerCase()) {
1231
1231
  case 'wfs':
1232
1232
  return 'OGC:WFS'
1233
1233
  case 'wms':
@@ -1235,14 +1235,14 @@ export function getServiceEndpointProtocol(endpoint: ServiceEndpoint): string {
1235
1235
  case 'wps':
1236
1236
  return 'OGC:WPS'
1237
1237
  default:
1238
- return endpoint.protocol
1238
+ return endpoint.accessServiceProtocol
1239
1239
  }
1240
1240
  }
1241
1241
 
1242
1242
  export function createOnlineResource(onlineResource: ServiceOnlineResource) {
1243
1243
  let linkageUrl, functionCode, protocol
1244
1244
  if (onlineResource.type === 'endpoint') {
1245
- linkageUrl = onlineResource.endpointUrl.toString()
1245
+ linkageUrl = onlineResource.url.toString()
1246
1246
  protocol = getServiceEndpointProtocol(onlineResource)
1247
1247
  functionCode = 'download'
1248
1248
  } else {
@@ -1471,7 +1471,10 @@ export function writeLanguages(record: DatasetRecord, rootEl: XmlElement) {
1471
1471
  writeAttribute('id', lang.toUpperCase()),
1472
1472
  createNestedChild('gmd:languageCode', 'gmd:LanguageCode'),
1473
1473
  writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'),
1474
- writeAttribute('codeListValue', LANG_2_TO_3_MAPPER[lang])
1474
+ writeAttribute(
1475
+ 'codeListValue',
1476
+ lang.length === 2 ? LANG_2_TO_3_MAPPER[lang] : lang
1477
+ )
1475
1478
  )
1476
1479
 
1477
1480
  // add new languages (only if other than default one)
@@ -8,6 +8,7 @@ export const ES_SOURCE_SUMMARY = [
8
8
  'overview',
9
9
  'logo',
10
10
  'codelist_status_text',
11
+ 'link',
11
12
  'linkProtocol',
12
13
  'contactForResource.organisation',
13
14
  'contact.organisation',
@@ -124,11 +124,11 @@ export class ElasticsearchService {
124
124
  this.runtimeFields[fieldName] = expression
125
125
  }
126
126
 
127
- getMetadataByIdPayload(uuid: string): EsSearchParams {
127
+ getMetadataByIdsPayload(uuids: string[]): EsSearchParams {
128
128
  return {
129
129
  query: {
130
130
  ids: {
131
- values: [uuid],
131
+ values: uuids,
132
132
  },
133
133
  },
134
134
  }
@@ -299,14 +299,6 @@ export class ElasticsearchService {
299
299
 
300
300
  private mustNotFilters(): Record<string, unknown>[] {
301
301
  return [
302
- {
303
- ...this.queryFilterOnValues('resourceType', [
304
- 'service',
305
- 'map',
306
- 'map/static',
307
- 'mapDigital',
308
- ]),
309
- },
310
302
  {
311
303
  query_string: {
312
304
  query:
@@ -429,7 +421,7 @@ export class ElasticsearchService {
429
421
  must_not: this.mustNotFilters(),
430
422
  },
431
423
  },
432
- _source: ['resourceTitleObject', 'uuid'],
424
+ _source: ['resourceTitleObject', 'uuid', 'resourceType'],
433
425
  from: 0,
434
426
  size: 20,
435
427
  }
@@ -31,7 +31,7 @@ import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain
31
31
  import {
32
32
  RecordsApiService,
33
33
  SearchApiService,
34
- FeatureResponseApiModel,
34
+ LanguagesApiService,
35
35
  } from '../../../../../../libs/data-access/gn4/src'
36
36
  import {
37
37
  combineLatest,
@@ -47,6 +47,7 @@ import {
47
47
  import { catchError, map, tap } from 'rxjs/operators'
48
48
  import { lt } from 'semver'
49
49
  import { ElasticsearchService } from './elasticsearch'
50
+ import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src'
50
51
 
51
52
  const minPublicationApiVersion = '4.2.5'
52
53
 
@@ -65,7 +66,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
65
66
  private gn4SearchHelper: ElasticsearchService,
66
67
  private gn4Mapper: Gn4Converter,
67
68
  private gn4RecordsApi: RecordsApiService,
68
- private platformService: PlatformServiceInterface
69
+ private platformService: PlatformServiceInterface,
70
+ private gn4LanguagesApi: LanguagesApiService
69
71
  ) {}
70
72
 
71
73
  search({
@@ -129,9 +131,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
129
131
  return this.gn4SearchApi
130
132
  .search(
131
133
  'bucket',
132
- ['fcats'],
134
+ ['fcats', 'hassources'],
133
135
  JSON.stringify(
134
- this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)
136
+ this.gn4SearchHelper.getMetadataByIdsPayload([uniqueIdentifier])
135
137
  )
136
138
  )
137
139
  .pipe(
@@ -142,6 +144,27 @@ export class Gn4Repository implements RecordsRepositoryInterface {
142
144
  )
143
145
  }
144
146
 
147
+ getMultipleRecords(
148
+ uniqueIdentifiers: string[]
149
+ ): Observable<CatalogRecord[] | null> {
150
+ return this.gn4SearchApi
151
+ .search(
152
+ 'bucket',
153
+ undefined,
154
+ JSON.stringify(
155
+ this.gn4SearchHelper.getMetadataByIdsPayload(uniqueIdentifiers)
156
+ )
157
+ )
158
+ .pipe(
159
+ map((results: Gn4SearchResults) => results.hits.hits),
160
+ switchMap((records) =>
161
+ records && records.length > 0
162
+ ? this.gn4Mapper.readRecords(records)
163
+ : of(null)
164
+ )
165
+ )
166
+ }
167
+
145
168
  private mapEmbeddedFeatureCatalog(
146
169
  featureTypes: Array<DatasetFeatureType>
147
170
  ): DatasetFeatureCatalog {
@@ -152,7 +175,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
152
175
  attributes: Array.isArray(featureType.attributeTable)
153
176
  ? featureType.attributeTable.map((attr) => ({
154
177
  name: attr.name,
178
+ code: attr.code,
155
179
  title: attr.definition,
180
+ type: attr.type,
156
181
  }))
157
182
  : [],
158
183
  })),
@@ -164,7 +189,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
164
189
  ): Observable<DatasetFeatureCatalog | null> {
165
190
  if (
166
191
  record.extras?.['featureTypes'] &&
167
- Array.isArray(record.extras['featureTypes'])
192
+ Array.isArray(record.extras['featureTypes']) &&
193
+ record.extras['featureTypes'].length > 0
168
194
  ) {
169
195
  return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']))
170
196
  }
@@ -200,6 +226,24 @@ export class Gn4Repository implements RecordsRepositoryInterface {
200
226
  )
201
227
  }
202
228
 
229
+ getSources(record: CatalogRecord): Observable<CatalogRecord[]> {
230
+ const sourcesIdentifiers = record.extras?.['sourcesIdentifiers'] as string[]
231
+ if (sourcesIdentifiers && sourcesIdentifiers.length > 0) {
232
+ return this.getMultipleRecords(sourcesIdentifiers)
233
+ }
234
+ return of(null)
235
+ }
236
+
237
+ getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]> {
238
+ const sourceOfIdentifiers = record.extras?.[
239
+ 'sourceOfIdentifiers'
240
+ ] as string[]
241
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
242
+ return this.getMultipleRecords(sourceOfIdentifiers)
243
+ }
244
+ return of(null)
245
+ }
246
+
203
247
  aggregate(params: AggregationsParams): Observable<Aggregations> {
204
248
  // if aggregations are empty, return an empty object right away
205
249
  if (Object.keys(params).length === 0) return of({})
@@ -362,9 +406,12 @@ export class Gn4Repository implements RecordsRepositoryInterface {
362
406
  const record = await converter.readRecord(fetchedRecordAsXml)
363
407
 
364
408
  record.title = `${record.title} (Copy)`
365
- await converter.writeRecord(record, fetchedRecordAsXml)
409
+ const recordAsXml = await converter.writeRecord(
410
+ record,
411
+ fetchedRecordAsXml
412
+ )
366
413
 
367
- return this.saveRecord(record, '', false)
414
+ return this.saveRecord(record, recordAsXml, false)
368
415
  }),
369
416
  exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
370
417
  catchError((error: HttpErrorResponse) => {
@@ -465,6 +512,18 @@ export class Gn4Repository implements RecordsRepositoryInterface {
465
512
  )
466
513
  }
467
514
 
515
+ getApplicationLanguages(): Observable<string[]> {
516
+ return this.gn4LanguagesApi
517
+ .getApplicationLanguages()
518
+ .pipe(
519
+ map((languages) =>
520
+ languages
521
+ .map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
522
+ .filter((code): code is string => !!code)
523
+ )
524
+ )
525
+ }
526
+
468
527
  private getRecordAsXml(uniqueIdentifier: string): Observable<string | null> {
469
528
  return this.gn4RecordsApi
470
529
  .getRecordAs(