geonetwork-ui 2.4.2 → 2.5.0-dev.0a41b52e9

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 (326) 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/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +50 -32
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +26 -10
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  8. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  9. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +24 -14
  10. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +16 -18
  11. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  12. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  13. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  14. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +4 -4
  15. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +3 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  20. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  21. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +11 -11
  22. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  23. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  24. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  25. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  26. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  27. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  29. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  30. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  31. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  32. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  33. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
  34. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  35. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  36. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  37. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  38. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  39. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  40. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  41. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  42. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  43. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
  44. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  45. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +18 -10
  46. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
  47. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  48. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  49. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +43 -3
  50. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  51. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +2 -7
  52. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  53. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +22 -13
  54. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  55. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  56. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  57. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  58. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  59. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  60. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  61. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  62. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  63. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  64. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  65. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  66. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  67. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +35 -9
  68. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +14 -10
  69. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +41 -0
  70. package/esm2022/libs/util/shared/src/lib/services/index.mjs +2 -1
  71. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +4 -4
  72. package/esm2022/translations/de.json +10 -75
  73. package/esm2022/translations/en.json +10 -75
  74. package/esm2022/translations/es.json +9 -74
  75. package/esm2022/translations/fr.json +22 -87
  76. package/esm2022/translations/it.json +27 -91
  77. package/esm2022/translations/nl.json +9 -74
  78. package/esm2022/translations/pt.json +9 -74
  79. package/fesm2022/geonetwork-ui.mjs +1194 -1223
  80. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  81. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  82. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  83. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  84. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +3 -1
  85. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  86. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  87. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  88. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  89. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  90. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  91. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  92. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  93. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  94. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  95. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  96. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  97. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  98. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -7
  99. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  100. package/libs/feature/editor/src/index.d.ts +1 -0
  101. package/libs/feature/editor/src/index.d.ts.map +1 -1
  102. 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
  103. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  104. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  105. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  106. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  107. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  108. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +3 -3
  109. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +1 -1
  110. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  111. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  112. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  113. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  114. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  115. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  116. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  117. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  118. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  119. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  120. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  121. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  122. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  123. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  124. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  125. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  126. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  127. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  128. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  129. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  130. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  131. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  132. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  133. package/libs/ui/dataviz/src/index.d.ts +2 -2
  134. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  135. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  136. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  137. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  138. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  139. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  140. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  141. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  142. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  143. package/libs/ui/elements/src/index.d.ts +1 -0
  144. package/libs/ui/elements/src/index.d.ts.map +1 -1
  145. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
  146. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
  147. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +5 -0
  148. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  149. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  150. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  151. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  152. package/libs/ui/inputs/src/index.d.ts +0 -1
  153. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  154. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
  155. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  156. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  157. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  158. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -3
  159. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  160. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  161. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  162. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +6 -3
  163. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  164. package/libs/ui/widgets/src/index.d.ts +0 -1
  165. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  166. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  167. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  168. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  169. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  170. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  171. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  172. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  173. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  174. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  175. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  176. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  177. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  178. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  179. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  180. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  181. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  182. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  183. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  184. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  185. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  186. package/libs/util/shared/src/lib/services/date.service.d.ts +13 -0
  187. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -0
  188. package/libs/util/shared/src/lib/services/index.d.ts +1 -0
  189. package/libs/util/shared/src/lib/services/index.d.ts.map +1 -1
  190. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +2 -1
  191. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -1
  192. package/package.json +1 -1
  193. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  194. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  195. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +55 -32
  196. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +45 -18
  197. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  198. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  199. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
  200. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  201. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  202. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  203. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +43 -20
  204. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  205. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +10 -18
  206. package/src/libs/feature/editor/src/index.ts +1 -0
  207. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  208. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  209. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +1 -0
  210. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  211. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  212. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  213. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  214. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +3 -4
  215. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  216. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  217. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  218. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  219. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  220. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  221. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  222. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  223. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  224. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  225. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  226. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  227. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  228. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  229. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  230. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  231. package/src/libs/ui/dataviz/src/index.ts +2 -2
  232. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  233. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  234. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  235. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  236. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  237. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  238. package/src/libs/ui/elements/src/index.ts +1 -0
  239. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
  240. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
  241. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
  242. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  243. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +3 -3
  244. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -2
  245. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
  246. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  247. package/src/libs/ui/inputs/src/index.ts +0 -1
  248. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +48 -0
  249. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  250. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +1 -7
  251. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  252. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  253. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  254. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +10 -2
  255. package/src/libs/ui/widgets/src/index.ts +0 -1
  256. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  257. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  258. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  259. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  260. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  261. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  262. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  263. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  264. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  265. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  266. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  267. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  268. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +53 -8
  269. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  270. package/src/libs/util/shared/src/lib/services/date.service.ts +45 -0
  271. package/src/libs/util/shared/src/lib/services/index.ts +1 -0
  272. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +6 -3
  273. package/translations/de.json +10 -75
  274. package/translations/en.json +10 -75
  275. package/translations/es.json +9 -74
  276. package/translations/fr.json +22 -87
  277. package/translations/it.json +27 -91
  278. package/translations/nl.json +9 -74
  279. package/translations/pt.json +9 -74
  280. package/translations/sk.json +9 -74
  281. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  282. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  283. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  284. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  285. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  286. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  287. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  288. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  289. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  290. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  291. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  292. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  293. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  294. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  295. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  296. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  297. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  298. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  299. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  300. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  301. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  302. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  303. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  304. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  305. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  306. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  307. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  308. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  309. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  310. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  311. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  312. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  313. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  314. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  315. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  316. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  317. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  318. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  319. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  320. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
  321. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  322. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  323. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  324. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  325. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  326. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -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,17 +141,48 @@ 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(
143
182
  'bucket',
144
183
  null,
145
184
  JSON.stringify(
146
- this.gn4SearchHelper.getRelatedRecordPayload(
147
- similarTo.title,
148
- similarTo.uniqueIdentifier,
149
- 3
150
- )
185
+ this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)
151
186
  )
