geonetwork-ui 2.2.0-dev.c15a456d → 2.2.0-dev.c9f3c310

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 (399) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +28 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +83 -58
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +6 -4
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +20 -17
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +52 -23
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
  9. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  10. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  12. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  13. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  14. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  15. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  17. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  18. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  19. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  20. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  22. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  23. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
  24. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  25. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  26. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  27. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  28. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  29. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  30. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
  31. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  32. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  33. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +26 -3
  34. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  35. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  36. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
  37. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +11 -1
  38. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  39. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  40. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  41. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  42. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  43. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +7 -4
  44. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  45. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  46. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  47. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  48. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  49. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +3 -3
  50. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  51. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  52. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  53. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  54. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  55. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  56. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  57. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  58. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  59. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  60. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
  61. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
  62. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -16
  63. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
  64. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  65. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  67. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
  68. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  69. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  70. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  72. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +8 -5
  73. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  74. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  75. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  76. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  77. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +12 -7
  78. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  79. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  80. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  81. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  82. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  83. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  84. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  85. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  86. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  87. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  88. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  89. package/esm2022/libs/util/i18n/src/index.mjs +2 -2
  90. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  91. package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
  92. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  93. package/esm2022/translations/de.json +106 -89
  94. package/esm2022/translations/en.json +42 -25
  95. package/esm2022/translations/es.json +21 -4
  96. package/esm2022/translations/fr.json +26 -9
  97. package/esm2022/translations/it.json +33 -16
  98. package/esm2022/translations/nl.json +21 -4
  99. package/esm2022/translations/pt.json +21 -4
  100. package/fesm2022/geonetwork-ui.mjs +1521 -835
  101. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  102. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +3 -0
  103. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  104. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  105. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  107. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -5
  108. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  109. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
  110. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
  111. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  112. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +6 -6
  113. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  114. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
  115. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  116. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  117. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  118. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  119. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  120. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  121. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  122. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  123. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  124. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  125. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +28 -17
  126. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  127. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  128. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  129. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  130. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  131. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  132. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  133. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  134. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  135. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  136. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  137. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  138. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  139. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  140. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  141. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  142. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  143. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
  144. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  145. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  146. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  147. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  148. package/libs/feature/map/src/index.d.ts +1 -0
  149. package/libs/feature/map/src/index.d.ts.map +1 -1
  150. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  151. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  152. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  153. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  154. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
  155. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
  156. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  157. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  158. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  159. package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
  160. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  161. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  162. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  163. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  164. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  165. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -0
  166. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  167. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  168. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  169. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  170. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  171. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  172. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  173. package/libs/feature/search/src/index.d.ts +3 -0
  174. package/libs/feature/search/src/index.d.ts.map +1 -1
  175. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +5 -4
  176. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  177. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  178. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  179. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  180. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  181. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  182. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  183. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  184. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  185. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  186. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  187. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  188. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  189. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  190. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  191. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  192. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  193. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  194. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  195. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  196. package/libs/ui/elements/src/index.d.ts +3 -0
  197. package/libs/ui/elements/src/index.d.ts.map +1 -1
  198. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  199. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  200. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  201. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
  202. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
  203. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
  204. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
  205. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +10 -5
  206. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  207. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  208. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  209. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  210. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  211. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  212. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
  213. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  214. package/libs/ui/inputs/src/index.d.ts +1 -0
  215. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  216. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  217. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  218. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  219. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  220. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  221. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  222. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  223. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -39
  224. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  225. package/libs/ui/layout/src/index.d.ts +2 -0
  226. package/libs/ui/layout/src/index.d.ts.map +1 -1
  227. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  228. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  229. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  230. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  231. package/libs/ui/search/src/index.d.ts +0 -1
  232. package/libs/ui/search/src/index.d.ts.map +1 -1
  233. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  234. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  235. package/libs/util/i18n/src/index.d.ts +1 -1
  236. package/libs/util/i18n/src/index.d.ts.map +1 -1
  237. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  238. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  239. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
  240. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
  241. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  242. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  243. package/package.json +4 -1
  244. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +61 -8
  245. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +55 -9
  246. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +225 -24
  247. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +32 -0
  248. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +123 -73
  249. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +5 -3
  250. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +3 -5
  251. package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
  252. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +24 -21
  253. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +115 -62
  254. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +169 -95
  255. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  256. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  257. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  258. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  259. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  260. package/src/libs/common/domain/src/lib/index.ts +2 -0
  261. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +33 -21
  262. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  263. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  264. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  265. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  266. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  267. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  268. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  269. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  270. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  271. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +50 -10
  272. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  273. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
  274. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  275. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  276. package/src/libs/feature/map/src/index.ts +1 -0
  277. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  278. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  279. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  280. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  281. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  282. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  283. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
  284. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
  285. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
  286. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  287. package/src/libs/feature/map/src/lib/feature-map.module.ts +14 -0
  288. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  289. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  290. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  291. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  292. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
  293. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +16 -0
  294. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  295. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  296. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  297. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  298. package/src/libs/feature/search/src/index.ts +3 -0
  299. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
  300. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  301. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  302. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  303. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  304. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  305. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  306. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  307. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  308. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  309. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  310. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  311. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  312. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  313. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  314. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  315. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  316. package/src/libs/ui/elements/src/index.ts +3 -0
  317. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  318. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  319. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  320. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  321. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  322. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  323. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  324. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
  325. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
  326. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +17 -0
  327. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
  328. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
  329. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  330. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +104 -50
  331. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +37 -10
  332. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
  333. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  334. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  335. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  336. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  337. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +7 -0
  338. package/src/libs/ui/inputs/src/index.ts +1 -0
  339. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  340. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  341. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
  342. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  343. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  344. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
  345. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  346. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
  347. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  348. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  349. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  350. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +5 -2
  351. package/src/libs/ui/layout/src/index.ts +2 -0
  352. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  353. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  354. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  355. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  356. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  357. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  358. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  359. package/src/libs/ui/search/src/index.ts +0 -1
  360. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  361. package/src/libs/util/i18n/src/index.ts +1 -1
  362. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  363. package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
  364. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  365. package/tailwind.base.css +2 -2
  366. package/translations/de.json +106 -89
  367. package/translations/en.json +42 -25
  368. package/translations/es.json +21 -4
  369. package/translations/fr.json +26 -9
  370. package/translations/it.json +33 -16
  371. package/translations/nl.json +21 -4
  372. package/translations/pt.json +21 -4
  373. package/translations/sk.json +21 -4
  374. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  375. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  376. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  377. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  378. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  379. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  380. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  381. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  382. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  383. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  384. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  385. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  386. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  387. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  388. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  389. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  390. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  391. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  392. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  393. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  394. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  395. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  396. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  397. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
  398. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  399. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -12,7 +12,6 @@ import {
12
12
  } from '../xml-utils'
