geonetwork-ui 2.2.0-dev.886aae61 → 2.2.0-dev.95b40cd8

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 (352) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +77 -52
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +5 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +16 -11
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -16
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +21 -18
  7. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  8. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  9. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  11. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  13. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  15. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  17. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  18. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  19. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  20. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  21. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  22. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  23. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  24. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  25. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  26. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  27. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  28. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  29. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +23 -3
  30. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  31. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  32. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +5 -3
  33. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +11 -1
  34. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  35. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  36. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  37. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  38. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  39. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +7 -4
  40. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  41. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  42. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  43. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  44. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  45. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +3 -3
  46. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  47. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  48. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  49. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  50. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  51. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  52. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  53. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  54. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  55. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  56. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  57. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  58. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -17
  59. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +2 -3
  60. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  61. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  62. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  63. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -3
  64. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  65. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  66. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  67. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  68. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  69. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  70. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  72. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
  73. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  74. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  75. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  76. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  77. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  78. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  79. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  80. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  81. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  82. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  83. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  84. package/esm2022/libs/util/i18n/src/index.mjs +1 -2
  85. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  86. package/esm2022/translations/de.json +106 -93
  87. package/esm2022/translations/en.json +38 -25
  88. package/esm2022/translations/es.json +17 -4
  89. package/esm2022/translations/fr.json +22 -9
  90. package/esm2022/translations/it.json +29 -16
  91. package/esm2022/translations/nl.json +17 -4
  92. package/esm2022/translations/pt.json +17 -4
  93. package/fesm2022/geonetwork-ui.mjs +1275 -788
  94. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  95. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
  96. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  97. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  98. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  99. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  100. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  101. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -4
  102. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  103. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -2
  104. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  105. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  106. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  107. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  108. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  109. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  110. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  111. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  112. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  113. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  114. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +15 -15
  115. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  116. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  117. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  118. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  119. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  120. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  121. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  122. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  123. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  124. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  125. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  126. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  127. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  128. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  129. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  130. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  131. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  132. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  133. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  134. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  135. package/libs/feature/map/src/index.d.ts +1 -0
  136. package/libs/feature/map/src/index.d.ts.map +1 -1
  137. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  138. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  139. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  140. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  141. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  142. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  143. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  144. package/libs/feature/map/src/lib/feature-map.module.d.ts +15 -12
  145. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  146. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  147. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  148. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  149. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  150. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -0
  151. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  152. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  153. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  154. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  155. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  156. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  157. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  158. package/libs/feature/search/src/index.d.ts +3 -0
  159. package/libs/feature/search/src/index.d.ts.map +1 -1
  160. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +5 -4
  161. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  162. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  163. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  164. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  165. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  166. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  167. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  168. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  169. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  170. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  171. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  172. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  173. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  174. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  175. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  176. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  177. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  178. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  179. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  180. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  181. package/libs/ui/elements/src/index.d.ts +2 -0
  182. package/libs/ui/elements/src/index.d.ts.map +1 -1
  183. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  184. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  185. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  186. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +7 -2
  187. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  188. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  189. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  190. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  191. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  192. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  193. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +12 -11
  194. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  195. package/libs/ui/inputs/src/index.d.ts +1 -0
  196. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  197. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  198. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  199. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
  200. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  201. package/libs/ui/layout/src/index.d.ts +2 -0
  202. package/libs/ui/layout/src/index.d.ts.map +1 -1
  203. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  204. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  205. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  206. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  207. package/libs/ui/search/src/index.d.ts +0 -1
  208. package/libs/ui/search/src/index.d.ts.map +1 -1
  209. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  210. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  211. package/libs/util/i18n/src/index.d.ts +0 -1
  212. package/libs/util/i18n/src/index.d.ts.map +1 -1
  213. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  214. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  215. package/package.json +4 -1
  216. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +6 -6
  217. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -3
  218. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +22 -4
  219. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
  220. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +112 -65
  221. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +4 -2
  222. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +19 -12
  223. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +62 -43
  224. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +91 -59
  225. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  226. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  227. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  228. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  229. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  230. package/src/libs/common/domain/src/lib/index.ts +2 -0
  231. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +17 -18
  232. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  233. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  234. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  235. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  236. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  237. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  238. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  239. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  240. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  241. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +6 -2
  242. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  243. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  244. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  245. package/src/libs/feature/map/src/index.ts +1 -0
  246. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  247. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  248. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  249. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  250. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  251. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  252. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  253. package/src/libs/feature/map/src/lib/feature-map.module.ts +12 -0
  254. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  255. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  256. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  257. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  258. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +6 -2
  259. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +16 -0
  260. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  261. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  262. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  263. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  264. package/src/libs/feature/search/src/index.ts +3 -0
  265. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
  266. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  267. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  268. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  269. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  270. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  271. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  272. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  273. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  274. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  275. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  276. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  277. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  278. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  279. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  280. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  281. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  282. package/src/libs/ui/elements/src/index.ts +2 -0
  283. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  284. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  285. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  286. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  287. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +54 -54
  288. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
  289. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  290. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +101 -45
  291. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +31 -7
  292. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +1 -2
  293. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  294. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  295. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  296. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  297. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +4 -0
  298. package/src/libs/ui/inputs/src/index.ts +1 -0
  299. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  300. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  301. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  302. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  303. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  304. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  305. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  306. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  307. package/src/libs/ui/layout/src/index.ts +2 -0
  308. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  309. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  310. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  311. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  312. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  313. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  314. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  315. package/src/libs/ui/search/src/index.ts +0 -1
  316. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  317. package/src/libs/util/i18n/src/index.ts +0 -1
  318. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  319. package/translations/de.json +106 -93
  320. package/translations/en.json +38 -25
  321. package/translations/es.json +17 -4
  322. package/translations/fr.json +22 -9
  323. package/translations/it.json +29 -16
  324. package/translations/nl.json +17 -4
  325. package/translations/pt.json +17 -4
  326. package/translations/sk.json +17 -4
  327. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  328. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  329. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  330. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  331. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  332. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  333. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  334. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  335. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  336. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  337. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  338. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  339. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  340. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  341. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  342. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  343. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  344. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  345. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  346. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  347. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  348. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  349. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  350. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
  351. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  352. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -1,4 +1,5 @@