152
187
  )
153
188
  .pipe(
@@ -317,21 +352,13 @@ export class Gn4Repository implements RecordsRepositoryInterface {
317
352
  exhaustMap(async (fetchedRecordAsXml: string) => {
318
353
  const converter = findConverterForDocument(fetchedRecordAsXml)
319
354
  const record = await converter.readRecord(fetchedRecordAsXml)
320
- const tempId = this.generateTemporaryId()
321
355
 
322
356
  record.title = `${record.title} (Copy)`
323
- record.uniqueIdentifier = tempId
324
-
325
- const recordAsXml = await converter.writeRecord(
326
- record,
327
- fetchedRecordAsXml
328
- )
329
-
330
- this.saveRecordToLocalStorage(recordAsXml, record.uniqueIdentifier)
331
- this._draftsChanged.next()
357
+ await converter.writeRecord(record, fetchedRecordAsXml)
332
358
 
333
- return tempId
359
+ return this.saveRecord(record, '', false)
334
360
  }),
361
+ exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
335
362
  catchError((error: HttpErrorResponse) => {
336
363
  return throwError(() => error)
337
364
  })
@@ -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
@@ -1,11 +1,11 @@
1
1
  <div class="flex flex-row h-full overflow-auto">
2
- <gn-ui-table
2
+ <gn-ui-data-table
3
3
  #table
4
4
  class="w-1/2 overflow-auto"
5
- [data]="tableData"
5
+ [dataset]="dataset"
6
6
  [activeId]="selectionId"
7
7
  (selected)="onTableSelect($event)"
8
- ></gn-ui-table>
8
+ ></gn-ui-data-table>
9
9
  <gn-ui-map-container
10
10
  #mapContainer
11
11
  class="w-1/2 h-full"
@@ -8,7 +8,7 @@ import {
8
8
  ViewChild,
9
9
  } from '@angular/core'
10
10
  import {
11
- TableComponent,
11
+ DataTableComponent,
12
12
  TableItemId,
13
13
  TableItemModel,
14
14
  } from '../../../../../../libs/ui/dataviz/src'
@@ -19,18 +19,19 @@ import {
19
19
  FeatureDetailComponent,
20
20
  MapContainerComponent,
21
21
  } from '../../../../../../libs/ui/map/src'
22
+ import { BaseReader } from '../../../../../../libs/util/data-fetcher/src'
22
23
 
23
24
  @Component({
24
25
  selector: 'gn-ui-geo-table-view',
25
26
  templateUrl: './geo-table-view.component.html',
26
27
  styleUrls: ['./geo-table-view.component.css'],
27
28
  changeDetection: ChangeDetectionStrategy.OnPush,
28
- imports: [TableComponent, MapContainerComponent, FeatureDetailComponent],
29
+ imports: [MapContainerComponent, FeatureDetailComponent, DataTableComponent],
29
30
  standalone: true,
30
31
  })
31
32
  export class GeoTableViewComponent implements OnInit, OnDestroy {
32
- @Input() data: FeatureCollection = { type: 'FeatureCollection', features: [] }
33
- @ViewChild('table') uiTable: TableComponent
33
+ @Input() dataset: BaseReader
34
+ @ViewChild('table') uiTable: DataTableComponent
34
35
  @ViewChild('mapContainer') mapContainer: MapContainerComponent
35
36
 
36
37
  tableData: TableItemModel[]
@@ -39,21 +40,16 @@ export class GeoTableViewComponent implements OnInit, OnDestroy {
39
40
  selection: Feature
40
41
  private subscription = new Subscription()
41
42
 
42
- get features() {
43
- return this.data.features
44
- }
45
-
46
43
  constructor(private changeRef: ChangeDetectorRef) {}
47
44
 
48
- ngOnInit(): void {
49
- this.tableData = this.geojsonToTableData(this.data)
50
- this.mapContext = this.initMapContext()
45
+ async ngOnInit() {
46
+ this.mapContext = await this.initMapContext()
51
47
  }
52
48
 
53
49
  onTableSelect(tableEntry: TableItemModel) {
54
50
  const { id } = tableEntry
55
51
  this.selectionId = id
56
- this.selection = this.getFeatureFromId(id)
52
+ // this.selection = this.getFeatureFromId(id)
57
53
  if (this.selection) {
58
54
  this.animateToFeature(this.selection)
59
55
  }
@@ -77,7 +73,8 @@ export class GeoTableViewComponent implements OnInit, OnDestroy {
77
73
  }))
78
74
  }
79
75
 
80
- private initMapContext(): MapContext {
76
+ private async initMapContext(): Promise<MapContext> {
77
+ this.dataset.selectAll()
81
78
  return {
82
79
  layers: [
83
80
  {
@@ -86,7 +83,11 @@ export class GeoTableViewComponent implements OnInit, OnDestroy {
86
83
  },
87
84
  {
88
85
  type: 'geojson',
89
- data: this.data,
86
+ data: {
87
+ type: 'FeatureCollection',
88
+ // FIXME: we're not getting geojson here
89
+ features: await this.dataset.read(),
90
+ },
90
91
  },
91
92
  ],
92
93
  view: {
@@ -112,7 +113,8 @@ export class GeoTableViewComponent implements OnInit, OnDestroy {
112
113
  }
113
114
 
114
115
  private getFeatureFromId(id: TableItemId) {
115
- return this.features.find((feature) => feature.id === id)
116
+ // FIXME: restore this once we need it?
117
+ // return this.features.find((feature) => feature.id === id)
116
118
  }
117
119
 
118
120
  ngOnDestroy(): void {
@@ -164,17 +164,26 @@ export class DataService {
164
164
  wfsLink.url.toString(),
165
165
  wfsLink.name
166
166
  ).pipe(
167
- map((urls) => urls.all),
168
- map((urls) =>
169
- Object.keys(urls).map((format) => ({
170
- ...wfsLink,
171
- type: 'download',
172
- url: new URL(urls[format]),
173
- mimeType: getMimeTypeForFormat(
174
- getFileFormatFromServiceOutput(format)
175
- ),
176
- }))
177
- )
167
+ map((urls) => {
168
+ if (urls.geojson) {
169
+ urls.all['application/json'] = urls.geojson
170
+ }
171
+ return urls
172
+ }),
173
+ map((urls) => {
174
+ const resources: DatasetOnlineResource[] = Object.keys(urls.all).map(
175
+ (format) => ({
176
+ ...wfsLink,
177
+ name: wfsLink.name,
178
+ type: 'download' as const,
179
+ url: new URL(urls.all[format]),
180
+ mimeType: getMimeTypeForFormat(
181
+ getFileFormatFromServiceOutput(format)
182
+ ),
183
+ })
184
+ )
185
+ return resources
186
+ })
178
187
  )
179
188
  }
180
189
 
@@ -187,6 +196,7 @@ export class DataService {
187
196
  return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
188
197
  return {
189
198
  ...ogcApiLink,
199
+ name: collectionInfo.id,
190
200
  type: 'download',
191
201
  url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
192
202
  mimeType: getMimeTypeForFormat(
@@ -232,8 +242,11 @@ export class DataService {
232
242
  }))
233
243
  }
234
244
 
235
- readAsGeoJson(link: DatasetOnlineResource): Observable<FeatureCollection> {
236
- return this.getDataset(link).pipe(
245
+ readAsGeoJson(
246
+ link: DatasetOnlineResource,
247
+ cacheActive: boolean
248
+ ): Observable<FeatureCollection> {
249
+ return this.getDataset(link, cacheActive).pipe(
237
250
  switchMap((dataset) => dataset.selectAll().read()),
238
251
  map((features) => ({
239
252
  type: 'FeatureCollection',
@@ -242,13 +255,21 @@ export class DataService {
242
255
  )
243
256
  }
244
257
 
245
- getDataset(link: DatasetOnlineResource): Observable<BaseReader> {
258
+ getDataset(
259
+ link: DatasetOnlineResource,
260
+ cacheActive: boolean
261
+ ): Observable<BaseReader> {
246
262
  if (link.type === 'service' && link.accessServiceProtocol === 'wfs') {
247
263
  const wfsUrlEndpoint = this.proxy.getProxiedUrl(link.url.toString())
248
264
  return from(
249
- openDataset(wfsUrlEndpoint, 'wfs', {
250
- wfsFeatureType: link.name,
251
- })
265
+ openDataset(
266
+ wfsUrlEndpoint,
267
+ 'wfs',
268
+ {
269
+ wfsFeatureType: link.name,
270
+ },
271
+ cacheActive
272
+ )
252
273
  )
253
274
  } else if (link.type === 'download') {
254
275
  const linkProxifiedUrl = this.proxy.getProxiedUrl(link.url.toString())
@@ -257,7 +278,9 @@ export class DataService {
257
278
  SupportedTypes.indexOf(format as any) > -1
258
279
  ? (format as SupportedType)
259
280
  : undefined
260
- return from(openDataset(linkProxifiedUrl, supportedType)).pipe()
281
+ return from(
282
+ openDataset(linkProxifiedUrl, supportedType, undefined, cacheActive)
283
+ ).pipe()
261
284
  } else if (
262
285
  link.type === 'service' &&
263
286
  link.accessServiceProtocol === 'esriRest'
@@ -266,7 +289,7 @@ export class DataService {
266
289
  link.url.toString(),
267
290
  'geojson'
268
291
  )
269
- return from(openDataset(url, 'geojson')).pipe()
292
+ return from(openDataset(url, 'geojson', undefined, cacheActive)).pipe()
270
293
  } else if (
271
294
  link.type === 'service' &&
272
295
  link.accessServiceProtocol === 'ogcFeatures'
@@ -274,7 +297,7 @@ export class DataService {
274
297
  return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(
275
298
  switchMap((collectionInfo) => {
276
299
  const geojsonUrl = collectionInfo.jsonDownloadLink
277
- return openDataset(geojsonUrl, 'geojson')
300
+ return openDataset(geojsonUrl, 'geojson', undefined, cacheActive)
278
301
  }),
279
302
  tap((url) => {
280
303
  if (url === null) {
@@ -1,10 +1,11 @@
1
1
  <div class="w-full h-full flex flex-col">
2
2
  <div class="relative h-full">
3
- <gn-ui-table
3
+ <gn-ui-data-table
4
+ *ngIf="tableData$ | async as dataset"
4
5
  class="overflow-auto grow"
5
- [data]="tableData$ | async"
6
+ [dataset]="dataset"
6
7
  (selected)="onTableSelect($event)"
7
- ></gn-ui-table>
8
+ ></gn-ui-data-table>
8
9
  <gn-ui-loading-mask
9
10
  *ngIf="loading"
10
11
  class="absolute inset-0"
@@ -3,14 +3,13 @@ import { BehaviorSubject, Observable, of } from 'rxjs'
3
3
  import {
4
4
  catchError,
5
5
  finalize,
6
- map,
7
6
  shareReplay,
8
7
  startWith,
9
8
  switchMap,
10
9
  } from 'rxjs/operators'
11
- import { DataItem, FetchError } from '../../../../../../libs/util/data-fetcher/src'
10
+ import { BaseReader, FetchError } from '../../../../../../libs/util/data-fetcher/src'
12
11
  import { DataService } from '../service/data.service'
13
- import { TableComponent, TableItemModel } from '../../../../../../libs/ui/dataviz/src'
12
+ import { DataTableComponent } from '../../../../../../libs/ui/dataviz/src'
14
13
  import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
15
14
  import { TranslateModule, TranslateService } from '@ngx-translate/core'
16
15
  import {
@@ -26,7 +25,7 @@ import { CommonModule } from '@angular/common'
26
25
  changeDetection: ChangeDetectionStrategy.OnPush,
27
26
  imports: [
28
27
  CommonModule,
29
- TableComponent,
28
+ DataTableComponent,
30
29
  LoadingMaskComponent,
31
30
  PopupAlertComponent,
32
31
  TranslateModule,
@@ -34,6 +33,7 @@ import { CommonModule } from '@angular/common'
34
33
  standalone: true,
35
34
  })
36
35
  export class TableViewComponent {
36
+ @Input() cacheActive = true
37
37
  @Input() set link(value: DatasetOnlineResource) {
38
38
  this.currentLink$.next(value)
39
39
  }
@@ -45,25 +45,19 @@ export class TableViewComponent {
45
45
  tableData$ = this.currentLink$.pipe(
46
46
  switchMap((link) => {
47
47
  this.error = null
48
- if (!link) return of([] as TableItemModel[])
48
+ if (!link) return of(undefined)
49
49
  this.loading = true
50
- return this.fetchData(link).pipe(
51
- map((items) =>
52
- items.map((item) => ({
53
- id: item.id,
54
- ...item.properties,
55
- }))
56
- ),
50
+ return this.getDatasetReader(link).pipe(
57
51
  catchError((error) => {
58
52
  this.handleError(error)
59
- return of([] as TableItemModel[])
53
+ return of(undefined)
60
54
  }),
61
55
  finalize(() => {
62
56
  this.loading = false
63
57
  })
64
58
  )
65
59
  }),
66
- startWith([] as TableItemModel[]),
60
+ startWith(undefined),
67
61
  shareReplay(1)
68
62
  )
69
63
 
@@ -72,10 +66,8 @@ export class TableViewComponent {
72
66
  private translateService: TranslateService
73
67
  ) {}
74
68
 
75
- fetchData(link: DatasetOnlineResource): Observable<DataItem[]> {
76
- return this.dataService
77
- .getDataset(link)
78
- .pipe(switchMap((dataset) => dataset.read()))
69
+ getDatasetReader(link: DatasetOnlineResource): Observable<BaseReader> {
70
+ return this.dataService.getDataset(link, this.cacheActive)
79
71
  }
80
72
 
81
73
  onTableSelect(event) {
@@ -10,3 +10,4 @@ export * from './lib/components/record-form/record-form.component'
10
10
  export * from './lib/components/wizard/wizard.component'
11
11
  export * from './lib/components/wizard-field/wizard-field.component'
12
12
  export * from './lib/components/wizard-summarize/wizard-summarize.component'
13
+ export * from './lib/components/record-form/form-field'
@@ -2,7 +2,7 @@
2
2
  <gn-ui-form-field-rich
3
3
  class="mt-[-8px]"
4
4
  [label]="label"
5
- [hint]="hint | translate"
5
+ [placeholder]="hint | translate"
6
6
  [value]="constraint_.text ?? ''"
7
7
  (valueChange)="handleConstraintTextChange($event)"
8
8
  ></gn-ui-form-field-rich>