geonetwork-ui 2.5.0-dev.d91908296 → 2.5.0-dev.e060bf76e

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 (312) 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 +23 -3
  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/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  13. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  15. 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
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  17. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  18. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +11 -11
  19. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  20. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  21. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  22. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  23. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  24. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  26. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  29. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  30. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
  31. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  32. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  33. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  34. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  35. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  36. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  37. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  38. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  39. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  40. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
  41. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  42. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +18 -10
  43. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
  44. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  45. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  46. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +43 -3
  47. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  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 +22 -13
  50. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  51. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  52. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  53. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  54. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  59. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  60. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  61. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  62. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  63. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +35 -9
  64. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +11 -9
  65. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +41 -0
  66. package/esm2022/libs/util/shared/src/lib/services/index.mjs +2 -1
  67. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +4 -4
  68. package/esm2022/translations/de.json +10 -75
  69. package/esm2022/translations/en.json +10 -75
  70. package/esm2022/translations/es.json +9 -74
  71. package/esm2022/translations/fr.json +22 -87
  72. package/esm2022/translations/it.json +27 -91
  73. package/esm2022/translations/nl.json +9 -74
  74. package/esm2022/translations/pt.json +9 -74
  75. package/fesm2022/geonetwork-ui.mjs +1185 -1207
  76. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  77. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  78. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  79. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  80. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +3 -1
  81. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  82. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  83. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  84. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  85. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  86. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  87. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  88. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  89. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  90. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  91. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  92. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  93. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  94. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -7
  95. package/libs/feature/dataviz/src/lib/table-view/table-view.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.map +1 -1
  97. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  98. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  99. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  100. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +3 -3
  101. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +1 -1
  102. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  103. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  104. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  105. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  106. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  107. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  108. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  109. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  110. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  111. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  112. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  113. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  114. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  115. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  116. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  117. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  118. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  119. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  120. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  121. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  122. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  123. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  124. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  125. package/libs/ui/dataviz/src/index.d.ts +2 -2
  126. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  127. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  128. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  129. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  130. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  131. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  132. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  133. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  134. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  135. package/libs/ui/elements/src/index.d.ts +1 -0
  136. package/libs/ui/elements/src/index.d.ts.map +1 -1
  137. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
  138. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
  139. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +5 -0
  140. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  141. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  142. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  143. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  144. package/libs/ui/inputs/src/index.d.ts +0 -1
  145. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  146. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
  147. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  148. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  149. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  150. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  151. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  152. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +6 -3
  153. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  154. package/libs/ui/widgets/src/index.d.ts +0 -1
  155. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  156. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  157. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  158. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  159. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  160. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  161. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  162. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  163. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  164. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  165. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  166. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  167. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  168. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  169. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  170. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  171. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  172. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  173. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  174. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  175. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  176. package/libs/util/shared/src/lib/services/date.service.d.ts +13 -0
  177. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -0
  178. package/libs/util/shared/src/lib/services/index.d.ts +1 -0
  179. package/libs/util/shared/src/lib/services/index.d.ts.map +1 -1
  180. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +2 -1
  181. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -1
  182. package/package.json +1 -1
  183. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  184. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  185. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +55 -32
  186. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -7
  187. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  188. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  189. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
  190. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  191. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  192. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  193. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +43 -20
  194. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  195. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +10 -18
  196. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  197. 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
  198. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  199. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  200. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  201. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +3 -4
  202. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  203. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  204. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  205. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  206. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  207. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  208. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  209. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  210. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  211. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  212. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  213. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  214. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  215. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  216. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  217. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  218. package/src/libs/ui/dataviz/src/index.ts +2 -2
  219. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  220. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  221. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  222. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  223. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  224. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  225. package/src/libs/ui/elements/src/index.ts +1 -0
  226. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
  227. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
  228. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
  229. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  230. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +3 -3
  231. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -2
  232. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
  233. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  234. package/src/libs/ui/inputs/src/index.ts +0 -1
  235. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +48 -0
  236. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  237. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  238. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  239. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  240. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +10 -2
  241. package/src/libs/ui/widgets/src/index.ts +0 -1
  242. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  243. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  244. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  245. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  246. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  247. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  248. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  249. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  250. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  251. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  252. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  253. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  254. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +53 -8
  255. package/src/libs/util/data-fetcher/src/lib/utils.ts +36 -32
  256. package/src/libs/util/shared/src/lib/services/date.service.ts +45 -0
  257. package/src/libs/util/shared/src/lib/services/index.ts +1 -0
  258. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +6 -3
  259. package/translations/de.json +10 -75
  260. package/translations/en.json +10 -75
  261. package/translations/es.json +9 -74
  262. package/translations/fr.json +22 -87
  263. package/translations/it.json +27 -91
  264. package/translations/nl.json +9 -74
  265. package/translations/pt.json +9 -74
  266. package/translations/sk.json +9 -74
  267. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  268. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  269. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  270. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  271. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  272. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  273. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  274. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  275. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  276. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  277. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  278. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  279. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  280. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  281. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  282. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  283. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  284. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  285. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  286. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  287. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  288. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  289. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  290. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  291. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  292. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  293. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  294. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  295. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  296. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  297. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  298. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  299. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  300. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  301. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  302. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  303. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  304. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  305. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  306. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
  307. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  308. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  309. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  310. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  311. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  312. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -5,8 +5,8 @@ import {
5
5
  Output,
6
6
  } from '@angular/core'
