geonetwork-ui 2.6.0-dev.502fa026d → 2.6.0-dev.76a84fb05

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 (249) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -3
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  5. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
  6. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  7. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  8. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +5 -1
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +5 -1
  10. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  13. package/esm2022/libs/feature/record/src/index.mjs +1 -2
  14. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  15. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  16. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -1
  17. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  18. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
  20. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  21. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  22. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  23. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  24. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  25. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
  26. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  27. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
  28. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  29. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  30. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
  31. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
  32. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  33. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +163 -0
  34. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
  35. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  36. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  37. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  38. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  39. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
  40. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
  41. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
  42. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  43. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  44. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  45. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  46. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  47. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  48. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
  49. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
  50. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  51. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  52. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  53. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  54. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  55. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
  56. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +33 -24
  57. package/esm2022/translations/de.json +33 -3
  58. package/esm2022/translations/en.json +34 -4
  59. package/esm2022/translations/es.json +33 -3
  60. package/esm2022/translations/fr.json +35 -5
  61. package/esm2022/translations/it.json +33 -4
  62. package/esm2022/translations/nl.json +33 -3
  63. package/esm2022/translations/pt.json +33 -3
  64. package/fesm2022/geonetwork-ui.mjs +1266 -515
  65. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  66. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  67. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  68. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  69. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  70. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -2
  71. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  72. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  73. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
  74. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  75. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  76. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  77. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  78. 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
  79. package/libs/feature/record/src/index.d.ts +0 -1
  80. package/libs/feature/record/src/index.d.ts.map +1 -1
  81. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  82. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  83. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  84. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  85. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  86. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  87. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  88. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  89. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
  90. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  91. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  92. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  93. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  94. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  95. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  96. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  97. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  98. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  99. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  100. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  101. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  102. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  103. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  104. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  105. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  106. package/libs/ui/elements/src/index.d.ts +2 -0
  107. package/libs/ui/elements/src/index.d.ts.map +1 -1
  108. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
  109. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  110. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
  111. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  112. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +43 -0
  113. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
  114. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
  115. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  116. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  117. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  118. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  119. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
  120. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  121. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
  122. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  123. package/libs/ui/inputs/src/index.d.ts +0 -1
  124. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  125. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  126. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  127. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  128. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  129. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  130. package/libs/ui/map/src/index.d.ts +1 -0
  131. package/libs/ui/map/src/index.d.ts.map +1 -1
  132. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  133. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  134. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  135. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  136. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  137. package/libs/util/shared/src/index.d.ts +1 -0
  138. package/libs/util/shared/src/index.d.ts.map +1 -1
  139. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  140. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  141. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  142. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  143. package/libs/util/shared/src/lib/links/link-utils.d.ts +30 -23
  144. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  145. package/package.json +1 -1
  146. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  147. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  148. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  149. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  150. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  151. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
  152. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
  153. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  154. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
  155. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  156. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +6 -2
  157. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
  158. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
  159. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  160. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
  161. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
  162. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  163. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  164. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  165. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  166. package/src/libs/feature/record/src/index.ts +0 -1
  167. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  168. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  169. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -0
  170. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  171. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
  172. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
  173. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  174. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  175. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  176. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  177. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -7
  178. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  179. package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
  180. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  181. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  182. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  183. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
  184. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  185. package/src/libs/ui/elements/src/index.ts +2 -0
  186. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
  187. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
  188. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
  189. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
  190. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
  191. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +156 -0
  192. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +190 -0
  193. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
  194. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
  195. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
  196. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
  197. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  198. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
  199. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  200. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +4 -2
  201. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
  202. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  203. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
  204. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
  205. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -0
  206. package/src/libs/ui/inputs/src/index.ts +0 -1
  207. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
  208. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  209. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  210. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
  211. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
  212. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  213. package/src/libs/ui/map/src/index.ts +1 -0
  214. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  215. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  216. 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} +7 -8
  217. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
  218. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
  219. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +3 -2
  220. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  221. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  222. package/src/libs/util/shared/src/index.ts +1 -0
  223. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  224. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
  225. package/src/libs/util/shared/src/lib/links/link-utils.ts +50 -30
  226. package/tailwind.base.css +51 -13
  227. package/translations/de.json +33 -3
  228. package/translations/en.json +34 -4
  229. package/translations/es.json +33 -3
  230. package/translations/fr.json +35 -5
  231. package/translations/it.json +33 -4
  232. package/translations/nl.json +33 -3
  233. package/translations/pt.json +33 -3
  234. package/translations/sk.json +33 -3
  235. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  236. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  237. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  238. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  239. 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
  240. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  241. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  242. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  243. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  244. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  245. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  246. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  247. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  248. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  249. /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/internal-link-card/internal-link-card.component.css} +0 -0
