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

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 (483) 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 +44 -6
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +6 -6
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  11. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
  12. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +4 -12
  13. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +42 -9
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  15. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  17. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +49 -9
  18. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  19. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  20. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +29 -6
  21. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  22. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +273 -0
  23. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  24. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  25. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  26. package/esm2022/libs/feature/record/src/index.mjs +2 -4
  27. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  28. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  29. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  30. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  31. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
  32. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +38 -7
  33. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  34. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  35. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +14 -5
  36. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -15
  37. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  38. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  39. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  40. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  41. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  42. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  43. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  44. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
  45. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  46. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  47. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  48. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  49. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +30 -10
  50. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  51. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  52. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  53. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  54. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  55. package/esm2022/libs/ui/elements/src/index.mjs +5 -1
  56. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  57. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
  58. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
  59. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  60. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  61. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +27 -53
  62. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +68 -0
  63. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
  64. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  65. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  67. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  68. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
  69. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
  70. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +169 -0
  71. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +22 -4
  72. package/esm2022/libs/ui/inputs/src/index.mjs +3 -2
  73. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  74. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  75. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  76. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  77. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  78. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  79. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  80. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  81. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
  82. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  83. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  84. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  85. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  86. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  87. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  88. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
  89. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  90. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +107 -0
  91. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
  92. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  93. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  94. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  95. package/esm2022/libs/ui/search/src/index.mjs +3 -1
  96. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  97. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  98. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  99. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  100. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  101. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +19 -12
  102. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +29 -15
  103. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +19 -5
  104. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  105. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  106. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  107. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
  108. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
  109. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  110. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  111. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  112. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +16 -6
  113. package/esm2022/translations/de.json +62 -6
  114. package/esm2022/translations/en.json +64 -8
  115. package/esm2022/translations/es.json +62 -6
  116. package/esm2022/translations/fr.json +63 -7
  117. package/esm2022/translations/it.json +65 -9
  118. package/esm2022/translations/nl.json +62 -6
  119. package/esm2022/translations/pt.json +62 -6
  120. package/fesm2022/geonetwork-ui.mjs +2962 -1107
  121. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  122. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  123. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  125. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  126. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  127. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  128. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  129. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  130. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  131. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  132. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  133. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  134. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  135. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  136. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  137. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  138. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  139. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +7 -2
  140. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  141. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  142. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +9 -3
  143. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  144. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +3 -0
  145. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  146. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  147. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  148. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  149. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  150. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +6 -3
  151. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  152. package/libs/feature/editor/src/index.d.ts +1 -0
  153. package/libs/feature/editor/src/index.d.ts.map +1 -1
  154. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +52 -0
  155. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  156. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  157. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  158. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  159. 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
  160. package/libs/feature/record/src/index.d.ts +1 -3
  161. package/libs/feature/record/src/index.d.ts.map +1 -1
  162. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  163. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  164. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  165. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  166. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  167. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  168. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  169. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  170. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  171. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  172. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  173. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  174. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +9 -1
  175. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  176. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  177. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  178. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  179. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  180. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  181. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  182. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  183. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  184. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  185. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  186. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  187. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  188. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  189. package/libs/feature/search/src/index.d.ts +1 -1
  190. package/libs/feature/search/src/index.d.ts.map +1 -1
  191. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  192. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  193. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  194. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  195. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  196. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  197. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  198. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  199. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  200. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  201. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  202. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  203. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  204. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  205. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  206. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  207. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  208. package/libs/ui/elements/src/index.d.ts +4 -0
  209. package/libs/ui/elements/src/index.d.ts.map +1 -1
  210. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  211. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  212. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  213. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  214. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  215. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  216. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -7
  217. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  218. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +13 -0
  219. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  220. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  221. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  222. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  223. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  224. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
  225. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  226. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
  227. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  228. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +31 -0
  229. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  230. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +4 -1
  231. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  232. package/libs/ui/inputs/src/index.d.ts +2 -1
  233. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  234. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  235. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  236. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  237. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  238. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  239. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  240. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  241. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  242. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  243. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  244. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  245. package/libs/ui/layout/src/index.d.ts +1 -0
  246. package/libs/ui/layout/src/index.d.ts.map +1 -1
  247. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  248. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  249. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  250. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  251. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  252. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  253. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  254. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  255. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +27 -0
  256. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  257. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  258. package/libs/ui/map/src/index.d.ts +1 -0
  259. package/libs/ui/map/src/index.d.ts.map +1 -1
  260. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  261. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  262. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  263. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  264. package/libs/ui/search/src/index.d.ts +2 -0
  265. package/libs/ui/search/src/index.d.ts.map +1 -1
  266. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  267. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  268. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  269. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +3 -3
  270. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  271. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +5 -1
  272. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  273. package/libs/ui/search/src/lib/ui-search.module.d.ts +22 -19
  274. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  275. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  276. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  277. package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
  278. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  279. package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
  280. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  281. package/libs/util/shared/src/index.d.ts +1 -0
  282. package/libs/util/shared/src/index.d.ts.map +1 -1
  283. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  284. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  285. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  286. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  287. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  288. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  289. package/package.json +2 -2
  290. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  291. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  292. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  293. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  294. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  295. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +3 -3
  296. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  297. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  298. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +63 -6
  299. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  300. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
  301. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
  302. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +10 -6
  303. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +7 -4
  304. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
  305. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +3 -11
  306. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +66 -7
  307. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  308. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +14 -4
  309. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
  310. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +36 -26
  311. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +16 -2
  312. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  313. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
  314. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  315. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +58 -10
  316. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  317. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  318. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +31 -1
  319. package/src/libs/feature/editor/src/index.ts +1 -0
  320. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +120 -0
  321. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +325 -0
  322. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  323. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  324. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  325. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  326. package/src/libs/feature/record/src/index.ts +1 -3
  327. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +16 -10
  328. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  329. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  330. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  331. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  332. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
  333. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +25 -16
  334. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +40 -4
  335. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  336. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  337. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +27 -3
  338. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +21 -17
  339. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  340. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  341. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  342. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  343. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  344. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  345. package/src/libs/feature/search/src/index.ts +1 -1
  346. package/src/libs/feature/search/src/lib/constants.ts +1 -0
  347. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
  348. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  349. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  350. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  351. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
  352. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  353. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  354. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  355. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  356. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +26 -5
  357. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  358. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  359. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  360. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  361. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  362. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  363. package/src/libs/ui/elements/src/index.ts +4 -0
  364. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  365. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  366. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  367. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  368. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
  369. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  370. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  371. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  372. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  373. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +133 -138
  374. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +19 -47
  375. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  376. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +11 -0
  377. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +70 -0
  378. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  379. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
  380. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  381. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  382. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  383. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  384. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  385. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
  386. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
  387. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
  388. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
  389. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
  390. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  391. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +110 -0
  392. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +191 -0
  393. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -1
  394. package/src/libs/ui/inputs/src/index.ts +2 -1
  395. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  396. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  397. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  398. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  399. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  400. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  401. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  402. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  403. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  404. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  405. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +7 -8
  406. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  407. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  408. package/src/libs/ui/layout/src/index.ts +1 -0
  409. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  410. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  411. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  412. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  413. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  414. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  415. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  416. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  417. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +4 -7
  418. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  419. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  420. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  421. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  422. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +44 -0
  423. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +130 -0
  424. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -5
  425. package/src/libs/ui/map/src/index.ts +1 -0
  426. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  427. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  428. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  429. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  430. 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
  431. package/src/libs/ui/search/src/index.ts +2 -0
  432. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  433. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  434. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  435. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  436. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  437. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  438. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  439. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +11 -3
  440. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +14 -11
  441. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  442. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +29 -16
  443. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +22 -11
  444. package/src/libs/ui/search/src/lib/ui-search.module.ts +8 -0
  445. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
  446. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  447. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  448. package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
  449. package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
  450. package/src/libs/util/shared/src/index.ts +1 -0
  451. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  452. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +15 -3
  453. package/src/libs/util/shared/src/lib/links/link-utils.ts +33 -12
  454. package/tailwind.base.config.js +3 -0
  455. package/tailwind.base.css +19 -26
  456. package/translations/de.json +62 -6
  457. package/translations/en.json +64 -8
  458. package/translations/es.json +62 -6
  459. package/translations/fr.json +63 -7
  460. package/translations/it.json +65 -9
  461. package/translations/nl.json +62 -6
  462. package/translations/pt.json +62 -6
  463. package/translations/sk.json +62 -6
  464. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  465. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  466. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  467. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  468. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  469. 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
  470. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  471. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  472. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  473. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  474. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  475. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  476. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  477. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  478. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  479. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  480. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  481. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  482. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  483. /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
