geonetwork-ui 2.8.0-dev.93d2d87c0 → 2.8.0-dev.b7a1670bc

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 (279) 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/common/resource-types.mjs +6 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +31 -4
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
  9. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +2 -2
  10. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -2
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +7 -3
  12. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  13. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  14. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  15. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
  17. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  18. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  19. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  20. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  21. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  22. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
  23. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
  24. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
  25. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  26. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
  27. package/esm2022/libs/feature/record/src/index.mjs +2 -1
  28. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  29. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  30. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  31. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +4 -4
  32. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +1 -1
  33. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -3
  34. package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +230 -0
  35. package/esm2022/libs/feature/record/src/lib/stac-view/utils.mjs +26 -0
  36. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
  37. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
  38. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  39. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  40. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -2
  41. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  42. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +36 -22
  43. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +2 -1
  44. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  45. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
  46. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
  47. package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
  48. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
  49. package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
  50. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
  51. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  52. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +3 -3
  53. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
  54. package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs +3 -3
  55. package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
  56. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  57. package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
  58. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
  59. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +86 -32
  60. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +1 -1
  61. package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +3 -3
  62. package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
  63. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  64. package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
  65. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  66. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
  67. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
  68. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
  69. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  70. package/esm2022/translations/de.json +20 -3
  71. package/esm2022/translations/en.json +20 -4
  72. package/esm2022/translations/es.json +19 -2
  73. package/esm2022/translations/fr.json +20 -3
  74. package/esm2022/translations/it.json +21 -4
  75. package/esm2022/translations/nl.json +19 -2
  76. package/esm2022/translations/pt.json +19 -2
  77. package/esm2022/translations/sk.json +20 -3
  78. package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs +35 -0
  79. package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs.map +1 -0
  80. package/fesm2022/geonetwork-ui.mjs +946 -287
  81. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  82. package/index.d.ts +1 -0
  83. package/index.d.ts.map +1 -1
  84. package/index.ts +1 -0
  85. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  86. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +3 -0
  87. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  88. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  89. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  90. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
  91. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  92. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  93. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  94. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  95. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  96. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  97. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  98. package/libs/common/domain/src/index.d.ts +3 -0
  99. package/libs/common/domain/src/index.d.ts.map +1 -0
  100. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  101. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  102. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
  103. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  104. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  105. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  106. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  107. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  108. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  109. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
  110. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  111. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
  112. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  113. package/libs/feature/record/src/index.d.ts +1 -0
  114. package/libs/feature/record/src/index.d.ts.map +1 -1
  115. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  116. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  117. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  118. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  119. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  120. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  121. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts +12 -5
  122. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  123. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts +3 -1
  124. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  125. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +5 -1
  126. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  127. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +53 -0
  128. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  129. package/libs/feature/record/src/lib/stac-view/utils.d.ts +7 -0
  130. package/libs/feature/record/src/lib/stac-view/utils.d.ts.map +1 -0
  131. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
  132. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  133. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  134. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  135. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  136. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  137. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  138. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  139. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  140. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  141. package/libs/ui/elements/src/index.d.ts +2 -0
  142. package/libs/ui/elements/src/index.d.ts.map +1 -1
  143. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  144. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
  145. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
  146. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
  147. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
  148. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
  149. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  150. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
  151. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
  152. package/libs/ui/inputs/src/index.d.ts +1 -0
  153. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  154. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
  155. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  156. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
  157. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
  158. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  159. package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
  160. package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
  161. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
  162. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
  163. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +24 -14
  164. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
  165. package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
  166. package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
  167. package/libs/util/shared/src/index.d.ts +1 -0
  168. package/libs/util/shared/src/index.d.ts.map +1 -1
  169. package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
  170. package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
  171. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  172. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
  173. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  174. package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
  175. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
  176. package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
  177. package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
  178. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  179. package/package.json +5 -5
  180. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
  181. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +11 -0
  182. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
  183. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  184. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
  185. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
  186. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  187. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
  188. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  189. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
  190. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
  191. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +39 -3
  192. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
  193. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
  194. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
  195. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -1
  196. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -1
  197. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +12 -4
  198. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  199. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  200. package/src/libs/common/domain/src/index.ts +2 -0
  201. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  202. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -1
  203. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  204. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  205. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  206. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
  207. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  208. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  209. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
  210. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
  211. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  212. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
  213. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  214. package/src/libs/feature/record/src/index.ts +1 -0
  215. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -1
  216. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  217. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  218. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +10 -8
  219. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +1 -1
  220. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -2
  221. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -2
  222. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +8 -0
  223. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +87 -0
  224. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +339 -0
  225. package/src/libs/feature/record/src/lib/stac-view/utils.ts +57 -0
  226. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -1
  227. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
  228. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  229. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  230. package/src/libs/feature/search/src/lib/constants.ts +1 -1
  231. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  232. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +1 -0
  233. package/src/libs/feature/search/src/lib/utils/service/fields.ts +37 -33
  234. package/src/libs/ui/elements/src/index.ts +2 -0
  235. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
  236. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
  237. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
  238. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
  239. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
  240. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +69 -23
  241. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
  242. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
  243. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
  244. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
  245. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
  246. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  247. package/src/libs/ui/inputs/src/index.ts +1 -0
  248. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.html +3 -3
  249. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
  250. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
  251. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
  252. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
  253. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  254. package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
  255. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
  256. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
  257. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.html +16 -14
  258. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +144 -65
  259. package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
  260. package/src/libs/util/shared/src/index.ts +1 -0
  261. package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
  262. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
  263. package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
  264. package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
  265. package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
  266. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  267. package/translations/de.json +20 -3
  268. package/translations/en.json +20 -4
  269. package/translations/es.json +19 -2
  270. package/translations/fr.json +20 -3
  271. package/translations/it.json +21 -4
  272. package/translations/nl.json +19 -2
  273. package/translations/pt.json +19 -2
  274. package/translations/sk.json +20 -3
  275. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
  276. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
  277. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
  278. package/src/libs/common/domain/src/lib/index.ts +0 -2
  279. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
