geonetwork-ui 2.6.0-dev.b306f1194 → 2.6.0-dev.d216c4dea

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 (217) 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 +2 -1
  30. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
  31. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  32. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  33. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
  34. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  35. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  36. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  37. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  38. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  39. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  40. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
  41. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
  42. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  43. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  44. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  45. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  46. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
  47. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
  48. package/esm2022/translations/de.json +27 -4
  49. package/esm2022/translations/en.json +28 -5
  50. package/esm2022/translations/es.json +27 -4
  51. package/esm2022/translations/fr.json +29 -6
  52. package/esm2022/translations/it.json +27 -4
  53. package/esm2022/translations/nl.json +27 -4
  54. package/esm2022/translations/pt.json +27 -4
  55. package/fesm2022/geonetwork-ui.mjs +969 -478
  56. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  57. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  58. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  59. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  60. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  61. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -2
  62. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  63. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  64. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
  65. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  66. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  68. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  69. 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
  70. package/libs/feature/record/src/index.d.ts +0 -1
  71. package/libs/feature/record/src/index.d.ts.map +1 -1
  72. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  73. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  74. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  75. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  76. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  77. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  78. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  79. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  80. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
  81. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  82. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  83. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  84. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  85. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  86. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  87. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  88. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  89. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  90. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  91. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  92. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  93. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  94. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  95. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  96. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  97. package/libs/ui/elements/src/index.d.ts +1 -0
  98. package/libs/ui/elements/src/index.d.ts.map +1 -1
  99. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  100. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  101. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
  102. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  103. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  104. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  105. package/libs/ui/inputs/src/index.d.ts +0 -1
  106. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  107. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  108. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  109. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  110. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  111. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  112. package/libs/ui/map/src/index.d.ts +1 -0
  113. package/libs/ui/map/src/index.d.ts.map +1 -1
  114. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  115. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  116. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  117. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  118. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  119. package/libs/util/shared/src/index.d.ts +1 -0
  120. package/libs/util/shared/src/index.d.ts.map +1 -1
  121. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  122. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  123. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  124. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  125. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  126. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  127. package/package.json +1 -1
  128. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  129. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  130. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  131. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  132. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  133. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
  134. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
  135. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  136. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
  137. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  138. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +5 -2
  139. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
  140. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
  141. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  142. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
  143. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
  144. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  145. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  146. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  147. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  148. package/src/libs/feature/record/src/index.ts +0 -1
  149. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  150. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  151. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -0
  152. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  153. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
  154. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
  155. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  156. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  157. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  158. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  159. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
  160. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  161. package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
  162. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  163. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  164. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  165. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
  166. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  167. package/src/libs/ui/elements/src/index.ts +1 -0
  168. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
  169. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
  170. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  171. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
  172. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  173. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
  174. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
  175. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  176. package/src/libs/ui/inputs/src/index.ts +0 -1
  177. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
  178. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  179. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  180. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
  181. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  182. package/src/libs/ui/map/src/index.ts +1 -0
  183. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  184. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  185. 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
  186. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
  187. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
  188. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  189. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  190. package/src/libs/util/shared/src/index.ts +1 -0
  191. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  192. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
  193. package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
  194. package/tailwind.base.css +18 -13
  195. package/translations/de.json +27 -4
  196. package/translations/en.json +28 -5
  197. package/translations/es.json +27 -4
  198. package/translations/fr.json +29 -6
  199. package/translations/it.json +27 -4
  200. package/translations/nl.json +27 -4
  201. package/translations/pt.json +27 -4
  202. package/translations/sk.json +27 -4
  203. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  204. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  205. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  206. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  207. 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
  208. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  209. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  210. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  211. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  212. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  213. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  214. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  215. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  216. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  217. /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/service-capabilities/service-capabilities.component.css} +0 -0
