geonetwork-ui 2.8.0-dev.0c9b29721 → 2.8.0-dev.27e1de86f

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 (264) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +5 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +26 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
  8. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +2 -2
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +1 -2
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  11. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  12. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  13. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
  15. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  16. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  17. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  18. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  19. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
  20. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
  21. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
  22. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  23. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
  24. package/esm2022/libs/feature/record/src/index.mjs +2 -1
  25. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  26. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  27. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  28. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +4 -4
  29. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +1 -1
  30. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
  31. package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +230 -0
  32. package/esm2022/libs/feature/record/src/lib/stac-view/utils.mjs +26 -0
  33. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
  34. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
  35. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  36. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  37. package/esm2022/libs/feature/search/src/lib/constants.mjs +1 -2
  38. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  39. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  40. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
  41. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
  42. package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
  43. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
  44. package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
  45. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
  46. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  47. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +3 -3
  48. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
  49. package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs +3 -3
  50. package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
  51. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  52. package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
  53. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
  54. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +86 -32
  55. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +1 -1
  56. package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +3 -3
  57. package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
  58. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  59. package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
  60. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  61. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
  62. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
  63. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
  64. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  65. package/esm2022/translations/de.json +19 -3
  66. package/esm2022/translations/en.json +19 -4
  67. package/esm2022/translations/es.json +18 -2
  68. package/esm2022/translations/fr.json +19 -3
  69. package/esm2022/translations/it.json +20 -4
  70. package/esm2022/translations/nl.json +18 -2
  71. package/esm2022/translations/pt.json +18 -2
  72. package/esm2022/translations/sk.json +19 -3
  73. package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs +35 -0
  74. package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs.map +1 -0
  75. package/fesm2022/geonetwork-ui.mjs +884 -261
  76. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  77. package/index.d.ts +1 -0
  78. package/index.d.ts.map +1 -1
  79. package/index.ts +1 -0
  80. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.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/iso19139/iso19139.converter.d.ts.map +1 -1
  83. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
  84. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  85. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  86. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  87. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  88. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  89. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  90. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  91. package/libs/common/domain/src/index.d.ts +3 -0
  92. package/libs/common/domain/src/index.d.ts.map +1 -0
  93. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  94. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  95. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
  96. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  97. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  98. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  99. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  100. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  101. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
  102. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  103. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
  104. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  105. package/libs/feature/record/src/index.d.ts +1 -0
  106. package/libs/feature/record/src/index.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  108. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  109. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  110. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  112. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  113. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts +12 -5
  114. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  115. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts +3 -1
  116. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  117. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +5 -1
  118. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  119. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +53 -0
  120. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  121. package/libs/feature/record/src/lib/stac-view/utils.d.ts +7 -0
  122. package/libs/feature/record/src/lib/stac-view/utils.d.ts.map +1 -0
  123. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
  124. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  125. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  126. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  127. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  128. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  129. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  130. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  131. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  132. package/libs/ui/elements/src/index.d.ts +2 -0
  133. package/libs/ui/elements/src/index.d.ts.map +1 -1
  134. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  135. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
  136. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
  137. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
  138. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
  139. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
  140. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  141. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
  142. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
  143. package/libs/ui/inputs/src/index.d.ts +1 -0
  144. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  145. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
  146. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  147. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
  148. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
  149. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  150. package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
  151. package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
  152. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
  153. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
  154. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +24 -14
  155. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
  156. package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
  157. package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
  158. package/libs/util/shared/src/index.d.ts +1 -0
  159. package/libs/util/shared/src/index.d.ts.map +1 -1
  160. package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
  161. package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
  162. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  163. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
  164. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  165. package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
  166. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
  167. package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
  168. package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
  169. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  170. package/package.json +5 -5
  171. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
  172. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
  173. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  174. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
  175. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
  176. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  177. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
  178. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  179. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
  180. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
  181. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +28 -0
  182. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
  183. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
  184. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
  185. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -1
  186. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +0 -1
  187. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  188. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  189. package/src/libs/common/domain/src/index.ts +2 -0
  190. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  191. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -1
  192. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  193. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  194. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  195. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
  196. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  197. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
  198. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
  199. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  200. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
  201. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  202. package/src/libs/feature/record/src/index.ts +1 -0
  203. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -1
  204. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  205. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  206. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +10 -8
  207. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +1 -1
  208. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -2
  209. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +8 -0
  210. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +87 -0
  211. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +339 -0
  212. package/src/libs/feature/record/src/lib/stac-view/utils.ts +57 -0
  213. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -1
  214. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
  215. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  216. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  217. package/src/libs/feature/search/src/lib/constants.ts +0 -1
  218. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  219. package/src/libs/ui/elements/src/index.ts +2 -0
  220. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
  221. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
  222. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
  223. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
  224. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
  225. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +67 -21
  226. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
  227. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
  228. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
  229. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
  230. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
  231. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  232. package/src/libs/ui/inputs/src/index.ts +1 -0
  233. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.html +3 -3
  234. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
  235. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
  236. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
  237. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
  238. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  239. package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
  240. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
  241. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
  242. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.html +16 -14
  243. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +144 -65
  244. package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
  245. package/src/libs/util/shared/src/index.ts +1 -0
  246. package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
  247. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
  248. package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
  249. package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
  250. package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
  251. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  252. package/translations/de.json +19 -3
  253. package/translations/en.json +19 -4
  254. package/translations/es.json +18 -2
  255. package/translations/fr.json +19 -3
  256. package/translations/it.json +20 -4
  257. package/translations/nl.json +18 -2
  258. package/translations/pt.json +18 -2
  259. package/translations/sk.json +19 -3
  260. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
  261. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
  262. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
  263. package/src/libs/common/domain/src/lib/index.ts +0 -2
  264. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