@@ -31,7 +31,7 @@ import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain
31
31
  import {
32
32
  RecordsApiService,
33
33
  SearchApiService,
34
- FeatureResponseApiModel,
34
+ LanguagesApiService,
35
35
  } from '../../../../../../libs/data-access/gn4/src'
36
36
  import {
37
37
  combineLatest,
@@ -47,6 +47,7 @@ import {
47
47
  import { catchError, map, tap } from 'rxjs/operators'
48
48
  import { lt } from 'semver'
49
49
  import { ElasticsearchService } from './elasticsearch'
50
+ import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src'
50
51
 
51
52
  const minPublicationApiVersion = '4.2.5'
52
53
 
@@ -65,7 +66,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
65
66
  private gn4SearchHelper: ElasticsearchService,
66
67
  private gn4Mapper: Gn4Converter,
67
68
  private gn4RecordsApi: RecordsApiService,
68
- private platformService: PlatformServiceInterface
69
+ private platformService: PlatformServiceInterface,
70
+ private gn4LanguagesApi: LanguagesApiService
69
71
  ) {}
70
72
 
71
73
  search({
@@ -129,9 +131,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
129
131
  return this.gn4SearchApi
130
132
  .search(
131
133
  'bucket',
132
- ['fcats'],
134
+ ['fcats', 'hassources'],
133
135
  JSON.stringify(
134
- this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)
136
+ this.gn4SearchHelper.getMetadataByIdsPayload([uniqueIdentifier])
135
137
  )
136
138
  )
137
139
  .pipe(
@@ -142,6 +144,27 @@ export class Gn4Repository implements RecordsRepositoryInterface {
142
144
  )
143
145
  }
144
146
 
147
+ getMultipleRecords(
148
+ uniqueIdentifiers: string[]
149
+ ): Observable<CatalogRecord[] | null> {
150
+ return this.gn4SearchApi
151
+ .search(
152
+ 'bucket',
153
+ undefined,
154
+ JSON.stringify(
155
+ this.gn4SearchHelper.getMetadataByIdsPayload(uniqueIdentifiers)
156
+ )
157
+ )
158
+ .pipe(
159
+ map((results: Gn4SearchResults) => results.hits.hits),
160
+ switchMap((records) =>
161
+ records && records.length > 0
162
+ ? this.gn4Mapper.readRecords(records)
163
+ : of(null)
164
+ )
165
+ )
166
+ }
167
+
145
168
  private mapEmbeddedFeatureCatalog(
146
169
  featureTypes: Array<DatasetFeatureType>
147
170
  ): DatasetFeatureCatalog {
@@ -152,7 +175,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
152
175
  attributes: Array.isArray(featureType.attributeTable)
153
176
  ? featureType.attributeTable.map((attr) => ({
154
177
  name: attr.name,
178
+ code: attr.code,
155
179
  title: attr.definition,
180
+ type: attr.type,
156
181
  }))
157
182
  : [],
158
183
  })),
