geonetwork-ui 2.6.0-dev.582b4530a → 2.6.0-dev.6681b0ab3

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 (398) 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/resource-types.mjs +17 -15
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  7. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
  8. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +5 -2
  9. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  10. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  11. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +45 -9
  12. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  13. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +25 -6
  14. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  15. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +18 -0
  16. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  17. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  19. package/esm2022/libs/feature/record/src/index.mjs +1 -2
  20. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  21. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  22. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  23. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  24. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
  25. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -3
  26. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +10 -6
  29. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  30. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  31. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  32. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  33. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  34. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  35. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  36. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  37. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  38. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
  39. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  40. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  41. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  42. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  43. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  44. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  45. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  46. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
  47. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
  48. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  49. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
  50. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +51 -0
  51. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
  52. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  53. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  54. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  55. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  56. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
  57. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
  58. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
  59. package/esm2022/libs/ui/inputs/src/index.mjs +3 -2
  60. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  61. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  62. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  63. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  64. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  65. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  66. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  67. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
  68. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  69. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  70. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  71. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  72. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  73. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  74. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
  75. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  76. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +107 -0
  77. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
  78. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  79. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  80. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  81. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  82. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  83. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  84. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  85. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
  86. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +11 -3
  87. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  88. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  89. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  90. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  91. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  92. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
  93. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
  94. package/esm2022/translations/de.json +42 -5
  95. package/esm2022/translations/en.json +45 -6
  96. package/esm2022/translations/es.json +42 -5
  97. package/esm2022/translations/fr.json +45 -6
  98. package/esm2022/translations/it.json +42 -5
  99. package/esm2022/translations/nl.json +42 -5
  100. package/esm2022/translations/pt.json +42 -5
  101. package/fesm2022/geonetwork-ui.mjs +1807 -635
  102. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  103. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  104. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  105. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  107. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  108. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  109. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  110. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  111. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -2
  112. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  113. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  114. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  115. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  116. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  117. package/libs/feature/editor/src/index.d.ts +1 -0
  118. package/libs/feature/editor/src/index.d.ts.map +1 -1
  119. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +7 -0
  120. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  121. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  122. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  123. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  124. 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
  125. package/libs/feature/record/src/index.d.ts +0 -1
  126. package/libs/feature/record/src/index.d.ts.map +1 -1
  127. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  128. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  129. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  130. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  131. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  132. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  133. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  134. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  135. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  136. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
  137. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  138. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +11 -7
  139. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  140. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  141. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  142. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  143. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  144. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  145. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  146. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  147. package/libs/feature/search/src/index.d.ts +1 -1
  148. package/libs/feature/search/src/index.d.ts.map +1 -1
  149. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  150. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  151. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  152. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  153. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  154. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  155. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  156. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  157. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  158. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  159. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  160. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  161. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  162. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  163. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  164. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  165. package/libs/ui/elements/src/index.d.ts +3 -0
  166. package/libs/ui/elements/src/index.d.ts.map +1 -1
  167. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  168. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  169. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  170. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  171. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +11 -0
  172. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  173. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  174. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  175. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  176. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  177. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
  178. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  179. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
  180. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  181. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
  182. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  183. package/libs/ui/inputs/src/index.d.ts +2 -1
  184. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  185. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  186. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  187. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  188. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  189. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  190. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  191. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  192. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  193. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  194. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  195. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  196. package/libs/ui/layout/src/index.d.ts +1 -0
  197. package/libs/ui/layout/src/index.d.ts.map +1 -1
  198. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  199. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  200. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  201. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  202. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  203. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  204. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  205. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  206. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +27 -0
  207. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  208. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  209. package/libs/ui/map/src/index.d.ts +1 -0
  210. package/libs/ui/map/src/index.d.ts.map +1 -1
  211. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  212. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  213. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  214. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  215. package/libs/ui/search/src/index.d.ts +1 -0
  216. package/libs/ui/search/src/index.d.ts.map +1 -1
  217. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  218. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  219. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  220. package/libs/ui/search/src/lib/ui-search.module.d.ts +21 -19
  221. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  222. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  223. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  224. package/libs/util/shared/src/index.d.ts +1 -0
  225. package/libs/util/shared/src/index.d.ts.map +1 -1
  226. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  227. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  228. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  229. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  230. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  231. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  232. package/package.json +2 -2
  233. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  234. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  235. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  236. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  237. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  238. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  239. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  240. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
  241. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
  242. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  243. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
  244. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +4 -1
  245. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  246. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -4
  247. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
  248. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
  249. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  250. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  251. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +54 -10
  252. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  253. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +27 -1
  254. package/src/libs/feature/editor/src/index.ts +1 -0
  255. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +14 -0
  256. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +15 -0
  257. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  258. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  259. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  260. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  261. package/src/libs/feature/record/src/index.ts +0 -1
  262. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +16 -10
  263. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  264. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  265. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  266. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  267. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
  268. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +25 -16
  269. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  270. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
  271. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +11 -7
  272. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  273. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  274. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  275. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  276. package/src/libs/feature/search/src/index.ts +1 -1
  277. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
  278. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  279. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  280. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  281. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
  282. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  283. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  284. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  285. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  286. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
  287. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  288. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  289. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  290. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  291. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  292. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  293. package/src/libs/ui/elements/src/index.ts +3 -0
  294. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  295. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  296. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  297. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  298. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
  299. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  300. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
  301. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  302. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +9 -0
  303. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +51 -0
  304. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  305. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
  306. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  307. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  308. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  309. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  310. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  311. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
  312. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
  313. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
  314. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  315. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
  316. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
  317. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -1
  318. package/src/libs/ui/inputs/src/index.ts +2 -1
  319. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  320. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  321. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  322. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  323. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  324. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  325. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  326. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  327. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  328. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +6 -6
  329. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  330. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  331. package/src/libs/ui/layout/src/index.ts +1 -0
  332. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  333. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  334. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  335. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  336. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  337. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  338. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  339. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  340. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
  341. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  342. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  343. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  344. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  345. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +44 -0
  346. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +130 -0
  347. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -5
  348. package/src/libs/ui/map/src/index.ts +1 -0
  349. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  350. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  351. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  352. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  353. 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
  354. package/src/libs/ui/search/src/index.ts +1 -0
  355. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  356. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +24 -0
  357. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  358. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  359. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
  360. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
  361. package/src/libs/ui/search/src/lib/ui-search.module.ts +5 -0
  362. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
  363. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  364. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  365. package/src/libs/util/shared/src/index.ts +1 -0
  366. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  367. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
  368. package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
  369. package/tailwind.base.config.js +3 -0
  370. package/tailwind.base.css +19 -26
  371. package/translations/de.json +42 -5
  372. package/translations/en.json +45 -6
  373. package/translations/es.json +42 -5
  374. package/translations/fr.json +45 -6
  375. package/translations/it.json +42 -5
  376. package/translations/nl.json +42 -5
  377. package/translations/pt.json +42 -5
  378. package/translations/sk.json +42 -5
  379. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  380. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  381. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  382. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  383. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  384. 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
  385. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  386. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  387. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  388. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  389. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  390. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  391. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  392. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  393. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  394. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  395. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  396. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  397. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  398. /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
