geonetwork-ui 2.5.0-dev.50bf7a85a → 2.5.0-dev.5d0c263b8

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 (270) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -2
  4. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -17
  5. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +25 -9
  6. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +14 -13
  7. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  9. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  10. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +8 -8
  11. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
  12. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  13. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  14. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  15. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -5
  16. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -3
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -11
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +2 -2
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +2 -2
  21. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +3 -3
  22. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  23. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  24. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  25. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  26. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  27. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  28. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  29. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  30. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  31. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  32. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  33. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  34. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  35. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +15 -3
  36. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  37. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +3 -3
  38. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
  39. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +50 -35
  40. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  41. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +23 -3
  42. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  43. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +88 -7
  44. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +2 -2
  45. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  46. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +6 -4
  47. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +3 -3
  48. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  49. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  50. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  51. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +10 -3
  52. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  53. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  54. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  59. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  60. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  61. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  62. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
  63. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +13 -9
  64. package/esm2022/translations/de.json +5 -77
  65. package/esm2022/translations/en.json +5 -77
  66. package/esm2022/translations/es.json +3 -75
  67. package/esm2022/translations/fr.json +17 -89
  68. package/esm2022/translations/it.json +22 -93
  69. package/esm2022/translations/nl.json +3 -75
  70. package/esm2022/translations/pt.json +3 -75
  71. package/fesm2022/geonetwork-ui.mjs +583 -949
  72. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  73. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  74. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  75. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  76. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  77. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
  78. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  79. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  80. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  81. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  82. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  83. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  84. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  85. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  86. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  87. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  88. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  89. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  90. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
  91. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  92. package/libs/feature/editor/src/index.d.ts +1 -0
  93. package/libs/feature/editor/src/index.d.ts.map +1 -1
  94. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +1 -0
  95. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  96. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
  97. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  98. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  99. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  100. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  101. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  102. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  103. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  104. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  105. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  106. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  108. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  109. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  110. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  112. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  113. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  114. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  115. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  116. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  117. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  118. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  119. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +5 -1
  120. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  121. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts +11 -9
  122. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
  123. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  124. package/libs/ui/inputs/src/index.d.ts +0 -1
  125. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  126. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +23 -1
  127. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  128. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  129. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  130. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -1
  131. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  132. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  133. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  134. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  135. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  136. package/libs/ui/widgets/src/index.d.ts +0 -1
  137. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  138. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts +1 -1
  139. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts.map +1 -1
  140. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  141. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  142. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  143. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  144. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  145. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  146. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  147. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  148. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  149. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  150. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  151. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  152. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  153. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  154. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  155. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  156. package/package.json +1 -1
  157. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  158. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  159. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +19 -17
  160. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +22 -16
  161. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +44 -13
  162. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -26
  163. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  164. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  165. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
  166. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  167. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
  168. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
  169. package/src/libs/feature/editor/src/index.ts +1 -0
  170. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  171. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  172. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +1 -0
  173. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -0
  174. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
  175. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -10
  176. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +1 -1
  177. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  178. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  179. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  180. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  181. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  182. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  183. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  184. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  185. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  186. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  187. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  188. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  189. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  190. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  191. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  192. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +3 -0
  193. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +7 -0
  194. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +3 -1
  195. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
  196. package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +20 -15
  197. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +49 -35
  198. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  199. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +21 -9
  200. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +13 -0
  201. package/src/libs/ui/inputs/src/index.ts +0 -1
  202. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +36 -19
  203. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +85 -2
  204. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  205. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +3 -2
  206. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +1 -1
  207. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  208. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  209. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  210. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  211. package/src/libs/ui/widgets/src/index.ts +0 -1
  212. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +36 -11
  213. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.ts +9 -1
  214. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  215. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  216. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  217. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  218. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  219. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  220. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  221. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  222. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  223. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  224. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
  225. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  226. package/translations/de.json +5 -77
  227. package/translations/en.json +5 -77
  228. package/translations/es.json +3 -75
  229. package/translations/fr.json +17 -89
  230. package/translations/it.json +22 -93
  231. package/translations/nl.json +3 -75
  232. package/translations/pt.json +3 -75
  233. package/translations/sk.json +3 -75
  234. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  235. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  236. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  237. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  238. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  239. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  240. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  241. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  242. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  243. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  244. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  245. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  246. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  247. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  248. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  249. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  250. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  251. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  252. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  253. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  254. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  255. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  256. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  257. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  258. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  259. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  260. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  261. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  262. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  263. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  264. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  265. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  266. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  267. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  268. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  269. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  270. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -1,20 +1,23 @@