@@ -164,7 +189,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
164
189
  ): Observable<DatasetFeatureCatalog | null> {
165
190
  if (
166
191
  record.extras?.['featureTypes'] &&
167
- Array.isArray(record.extras['featureTypes'])
192
+ Array.isArray(record.extras['featureTypes']) &&
193
+ record.extras['featureTypes'].length > 0
168
194
  ) {
169
195
  return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']))
170
196
  }
@@ -200,6 +226,24 @@ export class Gn4Repository implements RecordsRepositoryInterface {
200
226
  )
201
227
  }
202
228
 
229
+ getSources(record: CatalogRecord): Observable<CatalogRecord[]> {
230
+ const sourcesIdentifiers = record.extras?.['sourcesIdentifiers'] as string[]
231
+ if (sourcesIdentifiers && sourcesIdentifiers.length > 0) {
232
+ return this.getMultipleRecords(sourcesIdentifiers)
233
+ }
234
+ return of(null)
235
+ }
236
+
237
+ getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]> {
238
+ const sourceOfIdentifiers = record.extras?.[
239
+ 'sourceOfIdentifiers'
240
+ ] as string[]
241
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
242
+ return this.getMultipleRecords(sourceOfIdentifiers)
243
+ }
244
+ return of(null)
245
+ }
246
+
203
247
  aggregate(params: AggregationsParams): Observable<Aggregations> {
204
248
  // if aggregations are empty, return an empty object right away
205
249
  if (Object.keys(params).length === 0) return of({})
@@ -362,9 +406,12 @@ export class Gn4Repository implements RecordsRepositoryInterface {
362
406
  const record = await converter.readRecord(fetchedRecordAsXml)
363
407
 
364
408
  record.title = `${record.title} (Copy)`
365
- await converter.writeRecord(record, fetchedRecordAsXml)
409
+ const recordAsXml = await converter.writeRecord(
410
+ record,
411
+ fetchedRecordAsXml
412
+ )
366
413
 
367
- return this.saveRecord(record, '', false)
414
+ return this.saveRecord(record, recordAsXml, false)
368
415
  }),