1
1
  import {
2
+ getArrayItem,
2
3
  getAsArray,
3
4
  getAsUrl,
4
5
  getFirstValue,
@@ -16,12 +17,13 @@ import { Injectable } from '@angular/core'
16
17
  import { getStatusFromStatusCode } from '../iso19139/codelists/status.mapper'
17
18
  import { getUpdateFrequencyFromFrequencyCode } from '../iso19139/codelists/update-frequency.mapper'
18
19
  import {
19
- AccessConstraintType,
20
20
  CatalogRecord,
21
+ Constraint,
21
22
  DatasetDistribution,
22
23
  DatasetDistributionType,
23
24
  DatasetDownloadDistribution,
24
25
  DatasetServiceDistribution,
26
+ DatasetSpatialExtent,
25
27
  OnlineLinkResource,
26
28
  } from '../../../../../../libs/common/domain/src/lib/model/record'
27
29
  import { matchProtocol } from '../common/distribution.mapper'
@@ -183,37 +185,41 @@ export class Gn4FieldMapper {
183
185
  ],
184
186
  }),
185
187
  MD_ConstraintsUseLimitationObject: (output, source) =>
186
- this.constraintField('MD_ConstraintsUseLimitationObject', output, source),
188
+ this.constraintField(
189
+ 'other',
190
+ output,
191
+ getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))
192
+ ),
187
193
  MD_LegalConstraintsUseLimitationObject: (output, source) =>
188
194
  this.constraintField(
189
- 'MD_LegalConstraintsUseLimitationObject',
195
+ 'legal',
190
196
  output,
191
- source
197
+ getAsArray(
198
+ selectField(source, 'MD_LegalConstraintsUseLimitationObject')
199
+ )
192
200
  ),
193
201
  MD_LegalConstraintsOtherConstraintsObject: (output, source) =>