@@ -4,4 +4,5 @@ export * from './lib/links';
4
4
  export * from './lib/image-fallback.directive';
5
5
  export * from './lib/gn-ui-version';
6
6
  export * from './lib/record';
7
+ export * from './lib/humanize-date.directive';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/shared/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/util/shared/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,+BAA+B,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { Renderer2, ElementRef, OnInit } from '@angular/core';
2
+ import { DateService } from './services/date.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class GnUiHumanizeDateDirective implements OnInit {
5
+ private dateService;
6
+ private el;
7
+ private renderer;
8
+ gnUiHumanizeDate: Date | string;
9
+ constructor(dateService: DateService, el: ElementRef, renderer: Renderer2);
10
+ ngOnInit(): Promise<void>;
11
+ private updateElement;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<GnUiHumanizeDateDirective, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GnUiHumanizeDateDirective, "[gnUiHumanizeDate]", never, { "gnUiHumanizeDate": { "alias": "gnUiHumanizeDate"; "required": false; }; }, {}, never, never, true, never>;
14
+ }
15
+ //# sourceMappingURL=humanize-date.directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanize-date.directive.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/shared/src/lib/humanize-date.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,UAAU,EAAS,MAAM,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;;AAErD,qBAIa,yBAA0B,YAAW,MAAM;IAIpD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,QAAQ;IALT,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAA;gBAG9B,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,SAAS;IAGvB,QAAQ;YAIA,aAAa;yCAbhB,yBAAyB;2CAAzB,yBAAyB;CA2BrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAGlE,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CACd,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,SAAS,EAAE;IA0Cd,QAAQ,CACN,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,SAAS;yCA/CP,qBAAqB;6CAArB,qBAAqB;CAmDjC"}
1
+ {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAGlE,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CACd,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,SAAS,EAAE;IA8Cd,QAAQ,CACN,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,SAAS;yCAnDP,qBAAqB;6CAArB,qBAAqB;CAuDjC"}
@@ -114,6 +114,12 @@ export declare const FORMATS: {
114
114
  readonly color: "#5A9E6F";
115
115
  readonly mimeTypes: readonly ["image/webp"];
116
116
  };
117
+ readonly postgis: {
118
+ readonly extensions: readonly ["postgis"];
119
+ readonly priority: 18;
120
+ readonly color: "#336791";
121
+ readonly mimeTypes: readonly [];
122
+ };
117
123
  };
118
124
  export type FileFormat = keyof typeof FORMATS;
119
125
  export declare function getFormatPriority(linkFormat: FileFormat): number;
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyIV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,UAAU,CAcZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,MAAM,GACZ,OAAO,CAST;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAO7D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CA6BR;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;;;;;;;8JAmC5E;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,SAUxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+IV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,UAAU,CAmBZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,MAAM,GACZ,OAAO,CAST;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAO7D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CA6BR;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;;;;;;;8JAmC5E;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,SAUxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
@@ -1,12 +1,16 @@
1
1
  import { TranslateService } from '@ngx-translate/core';