369
416
  exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
370
417
  catchError((error: HttpErrorResponse) => {
@@ -465,6 +512,18 @@ export class Gn4Repository implements RecordsRepositoryInterface {
465
512
  )
466
513
  }
467
514
 
515
+ getApplicationLanguages(): Observable<string[]> {
516
+ return this.gn4LanguagesApi
517
+ .getApplicationLanguages()
518
+ .pipe(
519
+ map((languages) =>
520
+ languages
521
+ .map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
522
+ .filter((code): code is string => !!code)
523
+ )
524
+ )
525
+ }
526
+
468
527
  private getRecordAsXml(uniqueIdentifier: string): Observable<string | null> {
469
528
  return this.gn4RecordsApi
470
529
  .getRecordAs(
@@ -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
  }
@@ -152,6 +152,8 @@ export type ServiceProtocol =
152
152
  | 'esriRest'
153
153
  | 'ogcFeatures'
154
154
  | 'GPFDL'
155
+ | 'tms'
156
+ | 'maplibre-style'
155
157
  | 'other'
156
158
 
157
159
  export type OnlineResourceType = 'service' | 'download' | 'link' | 'endpoint'
@@ -164,6 +166,7 @@ export interface DatasetServiceDistribution {
164
166
  name?: string
165
167
  description?: string
166
168
  translations?: OnlineResourceTranslations
169
+ accessRestricted?: boolean
167
170
  }
168
171
 
169
172
  export interface DatasetDownloadDistribution {
@@ -178,6 +181,7 @@ export interface DatasetDownloadDistribution {
178
181
  description?: string
179
182
  accessServiceProtocol?: ServiceProtocol
180
183
  translations?: OnlineResourceTranslations
184
+ accessRestricted?: boolean
181
185
  }
182
186
 
183
187
  export interface OnlineLinkResource {
@@ -187,6 +191,7 @@ export interface OnlineLinkResource {
187
191
  description?: string
188
192
  translations?: OnlineResourceTranslations
189
193
  mimeType?: string
194
+ accessRestricted?: boolean
190
195
  }
191
196
 
192
197
  export type DatasetOnlineResource = (
@@ -232,13 +237,13 @@ export type DatasetFeatureCatalog = {
232
237
  featureTypes: Array<{
233
238
  name: string
234
239
  definition: string
235
- attributes: Array<{ name: string; title: string }>
240
+ attributes: Array<{ name: string; title: string; code: string }>
236
241
  }>
237
242
  }
238
243
 
239
244
  export interface ServiceEndpoint {
240
- endpointUrl: URL
241
- protocol: string
245
+ url: URL
246
+ accessServiceProtocol: ServiceProtocol
242
247
  type: 'endpoint'
243
248
  description?: string
244
249
  translations?: OnlineResourceTranslations
@@ -269,7 +274,12 @@ export interface DatasetFeatureType {
269
274
  isAbstract: string
270
275
  typeName: string
271
276
  definition: string
272
- attributeTable: Array<{ name: string; definition: string }>
277
+ attributeTable: Array<{
278
+ name: string
279
+ definition: string
280
+ type: string
281
+ code: string
282
+ }>
273
283
  }
274
284
 
275
285
  export type ReuseType = 'application' | 'map' | 'other'
@@ -19,6 +19,8 @@ export abstract class RecordsRepositoryInterface {
19
19
  abstract getSimilarRecords(
20
20
  similarTo: CatalogRecord
21
21
  ): Observable<CatalogRecord[]>
22
+ abstract getSources(record: CatalogRecord): Observable<CatalogRecord[]>
23
+ abstract getSourceOf(record: CatalogRecord): Observable<CatalogRecord[]>
22
24
  abstract fuzzySearch(query: string): Observable<SearchResults>
23
25
  abstract canEditRecord(uniqueIdentifier: string): Observable<boolean>
24
26
  /**
@@ -95,4 +97,5 @@ export abstract class RecordsRepositoryInterface {
95
97
  localRecord: CatalogRecord
96
98
  ): Observable<{ user: string; date: Date }>
97
99
  abstract getRecordPublicationStatus(uuid: string): Observable<boolean>
100
+ abstract getApplicationLanguages(): Observable<string[]>
98
101
  }
@@ -1,147 +1,157 @@
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
  },
147
+ maplayerTms: {
148
+ accessServiceProtocol: 'TMS',
149
+ name: 'mytmslayer',
150
+ url: 'https://my.tms.server/MapServer',
151
+ },
152
+ maplayerTms2: {
153
+ accessServiceProtocol: 'OSGeo:TMS',
154
+ name: 'myothertmslayer',
155
+ url: 'https://my.tms.server/MapServer',
156
+ },
147
157
  })
@@ -185,6 +185,20 @@ export const aSetOfLinksFixture = () => ({
185
185
  url: new URL('https://my.ogc.server/wms'),
186
186
  accessServiceProtocol: 'wms',
187
187
  }) as DatasetServiceDistribution,
188
+ geodataTms: () =>
189
+ ({
190
+ name: 'mytmslayer',
191
+ type: 'service',
192
+ url: new URL('https://my.ogc.server/tms'),
193
+ accessServiceProtocol: 'tms',
194
+ }) as DatasetServiceDistribution,
195
+ geodataAsMaplibreStyle: () =>
196
+ ({
197
+ name: 'mytmslayerAsMaplibreJson',
198
+ type: 'service',
199
+ url: new URL('https://my.ogc.server/tms/layer/style.json'),
200
+ accessServiceProtocol: 'maplibre-style',
201
+ }) as DatasetServiceDistribution,
188
202
  geodataWfs2: () =>
189
203
  ({
190
204
  name: 'myotherlayer',
@@ -239,10 +253,10 @@ export const aSetOfLinksFixture = () => ({
239
253
  ({
240
254
  description:
241
255
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS',
242
- endpointUrl: new URL(
256
+ url: new URL(
243
257
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS'
244
258
  ),
245
- protocol: 'wms',
259
+ accessServiceProtocol: 'wms',
246
260
  type: 'endpoint',
247
261
  }) as ServiceEndpoint,
248
262
  })
@@ -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
  })
@@ -231,7 +231,7 @@ As such, **it is not very interesting at all.**`,
231
231
  recordUpdated: new Date('2022-04-15T14:18:19'),
232
232
  resourceUpdated: new Date('2022-03-29'),
233
233
  title:
234
- "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022",
234
+ "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022 (Ce lot informe du droit à bâtir sur la commune d'Avrigny)",
235
235
  abstract: `Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022.
236
236
 
237
237
  Ce lot informe du droit à bâtir sur la commune d'Avrigny.
@@ -18,15 +18,17 @@
18
18
  [selected]="xProperty$.value"
19
19
  [title]="'chart.dropdown.xProperty' | translate"
20
20
  ></gn-ui-dropdown-selector>
21
- <gn-ui-dropdown-selector
22
- class="basis-1/4"
23
- *ngIf="!isCountAggregation"
24
- [choices]="yChoices$ | async"
25
- (selectValue)="yProperty$.next($event)"
26
- [selected]="yProperty$.value"
27
- [title]="'chart.dropdown.yProperty' | translate"
28
- class="select-y-prop"
29
- ></gn-ui-dropdown-selector>
21
+ <ng-container *ngIf="yChoices$ | async as yChoices">
22
+ <gn-ui-dropdown-selector
23
+ class="basis-1/4"
24
+ *ngIf="!isCountAggregation"
25
+ [choices]="yChoices"
26
+ (selectValue)="yProperty$.next($event)"
27
+ [selected]="yProperty$.value"
28
+ [title]="'chart.dropdown.yProperty' | translate"
29
+ class="select-y-prop"
30
+ ></gn-ui-dropdown-selector>
31
+ </ng-container>
30
32
  <gn-ui-dropdown-selector
31
33
  class="basis-1/4"
32
34
  [choices]="aggregationChoices"
@@ -43,6 +45,7 @@
43
45
  *ngIf="!error"
44
46
  [data]="chartData$ | async"
45
47
  [type]="chartType$.value"
48
+ [prettyLabel]="prettyLabel$ | async"
46
49
  [labelProperty]="labelProperty"
47
50
  [valueProperty]="valueProperty"
48
51
  ></gn-ui-chart>
@@ -2,9 +2,7 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  ChangeDetectorRef,
4
4
  Component,
5
- Inject,
6
5
  Input,
7
- Optional,
8
6
  Output,
9
7
  } from '@angular/core'
10
8
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
@@ -13,6 +11,7 @@ import {
13
11
  FetchError,
14
12
  FieldAggregation,
15
13
  getJsonDataItemsProxy,
14
+ PropertyInfo,
16
15
  } from '../../../../../../libs/util/data-fetcher/src'
17
16
  import {
18
17
  DropdownChoice,
@@ -30,7 +29,10 @@ import {
30
29
  } from 'rxjs/operators'
31
30
  import { DataService } from '../service/data.service'
32
31
  import { InputChartType } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
33
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
32
+ import {
33
+ DatasetFeatureCatalog,
34
+ DatasetOnlineResource,
35
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
34
36
  import { TranslateModule, TranslateService } from '@ngx-translate/core'
35
37
  import { CommonModule } from '@angular/common'
36
38
  import { ChartComponent } from '../../../../../../libs/ui/dataviz/src'
@@ -67,9 +69,18 @@ marker('chart.aggregation.count')
67
69
  standalone: true,
68
70
  })
69
71
  export class ChartViewComponent {
72
+ public featureCatalog$ = new BehaviorSubject<DatasetFeatureCatalog | null>(
73
+ null
74
+ )
75
+ @Input() set featureCatalog(value: DatasetFeatureCatalog) {
76
+ this.featureCatalog$.next(value)
77
+ }
70
78
  @Input() cacheActive = true
71
79
  @Input() set link(value: DatasetOnlineResource) {
72
80
  this.currentLink$.next(value)
81
+ if (value) {
82
+ this.aggregation$.next('sum')
83
+ }
73
84
  }
74
85
  private currentLink$ = new BehaviorSubject<DatasetOnlineResource>(null)
75
86
 
@@ -137,6 +148,10 @@ export class ChartViewComponent {
137
148
  switchMap((link) => {
138
149
  this.error = null
139
150
  this.loading = true
151
+ if (link.accessRestricted) {
152
+ this.handleError('dataset.error.restrictedAccess')
153
+ return EMPTY
154
+ }
140
155
  return this.dataService.getDataset(link, this.cacheActive).pipe(
141
156
  catchError((error) => {
142
157
  this.handleError(error)
@@ -146,13 +161,8 @@ export class ChartViewComponent {
146
161
  }),
147
162
  shareReplay(1)
148
163
  )
149
- properties$ = this.dataset$.pipe(
150
- switchMap((dataset) =>
151
- dataset.properties.catch((error) => {
152
- this.handleError(error)
153
- return []
154
- })
155
- ),
164
+ properties$ = combineLatest([this.dataset$, this.featureCatalog$]).pipe(
165
+ switchMap(([dataset, catalog]) => this.setProperties(dataset, catalog)),
156
166
  shareReplay(1)
157
167
  )
158
168
  yChoices$ = this.properties$.pipe(
@@ -193,6 +203,7 @@ export class ChartViewComponent {
193
203
  this.yProperty$.pipe(filter((value) => value !== undefined)),
194
204
  this.aggregation$,
195
205
  ]).pipe(
206
+ filter(([_, x, y]) => !!x || !!y),
196
207
  switchMap(([dataset, xProp, yProp, aggregation]) => {
197
208
  const fieldAgg: FieldAggregation =
198
209
  aggregation === 'count' ? ['count'] : [aggregation, yProp]
@@ -213,6 +224,18 @@ export class ChartViewComponent {
213
224
  shareReplay(1)
214
225
  )
215
226
 
227
+ prettyLabel$ = combineLatest([
228
+ this.aggregation$,
229
+ this.properties$,
230
+ this.yProperty$,
231
+ ]).pipe(
232
+ map(([aggregation, properties, yProperty]) => {
233
+ if (aggregation === 'count') return 'count()'
234
+ const prop = properties.find((p) => p.name === yProperty)
235
+ return prop ? `${aggregation}(${prop.label})` : ''
236
+ })
237
+ )
238
+
216
239
  get labelProperty() {
217
240
  if (!this.xProperty$.value) return ''
218
241
  return `distinct(${this.xProperty$.value})`
@@ -231,6 +254,31 @@ export class ChartViewComponent {
231
254
  private translateService: TranslateService
232
255
  ) {}
233
256
 
257
+ setProperties(
258
+ dataset: BaseReader,
259
+ catalog: DatasetFeatureCatalog
260
+ ): Promise<PropertyInfo[]> {
261
+ return dataset.properties
262
+ .then((properties) => {
263
+ return properties.map((p) => {
264
+ if (catalog) {
265
+ const featureAttributes = catalog?.featureTypes[0]?.attributes ?? []
266
+ const matchingAttribute = featureAttributes.find(
267
+ (attr) => attr.name === p.label
268
+ )
269
+ if (matchingAttribute?.code) {
270
+ return { ...p, label: matchingAttribute.code }
271
+ }
272
+ return p
273
+ }
274
+ return p
275
+ })
276
+ })
277
+ .catch((error) => {
278
+ this.handleError(error)
279
+ return []
280
+ })
281
+ }
234
282
  handleError(error: FetchError | Error | string) {
235
283
  if (error instanceof FetchError) {
236
284
  this.error = this.translateService.instant(