@@ -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 {
@@ -4,6 +4,8 @@ export interface RouterConfigModel {
4
4
  searchStateId: string
5
5
  searchRouteComponent: Type<any>
6
6
  recordRouteComponent: Type<any>
7
+ serviceRouteComponent: Type<any>
8
+ reuseRouteComponent: Type<any>
7
9
  organizationRouteComponent: Type<any>
8
10
  }
9
11
 
@@ -3,6 +3,8 @@ import {
3
3
  ROUTER_ROUTE_DATASET,
4
4
  ROUTER_ROUTE_ORGANIZATION,
5
5
  ROUTER_ROUTE_SEARCH,
6
+ ROUTER_ROUTE_SERVICE,
7
+ ROUTER_ROUTE_REUSE,
6
8
  } from '.'
7
9
  import { Router, Routes } from '@angular/router'
8
10
  import { ROUTER_CONFIG, RouterConfigModel } from './router.config'
@@ -34,6 +36,14 @@ export class RouterService {
34
36
  path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
35
37
  component: this.routerConfig.recordRouteComponent,
36
38
  },
39
+ {
40
+ path: `${ROUTER_ROUTE_SERVICE}/:metadataUuid`,
41
+ component: this.routerConfig.recordRouteComponent,
42
+ },
43
+ {
44
+ path: `${ROUTER_ROUTE_REUSE}/:metadataUuid`,
45
+ component: this.routerConfig.recordRouteComponent,
46
+ },
37
47
  {
38
48
  path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
39
49
  component: this.routerConfig.organizationRouteComponent,
@@ -7,6 +7,8 @@ import { distinctUntilChanged, filter, map, take } from 'rxjs/operators'
7
7
  import {
8
8
  ROUTER_ROUTE_DATASET,
9
9
  ROUTER_ROUTE_SEARCH,
10
+ ROUTER_ROUTE_SERVICE,
11
+ ROUTER_ROUTE_REUSE,
10
12
  SearchRouteParams,
11
13
  } from '../constants'
12
14
  import {
@@ -32,12 +34,19 @@ export class RouterFacade {
32
34
  map(expandQueryParams)
33
35
  )
34
36
 
37
+ routeMap = {
38
+ dataset: ROUTER_ROUTE_DATASET,
39
+ service: ROUTER_ROUTE_SERVICE,
40
+ reuse: ROUTER_ROUTE_REUSE,
41
+ }
42
+
35
43
  constructor(
36
44
  private store: Store<RouterReducerState>,
37
45
  private routerService: RouterService
38
46
  ) {}
39
47
 
40
48
  goToMetadata(metadata: CatalogRecord) {
49
+ const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET
41
50
  this.pathParams$
42
51
  .pipe(
43
52
  take(1),
@@ -45,7 +54,7 @@ export class RouterFacade {
45
54
  )
46
55
  .subscribe(() => {
47
56
  this.go({
48
- path: `${ROUTER_ROUTE_DATASET}/${metadata.uniqueIdentifier}`,
57
+ path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
49
58
  })
50
59
  this.store.dispatch(
51
60
  MdViewActions.setIncompleteMetadata({ incomplete: metadata })
@@ -10,10 +10,4 @@
10
10
  (newValue)="toggleFavorite($event)"
11
11
  [disabled]="loading || (isAnonymous$ | async)"
12
12
  ></gn-ui-star-toggle>
13
- <span
14
- class="align-text-top ml-1.5"
15
- data-test="favorite-count"
16
- *ngIf="!displayCount"
17
- translate="datahub.record.addToFavorites"
18
- ></span>
19
13
  </div>
@@ -8,9 +8,15 @@ import {
8
8
  OnDestroy,
9
9
  ViewChild,
10
10
  } from '@angular/core'
11
- import { map, pairwise, withLatestFrom } from 'rxjs/operators'
11
+ import {
12
+ map,
13
+ pairwise,
14
+ startWith,
15
+ switchMap,
16
+ withLatestFrom,
17
+ } from 'rxjs/operators'
12
18
  import tippy from 'tippy.js'
13
- import { TranslateService } from '@ngx-translate/core'
19
+ import { TranslateModule, TranslateService } from '@ngx-translate/core'
14
20
  import { StarToggleComponent } from '../../../../../../../libs/ui/inputs/src'
15
21
  import { Observable, Subscription } from 'rxjs'
16
22
  import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
@@ -24,7 +30,7 @@ import { CommonModule } from '@angular/common'
24
30
  styleUrls: ['./favorite-star.component.css'],
25
31
  changeDetection: ChangeDetectionStrategy.OnPush,
26
32
  standalone: true,
27
- imports: [CommonModule, StarToggleComponent],
33
+ imports: [CommonModule, StarToggleComponent, TranslateModule],
28
34
  })
29
35
  export class FavoriteStarComponent implements AfterViewInit, OnDestroy {
30
36
  @Input() displayCount? = true
@@ -46,11 +52,13 @@ export class FavoriteStarComponent implements AfterViewInit, OnDestroy {
46
52
  favoriteCount: number | null
47
53
  loading = false
48
54
  loginUrl = this.authService.loginUrl
49
- loginMessage$: Observable<string> = this.translateService.get(
50
- 'favorite.not.authenticated.tooltip',
51
- {
52
- link: this.loginUrl,
53
- }
55
+ loginMessage$: Observable<string> = this.translateService.onLangChange.pipe(
56
+ startWith(null), // make sure to wait for translations to be loaded with and without language change
57
+ switchMap(() =>
58
+ this.translateService.get('favorite.not.authenticated.tooltip', {
59
+ link: this.loginUrl,
60
+ })
61
+ )
54
62
  )
55
63
  @ViewChild(StarToggleComponent, { read: ElementRef })
56
64
  starToggleRef: ElementRef
@@ -26,8 +26,6 @@ import {
26
26
  SpinningLoaderComponent,
27
27
  UiWidgetsModule,
28
28
  } from '../../../../../libs/ui/widgets/src'
29
- import { RecordsRepositoryInterface } from '../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
30
- import { Gn4Repository } from '../../../../../libs/api/repository/src'
31
29
  import { FavoriteStarComponent } from './favorites/favorite-star/favorite-star.component'
32
30
 
33
31
  @NgModule({
@@ -72,11 +70,5 @@ import { FavoriteStarComponent } from './favorites/favorite-star/favorite-star.c
72
70
  SearchStateContainerDirective,
73
71
  FilterDropdownComponent,
74
72
  ],
75
- providers: [
76
- {
77
- provide: RecordsRepositoryInterface,
78
- useClass: Gn4Repository,
79
- },
80
- ],
81
73
  })
82
74
  export class FeatureSearchModule {}