13
13
  import {
14
14
  writeAbstract,
15
- writeAccessConstraints,
16
15
  writeContacts,
17
16
  writeDatasetCreated,
18
17
  writeDatasetUpdated,
@@ -20,22 +19,23 @@ import {
20
19
  writeGraphicOverviews,
21
20
  writeKeywords,
22
21
  writeKind,
22
+ writeLegalConstraints,
23
23
  writeLicenses,
24
24
  writeLineage,
25
25
  writeOnlineResources,
26
+ writeOtherConstraints,
26
27
  writeOwnerOrganization,
27
28
  writeRecordUpdated,
29
+ writeSecurityConstraints,
28
30
  writeSpatialRepresentation,
29
31
  writeStatus,
30
- writeThemes,
32
+ writeTopics,
31
33
  writeTitle,
32
34
  writeUniqueIdentifier,
33
35
  writeUpdateFrequency,
34
- writeUseLimitations,
35
36
  } from './write-parts'
36
37
  import {
37
38
  readAbstract,
38
- readAccessConstraints,
39
39
  readContacts,
40
40
  readDatasetCreated,
41
41
  readDatasetUpdated,
@@ -43,21 +43,22 @@ import {
43
43
  readIsoTopics,
44
44
  readKeywords,
45
45
  readKind,
46
+ readLegalConstraints,
46
47
  readLicenses,
47
48
  readLineage,
48
49
  readOnlineResources,
50
+ readOtherConstraints,
49
51
  readOverviews,
50
52
  readOwnerOrganization,
51
53
  readRecordUpdated,
54
+ readSecurityConstraints,
52
55
  readSpatialExtents,
53
56
  readSpatialRepresentation,
54
57
  readStatus,
55
58
  readTemporalExtents,
56
- readThemes,
57
59
  readTitle,
58
60
  readUniqueIdentifier,
59
61
  readUpdateFrequency,
60
- readUseLimitations,
61
62
  } from './read-parts'
62
63
  import { isEqual } from '../convert-utils'
63
64
 
@@ -74,15 +75,13 @@ export function toModel(xml: string): CatalogRecord {
74
75
  const recordUpdated = readRecordUpdated(rootEl)
75
76
  const recordCreated = recordUpdated
76
77
  const keywords = readKeywords(rootEl)
77
- const themes = readThemes(rootEl)
78
- const accessConstraints = readAccessConstraints(rootEl)
79
- const useLimitations = readUseLimitations(rootEl)
78
+ const topics = readIsoTopics(rootEl)
79
+ const legalConstraints = readLegalConstraints(rootEl)
80
+ const otherConstraints = readOtherConstraints(rootEl)
81
+ const securityConstraints = readSecurityConstraints(rootEl)
80
82
  const licenses = readLicenses(rootEl)
81
83
  const overviews = readOverviews(rootEl)
82
84
 
83
- // not used yet
84
- const isoTopics = readIsoTopics(rootEl)
85
-
86
85
  if (kind === 'dataset') {
87
86
  const status = readStatus(rootEl)
88
87
  const datasetCreated = readDatasetCreated(rootEl)
@@ -106,10 +105,11 @@ export function toModel(xml: string): CatalogRecord {
106
105
  contacts,
107
106
  contactsForResource: [], // FIXME: is that really useful??
108
107
  keywords,
109
- themes,
110
- accessConstraints,
111
- useLimitations,
108
+ topics,
112
109
  licenses,
110
+ legalConstraints,
111
+ securityConstraints,
112
+ otherConstraints,
113
113
  ...(datasetCreated && { datasetCreated }),
114
114
  ...(datasetUpdated && { datasetUpdated }),
115
115
  lineage,
@@ -132,10 +132,11 @@ export function toModel(xml: string): CatalogRecord {
132
132
  ownerOrganization,
133
133
  contacts,
134
134
  keywords,
135
- themes,
136
- accessConstraints,
137
- useLimitations,
135
+ topics,
138
136
  licenses,
137
+ legalConstraints,
138
+ securityConstraints,
139
+ otherConstraints,
139
140
  overviews,
140
141
  onlineResources,
141
142
  } as ServiceRecord
@@ -163,10 +164,12 @@ export function toXml(record: CatalogRecord, originalXml?: string): string {
163
164
  writeAbstract(record, rootEl)
164
165
  fieldChanged('contacts') && writeContacts(record, rootEl)
165
166
  fieldChanged('keywords') && writeKeywords(record, rootEl)
166
- fieldChanged('themes') && writeThemes(record, rootEl)
167
- fieldChanged('accessConstraints') && writeAccessConstraints(record, rootEl)
167
+ fieldChanged('topics') && writeTopics(record, rootEl)
168
+ fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl)
169
+ fieldChanged('securityConstraints') &&
170
+ writeSecurityConstraints(record, rootEl)
168
171
  fieldChanged('licenses') && writeLicenses(record, rootEl)
169
- fieldChanged('useLimitations') && writeUseLimitations(record, rootEl)
172
+ fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl)
170
173
 
171
174
  if (record.kind === 'dataset') {
172
175
  writeStatus(record, rootEl)
@@ -1,12 +1,12 @@
1
1
  import {
2
- AccessConstraint,
3
- AccessConstraintType,
2
+ Constraint,
4
3
  DatasetDistribution,
5
4
  DatasetSpatialExtent,
6
5
  DatasetTemporalExtent,
7
6
  GraphicOverview,
8
7
  Individual,
9
- License,
8
+ Keyword,
9
+ KeywordThesaurus,
10
10
  Organization,
11
11
  RecordKind,
12
12
  RecordStatus,
@@ -41,6 +41,7 @@ import {
41
41
  } from '../function-utils'
42
42
  import { getRoleFromRoleCode } from './codelists/role.mapper'
43
43
  import { matchMimeType, matchProtocol } from '../common/distribution.mapper'
44
+ import { getKeywordTypeFromKeywordTypeCode } from './codelists/keyword.mapper'
44
45
 
45
46
  function extractCharacterString(): ChainableFunction<XmlElement, string> {
46
47
  return pipe(
@@ -183,59 +184,69 @@ function extractStatus(): ChainableFunction<XmlElement, RecordStatus> {
183
184
  }
184
185
 
185
186
  // from gmd:resourceConstraints
186
- function extractAccessConstraints(): ChainableFunction<
187
+ function extractLegalConstraints(): ChainableFunction<
187
188
  XmlElement,
188
- Array<AccessConstraint>
189
+ Array<Constraint>
189
190
  > {
190
- const getOtherConstraints = pipe(
191
+ return pipe(
191
192
  findChildrenElement('gmd:MD_LegalConstraints', false),
192
193
  filterArray(
193
194
  pipe(
194
195
  findChildrenElement('gmd:MD_RestrictionCode'),
195
196
  mapArray(readAttribute('codeListValue')),
196
- map(
197
- (values) =>
198
- values.indexOf('license') === -1 &&
199
- values.indexOf('otherRestrictions') > -1
200
- )
197
+ map((values) => values.indexOf('license') === -1)
198
+ )
199
+ ),
200
+ mapArray(
201
+ combine(
202
+ findChildrenElement('gmd:otherConstraints'),
203
+ findChildrenElement('gmd:useLimitation')
201
204
  )
202
205
  ),
203
- mapArray(findChildrenElement('gmd:otherConstraints')),
204
206
  flattenArray(),
205
- mapArray(extractCharacterString()),
206
- mapArray((text) => ({
207
+ flattenArray(),
208
+ mapArray(combine(extractCharacterString(), extractUrl())),
209
+ mapArray(([text, url]) => ({
210
+ ...(url && { url }),
207
211
  text,
208
- type: 'other' as AccessConstraintType,
209
212
  }))
210
213
  )
211
- const getSecurityConstraints = pipe(
214
+ }
215
+
216
+ // from gmd:resourceConstraints
217
+ function extractSecurityConstraints(): ChainableFunction<
218
+ XmlElement,
219
+ Array<Constraint>
220
+ > {
221
+ return pipe(
212
222
  findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'),
213
- mapArray(extractCharacterString()),
214
- mapArray((text) => ({
223
+ flattenArray(),
224
+ mapArray(combine(extractCharacterString(), extractUrl())),
225
+ mapArray(([text, url]) => ({
226
+ ...(url && { url }),
215
227
  text,
216
- type: 'security' as AccessConstraintType,
217
228
  }))
218
229
  )
219
- return pipe(
220
- combine(getOtherConstraints, getSecurityConstraints),
221
- flattenArray()
222
- )
223
230
  }
224
231
 
225
232
  // from gmd:resourceConstraints
226
- function extractUseLimitations(): ChainableFunction<XmlElement, Array<string>> {
233
+ function extractOtherConstraints(): ChainableFunction<
234
+ XmlElement,
235
+ Array<Constraint>
236
+ > {
227
237
  return pipe(
228
- combine(
229
- findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'),
230
- findNestedElements('gmd:MD_LegalConstraints', 'gmd:useLimitation')
231
- ),
238
+ findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'),
232
239
  flattenArray(),
233
- mapArray(extractCharacterString())
240
+ mapArray(combine(extractCharacterString(), extractUrl())),
241
+ mapArray(([text, url]) => ({
242
+ ...(url && { url }),
243
+ text,
244
+ }))
234
245
  )
235
246
  }
236
247
 
237
248
  // from gmd:resourceConstraints
238
- function extractLicenses(): ChainableFunction<XmlElement, Array<License>> {
249
+ function extractLicenses(): ChainableFunction<XmlElement, Array<Constraint>> {
239
250
  return pipe(
240
251
  findChildrenElement('gmd:MD_LegalConstraints', false),
241
252
  filterArray(
@@ -246,15 +257,18 @@ function extractLicenses(): ChainableFunction<XmlElement, Array<License>> {
246
257
  )
247
258
  ),
248
259
  mapArray(
249
- pipe(
250
- findChildElement('gmd:otherConstraints'),
251
- combine(extractCharacterString(), extractUrl()),
252
- map(([text, url]) => ({
253
- ...(url && { url }),
254
- text,
255
- }))
260
+ combine(
261
+ findChildrenElement('gmd:otherConstraints'),
262
+ findChildrenElement('gmd:useLimitation')
256
263
  )
257
- )
264
+ ),
265
+ flattenArray(),
266
+ flattenArray(),
267
+ mapArray(combine(extractCharacterString(), extractUrl())),
268
+ mapArray(([text, url]) => ({
269
+ ...(url && { url }),
270
+ text,
271
+ }))
258
272
  )
259
273
  }
260
274
 
@@ -541,29 +555,60 @@ export function readContacts(rootEl: XmlElement): Individual[] {
541
555
  )(rootEl)
542
556
  }
543
557
 
544
- function readKeywordsOfType(isTheme: boolean) {
545
- return pipe(
546
- findIdentification(),
547
- findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'),
548
- filterArray(
549
- pipe(
550
- findChildrenElement('gmd:MD_KeywordTypeCode'),
551
- mapArray(readAttribute('codeListValue')),
552
- map((values) => isTheme === values.indexOf('theme') > -1)
553
- )
554
- ),
555
- mapArray(findChildrenElement('gmd:keyword')),
556
- flattenArray(),
557
- mapArray(extractCharacterString())
558
+ // from gmd:thesaurusName
559
+ function readThesaurus(rootEl: XmlElement): KeywordThesaurus {
560
+ if (!rootEl) return null
561
+
562
+ const findIdentifier = findNestedElement(
563
+ 'gmd:CI_Citation',
564
+ 'gmd:identifier',
565
+ 'gmd:MD_Identifier',
566
+ 'gmd:code'
558
567
  )
568
+ const id = pipe(findIdentifier, extractCharacterString())(rootEl)
569
+ const url = pipe(findIdentifier, extractUrl())(rootEl)
570
+ const name = pipe(
571
+ findNestedElement('gmd:CI_Citation', 'gmd:title'),
572
+ extractCharacterString()
573
+ )(rootEl)
574
+ return {
575
+ id,
576
+ ...(name && { name }),
577
+ ...(url && { url }),
578
+ }
559
579
  }
560
580
 
561
- export function readKeywords(rootEl: XmlElement): string[] {
562
- return readKeywordsOfType(false)(rootEl)
581
+ // from gmd:MD_Keywords
582
+ function readKeywordGroup(rootEl: XmlElement): Keyword[] {
583
+ const type = pipe(
584
+ findChildrenElement('gmd:MD_KeywordTypeCode'),
585
+ mapArray(readAttribute('codeListValue')),
586
+ map((values) => getKeywordTypeFromKeywordTypeCode(values[0]))
587
+ )(rootEl)
588
+ const thesaurus = pipe(
589
+ findNestedElement('gmd:thesaurusName'),
590
+ readThesaurus
591
+ )(rootEl)
592
+ return pipe(
593
+ findChildrenElement('gmd:keyword'),
594
+ mapArray((el) => {
595
+ const label = extractCharacterString()(el)
596
+ return {
597
+ ...(thesaurus ? { thesaurus } : {}),
598
+ label,
599
+ type,
600
+ } as Keyword
601
+ })
602
+ )(rootEl)
563
603
  }
564
604
 
565
- export function readThemes(rootEl: XmlElement): string[] {
566
- return readKeywordsOfType(true)(rootEl)
605
+ export function readKeywords(rootEl: XmlElement): Keyword[] {
606
+ return pipe(
607
+ findIdentification(),
608
+ findNestedElements('gmd:descriptiveKeywords', 'gmd:MD_Keywords'),
609
+ mapArray(readKeywordGroup),
610
+ flattenArray()
611
+ )(rootEl)
567
612
  }
568
613
 
569
614
  export function readStatus(rootEl: XmlElement): RecordStatus {
@@ -579,24 +624,32 @@ const getConstraints = pipe(
579
624
  findChildrenElement('gmd:resourceConstraints', false)
580
625
  )
581
626
 
582
- export function readAccessConstraints(rootEl: XmlElement): AccessConstraint[] {
627
+ export function readLegalConstraints(rootEl: XmlElement): Constraint[] {
583
628
  return pipe(
584
629
  getConstraints,
585
- mapArray(extractAccessConstraints()),
630
+ mapArray(extractLegalConstraints()),
586
631
  flattenArray(),
587
632
  flattenArray()
588
633
  )(rootEl)
589
634
  }
590
635
 
591
- export function readUseLimitations(rootEl: XmlElement): string[] {
636
+ export function readSecurityConstraints(rootEl: XmlElement): Constraint[] {
637
+ return pipe(
638
+ getConstraints,
639
+ mapArray(extractSecurityConstraints()),
640
+ flattenArray()
641
+ )(rootEl)
642
+ }
643
+
644
+ export function readOtherConstraints(rootEl: XmlElement): Constraint[] {
592
645
  return pipe(
593
646
  getConstraints,
594
- mapArray(extractUseLimitations()),
647
+ mapArray(extractOtherConstraints()),
595
648
  flattenArray()
596
649
  )(rootEl)
597
650
  }
598
651
 
599
- export function readLicenses(rootEl: XmlElement): License[] {
652
+ export function readLicenses(rootEl: XmlElement): Constraint[] {
600
653
  return pipe(
601
654
  getConstraints,
602
655
  mapArray(extractLicenses()),
@@ -608,7 +661,7 @@ export function readLicenses(rootEl: XmlElement): License[] {
608
661
  export function readIsoTopics(rootEl: XmlElement): string[] {
609
662
  return pipe(
610
663
  findIdentification(),
611
- findChildrenElement('gmd:MD_TopicCategoryCode', false),
664
+ findChildrenElement('gmd:MD_TopicCategoryCode', true),
612
665
  mapArray(readText())
613
666
  )(rootEl)
614
667
  }