geonetwork-ui 2.2.0-dev.f866474c → 2.3.0-dev.179fba83

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 (596) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  2. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +29 -2
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +102 -61
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +242 -0
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +102 -74
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +116 -79
  22. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
  23. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
  24. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  25. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  26. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  27. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  28. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  29. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  30. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  31. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  32. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  33. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  34. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  35. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  36. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  37. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  38. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  39. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  40. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  41. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +6 -5
  42. package/esm2022/libs/feature/editor/src/index.mjs +6 -1
  43. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +8 -0
  44. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +26 -0
  45. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +30 -0
  46. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +2 -0
  47. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +42 -0
  48. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +13 -0
  49. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +13 -0
  50. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +16 -4
  51. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +34 -0
  52. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +2 -0
  53. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +17 -11
  54. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +24 -46
  55. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  56. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +7 -3
  57. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
  59. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  60. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  61. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  62. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +29 -5
  63. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  64. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  65. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -5
  66. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
  67. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +61 -24
  68. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  69. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +63 -69
  70. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -13
  71. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +34 -21
  72. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  73. package/esm2022/libs/feature/router/src/lib/default/index.mjs +2 -1
  74. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +1 -1
  75. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  76. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +7 -4
  77. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  78. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  79. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  80. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  81. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  82. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +3 -3
  83. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  84. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  85. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  86. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  87. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  88. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  89. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  90. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  91. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  92. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  93. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
  94. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +5 -3
  95. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  96. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +47 -16
  97. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
  98. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  99. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  100. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +9 -4
  101. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +20 -7
  102. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  103. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  104. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +10 -9
  105. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  106. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  107. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  108. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  109. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  110. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +4 -2
  111. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +1 -1
  112. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  113. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  114. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  115. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  116. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +19 -8
  117. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  118. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  119. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  120. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  121. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  122. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  123. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  124. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  125. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  126. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  127. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  128. package/esm2022/libs/ui/widgets/src/lib/badge/badge.component.mjs +3 -3
  129. package/esm2022/libs/util/i18n/src/index.mjs +1 -2
  130. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
  131. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  132. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  133. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  134. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -5
  135. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
  136. package/esm2022/translations/de.json +143 -109
  137. package/esm2022/translations/en.json +75 -41
  138. package/esm2022/translations/es.json +53 -19
  139. package/esm2022/translations/fr.json +69 -35
  140. package/esm2022/translations/it.json +70 -36
  141. package/esm2022/translations/nl.json +54 -20
  142. package/esm2022/translations/pt.json +53 -19
  143. package/fesm2022/geonetwork-ui.mjs +5799 -3893
  144. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  145. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  146. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  147. package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
  148. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
  149. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
  150. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
  151. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +3 -0
  152. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  153. package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
  154. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
  155. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  156. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  157. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +4 -0
  158. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
  159. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
  160. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  161. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
  162. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
  163. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
  164. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
  165. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
  166. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
  167. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
  168. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
  169. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
  170. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
  171. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
  172. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
  173. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +39 -10
  174. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  175. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
  176. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
  177. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts +3 -0
  178. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
  179. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
  180. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
  181. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
  182. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +43 -6
  183. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  184. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
  185. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  186. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  187. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  188. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  189. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  190. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  191. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  192. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  193. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  194. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  195. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  196. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  197. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  198. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +36 -20
  199. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  200. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  201. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  202. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  203. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  204. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  205. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  206. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  207. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  208. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  209. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  210. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  211. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  212. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  213. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  214. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  215. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  216. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  217. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  218. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  219. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  220. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  221. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  222. package/libs/feature/editor/src/index.d.ts +5 -0
  223. package/libs/feature/editor/src/index.d.ts.map +1 -1
  224. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +23 -0
  225. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -0
  226. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +15 -0
  227. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -0
  228. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +19 -0
  229. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -0
  230. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +2 -0
  231. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -0
  232. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +18 -0
  233. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -0
  234. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +15 -0
  235. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -0
  236. package/libs/feature/editor/src/lib/expressions.d.ts +4 -0
  237. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -0
  238. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -1
  239. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  240. package/libs/feature/editor/src/lib/fields.config.d.ts +3 -0
  241. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -0
  242. package/libs/feature/editor/src/lib/models/fields.model.d.ts +15 -0
  243. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +1 -0
  244. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts +10 -5
  245. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  246. package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -13
  247. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  248. package/libs/feature/map/src/index.d.ts +1 -0
  249. package/libs/feature/map/src/index.d.ts.map +1 -1
  250. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  251. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  252. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  253. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
  254. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
  255. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  256. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  257. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  258. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  259. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  260. package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
  261. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  262. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  263. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  264. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  265. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  266. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
  267. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  268. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
  269. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  270. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -0
  271. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  272. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  273. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  274. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -12
  275. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  276. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  277. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  278. package/libs/feature/router/src/lib/default/index.d.ts +1 -0
  279. package/libs/feature/router/src/lib/default/index.d.ts.map +1 -1
  280. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -1
  281. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  282. package/libs/feature/search/src/index.d.ts +3 -0
  283. package/libs/feature/search/src/index.d.ts.map +1 -1
  284. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +5 -4
  285. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  286. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  287. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  288. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  289. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  290. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  291. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  292. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  293. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  294. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  295. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  296. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  297. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  298. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  299. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  300. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  301. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  302. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  303. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  304. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  305. package/libs/ui/elements/src/index.d.ts +3 -0
  306. package/libs/ui/elements/src/index.d.ts.map +1 -1
  307. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  308. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  309. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  310. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
  311. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
  312. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
  313. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -5
  314. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  315. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  316. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  317. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  318. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  319. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  320. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +10 -8
  321. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  322. package/libs/ui/inputs/src/index.d.ts +1 -0
  323. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  324. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  325. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  326. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  327. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  328. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  329. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  330. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +1 -1
  331. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts +0 -1
  332. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +1 -1
  333. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  334. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  335. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  336. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  337. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +41 -39
  338. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  339. package/libs/ui/layout/src/index.d.ts +2 -0
  340. package/libs/ui/layout/src/index.d.ts.map +1 -1
  341. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  342. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  343. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  344. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  345. package/libs/ui/search/src/index.d.ts +0 -1
  346. package/libs/ui/search/src/index.d.ts.map +1 -1
  347. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  348. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  349. package/libs/util/i18n/src/index.d.ts +0 -1
  350. package/libs/util/i18n/src/index.d.ts.map +1 -1
  351. package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
  352. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  353. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  354. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  355. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  356. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  357. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  358. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  359. package/libs/util/shared/src/lib/utils/index.d.ts +7 -4
  360. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  361. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
  362. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
  363. package/package.json +5 -2
  364. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  365. package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
  366. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
  367. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +94 -12
  368. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +67 -12
  369. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +260 -29
  370. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
  371. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +33 -1
  372. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +9 -5
  373. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +148 -76
  374. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
  375. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
  376. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
  377. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
  378. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
  379. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
  380. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
  381. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +327 -0
  382. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +230 -134
  383. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
  384. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.ts +16 -0
  385. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +338 -178
  386. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
  387. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
  388. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  389. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  390. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  391. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  392. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  393. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  394. package/src/libs/common/domain/src/lib/index.ts +2 -0
  395. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +45 -24
  396. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  397. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  398. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  399. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  400. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  401. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  402. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  403. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  404. package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
  405. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  406. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
  407. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  408. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  409. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  410. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  411. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +9 -6
  412. package/src/libs/feature/editor/src/index.ts +5 -0
  413. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +24 -0
  414. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +49 -0
  415. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +30 -0
  416. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +1 -0
  417. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +68 -0
  418. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +39 -0
  419. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.css +0 -0
  420. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  421. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  422. package/src/libs/feature/editor/src/lib/expressions.ts +16 -0
  423. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +11 -0
  424. package/src/libs/feature/editor/src/lib/fields.config.ts +35 -0
  425. package/src/libs/feature/editor/src/lib/models/fields.model.ts +29 -0
  426. package/src/libs/feature/editor/src/lib/record-form/record-form.component.html +9 -7
  427. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +13 -6
  428. package/src/libs/feature/editor/src/lib/services/editor.service.ts +39 -67
  429. package/src/libs/feature/map/src/index.ts +1 -0
  430. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  431. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  432. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  433. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  434. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
  435. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
  436. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
  437. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  438. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  439. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  440. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  441. package/src/libs/feature/map/src/lib/feature-map.module.ts +14 -0
  442. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  443. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  444. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  445. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  446. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +14 -2
  447. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
  448. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
  449. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +72 -28
  450. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  451. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +87 -96
  452. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +12 -12
  453. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +23 -4
  454. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  455. package/src/libs/feature/router/src/lib/default/index.ts +1 -0
  456. package/src/libs/feature/router/src/lib/default/router.service.ts +1 -1
  457. package/src/libs/feature/search/src/index.ts +3 -0
  458. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +13 -4
  459. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  460. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  461. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  462. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  463. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  464. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  465. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  466. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  467. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  468. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  469. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  470. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  471. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  472. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  473. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  474. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  475. package/src/libs/ui/elements/src/index.ts +3 -0
  476. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  477. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  478. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  479. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  480. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  481. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  482. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  483. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
  484. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
  485. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +17 -0
  486. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.html +5 -1
  487. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
  488. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +3 -3
  489. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  490. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +212 -68
  491. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -10
  492. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
  493. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  494. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  495. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  496. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
  497. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +9 -3
  498. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +8 -1
  499. package/src/libs/ui/inputs/src/index.ts +1 -0
  500. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  501. package/src/libs/ui/inputs/src/lib/button/button.component.css +0 -5
  502. package/src/libs/ui/inputs/src/lib/button/button.component.html +0 -1
  503. package/src/libs/ui/inputs/src/lib/button/button.component.ts +8 -7
  504. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  505. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +2 -2
  506. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
  507. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  508. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  509. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +3 -1
  510. package/src/libs/ui/inputs/src/lib/form-field/form-field.model.ts +0 -1
  511. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  512. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  513. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  514. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
  515. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  516. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  517. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  518. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +8 -2
  519. package/src/libs/ui/layout/src/index.ts +2 -0
  520. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  521. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
  522. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  523. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  524. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  525. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  526. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  527. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  528. package/src/libs/ui/search/src/index.ts +0 -1
  529. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  530. package/src/libs/ui/widgets/src/lib/badge/badge.component.html +3 -1
  531. package/src/libs/util/i18n/src/index.ts +0 -1
  532. package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
  533. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  534. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  535. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  536. package/src/libs/util/shared/src/lib/utils/index.ts +7 -4
  537. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
  538. package/tailwind.base.css +44 -15
  539. package/translations/de.json +143 -109
  540. package/translations/en.json +75 -41
  541. package/translations/es.json +53 -19
  542. package/translations/fr.json +69 -35
  543. package/translations/it.json +70 -36
  544. package/translations/nl.json +54 -20
  545. package/translations/pt.json +53 -19
  546. package/translations/sk.json +131 -97
  547. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -48
  548. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
  549. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
  550. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
  551. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -122
  552. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
  553. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  554. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  555. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  556. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  557. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  558. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  559. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  560. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
  561. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
  562. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
  563. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
  564. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
  565. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
  566. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
  567. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  568. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  569. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  570. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  571. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  572. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  573. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  574. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  575. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  576. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  577. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  578. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  579. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  580. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -187
  581. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  582. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  583. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  584. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  585. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  586. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  587. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  588. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
  589. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
  590. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
  591. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
  592. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  593. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
  594. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
  595. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
  596. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -33,6 +33,7 @@ export function createDocument(rootEl: XmlElement): XmlDocument {
33
33
  function collectNamespaceFromName(name: string) {
34
34
  const namespace = extractNamespace(name)
35
35
  if (namespace === 'xmlns' || namespace === null) return
36
+ if (rootEl.attributes[`xmlns:${namespace}`]) return
36
37
  if (!NAMESPACES[namespace]) {
37
38
  throw new Error(`No known URI for namespace ${namespace}`)
38
39
  }
@@ -55,11 +56,16 @@ export function createDocument(rootEl: XmlElement): XmlDocument {
55
56
  /**
56
57
  * Will do nothing if no namespace present
57
58
  */
58
- function stripNamespace(name: string): string {
59
+ export function stripNamespace(name: string): string {
59
60
  const colon = name.indexOf(':')
60
61
  return colon > -1 ? name.substring(colon + 1) : name
61
62
  }
62
63
 
64
+ export function getNamespace(name: string): string {
65
+ const colon = name.indexOf(':')
66
+ return colon > -1 ? name.substring(0, colon) : ''
67
+ }
68
+
63
69
  function getElementName(element: XmlElement): string {
64
70
  return element.name || ''
65
71
  }
@@ -115,7 +121,7 @@ export function allChildrenElement(element: XmlElement): Array<XmlElement> {
115
121
  * returns an empty array if no matching element
116
122
  */
117
123
  export function findNestedElements(
118
- ...elementNames
124
+ ...elementNames: string[]
119
125
  ): ChainableFunction<XmlElement, Array<XmlElement>> {
120
126
  return (el) => {
121
127
  function lookFor(elNameIndex: number) {
@@ -248,6 +254,29 @@ const NAMESPACES = {
248
254
  gsr: 'http://www.isotc211.org/2005/gsr',
249
255
  gmi: 'http://www.isotc211.org/2005/gmi',
250
256
  xlink: 'http://www.w3.org/1999/xlink',
257
+ mdb: 'http://standards.iso.org/iso/19115/-3/mdb/2.0',
258
+ mdq: 'http://standards.iso.org/iso/19157/-2/mdq/1.0',
259
+ msr: 'http://standards.iso.org/iso/19115/-3/msr/2.0',
260
+ mrs: 'http://standards.iso.org/iso/19115/-3/mrs/1.0',
261
+ mmi: 'http://standards.iso.org/iso/19115/-3/mmi/1.0',
262
+ mrl: 'http://standards.iso.org/iso/19115/-3/mrl/2.0',
263
+ mdt: 'http://standards.iso.org/iso/19115/-3/mdt/2.0',
264
+ mrd: 'http://standards.iso.org/iso/19115/-3/mrd/1.0',
265
+ mds: 'http://standards.iso.org/iso/19115/-3/mds/2.0',
266
+ mpc: 'http://standards.iso.org/iso/19115/-3/mpc/1.0',
267
+ mcc: 'http://standards.iso.org/iso/19115/-3/mcc/1.0',
268
+ mac: 'http://standards.iso.org/iso/19115/-3/mac/2.0',
269
+ mco: 'http://standards.iso.org/iso/19115/-3/mco/1.0',
270
+ mda: 'http://standards.iso.org/iso/19115/-3/mda/1.0',
271
+ mex: 'http://standards.iso.org/iso/19115/-3/mex/1.0',
272
+ gex: 'http://standards.iso.org/iso/19115/-3/gex/1.0',
273
+ gcx: 'http://standards.iso.org/iso/19115/-3/gcx/1.0',
274
+ mas: 'http://standards.iso.org/iso/19115/-3/mas/1.0',
275
+ mri: 'http://standards.iso.org/iso/19115/-3/mri/1.0',
276
+ cit: 'http://standards.iso.org/iso/19115/-3/cit/2.0',
277
+ cat: 'http://standards.iso.org/iso/19115/-3/cat/1.0',
278
+ lan: 'http://standards.iso.org/iso/19115/-3/lan/1.0',
279
+ mrc: 'http://standards.iso.org/iso/19115/-3/mrc/2.0',
251
280
  }
252
281
 
253
282
  /**
@@ -268,6 +297,13 @@ export function addAttribute(
268
297
  return element
269
298
  }
270
299
  }
300
+ function getTreeRoot(element: XmlElement): XmlElement {
301
+ let root = element
302
+ while (root.parent instanceof XmlElement) {
303
+ root = root.parent
304
+ }
305
+ return root
306
+ }
271
307
 
272
308
  // stays on the parent element
273
309
  // if the given elements are part of a subtree, will add the root of subtree
@@ -276,22 +312,26 @@ export function appendChildren(
276
312
  ): ChainableFunction<XmlElement, XmlElement> {
277
313
  return (element) => {
278
314
  if (!element) return null
279
- element.children.push(
280
- ...childrenFns
281
- .map((fn) => fn())
282
- .map((el) => {
283
- let root = el
284
- while (root.parent instanceof XmlElement) {
285
- root = root.parent
286
- }
287
- return root
288
- })
289
- )
315
+ element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot))
290
316
  element.children.forEach((el) => (el.parent = element))
291
317
  return element
292
318
  }
293
319
  }
294
320
 
321
+ // switch to the tip of the subtree
322
+ export function appendChildTree(
323
+ childrenFn: ChainableFunction<void, XmlElement>
324
+ ): ChainableFunction<XmlElement, XmlElement> {
325
+ return (element) => {
326
+ if (!element) return null
327
+ const treeTip = childrenFn()
328
+ const treeRoot = getTreeRoot(treeTip)
329
+ element.children.push(treeRoot)
330
+ treeRoot.parent = element
331
+ return treeTip
332
+ }
333
+ }
334
+
295
335
  // switches to the child element
296
336
  export function createChild(
297
337
  childName: string
@@ -349,6 +389,7 @@ export function removeAllChildren(): ChainableFunction<XmlElement, XmlElement> {
349
389
  }
350
390
  }
351
391
 
392
+ // stays on the same element
352
393
  export function removeChildrenByName(
353
394
  name: string
354
395
  ): ChainableFunction<XmlElement, XmlElement> {
@@ -372,11 +413,38 @@ export function removeChildren(
372
413
  childrenFn: ChainableFunction<XmlElement, Array<XmlElement>>
373
414
  ): ChainableFunction<XmlElement, XmlElement> {
374
415
  return (element) => {
375
- const children = childrenFn(element)
376
- children.forEach((child) => (child.parent = null))
416
+ const childrenToRemove = childrenFn(element)
417
+ childrenToRemove.forEach((child) => (child.parent = null))
377
418
  element.children = element.children.filter(
378
- (child) => child instanceof XmlElement && children.indexOf(child) === -1
419
+ (child) =>
420
+ child instanceof XmlElement && childrenToRemove.indexOf(child) === -1
379
421
  )
380
422
  return element
381
423
  }
382
424
  }
425
+
426
+ /**
427
+ * Renames elements in the XML tree according to the map
428
+ * Either specify a full element name like 'gmd:MD_Metadata' or simply a namespace like 'gmd'
429
+ * @param rootElement
430
+ * @param replaceMap
431
+ */
432
+ export function renameElements(
433
+ rootElement: XmlElement,
434
+ replaceMap: Record<string, string>
435
+ ) {
436
+ function doReplace(element: XmlElement) {
437
+ if (element.name in replaceMap) {
438
+ element.name = replaceMap[element.name]
439
+ } else if (element.name && getNamespace(element.name) in replaceMap) {
440
+ element.name = `${
441
+ replaceMap[getNamespace(element.name)]
442
+ }:${stripNamespace(element.name)}`
443
+ }
444
+ if (element.children) {
445
+ element.children.forEach(doReplace)
446
+ }
447
+ }
448
+ doReplace(rootElement)
449
+ return rootElement
450
+ }
@@ -133,7 +133,7 @@ export class ElasticsearchService {
133
133
  title: string,
134
134
  uuid: string,
135
135
  size = 6,
136
- _source = ES_SOURCE_SUMMARY
136
+ _source = [...ES_SOURCE_SUMMARY, 'allKeywords', 'createDate']
137
137
  ): EsSearchParams {
138
138
  return {
139
139
  query: {
@@ -14,7 +14,7 @@ import {
14
14
  } from '../../../../../../libs/common/domain/src/lib/model/search'
15
15
  import { map } from 'rxjs/operators'
16
16
  import {
17
- Gn4MetadataMapper,
17
+ Gn4Converter,
18
18
  Gn4SearchResults,
19
19
  } from '../../../../../../libs/api/metadata-converter/src'
20
20
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
@@ -24,7 +24,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
24
24
  constructor(
25
25
  private gn4SearchApi: SearchApiService,
26
26
  private gn4SearchHelper: ElasticsearchService,
27
- private gn4Mapper: Gn4MetadataMapper
27
+ private gn4Mapper: Gn4Converter
28
28
  ) {}
29
29
 
30
30
  search({
@@ -6,3 +6,5 @@ export * from './auth'
6
6
  export * from './favorites/favorites.service'
7
7
  export * from './selection/selection.service'
8
8
  export * from './gn4.provider'
9
+ export * from './platform/gn4-platform.service'
10
+ export * from './platform/gn4-platform.mapper'
@@ -25,7 +25,14 @@ import {
25
25
  SourceWithUnknownProps,
26
26
  } from '../../../../../../../libs/api/metadata-converter/src'
27
27
  import { combineLatest, Observable, of, switchMap, takeLast } from 'rxjs'
28
- import { filter, map, shareReplay, startWith, tap } from 'rxjs/operators'
28
+ import {
29
+ filter,
30
+ map,
31
+ shareReplay,
32
+ startWith,
33
+ tap,
34
+ withLatestFrom,
35
+ } from 'rxjs/operators'
29
36
  import { LangService } from '../../../../../../../libs/util/i18n/src'
30
37
  import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
31
38
  import { coerce, satisfies, valid } from 'semver'
@@ -296,15 +303,28 @@ export class OrganizationsFromMetadataService
296
303
 
297
304
  const ownerOrganization = allContactOrgs[0]
298
305
 
306
+ // read the owner group as well to have a fallback logo
307
+ const groupId = selectField(source, 'groupOwner')
308
+ const group$ = this.groups$.pipe(
309
+ map((groups) =>
310
+ groups.find((group) => {
311
+ return group.id === Number(groupId)
312
+ })
313
+ )
314
+ )
315
+
299
316
  return this.organisations$.pipe(
300
317
  takeLast(1),
301
- map((organisations: IncompleteOrganization[]) => {
318
+ withLatestFrom(group$),
319
+ map(([organisations, group]: [Organization[], GroupApiModel]) => {
302
320
  const recordOrganisation = organisations.filter(
303
321
  (org) => org.name === ownerOrganization.name
304
322
  )[0]
323
+ const logoUrl = group?.logo && getAsUrl(`${IMAGE_URL}${group.logo}`)
305
324
  return {
306
325
  ...record,
307
326
  ownerOrganization: {
327
+ logoUrl,
308
328
  ...ownerOrganization,
309
329
  ...recordOrganisation,
310
330
  },
@@ -45,12 +45,23 @@ export class Gn4PlatformMapper {
45
45
  return { ...apiUser, id: id.toString() } as UserModel
46
46
  }
47
47
 
48
- thesaurusFromApi(thesaurus: any[]): ThesaurusModel {
48
+ thesaurusFromApi(thesaurus: any[], lang3?: string): ThesaurusModel {
49
49
  return thesaurus.map((keyword) => {
50
- const { uri, value } = keyword
50
+ let key = keyword.uri
51
+ // sometines GN can prefix an URI with an "all thesaurus" URI; only keep the last one
52
+ if (key.indexOf('@@@') > -1) {
53
+ key = key.split('@@@')[1]
54
+ }
55
+ const label =
56
+ lang3 && lang3 in keyword.values ? keyword.values[lang3] : keyword.value
57
+ const description =
58
+ lang3 && lang3 in keyword.definitions
59
+ ? keyword.definitions[lang3]
60
+ : keyword.definition
51
61
  return {
52
- key: uri,
53
- label: value,
62
+ key,
63
+ label,
64
+ description,
54
65
  }
55
66
  })
56
67
  }
@@ -14,8 +14,10 @@ import { Organization } from '../../../../../../../libs/common/domain/src/lib/mo
14
14
  import { Gn4PlatformMapper } from './gn4-platform.mapper'
15
15
  import { ltr } from 'semver'
16
16
  import { ThesaurusModel } from '../../../../../../../libs/common/domain/src/lib/model/thesaurus/thesaurus.model'
17
+ import { LangService } from '../../../../../../../libs/util/i18n/src'
17
18
 
18
19
  const minApiVersion = '4.2.2'
20
+
19
21
  @Injectable()
20
22
  export class Gn4PlatformService implements PlatformServiceInterface {
21
23
  private readonly type = 'GeoNetwork'
@@ -50,13 +52,20 @@ export class Gn4PlatformService implements PlatformServiceInterface {
50
52
  shareReplay(1)
51
53
  )
52
54
 
55
+ /**
56
+ * A map of already loaded thesauri (groups of keywords); the key is a URI
57
+ * @private
58
+ */
59
+ private thesauri: Record<string, Observable<ThesaurusModel>> = {}
60
+
53
61
  constructor(
54
62
  private siteApiService: SiteApiService,
55
63
  private meApi: MeApiService,
56
64
  private usersApi: UsersApiService,
57
65
  private mapper: Gn4PlatformMapper,
58
66
  private toolsApiService: ToolsApiService,
59
- private registriesApiService: RegistriesApiService
67
+ private registriesApiService: RegistriesApiService,
68
+ private langService: LangService
60
69
  ) {
61
70
  this.me$ = this.meApi.getMe().pipe(
62
71
  switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)),
@@ -98,17 +107,47 @@ export class Gn4PlatformService implements PlatformServiceInterface {
98
107
  }
99
108
 
100
109
  translateKey(key: string): Observable<string> {
110
+ // if the key is a URI, use the registries API to look for the translation
111
+ if (key.match(/^https?:\/\//)) {
112
+ // the thesaurus URI is inferred by removing a part of the keyword URI
113
+ // this is not exact science but it's OK, we'll still end up loading a bunch of keywords at once anyway
114
+ const thesaurusUri = key.replace(/\/([^/]+)$/, '/')
115
+ return this.getThesaurusByUri(thesaurusUri).pipe(
116
+ map((thesaurus) => {
117
+ for (const item of thesaurus) {
118
+ if (item.key === key) return item.label
119
+ }
120
+ return key
121
+ })
122
+ )
123
+ }
101
124
  return this.keyTranslations$.pipe(map((translations) => translations[key]))
102
125
  }
103
126
 
104
- getThesaurusByLang(
105
- thesaurusName: string,
106
- lang: string
107
- ): Observable<ThesaurusModel> {
108
- return this.registriesApiService
109
- .searchKeywords(null, lang, 1000, 0, null, [thesaurusName])
127
+ getThesaurusByUri(uri: string): Observable<ThesaurusModel> {
128
+ if (this.thesauri[uri]) {
129
+ return this.thesauri[uri]
130
+ }
131
+ this.thesauri[uri] = this.registriesApiService
132
+ .searchKeywords(
133
+ null,
134
+ this.langService.iso3,
135
+ 1000,
136
+ 0,
137
+ null,
138
+ null,
139
+ null,
140
+ `${uri}*`
141
+ )
110
142
  .pipe(
111
- map((thesaurus) => this.mapper.thesaurusFromApi(thesaurus as any[]))
143
+ map((thesaurus) =>
144
+ this.mapper.thesaurusFromApi(
145
+ thesaurus as any[],
146
+ this.langService.iso3
147
+ )
148
+ ),
149
+ shareReplay(1)
112
150
  )
151
+ return this.thesauri[uri]
113
152
  }
114
153
  }
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@angular/core'
2
2
  import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
3
3
  import { SelectionsApiService } from '../../../../../../../libs/data-access/gn4/src'
4
- import { BehaviorSubject, Observable, Subscription, map, tap } from 'rxjs'
4
+ import { BehaviorSubject, firstValueFrom } from 'rxjs'
5
5
 
6
6
  const BUCKET_ID = 'gnui'
7
7
 
@@ -12,7 +12,6 @@ export class SelectionService {
12
12
  selectedRecordsIdentifiers$: BehaviorSubject<string[]> = new BehaviorSubject(
13
13
  []
14
14
  )
15
- subscription: Subscription
16
15
 
17
16
  constructor(private selectionsApi: SelectionsApiService) {
18
17
  this.selectionsApi.get(BUCKET_ID).subscribe((selectedIds) => {
@@ -33,48 +32,25 @@ export class SelectionService {
33
32
  this.selectedRecordsIdentifiers$.next(filtered)
34
33
  }
35
34
 
36
- selectRecords(records: CatalogRecord[]): Observable<void> {
37
- const newIds = []
38
- records.map((record) => {
39
- newIds.push(record.uniqueIdentifier)
35
+ selectRecords(records: CatalogRecord[]) {
36
+ const newIds = records.map((record) => record.uniqueIdentifier)
37
+ this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
38
+ this.addIdsToSelected(newIds)
40
39
  })
41
- const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds)
42
- return apiResponse.pipe(
43
- tap(() => {
44
- this.addIdsToSelected(newIds)
45
- }),
46
- map(() => undefined)
47
- )
48
40
  }
49
41
 
50
- deselectRecords(records: CatalogRecord[]): Observable<void> {
51
- const idsToBeRemoved = []
52
- records.map((record) => {
53
- idsToBeRemoved.push(record.uniqueIdentifier)
42
+ deselectRecords(records: CatalogRecord[]) {
43
+ const idsToBeRemoved = records.map((record) => record.uniqueIdentifier)
44
+ this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
45
+ this.removeIdsFromSelected(idsToBeRemoved)
54
46
  })
55
- const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved)
56
- return apiResponse.pipe(
57
- tap(() => {
58
- this.removeIdsFromSelected(idsToBeRemoved)
59
- }),
60
- map(() => undefined)
61
- )
62
47
  }
63
48
 
64
- clearSelection(): Observable<void> {
65
- const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID)
66
- let currentSelection
67
- this.subscription = currentSelectedResponse.subscribe((value) => {
68
- currentSelection = [...value]
49
+ async clearSelection() {
50
+ const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID))
51
+ const currentSelection = Array.from(response)
52
+ this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
53
+ this.removeIdsFromSelected(currentSelection)
69
54
  })
70
- this.selectionsApi.clear(BUCKET_ID, currentSelection)
71
- const apiResponse = this.selectionsApi.clear(BUCKET_ID, currentSelection)
72
-
73
- return apiResponse.pipe(
74
- tap(() => {
75
- this.removeIdsFromSelected(currentSelection)
76
- }),
77
- map(() => undefined)
78
- )
79
55
  }
80
56
  }
@@ -0,0 +1,2 @@
1
+ export * from './organizations.service.interface'
2
+ export * from './platform.service.interface'
@@ -1,6 +1,7 @@
1
1
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
2
- import { Individual } from './contact.model'
3
- import { Organization } from './organization.model'
2
+ import type { Individual } from './contact.model'
3
+ import type { Organization } from './organization.model'
4
+ import type { Geometry } from 'geojson'
4
5
 
5
6
  type Uuid = string
6
7
 
@@ -47,13 +48,7 @@ export const RecordStatusValues = [
47
48
  ]
48
49
  export type RecordStatus = typeof RecordStatusValues[number]
49
50
 
50
- export type AccessConstraintType = 'security' | 'privacy' | 'legal' | 'other'
51
- export interface AccessConstraint {
52
- text: string
53
- type: AccessConstraintType
54
- }
55
-
56
- export type License = {
51
+ export type Constraint = {
57
52
  text: string
58
53
  url?: URL
59
54
  }
@@ -65,6 +60,22 @@ export type SpatialRepresentationType =
65
60
  | 'table'
66
61
  | 'point'
67
62
 
63
+ export type KeywordType = 'place' | 'temporal' | 'theme' | 'other'
64
+
65
+ export type KeywordThesaurus = {
66
+ id: string
67
+ name?: string
68
+ url?: URL
69
+ }
70
+
71
+ export interface Keyword {
72
+ label: string
73
+ type: KeywordType
74
+ thesaurus?: KeywordThesaurus
75
+ }
76
+ // languages should be expressed using two-letters ISO 639-1 codes
77
+ export type LanguageCode = string
78
+
68
79
  export interface BaseRecord {
69
80
  uniqueIdentifier: Uuid
70
81
  ownerOrganization: Organization
@@ -72,20 +83,27 @@ export interface BaseRecord {
72
83
  title: string
73
84
  abstract: string
74
85
  recordCreated?: Date
86
+ recordPublished?: Date
75
87
  recordUpdated: Date
88
+ languages: Array<LanguageCode>
76
89
  kind: RecordKind
77
- themes: Array<string> // TODO: handle codelists
78
- keywords: Array<string> // TODO: handle thesaurus and id
79
- accessConstraints: Array<AccessConstraint>
80
- useLimitations: Array<string>
81
- legalConstraints?: Array<string>
82
- licenses: Array<License>
90
+ topics: Array<string> // TODO: handle codelists
91
+ keywords: Array<Keyword>
92
+ licenses: Array<Constraint>
93
+ legalConstraints: Array<Constraint>
94
+ securityConstraints: Array<Constraint>
95
+ otherConstraints: Array<Constraint>
83
96
  overviews: Array<GraphicOverview>
84
97
  extras?: Record<string, unknown>
85
98
  landingPage?: URL
86
99
  updateFrequency?: UpdateFrequency
87
100
 
88
- // to add: iso19139.topicCategory
101
+ // information related to the resource (dataset, service)
102
+ contactsForResource: Array<Individual>
103
+ resourceCreated?: Date
104
+ resourcePublished?: Date
105
+ resourceUpdated?: Date
106
+
89
107
  // to add: canonical url
90
108
  // to add: source catalog (??)
91
109
  // to add: is open data ?
@@ -122,6 +140,7 @@ export interface DatasetDownloadDistribution {
122
140
  // textEncoding?: string
123
141
  name?: string
124
142
  description?: string
143
+ accessServiceProtocol?: ServiceProtocol
125
144
  }
126
145
 
127
146
  export interface OnlineLinkResource {
@@ -145,26 +164,26 @@ export interface GraphicOverview {
145
164
  }
146
165
 
147
166
  export interface DatasetSpatialExtent {
148
- geometry: unknown // GeoJSON
167
+ geometry: Geometry
149
168
  description?: string
150
169
  }
151
170
 
171
+ /**
172
+ * At least a start or an end date should be provided
173
+ */
152
174
  export interface DatasetTemporalExtent {
153
- start: Date
154
- end: Date
175
+ start?: Date
176
+ end?: Date
155
177
  description?: string
156
178
  }
157
179
 
158
180
  export interface DatasetRecord extends BaseRecord {
159
181
  kind: 'dataset'
160
- contactsForResource: Array<Individual>
161
182
  status: RecordStatus
162
- datasetCreated?: Date
163
- datasetUpdated?: Date
164
183
  lineage: string // Explanation of the origin of this record (e.g: how, why)"
165
184
  distributions: Array<DatasetDistribution>
166
- spatialExtents: Array<DatasetSpatialExtent> // not handled yet
167
- temporalExtents: Array<DatasetTemporalExtent> // not handled yet
185
+ spatialExtents: Array<DatasetSpatialExtent>
186
+ temporalExtents: Array<DatasetTemporalExtent>
168
187
  spatialRepresentation?: SpatialRepresentationType
169
188
  }
170
189
 
@@ -187,3 +206,5 @@ export interface ServiceRecord extends BaseRecord {
187
206
  }
188
207
 
189
208
  export type CatalogRecord = ServiceRecord | DatasetRecord
209
+
210
+ export type CatalogRecordKeys = keyof ServiceRecord | keyof DatasetRecord
@@ -1,4 +1,4 @@
1
- import { FieldName } from './search.model'
1
+ import { FieldName } from './field.model'
2
2
  import { FieldFilters } from './filter.model'
3
3
 
4
4
  export interface TermsAggregationParams {
@@ -0,0 +1 @@
1
+ export type FieldName = string
@@ -1,4 +1,4 @@
1
- import { FieldName } from './search.model'
1
+ import { FieldName } from './field.model'
2
2
 
3
3
  export type FieldFilterByValues = Record<string, boolean>
4
4
  export type FieldFilterByExpression = string | number
@@ -2,3 +2,4 @@ export * from './aggregation.model'
2
2
  export * from './filter.model'
3
3
  export * from './search.model'
4
4
  export * from './sort-by.model'
5
+ export * from './field.model'
@@ -1,10 +1,10 @@
1
1
  import { FieldFilters } from './filter.model'
2
2
  import { CatalogRecord } from '../record'
3
3
  import { Geometry } from 'geojson'
4
+ import { FieldName } from './field.model'
4
5
 
5
- type FieldSort = ['desc' | 'asc', FieldName]
6
+ export type FieldSort = ['desc' | 'asc', FieldName]
6
7
  export type SortByField = FieldSort | FieldSort[] // several sort criteria can be used!
7
- export type FieldName = string
8
8
 
9
9
  export interface SearchParams {
10
10
  filters?: FieldFilters
@@ -1,6 +1,7 @@
1
1
  export interface ThesaurusItemModel {
2
2
  key: string
3
3
  label: string
4
+ description?: string
4
5
  }
5
6
 
6
7
  export type ThesaurusModel = ThesaurusItemModel[]
@@ -0,0 +1 @@
1
+ export * from './user.model'
@@ -15,8 +15,5 @@ export abstract class PlatformServiceInterface {
15
15
  ): Observable<UserModel[]>
16
16
  abstract getOrganizations(): Observable<Organization[]>
17
17
  abstract translateKey(key: string): Observable<string>
18
- abstract getThesaurusByLang(
19
- thesaurusName: string,
20
- lang: string
21
- ): Observable<ThesaurusModel>
18
+ abstract getThesaurusByUri(uri: string): Observable<ThesaurusModel>
22
19
  }
@@ -131,7 +131,7 @@ export const ES_FIXTURE_FULL_RESPONSE = deepFreeze({
131
131
  creationDateForResource: ['2012-01-01T00:00:00.000Z'],
132
132
  creationYearForResource: '2012',
133
133
  creationMonthForResource: '2012-01',
134
- publicationDateForResource: ['2021-04-01T00:00:00.000Z'],
134
+ publicationDateForResource: '2021-04-01T00:00:00.000Z',
135
135
  publicationYearForResource: '2021',
136
136
  publicationMonthForResource: '2021-04',
137
137
  resourceDate: [
@@ -64,7 +64,7 @@ export const GROUPS_FIXTURE = deepFreeze([
64
64
  defaultCategory: null,
65
65
  allowedCategories: [],
66
66
  enableAllowedCategories: false,
67
- id: 348385324,
67
+ id: 2,
68
68
  email: 'ifremer.ifremer@ifremer.admin.fr',
69
69
  referrer: null,
70
70
  description: "Institut français de recherche pour l'exploitation de la mer",