194
202
  this.constraintField(
195
- 'MD_LegalConstraintsOtherConstraintsObject',
203
+ 'legal',
196
204
  output,
197
- source
205
+ getAsArray(
206
+ selectField(source, 'MD_LegalConstraintsOtherConstraintsObject')
207
+ )
198
208
  ),
199
209
  MD_SecurityConstraintsUseLimitationObject: (output, source) =>
200
210
  this.constraintField(
201
- 'MD_SecurityConstraintsUseLimitationObject',
211
+ 'security',
202
212
  output,
203
- source
213
+ getAsArray(
214
+ selectField(source, 'MD_SecurityConstraintsUseLimitationObject')
215
+ )
216
+ ),
217
+ licenseObject: (output, source) =>
218
+ this.constraintField(
219
+ 'license',
220
+ output,
221
+ getAsArray(selectField(source, 'licenseObject'))
204
222
  ),
205
- licenseObject: (output, source) => ({
206
- ...output,
207
- licenses: getAsArray(
208
- selectField<SourceWithUnknownProps[]>(source, 'licenseObject')
209
- ).map((license) => {
210
- const link = getAsUrl(selectField(license, 'link'))
211
- return {
212
- text: selectTranslatedValue<string>(license, this.lang3),
213
- ...(link ? { link } : {}),
214
- }
215
- }),
216
- }),
217
223
  lineageObject: (output, source) => ({
218
224
  ...output,
219
225
  lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
@@ -258,57 +264,98 @@ export class Gn4FieldMapper {
258
264
  kind,
259
265
  }
260
266
  },
267
+ geom: (output, source) => {
268
+ const geoms = getAsArray(selectField(source, 'geom'))
269
+ const shapes = getAsArray(selectField(source, 'shape'))
270
+ const extentDescriptions = getAsArray(
271
+ selectField(source, 'extentDescriptionObject')
272
+ )
273
+ const spatialExtents = getAsArray(selectField(source, 'spatialExtents'))
274
+ return {
275
+ ...output,
276
+ spatialExtents: [
277
+ ...spatialExtents,
278
+ ...geoms.map((geom, index) => {
279
+ const description = selectTranslatedValue(
280
+ getArrayItem(extentDescriptions, index),
281
+ this.lang3
282
+ )
283
+ const geometry = shapes[index] ?? geom
284
+ return {
285
+ ...(description !== null ? { description } : null),
286
+ geometry,
287
+ } as DatasetSpatialExtent
288
+ }),
289
+ ],
290
+ }
291
+ },
292
+ resourceTemporalDateRange: (output, source) => {
293
+ const ranges = getAsArray(
294
+ selectField(source, 'resourceTemporalDateRange')
295
+ )
296
+ return {
297
+ ...output,
298
+ temporalExtents: ranges.map((range) => {
299
+ const start = selectField(range, 'gte')
300
+ const end = selectField(range, 'lte')
301
+ return {
302
+ ...(start !== null ? { start: toDate(start) } : null),
303
+ ...(end !== null ? { end: toDate(end) } : null),
304
+ }
305
+ }),
306
+ }
307
+ },
261
308
  }
262
309
 
263
310
  private genericField = (output) => output
264
311
 