@@ -460,6 +460,11 @@ export class Gn4FieldMapper {
460
460
  ),
461
461
  selectField<string>(sourceLink, 'description')
462
462
  )
463
+ const descriptionLink = selectField<object>(sourceLink, 'descriptionObject')
464
+ const accessRestricted =
465
+ descriptionLink &&
466
+ 'link' in descriptionLink &&
467
+ descriptionLink.link.toString().includes('#MD_RestrictionCode_restricted')
463
468
  // no url: fail early
464
469
  if (url === null) {
465
470
  // TODO: collect errors at the record level?
@@ -485,6 +490,7 @@ export class Gn4FieldMapper {
485
490
  type,
486
491
  url: url,
487
492
  accessServiceProtocol,
493
+ accessRestricted: accessRestricted,
488
494
  }
489
495
  case 'link':
490
496
  return {
@@ -503,8 +509,8 @@ export class Gn4FieldMapper {
503
509
  return {
504
510
  ...distribution,
505
511
  type,
506
- endpointUrl: url,
507
- protocol: accessServiceProtocol,
512
+ url: url,
513
+ accessServiceProtocol: accessServiceProtocol,
508
514
  }
509
515
  }
510
516
  }
@@ -965,8 +965,8 @@ export function extractServiceOnlineResources(): ChainableFunction<
965
965
  } else {
966
966
  return {
967
967
  type: 'endpoint',
968
- endpointUrl: url,
969
- protocol,
968
+ url: url,
969
+ accessServiceProtocol: protocol,
970
970
  ...(description && { description }),
971
971
  translations,
972
972
  }
@@ -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 {
@@ -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
  }
@@ -2,6 +2,8 @@ import { Provider } from '@angular/core'
2
2
  import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
3
3
  import { Gn4PlatformService } from './platform/gn4-platform.service'
4
4
  import { Gn4PlatformMapper } from './platform/gn4-platform.mapper'
5
+ import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
6
+ import { Gn4Repository } from './gn4-repository'
5
7
 
6
8
  export function provideGn4(): Provider[] {
7
9
  return [
@@ -9,6 +11,10 @@ export function provideGn4(): Provider[] {
9
11
  provide: PlatformServiceInterface,
10
12
  useClass: Gn4PlatformService,
11
13
  },
14
+ {
15
+ provide: RecordsRepositoryInterface,
16
+ useClass: Gn4Repository,
17
+ },
12
18
  Gn4PlatformMapper,
13
19
  ]
14
20
  }
@@ -164,6 +164,7 @@ export interface DatasetServiceDistribution {
164
164
  name?: string
165
165
  description?: string
166
166
  translations?: OnlineResourceTranslations
167
+ accessRestricted?: boolean
167
168
  }
168
169
 
169
170
  export interface DatasetDownloadDistribution {
@@ -178,6 +179,7 @@ export interface DatasetDownloadDistribution {
178
179
  description?: string
179
180
  accessServiceProtocol?: ServiceProtocol
180
181
  translations?: OnlineResourceTranslations
182
+ accessRestricted?: boolean
181
183
  }
182
184
 
183
185
  export interface OnlineLinkResource {
@@ -186,6 +188,8 @@ export interface OnlineLinkResource {
186
188
  name?: string
187
189
  description?: string
188
190
  translations?: OnlineResourceTranslations
191
+ mimeType?: string
192
+ accessRestricted?: boolean
189
193
  }
190
194
 
191
195
  export type DatasetOnlineResource = (
@@ -236,8 +240,8 @@ export type DatasetFeatureCatalog = {
236
240
  }
237
241
 
238
242
  export interface ServiceEndpoint {
239
- endpointUrl: URL
240
- protocol: string
243
+ url: URL
244
+ accessServiceProtocol: ServiceProtocol
241
245
  type: 'endpoint'
242
246
  description?: string
243
247
  translations?: OnlineResourceTranslations
@@ -1,146 +1,146 @@
1
1
  export const elasticLinkFixture = (): Record<string, unknown> => ({
2
2
  readmeLink: {
3
- protocol: 'WWW:LINK',
3
+ accessServiceProtocol: 'WWW:LINK',
4
4
  description: 'Readme page',
5
5
  url: 'http://envlit.ifremer.fr/resultats/quadrige',
6
6
  },
7
7
  doiLink: {
8
- protocol: 'WWW:DOI',
8
+ accessServiceProtocol: 'WWW:DOI',
9
9
  description: 'DOI for the resource',
10
10
  url: 'http://doi.org/123-456-678',
11
11
  },
12
12
  dataCsv: {
13
- protocol: 'WWW:DOWNLOAD',
13
+ accessServiceProtocol: 'WWW:DOWNLOAD',
14
14
  description: 'Data in CSV format',
15
15
  name: 'abc.csv',
16
16
  url: 'http://my.server/files/abc.csv',
17
17
  },
18
18
  dataPdf: {
19
- protocol: 'WWW:DOWNLOAD',
19
+ accessServiceProtocol: 'WWW:DOWNLOAD',
20
20
  description: 'Data in PDF format',
21
21
  name: 'abc.pdf',
22
22
  url: 'https://my.server/files/abc.pdf',
23
23
  },
24
24
  dataJpg: {
25
- protocol: 'WWW:DOWNLOAD',
25
+ accessServiceProtocol: 'WWW:DOWNLOAD',
26
26
  description: 'Data in JPG format',
27
27
  name: 'abc.jpg',
28
28
  url: 'https://my.server/files/abc.jpg',
29
29
  },
30
30
  dataZip: {
31
- protocol: 'WWW:DOWNLOAD',
31
+ accessServiceProtocol: 'WWW:DOWNLOAD',
32
32
  description: 'Data in ZIP format',
33
33
  name: 'abc.zip',
34
34
  url: 'https://my.server/files/abc.zip',
35
35
  },
36
36
  dataXls: {
37
- protocol: 'WWW:DOWNLOAD',
37
+ accessServiceProtocol: 'WWW:DOWNLOAD',
38
38
  description: 'Data in XLS format',
39
39
  name: 'abc.xls',
40
40
  url: 'https://my.server/files/abc.xls',
41
41
  },
42
42
  dataXlsx: {
43
- protocol: 'WWW:DOWNLOAD',
43
+ accessServiceProtocol: 'WWW:DOWNLOAD',
44
44
  description: 'Data in XLSX format',
45
45
  name: 'abc.XLSX',
46
46
  url: 'https://my.server/files/abc.XLSX',
47
47
  },
48
48
  dataJson: {
49
- protocol: 'WWW:DOWNLOAD',
49
+ accessServiceProtocol: 'WWW:DOWNLOAD',
50
50
  description: 'Data in JSON format',
51
51
  name: 'abc.json',
52
52
  url: 'https://my.server/files/abc.json',
53
53
  },
54
54
  geodataJson: {
55
- protocol: 'WWW:DOWNLOAD',
55
+ accessServiceProtocol: 'WWW:DOWNLOAD',
56
56
  description: 'Geographic data in GeoJSON format',
57
57
  name: 'dataset.geojson',
58
58
  url: 'http://my.server/files/geographic/dataset.geojson',
59
59
  },
60
60
  geodataJsonWithMimeType: {
61
- protocol: 'WWW:DOWNLOAD:application/vnd.geo+json',
61
+ accessServiceProtocol: 'WWW:DOWNLOAD:application/vnd.geo+json',
62
62
  description: 'Geographic data in GeoJSON format',
63
63
  name: 'dataset.geojson',
64
64
  url: 'http://my.server/files/geographic/dataset',
65
65
  mimeType: 'application/vnd.geo+json',
66
66
  },
67
67
  geodataKml: {
68
- protocol: 'WWW:DOWNLOAD',
68
+ accessServiceProtocol: 'WWW:DOWNLOAD',
69
69
  description: 'Geographic data in KML format',
70
70
  name: 'dataset.kml',
71
71
  url: 'http://my.server/files/geographic/dataset.kml',
72
72
  },
73
73
  geodataGpkg: {
74
- protocol: 'WWW:DOWNLOAD',
74
+ accessServiceProtocol: 'WWW:DOWNLOAD',
75
75
  description: 'Geographic data in geopackage format',
76
76
  name: 'dataset.gpkg',
77
77
  url: 'http://my.server/files/geographic/dataset.gpkg',
78
78
  },
79
79
  geodataShp: {
80
- protocol: 'WWW:DOWNLOAD',
80
+ accessServiceProtocol: 'WWW:DOWNLOAD',
81
81
  description: 'Geographic data in shapefile format',
82
82
  name: 'dataset.shp',
83
83
  url: 'http://my.server/files/geographic/dataset.zip',
84
84
  },
85
85
  geodataShpWithMimeType: {
86
- protocol: 'WWW:DOWNLOAD:x-gis/x-shapefile',
86
+ accessServiceProtocol: 'WWW:DOWNLOAD:x-gis/x-shapefile',
87
87
  description: 'Geographic data in shapefile format',
88
88
  name: 'dataset',
89
89
  url: 'http://my.server/files/geographic/dataset.zip',
90
90
  mimeType: 'x-gis/x-shapefile',
91
91
  },
92
92
  geodataWms: {
93
- protocol: 'OGC:WMS',
93
+ accessServiceProtocol: 'OGC:WMS',
94
94
  name: 'mylayer',
95
95
  url: 'https://my.ogc.server/wms',
96
96
  },
97
97
  geodataWmts: {
98
- protocol: 'OGC:WMTS',
98
+ accessServiceProtocol: 'OGC:WMTS',
99
99
  name: 'mylayer',
100
100
  url: 'https://my.ogc.server/wmts',
101
101
  },
102
102
  geodataWfs: {
103
- protocol: 'OGC:WFS',
103
+ accessServiceProtocol: 'OGC:WFS',
104
104
  name: 'mylayer',
105
105
  url: 'https://my.ogc.server/wfs',
106
106
  },
107
107
  geodataWms2: {
108
- protocol: 'OGC:WMS',
108
+ accessServiceProtocol: 'OGC:WMS',
109
109
  name: 'myotherlayer',
110
110
  url: 'https://my.ogc.server/wms',
111
111
  },
112
112
  geodataWfs2: {
113
- protocol: 'OGC:WFS',
113
+ accessServiceProtocol: 'OGC:WFS',
114
114
  name: 'myotherlayer',
115
115
  url: 'https://my.ogc.server/wfs',
116
116
  },
117
117
  geodataRest: {
118
- protocol: 'ESRI:REST',
118
+ accessServiceProtocol: 'ESRI:REST',
119
119
  name: 'myrestlayer',
120
120
  url: 'https://my.esri.server/FeatureServer',
121
121
  },
122
122
  geodataRestWfs: {
123
- protocol: 'OGC:WFS',
123
+ accessServiceProtocol: 'OGC:WFS',
124
124
  name: 'mywfsrestlayer',
125
125
  url: 'https://my.esri.server/WFSServer',
126
126
  },
127
127
  maplayerRest: {
128
- protocol: 'ESRI:REST',
128
+ accessServiceProtocol: 'ESRI:REST',
129
129
  name: 'myotherrestlayer',
130
130
  url: 'https://my.esri.server/MapServer',
131
131
  },
132
132
  landingPage: {
133
- protocol: 'WWW:LINK:LANDING_PAGE',
133
+ accessServiceProtocol: 'WWW:LINK:LANDING_PAGE',
134
134
  name: 'landingpage link',
135
135
  url: 'https://landing.page',
136
136
  },
137
137
  unknownFormat: {
138
- protocol: 'WWW:DOWNLOAD-1.0-http--download',
138
+ accessServiceProtocol: 'WWW:DOWNLOAD-1.0-http--download',
139
139
  name: 'Vue HTML des métadonnées sur internet',
140
140
  url: 'http://catalogue.geo-ide.developpement-durable.gouv.fr/catalogue/srv/fre/catalog.search#/metadata/fr-120066022-jdd-199fd14c-2abb-4c14-b0f8-6c8d92e7b480',
141
141
  },
142
142
  geodataogcfeatures: {
143
- protocol: 'OGC API - Features',
143
+ accessServiceProtocol: 'OGC API - Features',
144
144
  name: 'ogcapi features layer',
145
145
  url: 'https://mel.integration.apps.gs-fr-prod.camptocamp.com/data/ogcapi/collections/comptages_velo/items?',
146
146
  },
@@ -239,10 +239,10 @@ export const aSetOfLinksFixture = () => ({
239
239
  ({
240
240
  description:
241
241
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS',
242
- endpointUrl: new URL(
242
+ url: new URL(
243
243
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS'
244
244
  ),
245
- protocol: 'wms',
245
+ accessServiceProtocol: 'wms',
246
246
  type: 'endpoint',
247
247
  }) as ServiceEndpoint,
248
248
  })
@@ -1,26 +1,26 @@
1
1
  export const wmsRecordLinkFixture = () => ({
2
2
  description: 'Lieu de surveillance (point)',
3
3
  name: 'surval_parametre_point',
4
- protocol: 'OGC:WMS',
4
+ accessServiceProtocol: 'OGC:WMS',
5
5
  url: 'https://www.ifremer.fr/services/wms/surveillance_littorale',
6
6
  })
7
7
 
8
8
  export const wpsRecordLinkFixture = () => ({
9
9
  description: "Extraction des données d'observation",
10
10
  name: 'r:survalextraction',
11
- protocol: 'OGC:WPS',
11
+ accessServiceProtocol: 'OGC:WPS',
12
12
  url: 'https://www.ifremer.fr/services/wps/surval',
13
13
  })
14
14
 
15
15
  export const wwwRecordLinkFixture = () => ({
16
16
  description: '',
17
17
  name: 'La base de données Quadrige',
18
- protocol: 'WWW:LINK',
18
+ praccessServiceProtocolotocol: 'WWW:LINK',
19
19
  url: 'http://envlit.ifremer.fr/resultats/quadrige',
20
20
  })
21
21
 
22
22
  export const doiRecordLinkFixture = () => ({
23
- protocol: 'WWW:DOI',
23
+ accessServiceProtocol: 'WWW:DOI',
24
24
  description: 'DOI for the resource',
25
25
  url: 'http://doi.org/123-456-678',
26
26
  })
@@ -28,6 +28,6 @@ export const doiRecordLinkFixture = () => ({
28
28
  export const wfsRecordLinkFixture = () => ({
29
29
  description: 'Lieu de surveillance (point)',
30
30
  name: 'surval_parametre_point',
31
- protocol: 'OGC:WFS',
31
+ accessServiceProtocol: 'OGC:WFS',
32
32
  url: 'https://www.ifremer.fr/services/wfs/surveillance_littorale',
33
33
  })
@@ -137,6 +137,10 @@ export class ChartViewComponent {
137
137
  switchMap((link) => {
138
138
  this.error = null
139
139
  this.loading = true
140
+ if (link.accessRestricted) {
141
+ this.handleError('dataset.error.restrictedAccess')
142
+ return EMPTY
143
+ }
140
144
  return this.dataService.getDataset(link, this.cacheActive).pipe(
141
145
  catchError((error) => {
142
146
  this.handleError(error)
@@ -46,6 +46,10 @@ export class TableViewComponent {
46
46
  switchMap((link) => {
47
47
  this.error = null
48
48
  if (!link) return of(undefined)
49
+ if (link.accessRestricted) {
50
+ this.handleError('dataset.error.restrictedAccess')
51
+ return of([])
52
+ }
49
53
  this.loading = true
50
54
  return this.getDatasetReader(link).pipe(
51
55
  catchError((error) => {
@@ -66,9 +66,8 @@ export class OnlineResourceCardComponent {
66
66
  get subtitle(): string {
67
67
  switch (this.onlineResource.type) {
68
68
  case 'service':
69
- return `${this.onlineResource.accessServiceProtocol}`
70
69
  case 'endpoint':
71
- return `${this.onlineResource.protocol}`
70
+ return `${this.onlineResource.accessServiceProtocol}`
72
71
  case 'link':
73
72
  case 'download':
74
73
  return this.getFormat(this.onlineResource)
@@ -81,8 +81,8 @@ export class OnlineServiceResourceInputComponent {
81
81
  errorMessage = false
82
82
  resetUrlOnChange = Math.random()
83
83
 
84
- layersSubject = new BehaviorSubject<{ name: string; title: string }[]>([])
85
- layers$: Observable<{ name: string; title: string }[]> =
84
+ layersSubject = new BehaviorSubject<{ name?: string; title?: string }[]>([])
85
+ layers$: Observable<{ name?: string; title?: string }[]> =
86
86
  this.layersSubject.asObservable()
87
87
 
88
88
  protocolOptions: {
@@ -8,8 +8,8 @@
8
8
  >
9
9
  </gn-ui-generic-keywords>
10
10
  <div class="w-full h-96 mt-2">
11
- <gn-ui-form-field-map-container
11
+ <gn-ui-spatial-extent
12
12
  [spatialExtents]="spatialExtents$ | async"
13
- ></gn-ui-form-field-map-container>
13
+ ></gn-ui-spatial-extent>
14
14
  </div>
15
15
  </div>
@@ -9,9 +9,9 @@ import { PlatformServiceInterface } from '../../../../../../../../../libs/common
9
9
  import { firstValueFrom, map, shareReplay } from 'rxjs'
10
10
  import { EditorFacade } from '../../../../+state/editor.facade'
11
11
  import { switchMap } from 'rxjs/operators'
12
- import { FormFieldMapContainerComponent } from '../form-field-map-container/form-field-map-container.component'
13
12
  import { TranslateModule, TranslateService } from '@ngx-translate/core'
14
13
  import { SPATIAL_SCOPES } from '../../../../fields.config'
14
+ import { SpatialExtentComponent } from '../../../../../../../../../libs/ui/map/src'
15
15
 
16
16
  // This intermediary type will let us keep track of which keyword is bound to
17
17
  // which extent; these properties will not be persisted
@@ -35,8 +35,8 @@ type KeywordWithExtent = Keyword & {
35
35
  imports: [
36
36
  CommonModule,
37
37
  GenericKeywordsComponent,
38
- FormFieldMapContainerComponent,
39
38
  TranslateModule,
39
+ SpatialExtentComponent,
40
40
  ],
41
41
  })
42
42
  export class FormFieldSpatialExtentComponent {
@@ -1,5 +1,4 @@
1
1
  export * from './lib/feature-record.module'
2
- export * from './lib/gn-ui-version.token'
3
2
  export * from './lib/state'
4
3
  export * from './lib/data-view-permalink/data-view-permalink.component'
5
4
  export * from './lib/data-view/data-view.component'
@@ -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
  }
@@ -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
  }
@@ -61,6 +61,7 @@ import { FetchError } from '../../../../../../libs/util/data-fetcher/src'
61
61
 
62
62
  marker('map.dropdown.placeholder')
63
63
  marker('wfs.feature.limit')
64
+ marker('dataset.error.restrictedAccess')
64
65
 
65
66
  @Component({
66
67
  selector: 'gn-ui-map-view',
@@ -145,6 +146,10 @@ export class MapViewComponent implements AfterViewInit {
145
146
  this.hidePreview = false
146
147
  this.loading = true
147
148
  this.error = null
149
+ if (link.accessRestricted) {
150
+ this.handleError('dataset.error.restrictedAccess')
151
+ return of([])
152
+ }
148
153
  return this.getLayerFromLink(link).pipe(
149
154
  map((layer) => [layer]),
150
155
  catchError((e) => {
@@ -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
 
@@ -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 })
@@ -16,6 +16,7 @@ import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/
16
16
  import {
17
17
  CatalogRecord,
18
18
  DatasetServiceDistribution,
19
+ ServiceEndpoint,
19
20
  UserFeedback,
20
21
  } from '../../../../../../libs/common/domain/src/lib/model/record'
21
22
  import { AvatarServiceInterface } from '../../../../../../libs/api/repository/src'
@@ -79,11 +80,7 @@ export class MdViewFacade {
79
80
  chartConfig$ = this.store.pipe(select(MdViewSelectors.getChartConfig))
80
81
 
81
82
  allLinks$ = this.metadata$.pipe(
82
- map((record) =>
83
- record.kind === 'dataset' && 'onlineResources' in record
84
- ? record.onlineResources
85
- : []
86
- )
83
+ map((record) => ('onlineResources' in record ? record.onlineResources : []))
87
84
  )
88
85
 
89
86
  apiLinks$ = this.allLinks$.pipe(
@@ -92,8 +89,8 @@ export class MdViewFacade {
92
89
  .filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
93
90
  // Put links to IGN Géoplateforme first
94
91
  .sort((dd1, dd2) => {
95
- return (dd2 as DatasetServiceDistribution).accessServiceProtocol ===
96
- 'GPFDL'
92
+ return (dd2 as DatasetServiceDistribution | ServiceEndpoint)
93
+ .accessServiceProtocol === 'GPFDL'
97
94
  ? 1
98
95
  : undefined // do not change the sorting otherwise
99
96
  })
@@ -4,6 +4,8 @@ export const ROUTER_STATE_KEY = 'router'
4
4
 
5
5
  export const ROUTER_ROUTE_SEARCH = 'search'
6
6
  export const ROUTER_ROUTE_DATASET = 'dataset'
7
+ export const ROUTER_ROUTE_SERVICE = 'service'
8
+ export const ROUTER_ROUTE_REUSE = 'reuse'
7
9
  export const ROUTER_ROUTE_ORGANIZATION = 'organization'
8
10
 
9
11
  export enum ROUTE_PARAMS {