@@ -4,23 +4,37 @@ import {
4
4
  ReuseType,
5
5
  } from '../../../../../../libs/common/domain/src/lib/model/record'
6
6
 
7
- export function getResourceType(type: string): RecordKind {
8
- const possibleResourceTypes = {
9
- application: 'reuse',
10
- dataset: 'dataset',
11
- map: 'reuse',
12
- 'map/static': 'reuse', // old index field
13
- 'map/interactive': 'reuse', // old index field
14
- 'map-interactive': 'reuse', // new index field since Oct 10, 2024
15
- 'map-static': 'reuse', // new index field
16
- mapDigital: 'reuse',
17
- interactiveMap: 'reuse',
18
- staticMap: 'reuse',
19
- service: 'service',
20
- } as const
7
+ export const PossibleResourceTypes = {
8
+ application: 'reuse',
9
+ dataset: 'dataset',
10
+ interactiveMap: 'reuse',
11
+ map: 'reuse',
12
+ 'map/static': 'reuse', // old index field
13
+ 'map/interactive': 'reuse', // old index field
14
+ 'map-interactive': 'reuse', // new index field since Oct 10, 2024
15
+ 'map-static': 'reuse', // new index field
16
+ mapDigital: 'reuse',
17
+ series: 'dataset',
18
+ service: 'service',
19
+ staticMap: 'reuse',
20
+ } as const
21
+
22
+ type KindType = keyof typeof PossibleResourceTypes
23
+ type ResourceType = 'reuse' | 'dataset' | 'service'
24
+ type PossibleResourceTypesGrouped = {
25
+ [K in ResourceType]: KindType[]
26
+ }
27
+
28
+ export const PossibleResourceTypesDefinition = Object.entries(
29
+ PossibleResourceTypes
30
+ ).reduce(
31
+ (acc, [key, val]) => ((acc[val] ??= []).push(key), acc),
32
+ {}
33
+ ) as PossibleResourceTypesGrouped
21
34
 
35
+ export function getResourceType(type: string): RecordKind {
22
36
  return (
23
- possibleResourceTypes[type as keyof typeof possibleResourceTypes] ||
37
+ PossibleResourceTypes[type as keyof typeof PossibleResourceTypes] ||
24
38
  'dataset'
25
39
  )
26
40
  }
@@ -174,10 +174,10 @@ export const GEO2FRANCE_SERVICE_EAUXUSEES_RECORD: ServiceRecord = {
174
174
  onlineResources: [
175
175
  {
176
176
  type: 'endpoint',
177
- endpointUrl: new URL(
177
+ url: new URL(
178
178
  'https://services.sandre.eaufrance.fr/geo/odp?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities'
179
179
  ),
180
- protocol: 'wfs',
180
+ accessServiceProtocol: 'wfs',
181
181
  description:
182
182
  'Ouvrages de dépollution - Système de traitement des eaux usées - France entière',
183
183
  translations: {},
@@ -772,10 +772,10 @@ export const GEOCAT_CH_SERVICE_RECORD: ServiceRecord = {
772
772
  },
773
773
  {
774
774
  type: 'endpoint',
775
- endpointUrl: new URL(
775
+ url: new URL(
776
776
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS'
777
777
  ),
778
- protocol: 'wms',
778
+ accessServiceProtocol: 'wms',
779
779
  description:
780
780
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS',
781
781
  translations: {
@@ -629,10 +629,10 @@ export const METAWAL_SERVICE_RECORD: ServiceRecord = {
629
629
  {
630
630
  description:
631
631
  'Ce service ESRI-REST permet de visualiser la couche de données "Plan parcellaire cadastral - situation 01/01/2016" (uniquement les données du bâti et le parcellaire)',
632
- endpointUrl: new URL(
632
+ url: new URL(
633
633
  'https://geoservices.wallonie.be/arcgis/rest/services/PLAN_REGLEMENT/CADMAP_2016_PARCELLES/MapServer'
634
634
  ),
635
- protocol: 'esriRest',
635
+ accessServiceProtocol: 'esriRest',
636
636
  type: 'endpoint',
637
637
  translations: {},
638
638
  },
@@ -274,10 +274,10 @@ export const WALLONIE_SERVICE_NAPITSWALLONIA_RECORD: ServiceRecord = {
274
274
  onlineResources: [
275
275
  {
276
276
  type: 'endpoint',
277
- endpointUrl: new URL(
277
+ url: new URL(
278
278
  'https://metawal.wallonie.be/geonetwork/api/collections/napits'
279
279
  ),
280
- protocol: 'other',
280
+ accessServiceProtocol: 'other',
281
281
  description: "Point d'accès OGC API Records pour NAP-ITS-Wallonia.",
282
282
  translations: {},
283
283
  },
@@ -509,8 +509,8 @@ export class Gn4FieldMapper {
509
509
  return {
510
510
  ...distribution,
511
511
  type,
512
- endpointUrl: url,
513
- protocol: accessServiceProtocol,
512
+ url: url,
513
+ accessServiceProtocol: accessServiceProtocol,
514
514
  }
515
515
  }
516
516
  }
@@ -965,8 +965,8 @@ export function extractServiceOnlineResources(): ChainableFunction<
965
965
  } else {
966
966
  return {
967
967
  type: 'endpoint',
968
- endpointUrl: url,
969
- protocol,
968
+ url: url,
969
+ accessServiceProtocol: protocol,
970
970
  ...(description && { description }),
971
971
  translations,
972
972
  }
@@ -1227,7 +1227,7 @@ export function writeLineage(record: DatasetRecord, rootEl: XmlElement) {
1227
1227
  }
1228
1228
 
1229
1229
  export function getServiceEndpointProtocol(endpoint: ServiceEndpoint): string {
1230
- switch (endpoint.protocol.toLowerCase()) {
1230
+ switch (endpoint.accessServiceProtocol.toLowerCase()) {
1231
1231
  case 'wfs':
1232
1232
  return 'OGC:WFS'
1233
1233
  case 'wms':
@@ -1235,14 +1235,14 @@ export function getServiceEndpointProtocol(endpoint: ServiceEndpoint): string {
1235
1235
  case 'wps':
1236
1236
  return 'OGC:WPS'
1237
1237
  default:
1238
- return endpoint.protocol
1238
+ return endpoint.accessServiceProtocol
1239
1239
  }
1240
1240
  }
1241
1241
 
1242
1242
  export function createOnlineResource(onlineResource: ServiceOnlineResource) {
1243
1243
  let linkageUrl, functionCode, protocol
1244
1244
  if (onlineResource.type === 'endpoint') {
1245
- linkageUrl = onlineResource.endpointUrl.toString()
1245
+ linkageUrl = onlineResource.url.toString()
1246
1246
  protocol = getServiceEndpointProtocol(onlineResource)
1247
1247
  functionCode = 'download'
1248
1248
  } else {
@@ -299,14 +299,6 @@ export class ElasticsearchService {
299
299
 
300
300
  private mustNotFilters(): Record<string, unknown>[] {
301
301
  return [
302
- {
303
- ...this.queryFilterOnValues('resourceType', [
304
- 'service',
305
- 'map',
306
- 'map/static',
307
- 'mapDigital',
308
- ]),
309
- },
310
302
  {
311
303
  query_string: {
312
304
  query:
@@ -429,7 +421,7 @@ export class ElasticsearchService {
429
421
  must_not: this.mustNotFilters(),
430
422
  },
431
423
  },
432
- _source: ['resourceTitleObject', 'uuid'],
424
+ _source: ['resourceTitleObject', 'uuid', 'resourceType'],
433
425
  from: 0,
434
426
  size: 20,
435
427
  }
@@ -152,7 +152,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
152
152
  attributes: Array.isArray(featureType.attributeTable)
153
153
  ? featureType.attributeTable.map((attr) => ({
154
154
  name: attr.name,
155
+ code: attr.code,
155
156
  title: attr.definition,
157
+ type: attr.type,
156
158
  }))
157
159
  : [],
158
160
  })),
@@ -164,7 +166,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
164
166
  ): Observable<DatasetFeatureCatalog | null> {
165
167
  if (
166
168
  record.extras?.['featureTypes'] &&
167
- Array.isArray(record.extras['featureTypes'])
169
+ Array.isArray(record.extras['featureTypes']) &&
170
+ record.extras['featureTypes'].length > 0
168
171
  ) {
169
172
  return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']))
170
173
  }
@@ -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
  }
@@ -235,13 +235,13 @@ export type DatasetFeatureCatalog = {
235
235
  featureTypes: Array<{
236
236
  name: string
237
237
  definition: string
238
- attributes: Array<{ name: string; title: string }>
238
+ attributes: Array<{ name: string; title: string; code: string }>
239
239
  }>
240
240
  }
241
241
 
242
242
  export interface ServiceEndpoint {
243
- endpointUrl: URL
244
- protocol: string
243
+ url: URL
244
+ accessServiceProtocol: ServiceProtocol
245
245
  type: 'endpoint'
246
246
  description?: string
247
247
  translations?: OnlineResourceTranslations
@@ -272,7 +272,12 @@ export interface DatasetFeatureType {
272
272
  isAbstract: string
273
273
  typeName: string
274
274
  definition: string
275
- attributeTable: Array<{ name: string; definition: string }>
275
+ attributeTable: Array<{
276
+ name: string
277
+ definition: string
278
+ type: string
279
+ code: string
280
+ }>
276
281
  }
277
282
 
278
283
  export type ReuseType = 'application' | 'map' | 'other'
@@ -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
  })
@@ -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
 
@@ -150,13 +161,8 @@ export class ChartViewComponent {
150
161
  }),
151
162
  shareReplay(1)
152
163
  )
153
- properties$ = this.dataset$.pipe(
154
- switchMap((dataset) =>
155
- dataset.properties.catch((error) => {
156
- this.handleError(error)
157
- return []
158
- })
159
- ),
164
+ properties$ = combineLatest([this.dataset$, this.featureCatalog$]).pipe(
165
+ switchMap(([dataset, catalog]) => this.setProperties(dataset, catalog)),
160
166
  shareReplay(1)
161
167
  )
162
168
  yChoices$ = this.properties$.pipe(
@@ -197,6 +203,7 @@ export class ChartViewComponent {
197
203
  this.yProperty$.pipe(filter((value) => value !== undefined)),
198
204
  this.aggregation$,
199
205
  ]).pipe(
206
+ filter(([_, x, y]) => !!x || !!y),
200
207
  switchMap(([dataset, xProp, yProp, aggregation]) => {
201
208
  const fieldAgg: FieldAggregation =
202
209
  aggregation === 'count' ? ['count'] : [aggregation, yProp]
@@ -217,6 +224,18 @@ export class ChartViewComponent {
217
224
  shareReplay(1)
218
225
  )
219
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
+
220
239
  get labelProperty() {
221
240
  if (!this.xProperty$.value) return ''
222
241
  return `distinct(${this.xProperty$.value})`
@@ -235,6 +254,31 @@ export class ChartViewComponent {
235
254
  private translateService: TranslateService
236
255
  ) {}
237
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
+ }
238
282
  handleError(error: FetchError | Error | string) {
239
283
  if (error instanceof FetchError) {
240
284
  this.error = this.translateService.instant(
@@ -4,6 +4,7 @@
4
4
  *ngIf="tableData$ | async as dataset"
5
5
  class="overflow-auto grow"
6
6
  [dataset]="dataset"
7
+ [featureAttributes]="featureAttributes"
7
8
  (selected)="onTableSelect($event)"
8
9
  ></gn-ui-data-table>
9
10
  <gn-ui-loading-mask