1
1
  import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client';
2
2
  import { DataItem, DatasetInfo, PropertyInfo } from '../model';
3
- import { BaseReader } from './base';
4
3
  import { GmlReader } from './gml';
5
4
  import { GeojsonReader } from './geojson';
6
- export declare class WfsReader extends BaseReader {
5
+ import { BaseCacheReader } from './base-cache';
6
+ export declare class WfsReader extends BaseCacheReader {
7
7
  endpoint: WfsEndpoint;
8
8
  featureTypeName: string;
9
9
  version: WfsVersion;
10
- constructor(url: string, wfsEndpoint: WfsEndpoint, featureTypeName: string);
10
+ constructor(url: string, wfsEndpoint: WfsEndpoint, featureTypeName: string, cacheActive?: boolean);
11
11
  get properties(): Promise<PropertyInfo[]>;
12
12
  get info(): Promise<DatasetInfo>;
13
13
  static createReader(wfsUrlEndpoint: string, featureTypeName?: string): Promise<GeojsonReader | GmlReader | WfsReader>;
14
- protected getData(): Promise<{
14
+ getData(aggregation?: any, groupedBy?: any): Promise<{
15
15
  items: DataItem[];
16
16
  properties: PropertyInfo[];
17
+ } | {
18
+ items: any;
17
19
  }>;
20
+ getQueryData(): Promise<any>;
18
21
  load(): void;
19
22
  read(): Promise<DataItem[]>;
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wfs.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/wfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAgB,MAAM,WAAW,CAAA;AAGvD,qBAAa,SAAU,SAAQ,UAAU;IACvC,QAAQ,EAAE,WAAW,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,UAAU,CAAA;gBAEP,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM;IAO1E,IAAI,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBxC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAO/B;WAEY,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IA4C1E,SAAS,CAAC,OAAO;;;;IAkCjB,IAAI;IAIE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CAGlC"}
1
+ {"version":3,"file":"wfs.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/data-fetcher/src/lib/readers/wfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAgB,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAI9C,qBAAa,SAAU,SAAQ,eAAe;IAC5C,QAAQ,EAAE,WAAW,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,UAAU,CAAA;gBAGjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO;IAQvB,IAAI,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBxC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAO/B;WAEY,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IA4C7D,OAAO,CAAC,WAAW,CAAC,KAAA,EAAE,SAAS,CAAC,KAAA;;;;;;IAiChC,YAAY;IAkBzB,IAAI;IAIE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CAGlC"}
@@ -1,8 +1,8 @@
1
1
  import { DataItem, DatasetHeaders, PropertyInfo, SupportedType } from './model';
2
2
  export declare function inferDatasetType(url: string, typeHint?: SupportedType): Promise<SupportedType>;
3
3
  export declare function fetchHeaders(url: string): Promise<DatasetHeaders>;
4
- export declare function fetchDataAsText(url: string): Promise<string>;
5
- export declare function fetchDataAsArrayBuffer(url: string): Promise<ArrayBuffer>;
4
+ export declare function fetchDataAsText(url: string, cacheActive: boolean): Promise<string>;
5
+ export declare function fetchDataAsArrayBuffer(url: string, cacheActive: boolean): Promise<ArrayBuffer>;
6
6
  export declare function tryParseDate(input: unknown): Date | null;
7
7
  export declare function tryParseNumber(input: string): number | null;
8
8
  export declare function jsonToGeojsonFeature(object: {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5D;AACD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBxE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,CAsB7E;AAqBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,UAAQ,GACjB;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CA0DA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAgB3B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AACD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,CAsB7E;AAqBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,UAAQ,GACjB;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CA0DA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAgB3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.5.0-dev.50bf7a85a",
3
+ "version": "2.5.0-dev.5d0c263b8",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -277,6 +277,31 @@ export class Gn4FieldMapper {
277
277
  },
278
278
  output
279
279
  ),
280
+ featureTypes: (output, source) =>
281
+ this.addExtra(
282
+ {
283
+ featureTypes: selectField(source, 'featureTypes'),
284
+ },
285
+ output
286
+ ),
287
+ related: (output, source) => {
288
+ const fcatSource = selectField(
289
+ getFirstValue(
290
+ selectField(
291
+ <SourceWithUnknownProps>selectField(source, 'related'),
292
+ 'fcats'
293
+ )
294
+ ) ?? {},
295
+ '_source'
296
+ )
297
+ const featureCatalogIdentifier = selectField(
298
+ <SourceWithUnknownProps>fcatSource,
299
+ 'uuid'
300
+ )
301
+ return featureCatalogIdentifier
302
+ ? this.addExtra({ featureCatalogIdentifier }, output)
303
+ : output
304
+ },
280
305
  isPublishedToAll: (output, source) =>
281
306
  this.addExtra(
282
307
  {
@@ -203,3 +203,7 @@ export interface Gn4Record {
203
203
  guestdownload?: boolean
204
204
  selected?: boolean
205
205
  }
206
+
207
+ export interface Gn4RecordRelated {
208
+ fcats?: Gn4Record[]
209
+ }
@@ -1184,25 +1184,27 @@ export function writeGraphicOverviews(
1184
1184
  findOrCreateIdentification(),
1185
1185
  removeChildrenByName('gmd:graphicOverview'),
1186
1186
  appendChildren(
1187
- ...record.overviews.map((overview) =>
1188
- pipe(
1189
- createNestedElement('gmd:graphicOverview', 'gmd:MD_BrowseGraphic'),
1190
- appendChildren(
1191
- pipe(
1192
- createElement('gmd:fileName'),
1193
- writeCharacterString(overview.url.toString())
1194
- )
1195
- ),
1196
- 'description' in overview
1197
- ? appendChildren(
1198
- pipe(
1199
- createElement('gmd:fileDescription'),
1200
- writeCharacterString(overview.description)
1201
- )
1187
+ ...record.overviews
1188
+ .filter((overview) => overview.url)
1189
+ .map((overview) =>
1190
+ pipe(
1191
+ createNestedElement('gmd:graphicOverview', 'gmd:MD_BrowseGraphic'),
1192
+ appendChildren(
1193
+ pipe(
1194
+ createElement('gmd:fileName'),
1195
+ writeCharacterString(overview.url.toString())
1202
1196
  )
1203
- : noop
1197
+ ),
1198
+ 'description' in overview
1199
+ ? appendChildren(
1200
+ pipe(
1201
+ createElement('gmd:fileDescription'),
1202
+ writeCharacterString(overview.description)
1203
+ )
1204
+ )
1205
+ : noop
1206
+ )
1204
1207
  )
1205
- )
1206
1208
  )
1207
1209
  )(rootEl)
1208
1210
  }
@@ -297,6 +297,25 @@ export class ElasticsearchService {
297
297
  return queryParts.length > 0 ? (queryParts as FilterQuery) : undefined
298
298
  }
299
299
 
300
+ private mustNotFilters(): Record<string, unknown>[] {
301
+ return [
302
+ {
303
+ ...this.queryFilterOnValues('resourceType', [
304
+ 'service',
305
+ 'map',
306
+ 'map/static',
307
+ 'mapDigital',
308
+ ]),
309
+ },
310
+ {
311
+ query_string: {
312
+ query:
313
+ 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
314
+ },
315
+ },
316
+ ]
317
+ }
318
+
300
319
  private buildPayloadQuery(
301
320
  { any, ...fieldSearchFilters }: SearchFilters,
302
321
  configFilters: SearchFilters,
@@ -304,14 +323,7 @@ export class ElasticsearchService {
304
323
  geometry?: Geometry
305
324
  ) {
306
325
  const must = [] as Record<string, unknown>[]
307
- const must_not = {
308
- ...this.queryFilterOnValues('resourceType', [
309
- 'service',
310
- 'map',
311
- 'map/static',
312
- 'mapDigital',
313
- ]),
314
- }
326
+ const must_not = this.mustNotFilters()
315
327
  const should = [] as Record<string, unknown>[]
316
328
  const filter = [this.queryFilterOnValues('isTemplate', 'n')] as Record<
317
329
  string,
@@ -413,14 +425,8 @@ export class ElasticsearchService {
413
425
  },
414
426
  },
415
427
  ],
416
- must_not: {
417
- ...this.queryFilterOnValues('resourceType', [
418
- 'service',
419
- 'map',
420
- 'map/static',
421
- 'mapDigital',
422
- ]),
423
- },
428
+
429
+ must_not: this.mustNotFilters(),
424
430
  },
425
431
  },
426
432
  _source: ['resourceTitleObject', 'uuid'],
@@ -12,7 +12,10 @@ import {
12
12
  Iso19139Converter,
13
13
  } from '../../../../../../libs/api/metadata-converter/src'
14
14
  import { PublicationVersionError } from '../../../../../../libs/common/domain/src/lib/model/error'
15
- import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
15
+ import {
16
+ CatalogRecord,
17
+ DatasetFeatureCatalog,
18
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
16
19
  import {
17
20
  Aggregations,
18
21
  AggregationsParams,
@@ -27,6 +30,7 @@ import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain
27
30
  import {
28
31
  RecordsApiService,
29
32
  SearchApiService,
33
+ FeatureResponseApiModel,
30
34
  } from '../../../../../../libs/data-access/gn4/src'
31
35
  import {
32
36
  combineLatest,
@@ -124,7 +128,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
124
128
  return this.gn4SearchApi
125
129
  .search(
126
130
  'bucket',
127
- null,
131
+ ['fcats'],
128
132
  JSON.stringify(
129
133
  this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)
130
134
  )
@@ -137,6 +141,41 @@ export class Gn4Repository implements RecordsRepositoryInterface {
137
141
  )
138
142
  }
139
143
 
144
+ getFeatureCatalog(
145
+ record: CatalogRecord,
146
+ visited: Set<string> = new Set() // prevent looping
147
+ ): Observable<DatasetFeatureCatalog | null> {
148
+ if (
149
+ record.extras &&
150
+ record.extras['featureTypes'] &&
151
+ record.extras['featureTypes'][0]?.attributeTable &&
152
+ Array.isArray(record.extras['featureTypes'][0].attributeTable)
153
+ ) {
154
+ return of({
155
+ attributes: record.extras['featureTypes'][0]?.attributeTable?.map(
156
+ (attr) => ({
157
+ name: attr.name,
158
+ title: attr.definition,
159
+ })
160
+ ),
161
+ } as DatasetFeatureCatalog)
162
+ }
163
+
164
+ const featureCatalogIdentifier = record.extras[
165
+ 'featureCatalogIdentifier'
166
+ ] as string
167
+ if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
168
+ visited.add(featureCatalogIdentifier)
169
+ return this.getRecord(featureCatalogIdentifier).pipe(
170
+ switchMap((record) =>
171
+ record ? this.getFeatureCatalog(record, visited) : of(null)
172
+ )
173
+ )
174
+ }
175
+
176
+ return of(null)
177
+ }
178
+
140
179
  getSimilarRecords(similarTo: CatalogRecord): Observable<CatalogRecord[]> {
141
180
  return this.gn4SearchApi
142
181
  .search(
@@ -313,21 +352,13 @@ export class Gn4Repository implements RecordsRepositoryInterface {
313
352
  exhaustMap(async (fetchedRecordAsXml: string) => {
314
353
  const converter = findConverterForDocument(fetchedRecordAsXml)
315
354
  const record = await converter.readRecord(fetchedRecordAsXml)
316
- const tempId = this.generateTemporaryId()
317
355
 
318
356
  record.title = `${record.title} (Copy)`
319
- record.uniqueIdentifier = tempId
320
-
321
- const recordAsXml = await converter.writeRecord(
322
- record,
323
- fetchedRecordAsXml
324
- )
325
-
326
- this.saveRecordToLocalStorage(recordAsXml, record.uniqueIdentifier)
327
- this._draftsChanged.next()
357
+ await converter.writeRecord(record, fetchedRecordAsXml)
328
358
 
329
- return tempId
359
+ return this.saveRecord(record, '', false)
330
360
  }),
361
+ exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
331
362
  catchError((error: HttpErrorResponse) => {
332
363
  return throwError(() => error)
333
364
  })
@@ -312,33 +312,31 @@ export class Gn4PlatformService implements PlatformServiceInterface {
312
312
  this.recordsApiService.getAssociatedResources(record.uniqueIdentifier),
313
313
  this.recordsApiService.getAllResources(record.uniqueIdentifier),
314
314
  ]).pipe(
315
- map(([associatedResources, recordResources]) => {
316
- // Received object from API is not a RelatedResponseApiModel, so we need
317
- // to cast it as any and do the bellow mappings to get the wanted values.
318
- const resourceIdsToKeep = [
319
- ...((associatedResources as any).onlines ?? []).map(
320
- (o) => Object.values(o.title)[0]
321
- ),
322
- ...((associatedResources as any).thumbnails ?? []).map(
323
- (o) => Object.values(o.title)[0]
324
- ),
325
- ]
326
-
327
- const resourceIdsToRemove = recordResources
328
- .map((r) => r.filename)
329
- .filter((resourceId) => !resourceIdsToKeep.includes(resourceId))
330
-
331
- return resourceIdsToRemove
315
+ map(([associated, attachments]) => {
316
+ const { onlines = [], thumbnails = [] } = associated
317
+
318
+ const urlsToKeep = [
319
+ ...(Array.isArray(onlines) ? onlines : []),
320
+ ...(Array.isArray(thumbnails) ? thumbnails : []),
321
+ ].map((resource) => Object.values(resource.url)[0])
322
+
323
+ const fileToDelete = attachments
324
+ .filter((attachment) => !urlsToKeep.includes(attachment.url))
325
+ .map((attachment) => attachment.filename)
326
+
327
+ return fileToDelete
332
328
  }),
333
- mergeMap((resourceIdsToRemove) =>
334
- forkJoin(
335
- resourceIdsToRemove.map((attachementId) =>
336
- this.recordsApiService.delResource(
337
- record.uniqueIdentifier,
338
- attachementId
339
- )
340
- )
341
- ).pipe(map(() => undefined))
329
+ mergeMap((filesToDelete) =>
330
+ filesToDelete.length
331
+ ? forkJoin(
332
+ filesToDelete.map((filename) =>
333
+ this.recordsApiService.delResource(
334
+ record.uniqueIdentifier,
335
+ filename
336
+ )
337
+ )
338
+ ).pipe(map(() => undefined))
339
+ : of(undefined)
342
340
  ),
343
341
  catchError((error) => {
344
342
  console.error('Error while cleaning attachments:', error)
@@ -226,7 +226,9 @@ export interface DatasetRecord extends BaseRecord {
226
226
  temporalExtents: Array<DatasetTemporalExtent>
227
227
  spatialRepresentation?: SpatialRepresentationType
228
228
  }
229
-
229
+ export type DatasetFeatureCatalog = {
230
+ attributes: Array<{ name: string; title: string }>
231
+ }
230
232
  export interface ServiceEndpoint {
231
233
  endpointUrl: URL
232
234
  protocol: string
@@ -6,12 +6,15 @@ import {
6
6
  SearchParams,
7
7
  SearchResults,
8
8
  } from '../model/search'
9
- import { CatalogRecord } from '../model/record'
9
+ import { CatalogRecord, DatasetFeatureCatalog } from '../model/record'
10
10
 
11
11
  export abstract class RecordsRepositoryInterface {
12
12
  abstract search(params: SearchParams): Observable<SearchResults>
13
13
  abstract getMatchesCount(filters: FieldFilters): Observable<number>
14
14
  abstract getRecord(uniqueIdentifier: string): Observable<CatalogRecord | null>
15
+ abstract getFeatureCatalog(
16
+ record: CatalogRecord
17
+ ): Observable<DatasetFeatureCatalog | null>
15
18
  abstract aggregate(params: AggregationsParams): Observable<Aggregations>
16
19
  abstract getSimilarRecords(
17
20
  similarTo: CatalogRecord
@@ -160,6 +160,38 @@ As such, **it is not very interesting at all.**`,
160
160
  extras: {
161
161
  isPublishedToAll: true,
162
162
  edit: true,
163
+ featureTypes: [
164
+ {
165
+ attributeTable: [
166
+ {
167
+ code: 'OBJECTID',
168
+ name: 'OBJECTID',
169
+ link: '',
170
+ definition: 'Object identifier',
171
+ type: 'OID',
172
+ },
173
+ {
174
+ code: 'NOM',
175
+ name: 'Nom',
176
+ link: '',
177
+ definition: 'Nom de la rue',
178
+ type: 'String (48)',
179
+ },
180
+ {
181
+ code: 'RUE',
182
+ name: 'Rue',
183
+ link: '',
184
+ definition: '',
185
+ type: 'String (50)',
186
+ },
187
+ ],
188
+ code: '',
189
+ aliases: '',
190
+ typeName: "Catalogue d'attributs",
191
+ definition: '',
192
+ isAbstract: 'false',
193
+ },
194
+ ],
163
195
  },
164
196
  },
165
197
  {
@@ -312,6 +344,49 @@ export const simpleDatasetRecordFixture = (): DatasetRecord => ({
312
344
  translations: {},
313
345
  })
314
346
 
347
+ export const simpleDatasetRecordWithFcatsFixture = (): DatasetRecord => ({
348
+ uniqueIdentifier: 'my-dataset-with-fcats',
349
+ extras: {
350
+ featureCatalogIdentifier: 'feature-catalog-identifier',
351
+ },
352
+ kind: 'dataset',
353
+ otherLanguages: [],
354
+ defaultLanguage: 'en',
355
+ recordUpdated: new Date('2022-02-01T14:12:00.000Z'),
356
+ resourceCreated: new Date('2022-09-01T12:18:19.000Z'),
357
+ resourceUpdated: new Date('2022-12-04T14:12:00.000Z'),
358
+ status: 'ongoing',
359
+ title: 'A very interesting dataset with a related feature catalog',
360
+ abstract: `This dataset has been established for testing purposes.`,
361
+ ownerOrganization: { name: 'MyOrganization', translations: {} },
362
+ contacts: [
363
+ {
364
+ email: 'bob@org.net',
365
+ position: 'developer',
366
+ organization: { name: 'MyOrganization', translations: {} },
367
+ role: 'point_of_contact',
368
+ firstName: 'Bob',
369
+ lastName: 'TheGreat',
370
+ },
371
+ ],
372
+ contactsForResource: [],
373
+ keywords: [],
374
+ topics: ['testData'],
375
+ licenses: [],
376
+ legalConstraints: [],
377
+ securityConstraints: [],
378
+ otherConstraints: [],
379
+ lineage:
380
+ 'This record was edited manually to test the feature catalog parsing',
381
+ spatialRepresentation: 'grid',
382
+ overviews: [],
383
+ spatialExtents: [],
384
+ temporalExtents: [],
385
+ onlineResources: [],
386
+ updateFrequency: { per: 'month', updatedTimes: 3 },
387
+ translations: {},
388
+ })
389
+
315
390
  export const simpleDatasetRecordAsXmlFixture =
316
391
  (): string => `<?xml version="1.0" encoding="UTF-8"?>
317
392
  <mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0">
@@ -630,6 +705,96 @@ export const duplicateDatasetRecordAsXmlFixture =
630
705
  </mdb:resourceLineage>
631
706
  </mdb:MD_Metadata>`
632
707
 
708
+ export const importDatasetRecordAsXmlFixture = (): string => `
709
+ <gmd:MD_Metadata
710
+ xmlns:gmd="http://www.isotc211.org/2005/gmd"
711
+ xmlns:gco="http://www.isotc211.org/2005/gco"
712
+ xmlns:srv="http://www.isotc211.org/2005/srv"
713
+ xmlns:gmx="http://www.isotc211.org/2005/gmx"
714
+ xmlns:gts="http://www.isotc211.org/2005/gts"
715
+ xmlns:gsr="http://www.isotc211.org/2005/gsr"
716
+ xmlns:gmi="http://www.isotc211.org/2005/gmi"
717
+ xmlns:gml="http://www.opengis.net/gml/3.2"
718
+ xmlns:xlink="http://www.w3.org/1999/xlink"
719
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
720
+ <gmd:language>
721
+ <gmd:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="eng"/>
722
+ </gmd:language>
723
+ <gmd:characterSet>
724
+ <gmd:MD_CharacterSetCode codeListValue="utf8" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_CharacterSetCode"/>
725
+ </gmd:characterSet>
726
+ <gmd:contact>
727
+ <gmd:CI_ResponsibleParty>
728
+ <gmd:individualName gco:nilReason="missing">
729
+ <gco:CharacterString/>
730
+ </gmd:individualName>
731
+ <gmd:organisationName gco:nilReason="missing">
732
+ <gco:CharacterString/>
733
+ </gmd:organisationName>
734
+ <gmd:positionName gco:nilReason="missing">
735
+ <gco:CharacterString/>
736
+ </gmd:positionName>
737
+ <gmd:role>
738
+ <gmd:CI_RoleCode codeListValue="pointOfContact" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_RoleCode"/>
739
+ </gmd:role>
740
+ </gmd:CI_ResponsibleParty>
741
+ </gmd:contact>
742
+ <gmd:dateStamp>
743
+ <gco:DateTime>2024-05-31T10:18:45.429Z</gco:DateTime>
744
+ </gmd:dateStamp>
745
+ <gmd:metadataStandardName>
746
+ <gco:CharacterString>ISO 19115:2003/19139</gco:CharacterString>
747
+ </gmd:metadataStandardName>
748
+ <gmd:metadataStandardVersion>
749
+ <gco:CharacterString>1.0</gco:CharacterString>
750
+ </gmd:metadataStandardVersion>
751
+ <gmd:identificationInfo>
752
+ <gmd:MD_DataIdentification>
753
+ <gmd:citation>
754
+ <gmd:CI_Citation>
755
+ <gmd:title>
756
+ <gco:CharacterString>Record with no link</gco:CharacterString>
757
+ </gmd:title>
758
+ <gmd:date>
759
+ <gmd:CI_Date>
760
+ <gmd:date>
761
+ <gco:DateTime>2024-05-31T11:00:00+00:00</gco:DateTime>
762
+ </gmd:date>
763
+ <gmd:dateType>
764
+ <gmd:CI_DateTypeCode codeListValue="publication" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode"/>
765
+ </gmd:dateType>
766
+ </gmd:CI_Date>
767
+ </gmd:date>
768
+ <gmd:edition gco:nilReason="missing">
769
+ <gco:CharacterString/>
770
+ </gmd:edition>
771
+ </gmd:CI_Citation>
772
+ </gmd:citation>
773
+ <gmd:abstract>
774
+ <gco:CharacterString>Read the abstract and supplemental information provided in the Vector template for more details.</gco:CharacterString>
775
+ </gmd:abstract>
776
+ <gmd:purpose gco:nilReason="missing">
777
+ <gco:CharacterString/>
778
+ </gmd:purpose>
779
+ <gmd:status>
780
+ <gmd:MD_ProgressCode codeListValue="onGoing" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ProgressCode"/>
781
+ </gmd:status>
782
+ <gmd:language>
783
+ <gco:CharacterString>eng</gco:CharacterString>
784
+ </gmd:language>
785
+ <gmd:characterSet>
786
+ <gmd:MD_CharacterSetCode codeListValue="utf8" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_CharacterSetCode"/>
787
+ </gmd:characterSet>
788
+ <gmd:topicCategory>
789
+ <gmd:MD_TopicCategoryCode>boundaries</gmd:MD_TopicCategoryCode>
790
+ </gmd:topicCategory>
791
+ <gmd:supplementalInformation gco:nilReason="missing">
792
+ <gco:CharacterString/>
793
+ </gmd:supplementalInformation>
794
+ </gmd:MD_DataIdentification>
795
+ </gmd:identificationInfo>
796
+ </gmd:MD_Metadata>`
797
+
633
798
  export const NATIONAL_KEYWORD = {
634
799
  key: 'http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/national',
635
800
  label: 'National',
@@ -2,7 +2,9 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  ChangeDetectorRef,
4
4
  Component,
5
+ Inject,
5
6
  Input,
7
+ Optional,
6
8
  Output,
7
9
  } from '@angular/core'
8
10
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
@@ -65,6 +67,7 @@ marker('chart.aggregation.count')
65
67
  standalone: true,
66
68
  })
67
69
  export class ChartViewComponent {
70
+ @Input() cacheActive = true
68
71
  @Input() set link(value: DatasetOnlineResource) {
69
72
  this.currentLink$.next(value)
70
73
  }
@@ -134,7 +137,7 @@ export class ChartViewComponent {
134
137
  switchMap((link) => {
135
138
  this.error = null
136
139
  this.loading = true
137
- return this.dataService.getDataset(link).pipe(
140
+ return this.dataService.getDataset(link, this.cacheActive).pipe(
138
141
  catchError((error) => {
139
142
  this.handleError(error)
140
143
  return EMPTY