geonetwork-ui 2.6.0-dev.7be6567ef → 2.6.0-dev.86c0fa7b5

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 (521) 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 +47 -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 +5 -2
  12. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +5 -13
  13. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +79 -16
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  15. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -1
  16. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  17. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  18. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  19. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +49 -9
  20. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  21. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -3
  22. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +29 -6
  23. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  24. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +273 -0
  25. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  26. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  27. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  28. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  29. package/esm2022/libs/feature/record/src/index.mjs +2 -4
  30. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +17 -16
  31. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  32. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  33. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  34. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
  35. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +98 -19
  36. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  37. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  38. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +14 -5
  39. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -15
  40. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  41. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  42. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  43. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  44. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  45. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  46. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  47. package/esm2022/libs/feature/search/src/lib/constants.mjs +4 -2
  48. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  49. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  50. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +5 -3
  51. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  52. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  53. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +30 -10
  54. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  55. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  56. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  57. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  58. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  59. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  60. package/esm2022/libs/ui/elements/src/index.mjs +6 -2
  61. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  62. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
  63. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
  64. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  65. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +122 -0
  67. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
  68. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +68 -0
  69. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
  70. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  71. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  72. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  73. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +37 -12
  74. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +5 -1
  75. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +72 -0
  76. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +169 -0
  77. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +32 -4
  78. package/esm2022/libs/ui/inputs/src/index.mjs +3 -2
  79. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  80. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  81. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  82. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  83. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  84. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  85. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  86. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  87. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
  88. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  89. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  90. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  91. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  92. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  93. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  94. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +25 -3
  95. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
  96. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  97. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +73 -0
  98. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
  99. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  100. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  101. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  102. package/esm2022/libs/ui/search/src/index.mjs +3 -1
  103. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  104. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  105. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  106. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  107. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  108. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +21 -12
  109. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +39 -17
  110. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +19 -5
  111. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  112. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  113. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  114. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
  115. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
  116. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  117. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  118. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  119. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +16 -6
  120. package/esm2022/translations/de.json +84 -9
  121. package/esm2022/translations/en.json +84 -9
  122. package/esm2022/translations/es.json +83 -8
  123. package/esm2022/translations/fr.json +85 -10
  124. package/esm2022/translations/it.json +83 -8
  125. package/esm2022/translations/nl.json +83 -8
  126. package/esm2022/translations/pt.json +83 -8
  127. package/fesm2022/geonetwork-ui.mjs +3788 -1429
  128. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  129. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  130. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  131. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  132. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  133. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  134. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  135. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  136. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  137. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  138. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  139. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  140. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  141. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  142. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  143. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  144. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  145. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  146. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
  147. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  148. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  149. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
  150. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  151. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  152. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  153. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +26 -17
  154. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  155. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
  156. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  157. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  158. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  159. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  160. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  161. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +6 -3
  162. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  163. package/libs/feature/editor/src/index.d.ts +1 -0
  164. package/libs/feature/editor/src/index.d.ts.map +1 -1
  165. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +52 -0
  166. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  167. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  168. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  169. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  170. 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
  171. package/libs/feature/record/src/index.d.ts +1 -3
  172. package/libs/feature/record/src/index.d.ts.map +1 -1
  173. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +15 -4
  174. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  175. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  176. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  177. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  178. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  179. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  180. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  181. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  182. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  183. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  184. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  185. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  186. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +9 -1
  187. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  188. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  189. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  190. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  191. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  192. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  193. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  194. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  195. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  196. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  197. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  198. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  199. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  200. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  201. package/libs/feature/search/src/index.d.ts +1 -1
  202. package/libs/feature/search/src/index.d.ts.map +1 -1
  203. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  204. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  205. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  206. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  207. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  208. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  209. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  210. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  211. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  212. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  213. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  214. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  215. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  216. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  217. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  218. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  219. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  220. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  221. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  222. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  223. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  224. package/libs/ui/elements/src/index.d.ts +5 -1
  225. package/libs/ui/elements/src/index.d.ts.map +1 -1
  226. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  227. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  228. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  229. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  230. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  231. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  232. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +36 -0
  233. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
  234. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  235. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  236. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +13 -0
  237. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  238. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  239. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  240. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  241. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  242. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  243. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  244. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  245. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +27 -0
  246. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  247. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +31 -0
  248. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  249. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +6 -1
  250. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  251. package/libs/ui/inputs/src/index.d.ts +2 -1
  252. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  253. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  254. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  255. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  256. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  257. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  258. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  259. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  260. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  261. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  262. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  263. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  264. package/libs/ui/layout/src/index.d.ts +2 -0
  265. package/libs/ui/layout/src/index.d.ts.map +1 -1
  266. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  267. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  268. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  269. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  270. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  271. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  272. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  273. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  274. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +5 -1
  275. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  276. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +22 -0
  277. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  278. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  279. package/libs/ui/map/src/index.d.ts +1 -0
  280. package/libs/ui/map/src/index.d.ts.map +1 -1
  281. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  282. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  283. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  284. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  285. package/libs/ui/search/src/index.d.ts +2 -0
  286. package/libs/ui/search/src/index.d.ts.map +1 -1
  287. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  288. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  289. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  290. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  291. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  292. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  293. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  294. package/libs/ui/search/src/lib/ui-search.module.d.ts +22 -19
  295. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  296. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  297. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  298. package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
  299. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  300. package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
  301. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  302. package/libs/util/shared/src/index.d.ts +1 -0
  303. package/libs/util/shared/src/index.d.ts.map +1 -1
  304. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  305. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  306. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  307. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  308. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  309. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  310. package/package.json +2 -2
  311. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  312. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  313. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  314. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  315. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  316. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +3 -3
  317. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  318. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  319. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +70 -6
  320. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  321. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
  322. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
  323. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +10 -6
  324. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +7 -4
  325. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +4 -1
  326. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +4 -12
  327. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +118 -16
  328. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  329. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +11 -0
  330. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  331. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +27 -11
  332. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
  333. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +36 -26
  334. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +16 -2
  335. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  336. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +62 -1
  337. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  338. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +58 -10
  339. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +40 -1
  340. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  341. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +31 -1
  342. package/src/libs/feature/editor/src/index.ts +1 -0
  343. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +120 -0
  344. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +325 -0
  345. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  346. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  347. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  348. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  349. package/src/libs/feature/record/src/index.ts +1 -3
  350. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +17 -11
  351. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +17 -15
  352. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  353. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  354. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  355. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  356. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
  357. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +38 -11
  358. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +133 -19
  359. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  360. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  361. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +27 -3
  362. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +21 -17
  363. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  364. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  365. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  366. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  367. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  368. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  369. package/src/libs/feature/search/src/index.ts +1 -1
  370. package/src/libs/feature/search/src/lib/constants.ts +3 -1
  371. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -7
  372. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  373. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  374. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  375. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  376. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  377. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  378. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  379. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  380. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  381. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +26 -5
  382. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  383. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  384. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  385. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  386. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  387. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  388. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  389. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  390. package/src/libs/ui/elements/src/index.ts +5 -1
  391. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  392. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  393. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  394. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  395. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
  396. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  397. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  398. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  399. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  400. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.css +0 -0
  401. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +83 -0
  402. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +131 -0
  403. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  404. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  405. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  406. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +11 -0
  407. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +70 -0
  408. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  409. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
  410. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  411. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  412. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  413. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  414. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  415. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +3 -2
  416. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +48 -9
  417. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +4 -0
  418. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +107 -0
  419. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +83 -0
  420. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  421. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +110 -0
  422. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +191 -0
  423. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +14 -1
  424. package/src/libs/ui/inputs/src/index.ts +2 -1
  425. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  426. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  427. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  428. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  429. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  430. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  431. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  432. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  433. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  434. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  435. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +7 -8
  436. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  437. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  438. package/src/libs/ui/layout/src/index.ts +2 -0
  439. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  440. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  441. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  442. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  443. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  444. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  445. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  446. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  447. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  448. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  449. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +4 -7
  450. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +20 -0
  451. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  452. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  453. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  454. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +27 -0
  455. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +91 -0
  456. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +2 -6
  457. package/src/libs/ui/map/src/index.ts +1 -0
  458. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  459. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  460. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  461. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  462. 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
  463. package/src/libs/ui/search/src/index.ts +2 -0
  464. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  465. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  466. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  467. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  468. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  469. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  470. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  471. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  472. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +15 -11
  473. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  474. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -24
  475. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +33 -14
  476. package/src/libs/ui/search/src/lib/ui-search.module.ts +8 -0
  477. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +4 -3
  478. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  479. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  480. package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
  481. package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
  482. package/src/libs/util/shared/src/index.ts +1 -0
  483. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  484. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +15 -3
  485. package/src/libs/util/shared/src/lib/links/link-utils.ts +33 -12
  486. package/tailwind.base.config.js +3 -0
  487. package/tailwind.base.css +19 -26
  488. package/translations/de.json +84 -9
  489. package/translations/en.json +84 -9
  490. package/translations/es.json +83 -8
  491. package/translations/fr.json +85 -10
  492. package/translations/it.json +83 -8
  493. package/translations/nl.json +83 -8
  494. package/translations/pt.json +83 -8
  495. package/translations/sk.json +83 -8
  496. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  497. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  498. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  499. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -46
  500. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  501. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  502. 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
  503. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  504. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  505. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  506. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  507. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -12
  508. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  509. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  510. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  511. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  512. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  513. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  514. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  515. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -30
  516. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -48
  517. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  518. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  519. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  520. /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
  521. /package/src/libs/{ui/elements/src/lib/related-record-card/related-record-card.component.css → feature/search/src/lib/results-hits/results-hits.container.component.css} +0 -0
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  ChangeDetectionStrategy,
3
3
  Component,