2
+ import { type Locale } from 'date-fns/locale';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class DateService {
4
5
  private translateService;
6
+ dateLocales: Promise<Record<import("geonetwork-ui").LanguageCode2, Locale>>;
5
7
  constructor(translateService: TranslateService);
6
8
  private getDateObject;
7
9
  private getLocaleAndDate;
10
+ private getDateLocale;
8
11
  formatDate(date: Date | string, options?: Intl.DateTimeFormatOptions): string;
9
12
  formatDateTime(date: Date | string, options?: Intl.DateTimeFormatOptions): string;
13
+ formatRelativeDateTime(date: Date | string): Promise<string>;
10
14
  static ɵfac: i0.ɵɵFactoryDeclaration<DateService, never>;
11
15
  static ɵprov: i0.ɵɵInjectableDeclaration<DateService>;
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"date.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/services/date.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;;AAEtD,qBAGa,WAAW;IACV,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEtD,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IASxB,UAAU,CACR,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM;IAKT,cAAc,CACZ,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM;yCAlCE,WAAW;6CAAX,WAAW;CAsCvB"}
1
+ {"version":3,"file":"date.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/services/date.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAA;;AAK7C,qBAGa,WAAW;IAKV,OAAO,CAAC,gBAAgB;IAJpC,WAAW,iEAEV;gBAEmB,gBAAgB,EAAE,gBAAgB;IAEtD,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;YASV,aAAa;IAM3B,UAAU,CACR,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM;IAKT,cAAc,CACZ,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM;IAKH,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;yCAjDvD,WAAW;6CAAX,WAAW;CA4DvB"}
@@ -1,18 +1,19 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import { InjectionToken, Injector } from '@angular/core';
2
2
  import { Location } from '@angular/common';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare const PROXY_PATH: InjectionToken<string>;
5
5
  export declare class ProxyService {
6
- private proxyPath;
6
+ private injector;
7
7
  private location;
8
- constructor(proxyPath: string, location: Location);
8
+ private get proxyPath();
9
+ constructor(injector: Injector, location: Location);
9
10
  /**
10
11
  * Transforms the URL to go through a proxy specified with the PROXY_PATH
11
12
  * injection token.
12
13
  * @param url
13
14
  */
14
15
  getProxiedUrl(url: string): string;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<ProxyService, [{ optional: true; }, null]>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProxyService, never>;
16
17
  static ɵprov: i0.ɵɵInjectableDeclaration<ProxyService>;
17
18
  }
18
19
  //# sourceMappingURL=proxy.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/services/proxy.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAY,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;;AAE1C,eAAO,MAAM,UAAU,wBAA0C,CAAA;AAEjE,qBAGa,YAAY;IAEW,OAAO,CAAC,SAAS;IACjD,OAAO,CAAC,QAAQ;gBADwB,SAAS,EAAE,MAAM,EACjD,QAAQ,EAAE,QAAQ;IAG5B;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;yCAXvB,YAAY;6CAAZ,YAAY;CA6BxB"}