7
7
  import { getLinkLabel, getLinkPriority } from '../../../../../../libs/util/shared/src'
8
- import { BehaviorSubject, combineLatest } from 'rxjs'
9
- import { map, tap } from 'rxjs/operators'
8
+ import { BehaviorSubject, combineLatest, of } from 'rxjs'
9
+ import { catchError, finalize, map, switchMap, tap } from 'rxjs/operators'
10
10
  import { MdViewFacade } from '../state'
11
11
  import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
12
12
  import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
@@ -17,6 +17,7 @@ import {
17
17
  } from '../../../../../../libs/feature/dataviz/src'
18
18
  import { CommonModule } from '@angular/common'
19
19
  import { TranslateModule } from '@ngx-translate/core'
20
+ import { PopupAlertComponent } from '../../../../../../libs/ui/widgets/src'
20
21
 
21
22
  @Component({
22
23
  selector: 'gn-ui-data-view',
@@ -30,12 +31,21 @@ import { TranslateModule } from '@ngx-translate/core'
30
31
  TableViewComponent,
31
32
  TranslateModule,
32
33
  ChartViewComponent,
34
+ PopupAlertComponent,
33
35
  ],
34
36
  })
35
37
  export class DataViewComponent {
36
38
  @Input() mode: 'table' | 'chart'
37
39
  @Input() displaySource = true
40
+ @Input() set exceedsLimit(value: boolean) {
41
+ this.excludeWfs$.next(value)
42
+ }
38
43
  @Output() chartConfig$ = new BehaviorSubject<DatavizConfigurationModel>(null)
44
+ cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(
45
+ map((highF) => !highF)
46
+ )
47
+ hidePreview = false
48
+ excludeWfs$ = new BehaviorSubject(false)
39
49
  compatibleDataLinks$ = combineLatest([
40
50
  this.mdViewFacade.dataLinks$,
41
51
  this.mdViewFacade.geoDataLinks$,
@@ -49,7 +59,7 @@ export class DataViewComponent {
49
59
  dropdownChoices$ = this.compatibleDataLinks$.pipe(
50
60
  tap((links) => {
51
61
  if (links.indexOf(this.selectedLink$.value) === -1) {
52
- this.selectedLink$.next(links[0])
62
+ this.selectLink(JSON.stringify(links[0]))
53
63
  }
54
64
  }),
55
65
  map((links) =>
@@ -70,6 +80,18 @@ export class DataViewComponent {
70
80
  selectLink(linkAsString: string) {
71
81
  const link: DatasetOnlineResource = JSON.parse(linkAsString)
72
82
  link.url = new URL(link.url)
73
- this.selectedLink$.next(link)
83
+ this.excludeWfs$
84
+ .pipe(
85
+ tap((excludeWfs) => {
86
+ this.hidePreview =
87
+ link['accessServiceProtocol'] === 'wfs' &&
88
+ excludeWfs &&
89
+ this.mode === 'chart'
90
+ ? true
91
+ : false
92
+ this.selectedLink$.next(link)
93
+ })
94
+ )
95
+ .subscribe()
74
96
  }
75
97
  }
@@ -4,7 +4,10 @@ import { StoreModule } from '@ngrx/store'
4
4
  import { EffectsModule } from '@ngrx/effects'
5
5
  import { UiLayoutModule } from '../../../../../libs/ui/layout/src'
6
6
  import { FeatureMapModule } from '../../../../../libs/feature/map/src'
7
- import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
7
+ import {
8
+ DropdownSelectorComponent,
9
+ UiInputsModule,
10
+ } from '../../../../../libs/ui/inputs/src'
8
11
  import { UiElementsModule } from '../../../../../libs/ui/elements/src'
9
12
  import { MdViewFacade } from './state'
10
13
  import { MdViewEffects } from './state/mdview.effects'
@@ -16,9 +19,8 @@ import { MatTabsModule } from '@angular/material/tabs'
16
19
  import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
17
20
  import { TranslateModule } from '@ngx-translate/core'
18
21
  import { FeatureCatalogModule } from '../../../../../libs/feature/catalog/src'
19
- import { TableComponent } from '../../../../../libs/ui/dataviz/src'
22
+ import { DataTableComponent } from '../../../../../libs/ui/dataviz/src'
20
23
  import { NgIconsModule, provideNgIconsConfig } from '@ng-icons/core'
21
- import { DropdownSelectorComponent } from '../../../../../libs/ui/inputs/src'
22
24
 
23
25
  @NgModule({
24
26
  imports: [
@@ -33,7 +35,7 @@ import { DropdownSelectorComponent } from '../../../../../libs/ui/inputs/src'
33
35
  MatTabsModule,
34
36
  UiWidgetsModule,
35
37
  TranslateModule,
36
- TableComponent,
38
+ DataTableComponent,
37
39
  NgIconsModule,
38
40
  DropdownSelectorComponent,
39
41
  ],
@@ -14,80 +14,91 @@
14
14
  >
15
15
  </gn-ui-external-viewer-button>
16
16
  </div>
17
- <div
18
- class="relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden"
19
- >
20
- <gn-ui-map-container
21
- #mapContainer
22
- [context]="mapContext$ | async"
23
- (featuresClick)="onMapFeatureSelect($event)"
24
- ></gn-ui-map-container>
25
- <div
26
- class="top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
27
- [class.hidden]="!selection"
17
+ <ng-container *ngIf="hidePreview; else mapView">
18
+ <gn-ui-popup-alert
19
+ type="warning"
20
+ icon="matErrorOutlineOutline"
21
+ class="block h-12 p-1"
28
22
  >
29
- <gn-ui-button
30
- type="light"
31
- (buttonClick)="resetSelection()"
32
- style="
33
- --gn-ui-button-padding: 0px;
34
- --gn-ui-button-width: 24px;
35
- --gn-ui-button-height: 24px;
36
- "
37
- extraClass="absolute right-[0.5em] ml-[8px] mr-[10px]"
38
- >
39
- <ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
40
- </gn-ui-button>
41
- <gn-ui-feature-detail [feature]="selection"></gn-ui-feature-detail>
42
- </div>
43
-
23
+ <span translate>record.feature.limit</span>
24
+ </gn-ui-popup-alert>
25
+ </ng-container>
26
+ <ng-template #mapView>
44
27
  <div
45
- class="top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
46
- [ngClass]="{ 'right-[1em]': !selection, 'right-[16em]': selection }"
47
- [hidden]="!showLegend || !legendExists"
28
+ class="relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden"
48
29
  >
49
- <div class="flex justify-between items-center mb-2">
50
- <div class="text-primary font-bold">Legend</div>
30
+ <gn-ui-map-container
31
+ #mapContainer
32
+ [context]="mapContext$ | async"
33
+ (featuresClick)="onMapFeatureSelect($event)"
34
+ ></gn-ui-map-container>
35
+ <div
36
+ class="top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
37
+ [class.hidden]="!selection"
38
+ >
51
39
  <gn-ui-button
52
40
  type="light"
53
- (buttonClick)="toggleLegend()"
41
+ (buttonClick)="resetSelection()"
54
42
  style="
55
43
  --gn-ui-button-padding: 0px;
56
44
  --gn-ui-button-width: 24px;
57
45
  --gn-ui-button-height: 24px;
58
46
  "
59
- extraClass="ml-[8px] mr-[10px]"
47
+ extraClass="absolute right-[0.5em] ml-[8px] mr-[10px]"
60
48
  >
61
49
  <ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
62
50
  </gn-ui-button>
51
+ <gn-ui-feature-detail [feature]="selection"></gn-ui-feature-detail>
63
52
  </div>
64
- <gn-ui-map-legend
65
- [context]="mapContext$ | async"
66
- (legendStatusChange)="onLegendStatusChange($event)"
67
- ></gn-ui-map-legend>
68
- </div>
69
53
 
70
- <gn-ui-button
71
- *ngIf="!showLegend && legendExists && !selection"
72
- type="outline"
73
- (buttonClick)="toggleLegend()"
74
- extraClass="absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white"
75
- >
76
- Legend
77
- </gn-ui-button>
54
+ <div
55
+ class="top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
56
+ [ngClass]="{ 'right-[1em]': !selection, 'right-[16em]': selection }"
57
+ [hidden]="!showLegend || !legendExists"
58
+ >
59
+ <div class="flex justify-between items-center mb-2">
60
+ <div class="text-primary font-bold">Legend</div>
61
+ <gn-ui-button
62
+ type="light"
63
+ (buttonClick)="toggleLegend()"
64
+ style="
65
+ --gn-ui-button-padding: 0px;
66
+ --gn-ui-button-width: 24px;
67
+ --gn-ui-button-height: 24px;
68
+ "
69
+ extraClass="ml-[8px] mr-[10px]"
70
+ >
71
+ <ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
72
+ </gn-ui-button>
73
+ </div>
74
+ <gn-ui-map-legend
75
+ [context]="mapContext$ | async"
76
+ (legendStatusChange)="onLegendStatusChange($event)"
77
+ ></gn-ui-map-legend>
78
+ </div>
78
79
 
79
- <gn-ui-loading-mask
80
- *ngIf="loading"
81
- class="absolute inset-0"
82
- [message]="'map.loading.data' | translate"
83
- ></gn-ui-loading-mask>
84
- <gn-ui-popup-alert
85
- *ngIf="error"
86
- type="warning"
87
- icon="matErrorOutlineOutline"
88
- class="absolute m-2 inset-0"
89
- >
90
- <span translate>{{ error }}</span>
91
- </gn-ui-popup-alert>
92
- </div>
80
+ <gn-ui-button
81
+ *ngIf="!showLegend && legendExists && !selection"
82
+ type="outline"
83
+ (buttonClick)="toggleLegend()"
84
+ extraClass="absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white"
85
+ >
86
+ Legend
87
+ </gn-ui-button>
88
+
89
+ <gn-ui-loading-mask
90
+ *ngIf="loading"
91
+ class="absolute inset-0"
92
+ [message]="'map.loading.data' | translate"
93
+ ></gn-ui-loading-mask>
94
+ <gn-ui-popup-alert
95
+ *ngIf="error"
96
+ type="warning"
97
+ icon="matErrorOutlineOutline"
98
+ class="absolute m-2 inset-0"
99
+ >
100
+ <span translate>{{ error }}</span>
101
+ </gn-ui-popup-alert>
102
+ </div>
103
+ </ng-template>
93
104
  </div>
@@ -82,13 +82,14 @@ marker('wfs.feature.limit')
82
82
  viewProviders: [provideIcons({ matClose })],
83
83
  })
84
84
  export class MapViewComponent implements AfterViewInit {
85
- @Input() set excludeWfs(value: boolean) {
85
+ @Input() set exceedsLimit(value: boolean) {
86
86
  this.excludeWfs$.next(value)
87
87
  }
88
88
  @Input() displaySource = true
89
89
  @ViewChild('mapContainer') mapContainer: MapContainerComponent
90
90
 
91
91
  excludeWfs$ = new BehaviorSubject(false)
92
+ hidePreview = false
92
93
  selection: Feature
93
94
  showLegend = true
94
95
  legendExists = false
@@ -139,9 +140,10 @@ export class MapViewComponent implements AfterViewInit {
139
140
  return of([])
140
141
  }
141
142
  if (excludeWfs && link.accessServiceProtocol === 'wfs') {
142
- this.error = 'wfs.feature.limit'
143
+ this.hidePreview = true
143
144
  return of([])
144
145
  }
146
+ this.hidePreview = false
145
147
  this.loading = true
146
148
  this.error = null
147
149
  return this.getLayerFromLink(link).pipe(
@@ -239,7 +241,8 @@ export class MapViewComponent implements AfterViewInit {
239
241
  link.accessServiceProtocol === 'ogcFeatures')) ||
240
242
  link.type === 'download'
241
243
  ) {
242
- return this.dataService.readAsGeoJson(link).pipe(
244
+ const cacheActive = true // TODO implement whether should be true or false
245
+ return this.dataService.readAsGeoJson(link, cacheActive).pipe(
243
246
  map((data) => ({
244
247
  type: 'geojson',
245
248
  data,
@@ -2,6 +2,7 @@ import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/
2
2
  import { createAction, props } from '@ngrx/store'
3
3
  import {
4
4
  CatalogRecord,
5
+ DatasetFeatureCatalog,
5
6
  UserFeedback,
6
7
  } from '../../../../../../libs/common/domain/src/lib/model/record'
7
8
 
@@ -28,6 +29,21 @@ export const loadFullMetadataFailure = createAction(
28
29
  props<{ otherError?: string; notFound?: boolean }>()
29
30
  )
30
31
 
32
+ export const loadFeatureCatalog = createAction(
33
+ "[Metadata view] Load metadata's feature catalog",
34
+ props<{ metadata: CatalogRecord }>()
35
+ )
36
+
37
+ export const loadFeatureCatalogSuccess = createAction(
38
+ '[Metadata view] Load metadata feature catalog success',
39
+ props<{ datasetCatalog: DatasetFeatureCatalog | null }>()
40
+ )
41
+
42
+ export const loadFeatureCatalogFailure = createAction(
43
+ '[Metadata view] Load metadata feature catalog failure',
44
+ props<{ error?: string }>()
45
+ )
46
+
31
47
  export const closeMetadata = createAction('[Metadata view] close')
32
48
 
33
49
  /*
@@ -1,11 +1,10 @@
1
1
  import { Injectable } from '@angular/core'
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects'
3
3
  import { exhaustMap, mergeMap, of } from 'rxjs'
4
- import { catchError, map, switchMap } from 'rxjs/operators'
4
+ import { catchError, filter, map, switchMap, take } from 'rxjs/operators'
5
5
  import * as MdViewActions from './mdview.actions'
6
6
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
7
7
  import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface'
8
-
9
8
  @Injectable()
10
9
  export class MdViewEffects {
11
10
  constructor(
@@ -33,6 +32,26 @@ export class MdViewEffects {
33
32
  )
34
33
  )
35
34
 
35
+ loadFeatureCatalog$ = createEffect(() =>
36
+ this.actions$.pipe(
37
+ ofType(MdViewActions.loadFullMetadataSuccess),
38
+ filter(({ full }) => full !== undefined),
39
+ switchMap(({ full }) => this.recordsRepository.getFeatureCatalog(full)),
40
+ map((featureCatalog) =>
41
+ MdViewActions.loadFeatureCatalogSuccess({
42
+ datasetCatalog: featureCatalog,
43
+ })
44
+ ),
45
+ catchError((error) =>
46
+ of(
47
+ MdViewActions.loadFeatureCatalogFailure({
48
+ error: error.message,
49
+ })
50
+ )
51
+ )
52
+ )
53
+ )
54
+
36
55
  /*
37
56
  Related effects
38
57
  */
@@ -52,11 +52,26 @@ export class MdViewFacade {
52
52
  filter((md) => !!md)
53
53
  )
54
54
 
55
+ featureCatalog$ = this.store.pipe(select(MdViewSelectors.getFeatureCatalog))
56
+
55
57
  isIncomplete$ = this.store.pipe(
56
58
  select(MdViewSelectors.getMetadataIsIncomplete),
57
59
  filter((incomplete) => incomplete !== null)
58
60
  )
59
61
 
62
+ isHighUpdateFrequency$ = this.metadata$.pipe(
63
+ map((record) => {
64
+ if (record.updateFrequency instanceof Object) {
65
+ return (
66
+ record.updateFrequency.per === 'day' &&
67
+ record.updateFrequency.updatedTimes > 1
68
+ )
69
+ }
70
+
71
+ return record.updateFrequency === 'continual'
72
+ })
73
+ )
74
+
60
75
  error$ = this.store.pipe(select(MdViewSelectors.getMetadataError))
61
76
 
62
77
  related$ = this.store.pipe(select(MdViewSelectors.getRelated))
@@ -3,6 +3,7 @@ import * as MetadataViewActions from './mdview.actions'
3
3
  import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
4
4
  import {
5
5
  CatalogRecord,
6
+ DatasetFeatureCatalog,
6
7
  UserFeedback,
7
8
  } from '../../../../../../libs/common/domain/src/lib/model/record'
8
9
 
@@ -17,6 +18,9 @@ export interface MetadataViewState {
17
18
  allUserFeedbacksLoading: boolean
18
19
  addUserFeedbackLoading: boolean
19
20
  chartConfig?: DatavizConfigurationModel
21
+ featureCatalog?: DatasetFeatureCatalog
22
+ featureCatalogLoading: boolean
23
+ featureCatalogError: string | null
20
24
  }
21
25
 
22
26
  export const initialMetadataViewState: MetadataViewState = {
@@ -24,6 +28,8 @@ export const initialMetadataViewState: MetadataViewState = {
24
28
  loadingFull: false,
25
29
  allUserFeedbacksLoading: false,
26
30
  addUserFeedbackLoading: false,
31
+ featureCatalogLoading: false,
32
+ featureCatalogError: null,
27
33
  }
28
34
 
29
35
  const metadataViewReducer = createReducer(
@@ -105,7 +111,30 @@ const metadataViewReducer = createReducer(
105
111
  addUserFeedbackLoading: false,
106
112
  allUserFeedbacksLoading: false,
107
113
  })
108
- )
114
+ ),
115
+
116
+ /**
117
+ * FeatureCatalog reducers
118
+ */
119
+
120
+ on(MetadataViewActions.loadFeatureCatalog, (state) => ({
121
+ ...state,
122
+ featureCatalogError: null,
123
+ featureCatalogLoading: true,
124
+ })),
125
+ on(
126
+ MetadataViewActions.loadFeatureCatalogSuccess,
127
+ (state, { datasetCatalog }) => ({
128
+ ...state,
129
+ featureCatalog: datasetCatalog,
130
+ featureCatalogLoading: false,
131
+ })
132
+ ),
133
+ on(MetadataViewActions.loadFeatureCatalogFailure, (state, { error }) => ({
134
+ ...state,
135
+ featureCatalogError: error,
136
+ featureCatalogLoading: false,
137
+ }))
109
138
  )
110
139
 
111
140
  export function reducer(
@@ -64,3 +64,15 @@ export const getAddUserFeedbacksLoading = createSelector(
64
64
  getMdViewState,
65
65
  (state: MetadataViewState) => state.addUserFeedbackLoading
66
66
  )
67
+
68
+ /*
69
+ Feature Catalog Selectors
70
+ */
71
+ export const getFeatureCatalog = createSelector(
72
+ getMdViewState,
73
+ (state: MetadataViewState) => state.featureCatalog
74
+ )
75
+ export const getFeatureCatalogIsLoading = createSelector(
76
+ getMdViewState,
77
+ (state: MetadataViewState) => state.featureCatalogLoading
78
+ )
@@ -9,4 +9,5 @@
9
9
  [preventCompleteOnSelection]="true"
10
10
  [autoFocus]="autoFocus"
11
11
  [allowSubmit]="true"
12
+ [forceTrackPosition]="forceTrackPosition"
12
13
  ></gn-ui-autocomplete>
@@ -28,6 +28,7 @@ import { SearchFilters } from '../../../../../../libs/api/metadata-converter/src
28
28
  export class FuzzySearchComponent implements OnInit {
29
29
  @ViewChild(AutocompleteComponent) autocomplete: AutocompleteComponent
30
30
  @Input() autoFocus = false
31
+ @Input() forceTrackPosition = false
31
32
  @Output() itemSelected = new EventEmitter<CatalogRecord>()
32
33
  @Output() inputSubmitted = new EventEmitter<string>()
33
34
  searchInputValue$: Observable<{ title: string }>
@@ -1,6 +1,7 @@
1
1
  import { Injectable, Injector } from '@angular/core'
2
2
  import {
3
3
  AbstractSearchField,
4
+ AvailableServicesField,
4
5
  DateRangeSearchField,
5
6
  FieldValue,
6
7
  FullTextSearchField,
@@ -91,6 +92,7 @@ export class FieldsService {
91
92
  ),
92
93
  user: new UserSearchField(this.injector),
93
94
  changeDate: new DateRangeSearchField('changeDate', this.injector, 'desc'),
95
+ availableServices: new AvailableServicesField(this.injector),
94
96
  } as Record<string, AbstractSearchField>
95
97
 
96
98
  get supportedFields() {
@@ -9,6 +9,7 @@ import { PlatformServiceInterface } from '../../../../../../../libs/common/domai
9
9
  import {
10
10
  AggregationBuckets,
11
11
  AggregationsParams,
12
+ FieldFilter,
12
13
  FieldFilterByExpression,
13
14
  FieldFilters,
14
15
  TermBucket,
@@ -425,3 +426,57 @@ export class DateRangeSearchField extends SimpleSearchField {
425
426
  return 'dateRange'
426
427
  }
427
428
  }
429
+
430
+ marker('search.filters.availableServices.view')
431
+ marker('search.filters.availableServices.download')
432
+
433
+ export class AvailableServicesField extends SimpleSearchField {
434
+ private translateService = this.injector.get(TranslateService)
435
+
436
+ constructor(injector: Injector) {
437
+ super('availableServices', injector, 'asc')
438
+ }
439
+
440
+ linkProtocolViewFilter = '/OGC:WMT?S.*/'
441
+ linkProtocolDownloadFilter = '/OGC:WFS.*/'
442
+
443
+ protected async getBucketLabel(bucket: TermBucket) {
444
+ return firstValueFrom(
445
+ this.translateService.get(
446
+ `search.filters.availableServices.${bucket.term}`
447
+ )
448
+ )
449
+ }
450
+
451
+ protected getAggregations(): AggregationsParams {
452
+ return {
453
+ availableServices: {
454
+ type: 'filters',
455
+ filters: {
456
+ view: `+linkProtocol:${this.linkProtocolViewFilter}`,
457
+ download: `+linkProtocol:${this.linkProtocolDownloadFilter}`,
458
+ },
459
+ },
460
+ }
461
+ }
462
+
463
+ getFiltersForValues(values: FieldValue[]): Observable<FieldFilters> {
464
+ const filters: FieldFilter = {}
465
+ if (values.includes('view')) filters[this.linkProtocolViewFilter] = true
466
+ if (values.includes('download'))
467
+ filters[this.linkProtocolDownloadFilter] = true
468
+
469
+ return of({
470
+ linkProtocol: filters,
471
+ })
472
+ }
473
+
474
+ getValuesForFilter(filters: FieldFilters): Observable<FieldValue[]> {
475
+ const linkFilter = filters.linkProtocol
476
+ if (!linkFilter) return of([])
477
+ const values = []
478
+ if (linkFilter[this.linkProtocolViewFilter]) values.push('view')
479
+ if (linkFilter[this.linkProtocolDownloadFilter]) values.push('download')
480
+ return of(values)
481
+ }
482
+ }
@@ -1,5 +1,5 @@
1
1
  export * from './lib/ui-dataviz.module'
2
2
  export * from './lib/chart/chart.component'
3
- export * from './lib/table/table.component'
4
- export * from './lib/table/table.fixtures'
3
+ export * from './lib/data-table/data-table.component'
4
+ export * from './lib/data-table/data-table.fixtures'
5
5
  export * from './lib/figure/figure.component'
@@ -0,0 +1,52 @@
1
+ import { Injectable } from '@angular/core'
2
+ import { MatPaginatorIntl } from '@angular/material/paginator'
3
+ import { TranslateService } from '@ngx-translate/core'
4
+ import { Subject } from 'rxjs'
5
+
6
+ @Injectable()
7
+ export class CustomMatPaginatorIntl extends MatPaginatorIntl {
8
+ override changes = new Subject<void>()
9
+
10
+ constructor(private translate: TranslateService) {
11
+ super()
12
+ this.setLabels()
13
+ this.translate.onLangChange.subscribe(() => {
14
+ this.setLabels()
15
+ this.changes.next()
16
+ })
17
+ }
18
+
19
+ setLabels() {
20
+ this.itemsPerPageLabel = this.translate.instant(
21
+ 'table.paginator.itemsPerPage'
22
+ )
23
+ this.nextPageLabel = this.translate.instant('table.paginator.nextPage')
24
+ this.previousPageLabel = this.translate.instant(
25
+ 'table.paginator.previousPage'
26
+ )
27
+ this.firstPageLabel = this.translate.instant('table.paginator.firstPage')
28
+ this.lastPageLabel = this.translate.instant('table.paginator.lastPage')
29
+ this.getRangeLabel = this.getRangeLabelIntl
30
+ this.changes.next()
31
+ }
32
+
33
+ getRangeLabelIntl(page: number, pageSize: number, length: number): string {
34
+ if (length === 0 || pageSize === 0) {
35
+ return this.translate.instant('table.paginator.rangeLabel', {
36
+ startIndex: 0,
37
+ endIndex: 0,
38
+ length,
39
+ })
40
+ }
41
+ const startIndex = page * pageSize
42
+ const endIndex =
43
+ startIndex < length
44
+ ? Math.min(startIndex + pageSize, length)
45
+ : startIndex + pageSize
46
+ return this.translate.instant('table.paginator.rangeLabel', {
47
+ startIndex: startIndex + 1,
48
+ endIndex,
49
+ length,
50
+ })
51
+ }
52
+ }
@@ -30,3 +30,7 @@ tr {
30
30
  .active .mat-mdc-cell {
31
31
  color: var(--color-primary);
32
32
  }
33
+
34
+ .mat-mdc-paginator {
35
+ background: none;
36
+ }