@@ -108,6 +108,7 @@ export class ChartViewComponent {
108
108
  chartType$ = new BehaviorSubject<InputChartType>('bar')
109
109
 
110
110
  @Input() set userChartConfig(config: DatavizChartConfigModel) {
111
+ if (!config) return
111
112
  this.aggregation$.next(config.aggregation)
112
113
  this.xProperty$.next(config.xProperty)
113
114
  this.yProperty$.next(config.yProperty)
@@ -7,6 +7,9 @@ import {
7
7
  WfsEndpoint,
8
8
  WfsVersion,
9
9
  TmsEndpoint,
10
+ StacEndpoint,
11
+ GetCollectionItemsOptions,
12
+ StacItemsDocument,
10
13
  } from '@camptocamp/ogc-client'
11
14
  import {
12
15
  BaseReader,
@@ -97,16 +100,27 @@ export class DataService {
97
100
  if (!featureType) {
98
101
  throw new Error('wfs.featuretype.notfound')
99
102
  }
103
+
104
+ const wfsVersion = endpoint.getVersion()
105
+ const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0'
106
+ const defaultCrs = featureType.defaultCrs
107
+
108
+ const shouldAddOutputCrs = addSrsName && defaultCrs
109
+
100
110
  return {
101
- all: featureType.outputFormats.reduce(
102
- (prev, curr) => ({
111
+ all: featureType.outputFormats.reduce((prev, curr) => {
112
+ const isJsonFormat = curr.toLowerCase().includes('json')
113
+ return {
103
114
  ...prev,
104
115
  [curr]: endpoint.getFeatureUrl(featureType.name, {
105
116
  outputFormat: curr,
117
+ ...(shouldAddOutputCrs &&
118
+ !isJsonFormat && {
119
+ outputCrs: defaultCrs,
120
+ }),
106
121
  }),
107
- }),
108
- {}
109
- ),
122
+ }
123
+ }, {}),
110
124
  geojson: endpoint.supportsJson(featureType.name)
111
125
  ? endpoint.getFeatureUrl(featureType.name, {
112
126
  asJson: true,
@@ -233,6 +247,17 @@ export class DataService {
233
247
  })
234
248
  }
235
249
 
250
+ async getItemsFromStacApi(
251
+ url: string,
252
+ options: GetCollectionItemsOptions
253
+ ): Promise<StacItemsDocument> {
254
+ return await StacEndpoint.getItemsFromUrl(url, options)
255
+ .then((response) => response)
256
+ .catch(() => {
257
+ throw new Error(`ogc.unreachable.unknown`)
258
+ })
259
+ }
260
+
236
261
  async getGeodataLinksFromTms(
237
262
  tmsLink: DatasetServiceDistribution,
238
263
  keepOriginalLink = false
@@ -40,6 +40,7 @@
40
40
  <div
41
41
  class="flex flex-col gap-2 w-full px-2"
42
42
  data-test="langAvailable"
43
+ [attr.data-test-lang]="lang"
43
44
  *ngFor="let lang of languages"
44
45
  >
45
46
  <gn-ui-button
@@ -69,11 +69,11 @@
69
69
  (valueChange)="valueChange.emit($event)"
70
70
  ></gn-ui-form-field-overviews>
71
71
  </ng-container>
72
- <ng-container *ngSwitchCase="'resourceIdentifier'">
72
+ <ng-container *ngSwitchCase="'resourceIdentifiers'">
73
73
  <gn-ui-form-field-simple
74
74
  [type]="'text'"
75
- [value]="valueAsString"
76
- (valueChange)="valueChange.emit($event)"
75
+ [value]="valueAsResourceIdentifierCode"
76
+ (valueChange)="handleResourceIdentifierChange($event)"
77
77
  ></gn-ui-form-field-simple>
78
78
  </ng-container>
79
79
  <ng-container *ngSwitchCase="'resourceCreated'">
@@ -142,4 +142,34 @@ export class FormFieldComponent {
142
142
  get valueAsOnlineResources() {
143
143
  return this.value as Array<OnlineResource>
144
144
  }
145
+ get valueAsResourceIdentifierCode() {
146
+ const identifiers = this.value as Array<{
147
+ code: string
148
+ codeSpace?: string
149
+ url?: string
150
+ }>
151
+ return identifiers?.[0]?.code || ''
152
+ }
153
+
154
+ handleResourceIdentifierChange(code: string) {
155
+ const identifiers = this.value as Array<{
156
+ code: string
157
+ codeSpace?: string
158
+ url?: string
159
+ }>
160
+
161
+ if (!code) {
162
+ this.valueChange.emit(identifiers?.slice(1) || [])
163
+ return
164
+ }
165
+
166
+ if (identifiers?.[0]) {
167
+ this.valueChange.emit([
168
+ { ...identifiers[0], code },
169
+ ...identifiers.slice(1),
170
+ ])
171
+ } else {
172
+ this.valueChange.emit([{ code }])
173
+ }
174
+ }
145
175
  }
@@ -81,7 +81,7 @@ export const RECORD_RESOURCE_CREATED_FIELD: EditorField = {
81
81
  }
82
82
 
83
83
  export const RESOURCE_IDENTIFIER_FIELD: EditorField = {
84
- model: 'resourceIdentifier',
84
+ model: 'resourceIdentifiers',
85
85
  formFieldConfig: {
86
86
  labelKey: marker('editor.record.form.field.resourceIdentifier'),
87
87
  },
@@ -8,3 +8,4 @@ export * from './lib/external-viewer-button/external-viewer-button.component'
8
8
  export * from './lib/gpf-api-dl/gpf-api-dl.component'
9
9
  export * from './lib/map-view/map-view.component'
10
10
  export * from './lib/record-meta/record-meta.component'
11
+ export * from './lib/stac-view/stac-view.component'
@@ -56,7 +56,11 @@ export class DataViewComponent {
56
56
  this.linkSelected.emit(this.selectedLink$.value)
57
57
  }
58
58
  }
59
- @Input() set datavizConfig(value: any) {
59
+ @Input() set datavizConfig(value: {
60
+ view?: string
61
+ source?: DatasetOnlineResource
62
+ chartConfig?: DatavizChartConfigModel
63
+ }) {
60
64
  if ((value && value.view === 'table') || value.view === 'chart') {
61
65
  this._selectedView = value.view
62
66
  }
@@ -12,7 +12,7 @@ import { MdViewFacade } from '../state'
12
12
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
13
13
  import { CommonModule } from '@angular/common'
14
14
  import { TranslatePipe } from '@ngx-translate/core'
15
- import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
15
+ import { GEONETWORK_UI_TAG_NAME, PROXY_PATH } from '../../../../../../libs/util/shared/src'
16
16
 
17
17
  export const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken<string>(
18
18
  'webComponentEmbedderUrl'
@@ -60,6 +60,9 @@ export class DataViewPermalinkComponent {
60
60
  url.searchParams.append('e', `gn-dataset-view-map`)
61
61
  }
62
62
  url.searchParams.append('a', `api-url=${this.config.basePath}`)
63
+ if (this.proxyPath) {
64
+ url.searchParams.append('a', `proxy-path=${this.proxyPath}`)
65
+ }
63
66
  url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`)
64
67
  url.searchParams.append('a', `primary-color=#0f4395`)
65
68
  url.searchParams.append('a', `secondary-color=#8bc832`)
@@ -72,6 +75,9 @@ export class DataViewPermalinkComponent {
72
75
  constructor(
73
76
  @Inject(Configuration) private config: Configuration,
74
77
  @Optional()
78
+ @Inject(PROXY_PATH)
79
+ private proxyPath: string,
80
+ @Optional()
75
81
  @Inject(WEB_COMPONENT_EMBEDDER_URL)
76
82
  protected wcEmbedderBaseUrl: string,
77
83
  private facade: MdViewFacade
@@ -3,6 +3,7 @@ import {
3
3
  Component,
4
4
  Inject,
5
5
  Input,
6
+ Optional,
6
7
  } from '@angular/core'
7
8
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
8
9
  import { MdViewFacade } from '../state'
@@ -10,7 +11,7 @@ import { BehaviorSubject, combineLatest, map } from 'rxjs'
10
11
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
11
12
  import { CommonModule } from '@angular/common'
12
13
  import { TranslatePipe } from '@ngx-translate/core'
13
- import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
14
+ import { GEONETWORK_UI_TAG_NAME, PROXY_PATH } from '../../../../../../libs/util/shared/src'
14
15
 
15
16
  @Component({
16
17
  selector: 'gn-ui-data-view-web-component',
@@ -42,7 +43,12 @@ export class DataViewWebComponentComponent {
42
43
  api-url="${new URL(
43
44
  this.config.basePath,
44
45
  window.location.origin
45
- ).toString()}"
46
+ ).toString()}"${
47
+ this.proxyPath
48
+ ? `
49
+ proxy-path="${this.proxyPath}"`
50
+ : ''
51
+ }
46
52
  dataset-id="${metadata.uniqueIdentifier}"
47
53
  aggregation="${aggregation}"
48
54
  x-property="${xProperty}"
@@ -65,7 +71,12 @@ export class DataViewWebComponentComponent {
65
71
  api-url="${new URL(
66
72
  this.config.basePath,
67
73
  window.location.origin
68
- ).toString()}"
74
+ ).toString()}"${
75
+ this.proxyPath
76
+ ? `
77
+ proxy-path="${this.proxyPath}"`
78
+ : ''
79
+ }
69
80
  dataset-id="${metadata.uniqueIdentifier}"
70
81
  primary-color="#0f4395"
71
82
  secondary-color="#8bc832"
@@ -82,7 +93,12 @@ export class DataViewWebComponentComponent {
82
93
  api-url="${new URL(
83
94
  this.config.basePath,
84
95
  window.location.origin
85
- ).toString()}"
96
+ ).toString()}"${
97
+ this.proxyPath
98
+ ? `
99
+ proxy-path="${this.proxyPath}"`
100
+ : ''
101
+ }
86
102
  dataset-id="${metadata.uniqueIdentifier}"
87
103
  primary-color="#0f4395"
88
104
  secondary-color="#8bc832"
@@ -97,6 +113,9 @@ export class DataViewWebComponentComponent {
97
113
 
98
114
  constructor(
99
115
  @Inject(Configuration) private config: Configuration,
116
+ @Optional()
117
+ @Inject(PROXY_PATH)
118
+ private proxyPath: string,
100
119
  private facade: MdViewFacade
101
120
  ) {}
102
121
  }
@@ -45,8 +45,8 @@ export interface TermBucket {
45
45
  }
46
46
 
47
47
  export interface Field {
48
- entry: Array<any>
49
- link: any
48
+ entry: Array<unknown>
49
+ link: Record<string, unknown>
50
50
  }
51
51
 
52
52
  @Component({
@@ -75,7 +75,7 @@ export class GpfApiDlComponent implements OnInit {
75
75
  page$ = new BehaviorSubject(1)
76
76
  url =
77
77
  'https://data.geopf.fr/telechargement/capabilities?outputFormat=application/json'
78
- choices: any
78
+ choices: { zone: TermBucket[]; format: TermBucket[]; category: TermBucket[] }
79
79
  bucketPromisesZone: Choice[]
80
80
  bucketPromisesFormat: Choice[]
81
81
  bucketPromisesCrs: Choice[]
@@ -144,8 +144,10 @@ export class GpfApiDlComponent implements OnInit {
144
144
  })
145
145
  )
146
146
 
147
- getFilteredProduct$(url): Observable<any> {
148
- return this.http.get(url)
147
+ getFilteredProduct$(
148
+ url
149
+ ): Observable<{ entry: unknown[]; totalentries: number }> {
150
+ return this.http.get<{ entry: unknown[]; totalentries: number }>(url)
149
151
  }
150
152
 
151
153
  getLinkFormat(produit): string {
@@ -224,7 +226,7 @@ export class GpfApiDlComponent implements OnInit {
224
226
 
225
227
  const tempZone = this.choices.zone.map((bucket) => ({
226
228
  value: bucket.term,
227
- label: bucket.label,
229
+ label: String(bucket.label),
228
230
  }))
229
231
  tempZone.sort((a, b) => (a.label > b.label ? 1 : -1))
230
232
  tempZone.unshift({ value: 'null', label: 'ZONE' })
@@ -233,7 +235,7 @@ export class GpfApiDlComponent implements OnInit {
233
235
 
234
236
  const tempFormat = this.choices.format.map((bucket) => ({
235
237
  value: bucket.term,
236
- label: bucket.label,
238
+ label: String(bucket.label),
237
239
  }))
238
240
  tempFormat.sort((a, b) => (a.label > b.label ? 1 : -1))
239
241
  tempFormat.unshift({ value: 'null', label: 'FORMAT' })
@@ -242,7 +244,7 @@ export class GpfApiDlComponent implements OnInit {
242
244
 
243
245
  const tempCrs = this.choices.category.map((bucket) => ({
244
246
  value: bucket.term,
245
- label: bucket.label,
247
+ label: String(bucket.label),
246
248
  }))
247
249
  tempCrs.sort((a, b) => (a.label > b.label ? 1 : -1))
248
250
  tempCrs.unshift({ value: 'null', label: 'CRS' })
@@ -28,7 +28,7 @@ export class GpfApiDlListItemComponent implements OnInit {
28
28
  @Input() isFromWfs: boolean
29
29
 
30
30
  constructor(protected http: HttpClient) {}
31
- liste$: Observable<any>
31
+ liste$: Observable<{ entry: unknown[] }>
32
32
 
33
33
  ngOnInit(): void {
34
34
  this.liste$ = this.http
@@ -27,7 +27,6 @@ import {
27
27
  map,
28
28
  shareReplay,
29
29
  switchMap,
30
- take,
31
30
  tap,
32
31
  } from 'rxjs/operators'
33
32
  import { MdViewFacade } from '../state/mdview.facade'
@@ -114,10 +113,15 @@ export class MapViewComponent implements AfterViewInit {
114
113
  _styleFromConfig = null
115
114
 
116
115
  linkMap: Map<string, DatasetOnlineResource> = new Map()
116
+ // FIXME the map view component should not need a selectedView
117
117
  @Input() set selectedView(value: string) {
118
118
  this.selectedView$.next(value)
119
119
  }
120
- @Input() set datavizConfig(value: any) {
120
+ @Input() set datavizConfig(value: {
121
+ view?: string
122
+ styleTMSIndex?: number
123
+ source?: DatasetOnlineResource
124
+ }) {
121
125
  if (value && value.view === 'map') {
122
126
  this.selectedView$.next(value.view)
123
127
  if (value.styleTMSIndex) {
@@ -0,0 +1,8 @@
1
+ :host {
2
+ --gn-ui-button-padding: 7px 8px;
3
+ }
4
+
5
+ /* Ensure OpenLayers controls are above the custom toggle */
6
+ ::ng-deep .ol-overlaycontainer-stopevent {
7
+ z-index: 11 !important;
8
+ }
@@ -0,0 +1,87 @@
1
+ <div class="mt-6 bg-white border border-gray-300 overflow-hidden rounded-lg">
2
+ <div
3
+ class="w-full h-[700px] md:h-[366px] flex md:flex-row flex-col border-b border-gray-300"
4
+ >
5
+ @let filterState = filterState$ | async;
6
+
7
+ <div class="w-full md:w-5/12 h-[366px] flex flex-col">
8
+ <gn-ui-date-range-inputs
9
+ [temporalExtent]="filterState.temporalExtent"
10
+ (temporalExtentChange)="onTemporalExtentChange($event)"
11
+ ></gn-ui-date-range-inputs>
12
+
13
+ <div class="mt-auto mb-8 mx-8" *ngIf="isFilterModified$ | async">
14
+ <gn-ui-button
15
+ id="reset-filters-button"
16
+ type="light"
17
+ (buttonClick)="onResetFilters()"
18
+ >
19
+ <span translate>stac.filter.reset</span>
20
+ <ng-icon name="matDeleteOutline" class="ml-2"></ng-icon>
21
+ </gn-ui-button>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="w-full md:w-7/12 h-[334px] md:h-[366px] flex flex-col">
26
+ <gn-ui-map-container
27
+ #mapContainer
28
+ [context]="mapContext$ | async"
29
+ (extentChange)="onSpatialExtentChange($event)"
30
+ (resolvedExtentChange)="onResolvedMapExtentChange($event)"
31
+ class="w-full h-full"
32
+ >
33
+ <div
34
+ class="bg-white rounded-xl shadow-xl absolute left-1/2 transform -translate-x-1/2 bottom-0 mb-2.5 px-4 py-2 z-10 max-w-[90%] w-max"
35
+ >
36
+ <gn-ui-check-toggle
37
+ [value]="filterState.isSpatialExtentFilterEnabled"
38
+ (toggled)="onSpatialFilterToggle($event)"
39
+ [label]="'stac.filter.enable' | translate"
40
+ [color]="'primary'"
41
+ ></gn-ui-check-toggle>
42
+ </div>
43
+ </gn-ui-map-container>
44
+ </div>
45
+ </div>
46
+ <div
47
+ class="relative mx-5 my-[30px] min-h-[274px] flex items-center justify-center flex-col"
48
+ >
49
+ <!-- Keep grid outside ngIf to keep items$ observable alive -->
50
+ <gn-ui-stac-items-result-grid
51
+ [items]="items$ | async"
52
+ ></gn-ui-stac-items-result-grid>
53
+ <div
54
+ *ngIf="(items$ | async)?.length > 0; else noResultsOrError"
55
+ class="mt-[20px] mx-auto flex justify-center"
56
+ >
57
+ <gn-ui-previous-next-buttons
58
+ [listComponent]="this"
59
+ [displayLabels]="true"
60
+ ></gn-ui-previous-next-buttons>
61
+ </div>
62
+ <ng-template #noResultsOrError>
63
+ <gn-ui-popup-alert
64
+ *ngIf="error$ | async as error"
65
+ type="warning"
66
+ icon="matErrorOutlineOutline"
67
+ class="absolute left-0 top-0 w-full block"
68
+ >
69
+ <span translate>{{ error }}</span>
70
+ </gn-ui-popup-alert>
71
+ <div
72
+ *ngIf="(error$ | async) === null"
73
+ class="flex items-center justify-center flex-col h-full gap-[10px]"
74
+ >
75
+ <h2 class="text-center text-xl" translate>stac.results.noResults</h2>
76
+ <gn-ui-button
77
+ id="no-results-button"
78
+ type="secondary"
79
+ (buttonClick)="onResetFilters()"
80
+ >
81
+ <span translate>stac.filter.reset</span>
82
+ <ng-icon name="matDeleteOutline" class="ml-2"></ng-icon>
83
+ </gn-ui-button>
84
+ </div>
85
+ </ng-template>
86
+ </div>
87
+ </div>