265
- private constraintField = (fieldName: string, output, source) => ({
266
- ...output,
267
- ...(fieldName.endsWith('UseLimitationObject')
268
- ? {
269
- legalConstraints:
270
- fieldName === 'MD_LegalConstraintsUseLimitationObject'
271
- ? [
272
- ...(output.legalConstraints || []),
273
- ...selectField<SourceWithUnknownProps[]>(
274
- source,
275
- fieldName
276
- ).map((source: SourceWithUnknownProps) =>
277
- selectTranslatedValue(source, this.lang3)
278
- ),
279
- ]
280
- : output.legalConstraints || [],
281
- useLimitations: [
282
- ...(output.useLimitations || []),
283
- ...selectField<SourceWithUnknownProps[]>(source, fieldName).map(
284
- (source: SourceWithUnknownProps) =>
285
- selectTranslatedValue(source, this.lang3)
286
- ),
287
- ],
312
+ private constraintField = (
313
+ type: 'license' | 'legal' | 'security' | 'other',
314
+ output: Partial<CatalogRecord>,
315
+ constraintArray: SourceWithUnknownProps[]
316
+ ) => {
317
+ let outputField: string
318
+ switch (type) {
319
+ case 'license':
320
+ outputField = 'licenses'
321
+ break
322
+ case 'legal':
323
+ outputField = 'legalConstraints'
324
+ break
325
+ case 'security':
326
+ outputField = 'securityConstraints'
327
+ break
328
+ case 'other':
329
+ outputField = 'otherConstraints'
330
+ break
331
+ }
332
+ const outputArray: Constraint[] =
333
+ outputField in output ? output[outputField] : []
334
+ outputArray.push(
335
+ ...constraintArray.map((item) => {
336
+ const text = selectTranslatedValue(item, this.lang3) as string
337
+ const url = getAsUrl(selectField(item, 'link'))
338
+ return {
339
+ text,
340
+ ...(url ? { url } : {}),
288
341
  }
289
- : {
290
- accessConstraints: [
291
- ...(output.accessConstraints || []),
292
- ...selectField<SourceWithUnknownProps[]>(source, fieldName).map(
293
- (field) => ({
294
- text: selectTranslatedValue(field, this.lang3),
295
- type: this.getConstraintsType(fieldName),
296
- })
297
- ),
298
- ],
299
- }),
300
- })
301
-
302
- private getConstraintsType(indexField: string): AccessConstraintType {
303
- switch (indexField) {
304
- case 'MD_LegalConstraintsUseLimitationObject':
305
- return 'legal'
306
- case 'MD_SecurityConstraintsUseLimitationObject':
307
- return 'security'
308
- case 'MD_ConstraintsUseLimitationObject':
309
- default:
310
- return 'other'
342
+ })
343
+ )
344
+ const result = {
345
+ ...output,
346
+ [outputField]: outputArray,
347
+ }
348
+ // avoid legal constraints being duplicates of licenses
349
+ if (
350
+ 'legalConstraints' in result &&
351
+ (type === 'legal' || type === 'license')
352
+ ) {
353
+ result.legalConstraints = result.legalConstraints.filter(
354
+ (constraint) =>
355
+ !output.licenses?.some((license) => license.text === constraint.text)
356
+ )
311
357
  }
358
+ return result
312
359
  }
313
360
 
314
361
  getMappingFn(fieldName: string) {
@@ -26,14 +26,16 @@ export class Gn4MetadataMapper extends MetadataBaseMapper<Gn4Record> {
26
26
  recordUpdated: null,
27
27
  ownerOrganization: null,
28
28
  licenses: [],
29
+ legalConstraints: [],
30
+ securityConstraints: [],
31
+ otherConstraints: [],
29
32
  contacts: [],
30
33
  contactsForResource: [],
31
- accessConstraints: [],
32
34
  keywords: [],
33
35
  themes: [],
34
- useLimitations: [],
35
36
  spatialExtents: [],
36
37
  temporalExtents: [],
38
+ overviews: [],
37
39
  }
38
40
  const record: CatalogRecord = Object.keys(_source).reduce(
39
41
  (prev, fieldName) =>
@@ -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
32
  writeThemes,
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,12 +43,15 @@ 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,
@@ -57,7 +60,6 @@ import {
57
60
  readTitle,
58
61
  readUniqueIdentifier,
59
62
  readUpdateFrequency,
60
- readUseLimitations,
61
63
  } from './read-parts'
62
64
  import { isEqual } from '../convert-utils'
63
65
 
@@ -75,8 +77,9 @@ export function toModel(xml: string): CatalogRecord {
75
77
  const recordCreated = recordUpdated
76
78
  const keywords = readKeywords(rootEl)
77
79
  const themes = readThemes(rootEl)
78
- const accessConstraints = readAccessConstraints(rootEl)
79
- const useLimitations = readUseLimitations(rootEl)
80
+ const legalConstraints = readLegalConstraints(rootEl)
81
+ const otherConstraints = readOtherConstraints(rootEl)
82
+ const securityConstraints = readSecurityConstraints(rootEl)
80
83
  const licenses = readLicenses(rootEl)
81
84
  const overviews = readOverviews(rootEl)
82
85
 
@@ -107,9 +110,10 @@ export function toModel(xml: string): CatalogRecord {
107
110
  contactsForResource: [], // FIXME: is that really useful??
108
111
  keywords,
109
112
  themes,
110
- accessConstraints,
111
- useLimitations,
112
113
  licenses,
114
+ legalConstraints,
115
+ securityConstraints,
116
+ otherConstraints,
113
117
  ...(datasetCreated && { datasetCreated }),
114
118
  ...(datasetUpdated && { datasetUpdated }),
115
119
  lineage,
@@ -133,9 +137,10 @@ export function toModel(xml: string): CatalogRecord {
133
137
  contacts,
134
138
  keywords,
135
139
  themes,
136
- accessConstraints,
137
- useLimitations,
138
140
  licenses,
141
+ legalConstraints,
142
+ securityConstraints,
143
+ otherConstraints,
139
144
  overviews,
140
145
  onlineResources,
141
146
  } as ServiceRecord
@@ -164,9 +169,11 @@ export function toXml(record: CatalogRecord, originalXml?: string): string {
164
169
  fieldChanged('contacts') && writeContacts(record, rootEl)
165
170
  fieldChanged('keywords') && writeKeywords(record, rootEl)
166
171
  fieldChanged('themes') && writeThemes(record, rootEl)
167
- fieldChanged('accessConstraints') && writeAccessConstraints(record, rootEl)
172
+ fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl)
173
+ fieldChanged('securityConstraints') &&
174
+ writeSecurityConstraints(record, rootEl)
168
175
  fieldChanged('licenses') && writeLicenses(record, rootEl)
169
- fieldChanged('useLimitations') && writeUseLimitations(record, rootEl)
176
+ fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl)
170
177
 
171
178
  if (record.kind === 'dataset') {
172
179
  writeStatus(record, rootEl)
@@ -1,12 +1,10 @@
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,
10
8
  Organization,
11
9
  RecordKind,
12
10
  RecordStatus,
@@ -183,59 +181,69 @@ function extractStatus(): ChainableFunction<XmlElement, RecordStatus> {
183
181
  }
184
182
 
185
183
  // from gmd:resourceConstraints
186
- function extractAccessConstraints(): ChainableFunction<
184
+ function extractLegalConstraints(): ChainableFunction<
187
185
  XmlElement,
188
- Array<AccessConstraint>
186
+ Array<Constraint>
189
187
  > {
190
- const getOtherConstraints = pipe(
188
+ return pipe(
191
189
  findChildrenElement('gmd:MD_LegalConstraints', false),
192
190
  filterArray(
193
191
  pipe(
194
192
  findChildrenElement('gmd:MD_RestrictionCode'),
195
193
  mapArray(readAttribute('codeListValue')),
196
- map(
197
- (values) =>
198
- values.indexOf('license') === -1 &&
199
- values.indexOf('otherRestrictions') > -1
200
- )
194
+ map((values) => values.indexOf('license') === -1)
195
+ )
196
+ ),
197
+ mapArray(
198
+ combine(
199
+ findChildrenElement('gmd:otherConstraints'),
200
+ findChildrenElement('gmd:useLimitation')
201
201
  )
202
202
  ),
203
- mapArray(findChildrenElement('gmd:otherConstraints')),
204
203
  flattenArray(),
205
- mapArray(extractCharacterString()),
206
- mapArray((text) => ({
204
+ flattenArray(),
205
+ mapArray(combine(extractCharacterString(), extractUrl())),
206
+ mapArray(([text, url]) => ({
207
+ ...(url && { url }),
207
208
  text,
208
- type: 'other' as AccessConstraintType,
209
209
  }))
210
210
  )
211
- const getSecurityConstraints = pipe(
211
+ }
212
+
213
+ // from gmd:resourceConstraints
214
+ function extractSecurityConstraints(): ChainableFunction<
215
+ XmlElement,
216
+ Array<Constraint>
217
+ > {
218
+ return pipe(
212
219
  findNestedElements('gmd:MD_SecurityConstraints', 'gmd:useLimitation'),
213
- mapArray(extractCharacterString()),
214
- mapArray((text) => ({
220
+ flattenArray(),
221
+ mapArray(combine(extractCharacterString(), extractUrl())),
222
+ mapArray(([text, url]) => ({
223
+ ...(url && { url }),
215
224
  text,
216
- type: 'security' as AccessConstraintType,
217
225
  }))
218
226
  )
219
- return pipe(
220
- combine(getOtherConstraints, getSecurityConstraints),
221
- flattenArray()
222
- )
223
227
  }
224
228
 
225
229
  // from gmd:resourceConstraints
226
- function extractUseLimitations(): ChainableFunction<XmlElement, Array<string>> {
230
+ function extractOtherConstraints(): ChainableFunction<
231
+ XmlElement,
232
+ Array<Constraint>
233
+ > {
227
234
  return pipe(
228
- combine(
229
- findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'),
230
- findNestedElements('gmd:MD_LegalConstraints', 'gmd:useLimitation')
231
- ),
235
+ findNestedElements('gmd:MD_Constraints', 'gmd:useLimitation'),
232
236
  flattenArray(),
233
- mapArray(extractCharacterString())
237
+ mapArray(combine(extractCharacterString(), extractUrl())),
238
+ mapArray(([text, url]) => ({
239
+ ...(url && { url }),
240
+ text,
241
+ }))
234
242
  )
235
243
  }
236
244
 
237
245
  // from gmd:resourceConstraints
238
- function extractLicenses(): ChainableFunction<XmlElement, Array<License>> {
246
+ function extractLicenses(): ChainableFunction<XmlElement, Array<Constraint>> {
239
247
  return pipe(
240
248
  findChildrenElement('gmd:MD_LegalConstraints', false),
241
249
  filterArray(
@@ -246,15 +254,18 @@ function extractLicenses(): ChainableFunction<XmlElement, Array<License>> {
246
254
  )
247
255
  ),
248
256
  mapArray(
249
- pipe(
250
- findChildElement('gmd:otherConstraints'),
251
- combine(extractCharacterString(), extractUrl()),
252
- map(([text, url]) => ({
253
- ...(url && { url }),
254
- text,
255
- }))
257
+ combine(
258
+ findChildrenElement('gmd:otherConstraints'),
259
+ findChildrenElement('gmd:useLimitation')
256
260
  )
257
- )
261
+ ),
262
+ flattenArray(),
263
+ flattenArray(),
264
+ mapArray(combine(extractCharacterString(), extractUrl())),
265
+ mapArray(([text, url]) => ({
266
+ ...(url && { url }),
267
+ text,
268
+ }))
258
269
  )
259
270
  }
260
271
 
@@ -579,24 +590,32 @@ const getConstraints = pipe(
579
590
  findChildrenElement('gmd:resourceConstraints', false)
580
591
  )
581
592
 
582
- export function readAccessConstraints(rootEl: XmlElement): AccessConstraint[] {
593
+ export function readLegalConstraints(rootEl: XmlElement): Constraint[] {
583
594
  return pipe(
584
595
  getConstraints,
585
- mapArray(extractAccessConstraints()),
596
+ mapArray(extractLegalConstraints()),
586
597
  flattenArray(),
587
598
  flattenArray()
588
599
  )(rootEl)
589
600
  }
590
601
 
591
- export function readUseLimitations(rootEl: XmlElement): string[] {
602
+ export function readSecurityConstraints(rootEl: XmlElement): Constraint[] {
603
+ return pipe(
604
+ getConstraints,
605
+ mapArray(extractSecurityConstraints()),
606
+ flattenArray()
607
+ )(rootEl)
608
+ }
609
+
610
+ export function readOtherConstraints(rootEl: XmlElement): Constraint[] {
592
611
  return pipe(
593
612
  getConstraints,
594
- mapArray(extractUseLimitations()),
613
+ mapArray(extractOtherConstraints()),
595
614
  flattenArray()
596
615
  )(rootEl)
597
616
  }
598
617
 
599
- export function readLicenses(rootEl: XmlElement): License[] {
618
+ export function readLicenses(rootEl: XmlElement): Constraint[] {
600
619
  return pipe(
601
620
  getConstraints,
602
621
  mapArray(extractLicenses()),