geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.8be73f10b

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 (291) 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/fields.config.mjs +2 -2
  19. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  20. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  21. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  22. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  23. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  24. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  26. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  29. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
  30. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  31. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  32. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  33. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  34. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  35. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  36. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  37. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  38. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  39. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
  40. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  41. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
  42. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  43. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  44. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +43 -3
  45. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  46. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  47. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  48. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  49. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  50. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  51. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  52. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  53. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  54. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  59. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  60. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  61. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +35 -9
  62. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +14 -10
  63. package/esm2022/translations/de.json +10 -75
  64. package/esm2022/translations/en.json +10 -75
  65. package/esm2022/translations/es.json +9 -74
  66. package/esm2022/translations/fr.json +22 -87
  67. package/esm2022/translations/it.json +27 -91
  68. package/esm2022/translations/nl.json +9 -74
  69. package/esm2022/translations/pt.json +9 -74
  70. package/fesm2022/geonetwork-ui.mjs +911 -975
  71. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  72. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  73. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  74. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  75. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +3 -1
  76. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  77. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  78. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  79. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  80. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  81. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  82. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  83. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  84. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  85. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  86. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  87. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  88. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  89. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -7
  90. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  91. 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
  92. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  93. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  94. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  95. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  96. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  97. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  98. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  99. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  100. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  101. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  102. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  103. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  104. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  105. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  106. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  108. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  109. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  110. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  112. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  113. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  114. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  115. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  116. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  117. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  118. package/libs/ui/dataviz/src/index.d.ts +2 -2
  119. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  120. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  121. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  122. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  123. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  124. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  125. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  126. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  127. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  128. package/libs/ui/elements/src/index.d.ts +1 -0
  129. package/libs/ui/elements/src/index.d.ts.map +1 -1
  130. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
  131. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
  132. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  133. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  134. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  135. package/libs/ui/inputs/src/index.d.ts +0 -1
  136. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  137. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
  138. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  139. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  140. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  141. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  142. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  143. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  144. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  145. package/libs/ui/widgets/src/index.d.ts +0 -1
  146. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  147. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  148. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  149. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  150. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  151. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  152. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  153. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  154. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  155. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  156. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  157. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  158. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  159. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  160. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  161. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  162. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  163. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  164. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  165. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  166. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  167. package/package.json +1 -1
  168. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  169. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  170. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +55 -32
  171. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -7
  172. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  173. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  174. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
  175. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  176. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  177. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  178. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +43 -20
  179. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  180. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +10 -18
  181. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  182. 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
  183. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  184. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  185. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  186. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  187. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  188. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  189. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  190. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  191. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  192. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  193. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  194. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  195. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  196. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  197. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  198. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  199. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  200. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  201. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  202. package/src/libs/ui/dataviz/src/index.ts +2 -2
  203. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  204. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  205. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  206. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  207. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  208. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  209. package/src/libs/ui/elements/src/index.ts +1 -0
  210. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
  211. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
  212. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
  213. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  214. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
  215. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  216. package/src/libs/ui/inputs/src/index.ts +0 -1
  217. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +48 -0
  218. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  219. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  220. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  221. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  222. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  223. package/src/libs/ui/widgets/src/index.ts +0 -1
  224. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  225. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  226. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  227. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  228. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  229. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  230. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  231. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  232. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  233. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  234. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  235. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  236. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +53 -8
  237. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  238. package/translations/de.json +10 -75
  239. package/translations/en.json +10 -75
  240. package/translations/es.json +9 -74
  241. package/translations/fr.json +22 -87
  242. package/translations/it.json +27 -91
  243. package/translations/nl.json +9 -74
  244. package/translations/pt.json +9 -74
  245. package/translations/sk.json +9 -74
  246. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  247. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  248. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  249. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  250. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  251. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  252. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  253. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  254. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  255. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  256. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  257. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  258. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  259. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  260. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  261. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  262. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  263. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  264. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  265. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  266. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  267. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  268. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  269. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  270. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  271. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  272. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  273. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  274. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  275. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  276. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  277. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  278. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  279. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  280. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  281. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  282. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  283. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  284. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  285. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
  286. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  287. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  288. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  289. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  290. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  291. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -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
+ }
@@ -0,0 +1,67 @@
1
+ <div class="flex flex-col border border-gray-300 rounded-lg bg-white h-full">
2
+ <div class="flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative">
3
+ <table
4
+ mat-table
5
+ [dataSource]="dataSource"
6
+ matSort
7
+ (matSortChange)="setSort($event)"
8
+ [matSortDisableClear]="true"
9
+ *ngrxLet="properties$ as properties"
10
+ >
11
+ <ng-container *ngFor="let prop of properties" [matColumnDef]="prop">
12
+ <th
13
+ mat-header-cell
14
+ *matHeaderCellDef
15
+ mat-sort-header
16
+ class="text-sm text-black bg-white"
17
+ >
18
+ {{ prop }}
19
+ </th>
20
+ <td
21
+ mat-cell
22
+ *matCellDef="let element"
23
+ class="whitespace-nowrap pr-1 truncate"
24
+ >
25
+ {{ element[prop] }}
26
+ </td>
27
+ </ng-container>
28
+
29
+ <tr mat-header-row *matHeaderRowDef="properties; sticky: true"></tr>
30
+ <tr
31
+ [id]="getRowEltId(row.id)"
32
+ mat-row
33
+ *matRowDef="let row; columns: properties"
34
+ (click)="selected.emit(row)"
35
+ [class.active]="row.id === activeId"
36
+ ></tr>
37
+ </table>
38
+ <gn-ui-loading-mask
39
+ *ngIf="loading$ | async"
40
+ class="sticky inset-0"
41
+ [message]="'table.loading.data' | translate"
42
+ ></gn-ui-loading-mask>
43
+ <gn-ui-popup-alert
44
+ *ngIf="error"
45
+ type="warning"
46
+ icon="matErrorOutlineOutline"
47
+ class="absolute m-2 inset-0 z-[100]"
48
+ >
49
+ <span translate>{{ error }}</span>
50
+ </gn-ui-popup-alert>
51
+ </div>
52
+ <div class="flex justify-between items-center overflow-hidden">
53
+ <div class="text-gray-900 px-4 py-2 text-sm">
54
+ <span class="count font-extrabold text-primary">{{ count }}</span
55
+ >&nbsp;<span translate>table.object.count</span>.
56
+ </div>
57
+
58
+ <mat-paginator
59
+ class="my-[-16px]"
60
+ (page)="setPagination()"
61
+ [length]="count"
62
+ [pageSize]="10"
63
+ [showFirstLastButtons]="true"
64
+ [hidePageSize]="true"
65
+ ></mat-paginator>
66
+ </div>
67
+ </div>