4
+ EventEmitter,
4
5
  Input,
5
6
  Output,
6
7
  } from '@angular/core'
@@ -9,7 +10,10 @@ import { BehaviorSubject, combineLatest, of } from 'rxjs'
9
10
  import { catchError, finalize, map, switchMap, tap } from 'rxjs/operators'
10
11
  import { MdViewFacade } from '../state'
11
12
  import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
12
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
13
+ import {
14
+ DatasetOnlineResource,
15
+ DatasetServiceDistribution,
16
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
13
17
  import { DropdownSelectorComponent } from '../../../../../../libs/ui/inputs/src'
14
18
  import {
15
19
  ChartViewComponent,
@@ -40,11 +44,16 @@ export class DataViewComponent {
40
44
  @Input() set exceedsLimit(value: boolean) {
41
45
  this.excludeWfs$.next(value)
42
46
  }
47
+ @Input() set selectedView(value: string) {
48
+ if (value !== 'map') {
49
+ this.linkSelected.emit(this.selectedLink$.value)
50
+ }
51
+ }
43
52
  @Output() chartConfig$ = new BehaviorSubject<DatavizConfigurationModel>(null)
53
+ @Output() linkSelected = new EventEmitter<DatasetOnlineResource>()
44
54
  cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(
45
55
  map((highF) => !highF)
46
56
  )
47
- hidePreview = false
48
57
  excludeWfs$ = new BehaviorSubject(false)
49
58
  compatibleDataLinks$ = combineLatest([
50
59
  this.mdViewFacade.dataLinks$,
@@ -71,6 +80,10 @@ export class DataViewComponent {
71
80
  )
72
81
  selectedLink$ = new BehaviorSubject<DatasetOnlineResource>(null)
73
82
 
83
+ hidePreview$ = this.excludeWfs$.pipe(
84
+ map((excludeWfs) => this.mode === 'chart' && excludeWfs)
85
+ )
86
+
74
87
  constructor(private mdViewFacade: MdViewFacade) {}
75
88
 
76
89
  setChartConfig(event: DatavizConfigurationModel) {
@@ -79,19 +92,8 @@ export class DataViewComponent {
79
92
 
80
93
  selectLink(linkAsString: string) {
81
94
  const link: DatasetOnlineResource = JSON.parse(linkAsString)
95
+ this.linkSelected.emit(link)
82
96
  link.url = new URL(link.url)
83
- this.excludeWfs$
84
- .pipe(
85
- tap((excludeWfs) => {
86
- this.hidePreview =
87
- link['accessServiceProtocol'] === 'wfs' &&
88
- excludeWfs &&
89
- this.mode === 'chart'
90
- ? true
91
- : false
92
- this.selectedLink$.next(link)
93
- })
94
- )
95
- .subscribe()
97
+ this.selectedLink$.next(link)
96
98
  }
97
99
  }
@@ -9,10 +9,10 @@ import {
9
9
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
10
10
  import { BehaviorSubject, combineLatest, map } from 'rxjs'
11
11
  import { MdViewFacade } from '../state'
12
- import { GN_UI_VERSION } from '../gn-ui-version.token'
13
12
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
14
13
  import { CommonModule } from '@angular/common'
15
14
  import { TranslateModule } from '@ngx-translate/core'
15
+ import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
16
16
 
17
17
  export const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken<string>(
18
18
  'webComponentEmbedderUrl'
@@ -40,7 +40,7 @@ export class DataViewPermalinkComponent {
40
40
  ]).pipe(
41
41
  map(([viewType, config, metadata]) => {
42
42
  const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin)
43
- url.searchParams.set('v', `${this.version}`)
43
+ url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`)
44
44
  if (viewType === 'chart') {
45
45
  if (config) {
46
46
  const { aggregation, xProperty, yProperty, chartType } = config
@@ -74,7 +74,6 @@ export class DataViewPermalinkComponent {
74
74
  @Optional()
75
75
  @Inject(WEB_COMPONENT_EMBEDDER_URL)
76
76
  protected wcEmbedderBaseUrl: string,
77
- @Inject(GN_UI_VERSION) private version: string,
78
77
  private facade: MdViewFacade
79
78
  ) {}
80
79
  }
@@ -1,4 +1,4 @@
1
- <div class="px-5 my-1">
1
+ <div>
2
2
  <mat-tab-group
3
3
  [selectedIndex]="0"
4
4
  animationDuration="0ms"
@@ -7,10 +7,10 @@ import {
7
7
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
8
8
  import { MdViewFacade } from '../state'
9
9
  import { BehaviorSubject, combineLatest, map } from 'rxjs'
10
- import { GN_UI_VERSION } from '../gn-ui-version.token'
11
10
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
12
11
  import { CommonModule } from '@angular/common'
13
12
  import { TranslateModule } from '@ngx-translate/core'
13
+ import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
14
14
 
15
15
  @Component({
16
16
  selector: 'gn-ui-data-view-web-component',
@@ -36,7 +36,7 @@ export class DataViewWebComponentComponent {
36
36
  if (config) {
37
37
  const { aggregation, xProperty, yProperty, chartType } = config
38
38
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
39
- this.version
39
+ GEONETWORK_UI_TAG_NAME
40
40
  }/gn-wc.js"></script>
41
41
  <gn-dataset-view-chart
42
42
  api-url="${new URL(
@@ -59,7 +59,7 @@ export class DataViewWebComponentComponent {
59
59
  return ''
60
60
  } else if (viewType === 'table') {
61
61
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
62
- this.version
62
+ GEONETWORK_UI_TAG_NAME
63
63
  }/gn-wc.js"></script>
64
64
  <gn-dataset-view-table
65
65
  api-url="${new URL(
@@ -76,7 +76,7 @@ export class DataViewWebComponentComponent {
76
76
  ></gn-dataset-view-table>`
77
77
  } else {
78
78
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
79
- this.version
79
+ GEONETWORK_UI_TAG_NAME
80
80
  }/gn-wc.js"></script>
81
81
  <gn-dataset-view-map
82
82
  api-url="${new URL(
@@ -97,7 +97,6 @@ export class DataViewWebComponentComponent {
97
97
 
98
98
  constructor(
99
99
  @Inject(Configuration) private config: Configuration,
100
- @Inject(GN_UI_VERSION) private version: string,
101
100
  private facade: MdViewFacade
102
101
  ) {}
103
102
  }
@@ -1,9 +1,9 @@
1
1
  <gn-ui-button
2
2
  *ngIf="externalViewer"
3
3
  (buttonClick)="openInExternalViewer()"
4
- type="secondary"
4
+ type="primary"
5
5
  [title]="'record.externalViewer.open' | translate"
6
- extraClass="ms-2 !rounded-lg"
6
+ [extraClass]="extraClass + 'bg-primary ms-2 !rounded-lg'"
7
7
  >
8
8
  <ng-icon name="matOpenInNew"></ng-icon>
9
9
  </gn-ui-button>
@@ -36,6 +36,7 @@ export const EXTERNAL_VIEWER_OPEN_NEW_TAB = new InjectionToken<boolean>(
36
36
  })
37
37
  export class ExternalViewerButtonComponent {
38
38
  @Input() link: DatasetOnlineResource
39
+ @Input() extraClass = ''
39
40
 
40
41
  get externalViewer() {
41
42
  return !!this.urlTemplate && !!this.supportedLinkLayerType
@@ -1,18 +1,42 @@
1
- <div class="w-full h-full flex flex-col p-1">
2
- <div class="w-full flex justify-end">
1
+ <div class="w-full h-full flex flex-col gap-[13px]">
2
+ <div
3
+ class="flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6"
4
+ >
3
5
  <gn-ui-dropdown-selector
4
- [ngClass]="{ hidden: !displaySource }"
5
- class="truncate p-1 -mx-1 mb-1"
6
- extraBtnClass="!text-primary font-sans font-medium"
6
+ *ngIf="displaySource"
7
+ class="w-full md:flex-1 md:min-w-0"
8
+ extraBtnClass="font-sans font-bold"
7
9
  [title]="'map.select.layer' | translate"
8
10
  [choices]="dropdownChoices$ | async"
9
11
  (selectValue)="selectLinkToDisplay($event)"
10
12
  ></gn-ui-dropdown-selector>
11
- <gn-ui-external-viewer-button
12
- class="shrink-0 py-1 place-self-end"
13
- [link]="selectedLink$ | async"
14
- >
15
- </gn-ui-external-viewer-button>
13
+
14
+ <ng-container *ngIf="(styleLinks$ | async)?.length > 0; else styleDisabled">
15
+ <gn-ui-dropdown-selector
16
+ class="w-full md:flex-1 md:min-w-0"
17
+ extraBtnClass="font-sans font-bold"
18
+ [title]="'map.select.style' | translate"
19
+ [choices]="styleDropdownChoices$ | async"
20
+ (selectValue)="selectStyleToDisplay($event)"
21
+ ></gn-ui-dropdown-selector>
22
+ </ng-container>
23
+ <ng-template #styleDisabled>
24
+ <gn-ui-dropdown-selector
25
+ class="w-full md:flex-1 md:min-w-0 text-gray-400"
26
+ extraBtnClass="font-sans font-bold text-gray-400"
27
+ [title]="'map.select.style' | translate"
28
+ [choices]="styleDropdownChoices$ | async"
29
+ [disabled]="true"
30
+ ></gn-ui-dropdown-selector>
31
+ </ng-template>
32
+
33
+ <div class="self-end md:ml-2">
34
+ <gn-ui-external-viewer-button
35
+ extraClass="w-[44px] h-[44px]"
36
+ [link]="selectedLink$ | async"
37
+ >
38
+ </gn-ui-external-viewer-button>
39
+ </div>
16
40
  </div>
17
41
  <ng-container *ngIf="hidePreview; else mapView">
18
42
  <gn-ui-popup-alert
@@ -49,7 +73,10 @@
49
73
  >
50
74
  <ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
51
75
  </gn-ui-button>
52
- <gn-ui-feature-detail [feature]="selection"></gn-ui-feature-detail>
76
+ <gn-ui-feature-detail
77
+ [featureCatalog]="mdViewFacade.featureCatalog$ | async"
78
+ [feature]="selection"
79
+ ></gn-ui-feature-detail>
53
80
  </div>
54
81
 
55
82
  <div
@@ -3,7 +3,9 @@ import {
3
3
  ChangeDetectionStrategy,
4
4
  ChangeDetectorRef,
5
5
  Component,
6
+ EventEmitter,
6
7
  Input,
8
+ Output,
7
9
  ViewChild,
8
10
  } from '@angular/core'
9
11
  import { MapUtilsService } from '../../../../../../libs/feature/map/src'
@@ -25,11 +27,15 @@ import {
25
27
  map,
26
28
  shareReplay,
27
29
  switchMap,
30
+ take,
28
31
  tap,
29
32
  } from 'rxjs/operators'
30
33
  import { MdViewFacade } from '../state/mdview.facade'
31
34
  import { DataService } from '../../../../../../libs/feature/dataviz/src'
32
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
35
+ import {
36
+ DatasetOnlineResource,
37
+ DatasetServiceDistribution,
38
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
33
39
  import {
34
40
  createViewFromLayer,
35
41
  MapContext,
@@ -39,8 +45,8 @@ import {
39
45
  import {
40
46
  FeatureDetailComponent,
41
47
  MapContainerComponent,
42
- prioritizePageScroll,
43
48
  MapLegendComponent,
49
+ prioritizePageScroll,
44
50
  } from '../../../../../../libs/ui/map/src'
45
51
  import { Feature } from 'geojson'
46
52
  import { NgIconComponent, provideIcons } from '@ng-icons/core'
@@ -61,6 +67,8 @@ import { FetchError } from '../../../../../../libs/util/data-fetcher/src'
61
67
 
62
68
  marker('map.dropdown.placeholder')
63
69
  marker('wfs.feature.limit')
70
+ marker('dataset.error.restrictedAccess')
71
+ marker('map.select.style')
64
72
 
65
73
  @Component({
66
74
  selector: 'gn-ui-map-view',
@@ -87,7 +95,15 @@ export class MapViewComponent implements AfterViewInit {
87
95
  @Input() set exceedsLimit(value: boolean) {
88
96
  this.excludeWfs$.next(value)
89
97
  }
98
+ @Input() set selectedView(value: string) {
99
+ if (value === 'map') {
100
+ this.selectedLink$.pipe(take(1)).subscribe((link) => {
101
+ this.linkSelected.emit(link)
102
+ })
103
+ }
104
+ }
90
105
  @Input() displaySource = true
106
+ @Output() linkSelected = new EventEmitter<DatasetOnlineResource>()
91
107
  @ViewChild('mapContainer') mapContainer: MapContainerComponent
92
108
 
93
109
  excludeWfs$ = new BehaviorSubject(false)
@@ -95,22 +111,33 @@ export class MapViewComponent implements AfterViewInit {
95
111
  selection: Feature
96
112
  showLegend = true
97
113
  legendExists = false
114
+ loading = false
115
+ error = null
116
+
117
+ selectLinkToDisplay(i: number) {
118
+ this.selectedLinkIndex$.next(i)
119
+ }
120
+
121
+ selectStyleToDisplay(i: number) {
122
+ this.selectedStyleIndex$.next(i)
123
+ }
98
124
 
99
125
  toggleLegend() {
100
126
  this.showLegend = !this.showLegend
101
127
  }
102
-
103
- onLegendStatusChange(status: boolean) {
104
- this.legendExists = status
128
+ onLegendStatusChange(v: boolean) {
129
+ this.legendExists = v
105
130
  }
106
131
 
107
132
  compatibleMapLinks$ = combineLatest([
108
133
  this.mdViewFacade.mapApiLinks$,
109
134
  this.mdViewFacade.geoDataLinksWithGeometry$,
110
135
  ]).pipe(
111
- map(([mapApiLinks, geoDataLinksWithGeometry]) => {
112
- return [...mapApiLinks, ...geoDataLinksWithGeometry]
113
- })
136
+ map(([mapApiLinks, geoDataLinksWithGeometry]) => [
137
+ ...mapApiLinks,
138
+ ...geoDataLinksWithGeometry,
139
+ ]),
140
+ shareReplay(1)
114
141
  )
115
142
 
116
143
  dropdownChoices$ = this.compatibleMapLinks$.pipe(
@@ -123,15 +150,84 @@ export class MapViewComponent implements AfterViewInit {
123
150
  : [{ label: 'map.dropdown.placeholder', value: 0 }]
124
151
  )
125
152
  )
126
- selectedLinkIndex$ = new BehaviorSubject(0)
127
153
 
128
- loading = false
129
- error = null
154
+ selectedLinkIndex$ = new BehaviorSubject(0)
155
+ private selectedStyleIndex$ = new BehaviorSubject(0)
130
156
 
131
- selectedLink$ = combineLatest([
157
+ selectedSourceLink$ = combineLatest([
132
158
  this.compatibleMapLinks$,
133
159
  this.selectedLinkIndex$.pipe(distinctUntilChanged()),
134
- ]).pipe(map(([links, index]) => links[index]))
160
+ ]).pipe(
161
+ tap(() => {
162
+ this.error = null
163
+ }),
164
+ map(([links, index]) => {
165
+ this.linkSelected.emit(links[index])
166
+ return links[index]
167
+ })
168
+ )
169
+
170
+ styleLinks$ = this.selectedSourceLink$.pipe(
171
+ switchMap((src) => {
172
+ if (
173
+ src &&
174
+ src.type === 'service' &&
175
+ src.accessServiceProtocol === 'tms'
176
+ ) {
177
+ return from(
178
+ // WARNING: when using "getGeodataLinksFromTms", make sure to add error handling to prevent the rest of the logic from failing
179
+ // this may happen when TMS endpoint is in error
180
+ this.dataService.getGeodataLinksFromTms(
181
+ src as DatasetServiceDistribution,
182
+ false
183
+ )
184
+ ).pipe(
185
+ // We need to check for maplibre-style links because when a TMS service has no styles,
186
+ // getGeodataLinksFromTms returns the original TMS link, which isn't a maplibre-style link
187
+ map(
188
+ (links) =>
189
+ links?.filter(
190
+ (link) =>
191
+ link.type === 'service' &&
192
+ link.accessServiceProtocol === 'maplibre-style'
193
+ ) || []
194
+ ),
195
+ catchError((error) => {
196
+ this.handleError(error)
197
+ return of(src)
198
+ })
199
+ )
200
+ }
201
+ return of([])
202
+ }),
203
+ tap(() => this.selectedStyleIndex$.next(0)),
204
+ shareReplay(1)
205
+ )
206
+
207
+ styleDropdownChoices$ = this.styleLinks$.pipe(
208
+ map((links) =>
209
+ links.length
210
+ ? links.map((link, index) => ({
211
+ label: getLinkLabel(link),
212
+ value: index,
213
+ }))
214
+ : [
215
+ {
216
+ label: '\u00A0\u00A0\u00A0\u00A0',
217
+ value: 0,
218
+ },
219
+ ]
220
+ )
221
+ )
222
+
223
+ selectedLink$ = combineLatest([
224
+ this.selectedSourceLink$,
225
+ this.styleLinks$,
226
+ this.selectedStyleIndex$.pipe(distinctUntilChanged()),
227
+ ]).pipe(
228
+ map(([src, styles, styleIdx]) => (styles.length ? styles[styleIdx] : src)),
229
+ shareReplay(1)
230
+ )
135
231
 
136
232
  currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(
137
233
  switchMap(([link, excludeWfs]) => {
@@ -144,7 +240,10 @@ export class MapViewComponent implements AfterViewInit {
144
240
  }
145
241
  this.hidePreview = false
146
242
  this.loading = true
147
- this.error = null
243
+ if (link.accessRestricted) {
244
+ this.handleError('dataset.error.restrictedAccess')
245
+ return of([])
246
+ }
148
247
  return this.getLayerFromLink(link).pipe(
149
248
  map((layer) => [layer]),
150
249
  catchError((e) => {
@@ -234,6 +333,26 @@ export class MapViewComponent implements AfterViewInit {
234
333
  type: 'wms',
235
334
  name: link.name,
236
335
  })
336
+ } else if (
337
+ link.type === 'service' &&
338
+ link.accessServiceProtocol === 'tms'
339
+ ) {
340
+ // FIXME: here we're assuming that the TMS serves vector tiles only; should be checked with ogc-client first
341
+ return of({
342
+ url: link.url.toString().replace(/\/?$/, '/{z}/{x}/{y}.pbf'),
343
+ type: 'xyz',
344
+ tileFormat: 'application/vnd.mapbox-vector-tile',
345
+ name: link.name,
346
+ })
347
+ } else if (
348
+ link.type === 'service' &&
349
+ link.accessServiceProtocol === 'maplibre-style'
350
+ ) {
351
+ return of({
352
+ type: 'maplibre-style',
353
+ name: link.name,
354
+ styleUrl: link.url.toString(),
355
+ })
237
356
  } else if (
238
357
  link.type === 'service' &&
239
358
  link.accessServiceProtocol === 'wmts'
@@ -260,11 +379,6 @@ export class MapViewComponent implements AfterViewInit {
260
379
  }
261
380
  return throwError(() => 'protocol not supported')
262
381
  }
263
-
264
- selectLinkToDisplay(link: number) {
265
- this.selectedLinkIndex$.next(link)
266
- }
267
-
268
382
  handleError(error: FetchError | Error | string) {
269
383
  if (error instanceof FetchError) {
270
384
  this.error = this.translateService.instant(
@@ -6,7 +6,7 @@ import {
6
6
  OnDestroy,
7
7
  } from '@angular/core'
8
8
  import { Meta } from '@angular/platform-browser'
9
- import { DatasetRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
9
+ import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
10
10
 
11
11
  @Component({
12
12
  selector: 'gn-ui-record-meta',
@@ -15,7 +15,7 @@ import { DatasetRecord } from '../../../../../../libs/common/domain/src/lib/mode
15
15
  standalone: true,
16
16
  })
17
17
  export class RecordMetaComponent implements OnDestroy, OnChanges {
18
- @Input() metadata: DatasetRecord
18
+ @Input() metadata: CatalogRecord
19
19
 
20
20
  constructor(private meta: Meta) {}
21
21
 
@@ -54,6 +54,16 @@ export const setRelated = createAction(
54
54
  props<{ related: CatalogRecord[] }>()
55
55
  )
56
56
 
57
+ export const setSources = createAction(
58
+ '[Metadata view] Set sources',
59
+ props<{ sources: CatalogRecord[] }>()
60
+ )
61
+
62
+ export const setSourceOf = createAction(
63
+ '[Metadata view] Set has sources',
64
+ props<{ sourceOf: CatalogRecord[] }>()
65
+ )
66
+
57
67
  /*
58
68
  ChartConfig actions
59
69
  */
@@ -1,16 +1,18 @@
1
1
  import { Injectable } from '@angular/core'
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects'
3
3
  import { exhaustMap, mergeMap, of } from 'rxjs'
4
- import { catchError, filter, map, switchMap, take } from 'rxjs/operators'
4
+ import { catchError, filter, map, switchMap } from 'rxjs/operators'
5
5
  import * as MdViewActions from './mdview.actions'
6
6
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
7
7
  import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
8
+ import { Router } from '@angular/router'
8
9
  @Injectable()
9
10
  export class MdViewEffects {
10
11
  constructor(
11
12
  private actions$: Actions,
12
13
  private recordsRepository: RecordsRepositoryInterface,
13
- private platformServiceInterface: PlatformServiceInterface
14
+ private platformServiceInterface: PlatformServiceInterface,
15
+ private router: Router
14
16
  ) {}
15
17
 
16
18
  /*
@@ -21,7 +23,7 @@ export class MdViewEffects {
21
23
  ofType(MdViewActions.loadFullMetadata),
22
24
  switchMap(({ uuid }) => this.recordsRepository.getRecord(uuid)),
23
25
  map((record) => {
24
- if (record === null) {
26
+ if (record === null || !this.router.url.includes(record.kind)) {
25
27
  return MdViewActions.loadFullMetadataFailure({ notFound: true })
26
28
  }
27
29
  return MdViewActions.loadFullMetadataSuccess({ full: record })
@@ -66,6 +68,28 @@ export class MdViewEffects {
66
68
  )
67
69
  )
68
70
 
71
+ loadSources$ = createEffect(() =>
72
+ this.actions$.pipe(
73
+ ofType(MdViewActions.loadFullMetadataSuccess),
74
+ switchMap(({ full }) => this.recordsRepository.getSources(full)),
75
+ map((sources) => {
76
+ return MdViewActions.setSources({ sources })
77
+ }),
78
+ catchError(() => of(MdViewActions.setSources({ sources: null })))
79
+ )
80
+ )
81
+
82
+ loadSourceOf$ = createEffect(() =>
83
+ this.actions$.pipe(
84
+ ofType(MdViewActions.loadFullMetadataSuccess),
85
+ switchMap(({ full }) => this.recordsRepository.getSourceOf(full)),
86
+ map((sourceOf) => {
87
+ return MdViewActions.setSourceOf({ sourceOf })
88
+ }),
89
+ catchError(() => of(MdViewActions.setSourceOf({ sourceOf: null })))
90
+ )
91
+ )
92
+
69
93
  /*
70
94
  UserFeedback effects
71
95
  */
@@ -6,6 +6,7 @@ import {
6
6
  filter,
7
7
  map,
8
8
  mergeMap,
9
+ shareReplay,
9
10
  switchMap,
10
11
  toArray,
11
12
  } from 'rxjs/operators'
@@ -15,12 +16,11 @@ import { LinkClassifierService, LinkUsage } from '../../../../../../libs/util/sh
15
16
  import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
16
17
  import {
17
18
  CatalogRecord,
18
- DatasetServiceDistribution,
19
19
  UserFeedback,
20
20
  } from '../../../../../../libs/common/domain/src/lib/model/record'
21
21
  import { AvatarServiceInterface } from '../../../../../../libs/api/repository/src'
22
22
  import { OgcApiRecord } from '@camptocamp/ogc-client'
23
- import { from, of } from 'rxjs'
23
+ import { from, of, Observable } from 'rxjs'
24
24
  import { DataService } from '../../../../../../libs/feature/dataviz/src'
25
25
 
26
26
  @Injectable()
@@ -76,28 +76,24 @@ export class MdViewFacade {
76
76
 
77
77
  related$ = this.store.pipe(select(MdViewSelectors.getRelated))
78
78
 
79
+ sources$ = this.store.pipe(select(MdViewSelectors.getSources))
80
+
81
+ sourceOf$ = this.store.pipe(select(MdViewSelectors.getSourceOf))
82
+
79
83
  chartConfig$ = this.store.pipe(select(MdViewSelectors.getChartConfig))
80
84
 
81
85
  allLinks$ = this.metadata$.pipe(
82
86
  map((record) =>
83
- record.kind === 'dataset' && 'onlineResources' in record
84
- ? record.onlineResources
85
- : []
86
- )
87
+ 'onlineResources' in record ? record.onlineResources : []
88
+ ),
89
+ shareReplay(1)
87
90
  )
88
91
 
89
92
  apiLinks$ = this.allLinks$.pipe(
90
93
  map((links) =>
91
- links
92
- .filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
93
- // Put links to IGN Géoplateforme first
94
- .sort((dd1, dd2) => {
95
- return (dd2 as DatasetServiceDistribution).accessServiceProtocol ===
96
- 'GPFDL'
97
- ? 1
98
- : undefined // do not change the sorting otherwise
99
- })
100
- )
94
+ links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
95
+ ),
96
+ shareReplay(1)
101
97
  )
102
98
 
103
99
  mapApiLinks$ = this.allLinks$.pipe(
@@ -105,7 +101,8 @@ export class MdViewFacade {
105
101
  links.filter((link) =>
106
102
  this.linkClassifier.hasUsage(link, LinkUsage.MAP_API)
107
103
  )
108
- )
104
+ ),
105
+ shareReplay(1)
109
106
  )
110
107
 
111
108
  downloadLinks$ = this.allLinks$.pipe(
@@ -219,4 +216,11 @@ export class MdViewFacade {
219
216
  loadUserFeedbacks(datasetUuid: string) {
220
217
  this.store.dispatch(MdViewActions.loadUserFeedbacks({ datasetUuid }))
221
218
  }
219
+
220
+ /**
221
+ * loadFeatureCatalog
222
+ */
223
+ loadFeatureCatalog(metadata: CatalogRecord) {
224
+ this.store.dispatch(MdViewActions.loadFeatureCatalog({ metadata }))
225
+ }
222
226
  }
@@ -14,6 +14,8 @@ export interface MetadataViewState {
14
14
  error: { notFound?: boolean; otherError?: string } | null
15
15
  metadata?: Partial<CatalogRecord>
16
16
  related?: CatalogRecord[]
17
+ sources?: CatalogRecord[]
18
+ sourceOf?: CatalogRecord[]
17
19
  userFeedbacks?: UserFeedback[]
18
20
  allUserFeedbacksLoading: boolean
19
21
  addUserFeedbackLoading: boolean
@@ -75,6 +77,16 @@ const metadataViewReducer = createReducer(
75
77
  related,
76
78
  })),
77
79
 
80
+ on(MetadataViewActions.setSources, (state, { sources }) => ({
81
+ ...state,
82
+ sources,
83
+ })),
84
+
85
+ on(MetadataViewActions.setSourceOf, (state, { sourceOf }) => ({
86
+ ...state,
87
+ sourceOf,
88
+ })),
89
+
78
90
  /*
79
91
  ChartConfig reducers
80
92
  */