1
+ {"version":3,"file":"proxy.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/services/proxy.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;;AAE1C,eAAO,MAAM,UAAU,wBAA0C,CAAA;AAEjE,qBAGa,YAAY;IAMrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IANlB,OAAO,KAAK,SAAS,GAEpB;gBAGS,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;IAG5B;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;yCAfvB,YAAY;6CAAZ,YAAY;CAiCxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sort-by.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/sort-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;AAEvF,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAG7D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAKlE"}
1
+ {"version":3,"file":"sort-by.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/sort-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;AAEvF,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAG7D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAQlE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.8.0-dev.93d2d87c0",
3
+ "version": "2.8.0-dev.b7a1670bc",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -50,10 +50,10 @@
50
50
  "dependencies": {
51
51
  "@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
52
52
  "@camptocamp/ogc-client": "1.3.1-dev.edb3244",
53
- "@geospatial-sdk/core": "0.0.5-dev.37",
54
- "@geospatial-sdk/geocoding": "0.0.5-dev.37",
55
- "@geospatial-sdk/legend": "0.0.5-dev.37",
56
- "@geospatial-sdk/openlayers": "0.0.5-dev.37",
53
+ "@geospatial-sdk/core": "0.0.5-dev.40",
54
+ "@geospatial-sdk/geocoding": "0.0.5-dev.40",
55
+ "@geospatial-sdk/legend": "0.0.5-dev.40",
56
+ "@geospatial-sdk/openlayers": "0.0.5-dev.40",
57
57
  "@ltd/j-toml": "~1.35.2",
58
58
  "@messageformat/core": "^3.0.1",
59
59
  "@ng-icons/core": "29.10.0",
@@ -9,6 +9,8 @@ export function matchProtocol(protocol: string): ServiceProtocol {
9
9
  if (/ogc\W*api\W*features/i.test(protocol)) return 'ogcFeatures'
10
10
  if (/esri/i.test(protocol)) return 'esriRest'
11
11
  if (/DOWNLOAD-1/i.test(protocol)) return 'GPFDL'
12
+ if (/DB:POSTGIS/i.test(protocol)) return 'postgis'
13
+ if (/stac\W*items/i.test(protocol)) return 'stac'
12
14
  return 'other'
13
15
  }
14
16
 
@@ -14,11 +14,14 @@ export const PossibleResourceTypes = {
14
14
  'map-interactive': 'reuse', // new index field since Oct 10, 2024
15
15
  'map-static': 'reuse', // new index field
16
16
  mapDigital: 'reuse',
17
+ mapHardcopy: 'reuse',
17
18
  series: 'dataset',
18
19
  service: 'service',
19
20
  staticMap: 'reuse',
20
21
  } as const
21
22
 
23
+ export const ReusePresentationForms = ['mapDigital', 'mapHardcopy'] as string[]
24
+
22
25
  type KindType = keyof typeof PossibleResourceTypes
23
26
  type ResourceType = 'reuse' | 'dataset' | 'service'
24
27
  type PossibleResourceTypesGrouped = {
@@ -59,6 +62,14 @@ export function getReuseType(type: string): ReuseType {
59
62
  : undefined
60
63
  }
61
64
 
65
+ export function getReusePresentationForm(
66
+ presentationForms?: string[]
67
+ ): string | undefined {
68
+ return presentationForms?.find((presentationForm) =>
69
+ ReusePresentationForms.includes(presentationForm)
70
+ )
71
+ }
72
+
62
73
  export function kindToCodeListValue(record: CatalogRecord) {
63
74
  return record.kind === 'reuse' ? record.reuseType : record.kind
64
75
  }
@@ -56,7 +56,7 @@ export class DcatApConverter extends BaseConverter<string> {
56
56
  spatialExtents: readSpatialExtents,
57
57
  keywords: readKeywords,
58
58
  topics: readTopics,
59
- resourceIdentifier: () => undefined,
59
+ resourceIdentifiers: () => undefined,
60
60
  recordUpdated: readRecordUpdated,
61
61
  recordCreated: readRecordCreated,
62
62
  resourceUpdated: readResourceUpdated,
@@ -96,7 +96,7 @@ export class DcatApConverter extends BaseConverter<string> {
96
96
  recordUpdated: () => undefined,
97
97
  recordCreated: () => undefined,
98
98
  recordPublished: () => undefined,
99
- resourceIdentifier: () => undefined,
99
+ resourceIdentifiers: () => undefined,
100
100
  resourceUpdated: () => undefined,
101
101
  resourceCreated: () => undefined,
102
102
  resourcePublished: () => undefined,
@@ -70,7 +70,7 @@ export const GENERIC_DATASET_RECORD: DatasetRecord = {
70
70
  recordCreated: new Date('2021-11-15T09:00:00'),
71
71
  recordPublished: new Date('2022-01-01T10:00:00'),
72
72
  recordUpdated: new Date('2022-02-01T15:12:00'),
73
- resourceIdentifier: '2d974612-70b1-4662-a9f4-c43cbe453773',
73
+ resourceIdentifiers: [{ code: '2d974612-70b1-4662-a9f4-c43cbe453773' }],
74
74
  resourceCreated: new Date('2022-09-01T14:18:19'),
75
75
  resourceUpdated: new Date('2022-12-04T15:12:00'),
76
76
  title: 'A very interesting dataset (un jeu de données très intéressant)',
@@ -2,7 +2,7 @@ import { ServiceRecord } from '../../../../../../libs/common/domain/src/lib/mode
2
2
 
3
3
  export const GEO2FRANCE_SERVICE_EAUXUSEES_RECORD: ServiceRecord = {
4
4
  uniqueIdentifier: 'be052079-f1f6-4f6f-a722-cbf11deb40eb',
5
- resourceIdentifier: 'https://id.eaufrance.fr/meta/ODP_WFS',
5
+ resourceIdentifiers: [{ code: 'https://id.eaufrance.fr/meta/ODP_WFS' }],
6
6
  kind: 'service',
7
7
  otherLanguages: [],
8
8
  defaultLanguage: 'fr',
@@ -146,6 +146,9 @@ Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur
146
146
  defaultLanguage: 'fr',
147
147
  otherLanguages: [],
148
148
  translations: {},
149
- resourceIdentifier:
150
- 'https://www.geoportail-urbanisme.gouv.fr/document/60036_PLU_20220329',
149
+ resourceIdentifiers: [
150
+ {
151
+ code: 'https://www.geoportail-urbanisme.gouv.fr/document/60036_PLU_20220329',
152
+ },
153
+ ],
151
154
  }
@@ -68,7 +68,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
68
68
  abstract: `Perimeter der Alpenkonvention in der Schweiz. Die Alpenkonvention ist ein völkerrechtlicher Vertrag zwischen den acht Alpenländern Deutschland, Frankreich, Italien, Liechtenstein, Monaco, Österreich, Schweiz, Slowenien sowie der Europäischen Union. Das Ziel des Übereinkommens ist der Schutz der Alpen durch eine sektorübergreifende, ganzheitliche und nachhaltige Politik.`,
69
69
  overviews: [],
70
70
  topics: ['planningCadastre', 'planningCadastre_Planning'],
71
- resourceIdentifier: 'ch.are.alpenkonvention',
71
+ resourceIdentifiers: [{ code: 'ch.are.alpenkonvention' }],
72
72
  keywords: [
73
73
  {
74
74
  thesaurus: {
@@ -2,7 +2,7 @@ import { ReuseRecord } from '../../../../../../libs/common/domain/src/lib/model/
2
2
 
3
3
  export const GEORHENA_REUSE_SOLAIRE_RECORD: ReuseRecord = {
4
4
  uniqueIdentifier: '015e6d20-0d69-4ae7-adfe-85c588aac141',
5
- resourceIdentifier: '04_2022_301',
5
+ resourceIdentifiers: [{ code: '04_2022_301' }],
6
6
  kind: 'reuse',
7
7
  otherLanguages: ['de', 'en'],
8
8
  defaultLanguage: 'fr',
@@ -71,7 +71,7 @@ Toutes ces données sont reprises dans BDR.`,
71
71
  recordCreated: new Date('2019-04-02T12:34:35'),
72
72
  recordUpdated: new Date('2022-06-16T05:01:21'),
73
73
  resourceCreated: new Date('2002-01-01'),
74
- resourceIdentifier: '2d974612-70b1-4662-a9f4-c43cbe453773',
74
+ resourceIdentifiers: [{ code: '2d974612-70b1-4662-a9f4-c43cbe453773' }],
75
75
  resourceUpdated: new Date('2022-06-16'),
76
76
  resourcePublished: new Date('2022-06-16'),
77
77
  onlineResources: [
@@ -645,7 +645,7 @@ export const METAWAL_SERVICE_RECORD: ServiceRecord = {
645
645
  },
646
646
  recordCreated: new Date('2019-04-02T12:31:58'),
647
647
  recordUpdated: new Date('2022-02-09T11:31:06.766Z'),
648
- resourceIdentifier: '6d2b6fdb-f1ea-4d48-8697-a0c05512f1dc',
648
+ resourceIdentifiers: [{ code: '6d2b6fdb-f1ea-4d48-8697-a0c05512f1dc' }],
649
649
  resourcePublished: new Date('2016-12-01'),
650
650
  securityConstraints: [],
651
651
  title:
@@ -2,7 +2,7 @@ import { ReuseRecord } from '../../../../../../libs/common/domain/src/lib/model/
2
2
 
3
3
  export const WALLONIE_REUSE_SPW_RECORD: ReuseRecord = {
4
4
  uniqueIdentifier: '83809bcd-1763-4d28-b820-2b9828083ba5',
5
- resourceIdentifier: '83809bcd-1763-4d28-b820-2b9828083ba5',
5
+ resourceIdentifiers: [{ code: '83809bcd-1763-4d28-b820-2b9828083ba5' }],
6
6
  kind: 'reuse',
7
7
  otherLanguages: [],
8
8
  defaultLanguage: 'fr',
@@ -2,7 +2,7 @@ import { ServiceRecord } from '../../../../../../libs/common/domain/src/lib/mode
2
2
 
3
3
  export const WALLONIE_SERVICE_NAPITSWALLONIA_RECORD: ServiceRecord = {
4
4
  uniqueIdentifier: 'fe1c1a3d-c75b-435c-a1d1-48426818f54d',
5
- resourceIdentifier: 'fe1c1a3d-c75b-435c-a1d1-48426818f54d',
5
+ resourceIdentifiers: [{ code: 'fe1c1a3d-c75b-435c-a1d1-48426818f54d' }],
6
6
  kind: 'service',
7
7
  otherLanguages: [],
8
8
  defaultLanguage: 'fr',
@@ -26,7 +26,11 @@ import {
26
26
  } from '../../../../../../libs/common/domain/src/lib/model/record'
27
27
  import { matchProtocol } from '../common/distribution.mapper'
28
28
  import { Thesaurus } from './types'
29
- import { getResourceType, getReuseType } from '../common/resource-types'
29
+ import {
30
+ getResourceType,
31
+ getReusePresentationForm,
32
+ getReuseType,
33
+ } from '../common/resource-types'
30
34
  import { TranslateService } from '@ngx-translate/core'
31
35
  import { toLang2, toLang3 } from '../../../../../../libs/util/i18n/src'
32
36
 
@@ -402,8 +406,12 @@ export class Gn4FieldMapper {
402
406
  ),
403
407
  resourceType: (output, source) => {
404
408
  const resourceType = getFirstValue(selectField(source, 'resourceType'))
405
- const kind = getResourceType(resourceType)
406
- const reuseType = getReuseType(resourceType)
409
+ const presentationForms = getAsArray(
410
+ selectField(source, 'cl_presentationForm')
411
+ ).map((presentationForm) => presentationForm.key) as string[]
412
+ const type = getReusePresentationForm(presentationForms) || resourceType
413
+ const kind = getResourceType(type)
414
+ const reuseType = getReuseType(type)
407
415
  return {
408
416
  ...output,
409
417
  kind,
@@ -451,6 +459,32 @@ export class Gn4FieldMapper {
451
459
  }),
452
460
  }
453
461
  },
462
+ resourceIdentifier: (output, source) => {
463
+ const identifiers = getAsArray(selectField(source, 'resourceIdentifier'))
464
+
465
+ if (!identifiers.length) return output
466
+
467
+ const mappedIdentifiers = identifiers
468
+ .map((id) => {
469
+ const code = selectField<string>(id, 'code')
470
+ const codeSpace = selectField<string>(id, 'codeSpace')
471
+ const link = selectField<string>(id, 'link')
472
+
473
+ return {
474
+ code,
475
+ ...(codeSpace && { codeSpace }),
476
+ ...(link && { url: link }),
477
+ }
478
+ })
479
+ .filter((id) => id !== null)
480
+
481
+ if (!mappedIdentifiers.length) return output
482
+
483
+ return {
484
+ ...output,
485
+ resourceIdentifiers: mappedIdentifiers,
486
+ }
487
+ },
454
488
  }
455
489
 
456
490
  private genericField = (output) => output
@@ -512,6 +546,8 @@ export class Gn4FieldMapper {
512
546
  /^OGC:WMTS/.test(protocol) ||
513
547
  /TMS/i.test(protocol) ||
514
548
  /ogc\W*api\W*features/i.test(protocol) ||
549
+ /^DB:POSTGIS/i.test(protocol) ||
550
+ /stac\W*items/i.test(protocol) ||
515
551
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
516
552
  ) {
517
553
  return 'service'
@@ -92,7 +92,7 @@ export class Iso19139Converter extends BaseConverter<string> {
92
92
  recordUpdated: readRecordUpdated,
93
93
  recordCreated: () => undefined, // not supported in ISO19139
94
94
  recordPublished: () => undefined, // not supported in ISO19139
95
- resourceIdentifier: readResourceIdentifier,
95
+ resourceIdentifiers: readResourceIdentifier,
96
96
  resourceUpdated: readResourceUpdated,
97
97
  resourceCreated: readResourceCreated,
98
98
  resourcePublished: readResourcePublished,
@@ -133,7 +133,7 @@ export class Iso19139Converter extends BaseConverter<string> {
133
133
  recordUpdated: writeRecordUpdated,
134
134
  recordCreated: () => undefined, // not supported in ISO19139
135
135
  recordPublished: () => undefined, // not supported in ISO19139
136
- resourceIdentifier: writeResourceIdentifier,
136
+ resourceIdentifiers: writeResourceIdentifier,
137
137
  resourceUpdated: writeResourceUpdated,
138
138
  resourceCreated: writeResourceCreated,
139
139
  resourcePublished: writeResourcePublished,
@@ -240,12 +240,19 @@ export class Iso19139Converter extends BaseConverter<string> {
240
240
  const onlineResources = this.readers['onlineResources'](rootEl, tr)
241
241
  const otherLanguages = this.readers['otherLanguages'](rootEl, tr)
242
242
  const defaultLanguage = this.readers['defaultLanguage'](rootEl, tr)
243
- const resourceIdentifier = this.readers['resourceIdentifier'](rootEl, tr)
243
+ const resourceIdentifiers = this.readers['resourceIdentifiers'](
244
+ rootEl,
245
+ tr
246
+ ) as Array<{
247
+ code: string
248
+ codeSpace?: string
249
+ url?: string
250
+ }>
244
251
  const spatialExtents = this.readers['spatialExtents'](rootEl, tr)
245
252
 
246
253
  return {
247
254
  uniqueIdentifier,
248
- ...(resourceIdentifier && { resourceIdentifier }),
255
+ ...(resourceIdentifiers?.length > 0 && { resourceIdentifiers }),
249
256
  kind,
250
257
  otherLanguages,
251
258
  defaultLanguage,
@@ -388,8 +395,8 @@ export class Iso19139Converter extends BaseConverter<string> {
388
395
  this.writers['otherConstraints'](record, rootEl)
389
396
  fieldChanged('onlineResources') &&
390
397
  this.writers['onlineResources'](record, rootEl)
391
- fieldChanged('resourceIdentifier') &&
392
- this.writers['resourceIdentifier'](record, rootEl)
398
+ fieldChanged('resourceIdentifiers') &&
399
+ this.writers['resourceIdentifiers'](record, rootEl)
393
400
 
394
401
  if (record.kind === 'dataset') {
395
402
  fieldChanged('status') && this.writers['status'](record, rootEl)
@@ -1183,8 +1183,10 @@ export function readDefaultLanguage(rootEl: XmlElement): LanguageCode {
1183
1183
  )(rootEl)
1184
1184
  }
1185
1185
 
1186
- export function readResourceIdentifier(rootEl: XmlElement): string {
1187
- return pipe(
1186
+ export function readResourceIdentifier(
1187
+ rootEl: XmlElement
1188
+ ): Array<{ code: string; codeSpace?: string; url?: string }> {
1189
+ const code = pipe(
1188
1190
  findIdentification(),
1189
1191
  findNestedElement(
1190
1192
  'gmd:citation',
@@ -1195,4 +1197,6 @@ export function readResourceIdentifier(rootEl: XmlElement): string {
1195
1197
  ),
1196
1198
  extractCharacterString()
1197
1199
  )(rootEl)
1200
+
1201
+ return code ? [{ code }] : []
1198
1202
  }
@@ -1502,14 +1502,16 @@ export function writeResourceIdentifier(
1502
1502
  record: DatasetRecord,
1503
1503
  rootEl: XmlElement
1504
1504
  ) {
1505
+ const firstIdentifier = record.resourceIdentifiers?.[0]?.code
1506
+
1505
1507
  pipe(
1506
1508
  findOrCreateIdentification(),
1507
1509
  findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'),
1508
1510
  removeChildrenByName('gmd:identifier'),
1509
- record.resourceIdentifier
1511
+ firstIdentifier
1510
1512
  ? pipe(
1511
1513
  createNestedChild('gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'),
1512
- writeCharacterString(record.resourceIdentifier)
1514
+ writeCharacterString(firstIdentifier)
1513
1515
  )
1514
1516
  : noop
1515
1517
  )(rootEl)
@@ -33,7 +33,10 @@ export class AuthService {
33
33
  return baseUrl
34
34
  .replace(
35
35
  '${current_url}',
36
- new URL(this.location.path(), window.location.href).toString()
36
+ new URL(
37
+ this.location.prepareExternalUrl(this.location.path()),
38
+ window.location.href
39
+ ).toString()
37
40
  )
38
41
  .replace('${lang2}', toLang2(this.translateService.currentLang))
39
42
  .replace('${lang3}', toLang3(this.translateService.currentLang))
@@ -7,7 +7,6 @@ export const ES_SOURCE_SUMMARY = [
7
7
  'resourceAbstractObject',
8
8
  'overview',
9
9
  'logo',
10
- 'codelist_status_text',
11
10
  'link',
12
11
  'linkProtocol',
13
12
  'contactForResource*.organisation*',
@@ -16,6 +15,7 @@ export const ES_SOURCE_SUMMARY = [
16
15
  'userSavedCount',
17
16
  'cl_topic',
18
17
  'cl_maintenanceAndUpdateFrequency',
18
+ 'cl_presentationForm',
19
19
  'MD_LegalConstraints*Object',
20
20
  'qualityScore',
21
21
  'allKeywords',
@@ -43,18 +43,26 @@ export class Gn4PlatformMapper {
43
43
  userFromApi(apiUser: UserApiModel): UserModel {
44
44
  if (!apiUser) return null
45
45
  const {
46
- enabled,
46
+ addresses,
47
47
  emailAddresses,
48
- organization,
48
+ enabled,
49
+ id,
49
50
  kind,
50
51
  lastLoginDate,
52
+ security,
53
+ primaryAddress,
54
+ authorities,
51
55
  accountNonExpired,
52
56
  accountNonLocked,
53
- id,
54
57
  credentialsNonExpired,
55
58
  ...user
56
59
  } = apiUser
57
- return { ...apiUser, id: id.toString() } as UserModel
60
+
61
+ return {
62
+ ...user,
63
+ id: id.toString(),
64
+ email: emailAddresses ? emailAddresses[0] || '' : '',
65
+ } as UserModel
58
66
  }
59
67
 
60
68
  keywordsFromApi(
@@ -1,12 +1,21 @@
1
+ import { HttpClient, HttpEventType } from '@angular/common/http'
1
2
  import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'
2
3
  import {
3
- catchError,
4
- filter,
5
- map,
6
- mergeMap,
7
- shareReplay,
8
- tap,
9
- } from 'rxjs/operators'
4
+ KeywordApiResponse,
5
+ ThesaurusApiResponse,
6
+ } from '../../../../../../../libs/api/metadata-converter/src'
7
+ import {
8
+ CatalogRecord,
9
+ Keyword,
10
+ Organization,
11
+ UserFeedback,
12
+ } from '../../../../../../../libs/common/domain/src/lib/model/record'
13
+ import { KeywordType } from '../../../../../../../libs/common/domain/src/lib/model/thesaurus'
14
+ import { UserModel } from '../../../../../../../libs/common/domain/src/lib/model/user/user.model'
15
+ import {
16
+ PlatformServiceInterface,
17
+ UploadEvent,
18
+ } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
10
19
  import {
11
20
  MeApiService,
12
21
  RecordsApiService,
@@ -15,26 +24,9 @@ import {
15
24
  UserfeedbackApiService,
16
25
  UsersApiService,
17
26
  } from '../../../../../../../libs/data-access/gn4/src'
18
- import {
19
- PlatformServiceInterface,
20
- UploadEvent,
21
- } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
22
- import { UserModel } from '../../../../../../../libs/common/domain/src/lib/model/user/user.model'
23
- import {
24
- CatalogRecord,
25
- Keyword,
26
- Organization,
27
- UserFeedback,
28
- } from '../../../../../../../libs/common/domain/src/lib/model/record'
29
- import { Gn4PlatformMapper } from './gn4-platform.mapper'
30
- import { ltr } from 'semver'
31
- import { HttpClient, HttpEventType } from '@angular/common/http'
32
- import {
33
- KeywordApiResponse,
34
- ThesaurusApiResponse,
35
- } from '../../../../../../../libs/api/metadata-converter/src'
36
- import { KeywordType } from '../../../../../../../libs/common/domain/src/lib/model/thesaurus'
27
+ import { toLang3 } from '../../../../../../../libs/util/i18n/src'
37
28
  import { noDuplicateFileName } from '../../../../../../../libs/util/shared/src'
29
+ import { TranslateService } from '@ngx-translate/core'
38
30
  import {
39
31
  combineLatest,
40
32
  forkJoin,
@@ -43,9 +35,17 @@ import {
43
35
  switchMap,
44
36
  throwError,
45
37
  } from 'rxjs'
46
- import { TranslateService } from '@ngx-translate/core'
47
- import { toLang3 } from '../../../../../../../libs/util/i18n/src'
38
+ import {
39
+ catchError,
40
+ filter,
41
+ map,
42
+ mergeMap,
43
+ shareReplay,
44
+ tap,
45
+ } from 'rxjs/operators'
46
+ import { ltr } from 'semver'
48
47
  import { Gn4SettingsService } from '../settings/gn4-settings.service'
48
+ import { Gn4PlatformMapper } from './gn4-platform.mapper'
49
49
 
50
50
  const minApiVersion = '4.2.2'
51
51
 
@@ -56,7 +56,6 @@ export const DISABLE_AUTH = new InjectionToken<boolean>('gnDisableAuth', {
56
56
  @Injectable()
57
57
  export class Gn4PlatformService implements PlatformServiceInterface {
58
58
  private readonly type = 'GeoNetwork'
59
- private readonly me$: Observable<UserModel>
60
59
  private readonly users$: Observable<UserModel[]>
61
60
  private readonly isUserAnonymous$: Observable<boolean>
62
61
  private readonly gnParseVersion = '4.2.5'
@@ -70,6 +69,15 @@ export class Gn4PlatformService implements PlatformServiceInterface {
70
69
  }),
71
70
  shareReplay(1)
72
71
  )
72
+
73
+ private me$ = this.disableAuth
74
+ ? of(null)
75
+ : of(true).pipe(
76
+ switchMap(() => this.meApi.getMe()),
77
+ switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)),
78
+ shareReplay({ bufferSize: 1, refCount: true })
79
+ )
80
+
73
81
  /**
74
82
  * A map of already loaded thesauri (groups of keywords); the key is a URI
75
83
  * @private
@@ -93,13 +101,6 @@ export class Gn4PlatformService implements PlatformServiceInterface {
93
101
  private settingsService: Gn4SettingsService,
94
102
  @Inject(DISABLE_AUTH) @Optional() private disableAuth: boolean
95
103
  ) {
96
- this.me$ = this.disableAuth
97
- ? of(null)
98
- : this.meApi.getMe().pipe(
99
- switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)),
100
- shareReplay({ bufferSize: 1, refCount: true })
101
- )
102
-
103
104
  this.isUserAnonymous$ = this.me$.pipe(
104
105
  map((user) => !user || !('id' in user))
105
106
  )