geonetwork-ui 2.4.0-dev.344a92f2 → 2.4.0-dev.3b6b95eb

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 (429) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +4 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/license.mjs +64 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/url.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +254 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/index.mjs +2 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.mjs +17 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +196 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +46 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +74 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.mjs +2 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.mjs +27 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +3 -3
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +8 -23
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +3 -3
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +27 -37
  17. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +35 -3
  18. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +78 -39
  19. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +34 -26
  20. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  22. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  23. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -4
  24. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  25. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +10 -7
  26. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +40 -50
  27. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  28. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +5 -5
  29. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +3 -3
  30. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
  31. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +72 -0
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +109 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -8
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +38 -60
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +10 -7
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +191 -0
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +5 -4
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +2 -2
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +10 -6
  40. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
  41. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +17 -3
  42. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +5 -5
  43. package/esm2022/libs/feature/map/src/index.mjs +2 -9
  44. package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
  45. package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +9 -15
  46. package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
  47. package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
  48. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +15 -15
  49. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +16 -10
  50. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +10 -8
  51. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -7
  52. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -6
  53. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
  54. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +4 -44
  55. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +43 -29
  56. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +17 -8
  57. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
  58. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +4 -168
  59. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +21 -17
  60. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +14 -8
  61. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -52
  62. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +1 -1
  63. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +11 -6
  64. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +7 -7
  65. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +1 -6
  66. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  67. package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +3 -3
  68. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +3 -3
  69. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +3 -3
  70. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +2 -2
  72. package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +6 -4
  73. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +5 -3
  74. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
  75. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +20 -4
  76. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  77. package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +3 -3
  78. package/esm2022/libs/ui/map/src/index.mjs +4 -3
  79. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +8 -6
  80. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
  81. package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
  82. package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
  83. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
  84. package/esm2022/libs/util/app-config/src/index.mjs +2 -1
  85. package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
  86. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  87. package/esm2022/libs/util/shared/src/lib/utils/no-duplicate-file-name.mjs +19 -0
  88. package/esm2022/translations/de.json +19 -0
  89. package/esm2022/translations/en.json +51 -32
  90. package/esm2022/translations/es.json +19 -0
  91. package/esm2022/translations/fr.json +82 -63
  92. package/esm2022/translations/it.json +19 -0
  93. package/esm2022/translations/nl.json +19 -0
  94. package/esm2022/translations/pt.json +19 -0
  95. package/fesm2022/geonetwork-ui.mjs +6871 -6029
  96. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  97. package/libs/api/metadata-converter/src/index.d.ts +3 -0
  98. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  99. package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
  100. package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
  101. package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
  102. package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
  103. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
  104. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
  105. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
  106. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
  107. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
  108. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
  109. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +20 -0
  110. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
  111. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +9 -0
  112. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
  113. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
  114. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
  115. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
  116. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
  117. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
  118. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
  119. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
  120. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  121. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +0 -1
  122. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  123. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -6
  125. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  126. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +58 -0
  127. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  128. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +12 -7
  129. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  130. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -15
  131. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  132. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -1
  133. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  134. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -3
  135. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  136. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +7 -0
  137. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  138. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
  139. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  140. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -9
  141. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  142. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
  143. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  144. package/libs/feature/editor/src/index.d.ts +1 -0
  145. package/libs/feature/editor/src/index.d.ts.map +1 -1
  146. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  147. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
  148. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
  149. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +16 -0
  150. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -0
  151. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts +38 -0
  152. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -0
  153. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -1
  154. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  155. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +6 -13
  156. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -1
  157. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +1 -1
  158. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  159. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +44 -0
  160. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -0
  161. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -1
  162. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  163. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  164. package/libs/feature/editor/src/lib/fields.config.d.ts +2 -0
  165. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  166. package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
  167. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  168. package/libs/feature/map/src/index.d.ts +1 -8
  169. package/libs/feature/map/src/index.d.ts.map +1 -1
  170. package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
  171. package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
  172. package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
  173. package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
  174. package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
  175. package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
  176. package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
  177. package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
  178. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +3 -5
  179. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  180. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  181. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +2 -2
  182. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  183. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +1 -1
  184. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  185. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +1 -1
  186. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  187. package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
  188. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  189. package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -18
  190. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  191. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
  192. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  193. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +4 -3
  194. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  195. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
  196. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
  197. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
  198. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  199. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +8 -5
  200. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  201. package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -11
  202. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  203. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -19
  204. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  205. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +4 -3
  206. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  207. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
  208. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
  209. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -10
  210. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  211. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  212. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  213. package/libs/ui/inputs/src/index.d.ts +1 -0
  214. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  215. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
  216. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
  217. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +1 -0
  218. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
  219. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -26
  220. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  221. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +6 -3
  222. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  223. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  224. package/libs/ui/map/src/index.d.ts +3 -2
  225. package/libs/ui/map/src/index.d.ts.map +1 -1
  226. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
  227. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  228. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
  229. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
  230. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
  231. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
  232. package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
  233. package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
  234. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +1 -1
  235. package/libs/util/app-config/src/index.d.ts +1 -0
  236. package/libs/util/app-config/src/index.d.ts.map +1 -1
  237. package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
  238. package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
  239. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  240. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  241. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts +2 -0
  242. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts.map +1 -0
  243. package/package.json +5 -3
  244. package/src/libs/api/metadata-converter/src/index.ts +3 -0
  245. package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
  246. package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
  247. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +378 -0
  248. package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
  249. package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
  250. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +370 -0
  251. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +95 -0
  252. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
  253. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
  254. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
  255. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +97 -0
  256. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
  257. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
  258. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
  259. package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +68 -0
  260. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
  261. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +272 -0
  262. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +110 -0
  263. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +85 -0
  264. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +73 -0
  265. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +1 -2
  266. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +7 -35
  267. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +1 -2
  268. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +85 -120
  269. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +37 -2
  270. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +132 -68
  271. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +57 -30
  272. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +1 -1
  273. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -2
  274. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
  275. package/src/libs/common/fixtures/src/index.ts +3 -0
  276. package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
  277. package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
  278. package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
  279. package/src/libs/common/fixtures/src/lib/user.fixtures.ts +13 -0
  280. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
  281. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
  282. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
  283. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
  284. package/src/libs/feature/editor/src/index.ts +1 -0
  285. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +11 -4
  286. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +1 -1
  287. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
  288. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
  289. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +31 -0
  290. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +82 -0
  291. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +40 -0
  292. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +170 -0
  293. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -1
  294. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +6 -8
  295. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -4
  296. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +41 -83
  297. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +20 -11
  298. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +9 -5
  299. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css +0 -0
  300. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +71 -0
  301. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +241 -0
  302. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +4 -3
  303. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +1 -1
  304. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +15 -0
  305. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +7 -3
  306. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
  307. package/src/libs/feature/editor/src/lib/fields.config.ts +18 -2
  308. package/src/libs/feature/editor/src/lib/services/editor.service.ts +7 -3
  309. package/src/libs/feature/map/src/index.ts +1 -8
  310. package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
  311. package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
  312. package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
  313. package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
  314. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +12 -15
  315. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +17 -11
  316. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +11 -12
  317. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +12 -10
  318. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +11 -9
  319. package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
  320. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -26
  321. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
  322. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
  323. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +15 -5
  324. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.css +0 -0
  325. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
  326. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
  327. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -229
  328. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +27 -18
  329. package/src/libs/feature/record/src/lib/feature-record.module.ts +11 -3
  330. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
  331. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +44 -71
  332. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +1 -1
  333. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +4 -1
  334. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +4 -2
  335. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
  336. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +0 -3
  337. package/src/libs/ui/inputs/src/index.ts +1 -0
  338. package/src/libs/ui/inputs/src/lib/badge/badge.component.html +1 -2
  339. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +2 -1
  340. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +2 -1
  341. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +8 -8
  342. package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
  343. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +1 -1
  344. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +3 -1
  345. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  346. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +5 -1
  347. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +25 -2
  348. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +1 -1
  349. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
  350. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +1 -1
  351. package/src/libs/ui/map/src/index.ts +3 -2
  352. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
  353. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
  354. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
  355. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
  356. package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
  357. package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
  358. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +18 -14
  359. package/src/libs/util/app-config/src/index.ts +1 -0
  360. package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
  361. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  362. package/src/libs/util/shared/src/lib/utils/no-duplicate-file-name.ts +23 -0
  363. package/tailwind.base.css +3 -2
  364. package/translations/de.json +19 -0
  365. package/translations/en.json +51 -32
  366. package/translations/es.json +19 -0
  367. package/translations/fr.json +82 -63
  368. package/translations/it.json +19 -0
  369. package/translations/nl.json +19 -0
  370. package/translations/pt.json +19 -0
  371. package/translations/sk.json +19 -0
  372. package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
  373. package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
  374. package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
  375. package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
  376. package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
  377. package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
  378. package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
  379. package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
  380. package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
  381. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
  382. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
  383. package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
  384. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
  385. package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
  386. package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
  387. package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
  388. package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
  389. package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
  390. package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
  391. package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
  392. package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
  393. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
  394. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
  395. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
  396. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
  397. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
  398. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
  399. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
  400. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
  401. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
  402. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
  403. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
  404. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
  405. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
  406. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
  407. package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
  408. package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
  409. package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
  410. package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
  411. package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
  412. package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
  413. package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
  414. package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
  415. package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
  416. package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
  417. package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
  418. package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
  419. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
  420. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
  421. package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -55
  422. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
  423. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
  424. package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
  425. package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
  426. /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/import-record/import-record.component.css} +0 -0
  427. /package/src/libs/feature/{map/src/lib/map-context/component/map-context.component.css → editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css} +0 -0
  428. /package/src/libs/{ui/map/src/lib/components/map/map.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.css} +0 -0
  429. /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
@@ -0,0 +1,73 @@
1
+ import { DatasetRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
2
+
3
+ export const VLAANDEREN_DATASET_RECORD: DatasetRecord = {
4
+ uniqueIdentifier: 'f3bd3e9b-cec1-38de-bb16-d063edace486',
5
+ title: 'Fish damage at pump stations',
6
+ abstract: `Fish damage at pump stations is a sampling event dataset published by the Research Institute for Nature and Forest (INBO). It contains 7319 occurrences, recorded during 120 events as well as lengths and weights of the fish that were recorded. Issues with the dataset can be reported at https://github.com/inbo/data-publication/issues
7
+ We have released this dataset to the public domain under a Creative Commons Zero waiver. We would appreciate it if you follow the INBO norms for data use (https://www.inbo.be/en/norms-data-use) when using the data. If you have any questions regarding this dataset, don't hesitate to contact us via the contact information provided in the metadata or via opendata@inbo.be.`,
8
+ contacts: [],
9
+ contactsForResource: [
10
+ {
11
+ firstName: 'David',
12
+ lastName: 'Buysse',
13
+ email: 'david.buysse@inbo.be',
14
+ role: 'point_of_contact',
15
+ },
16
+ ],
17
+ ownerOrganization: {
18
+ name: 'Research Institute for Nature and Forest (INBO)',
19
+ },
20
+ landingPage: new URL('https://ipt.inbo.be/resource?r=visschade-occurrences'),
21
+ onlineResources: [
22
+ {
23
+ description: 'Darwin Core Archive',
24
+ name: 'Darwin Core Archive of Fish damage at pump stations',
25
+ type: 'download',
26
+ url: new URL('https://ipt.inbo.be/archive.do?r=visschade-occurrences'),
27
+ },
28
+ ],
29
+ keywords: [
30
+ { label: 'fish', type: 'theme' },
31
+ { label: 'pumping station', type: 'theme' },
32
+ { label: 'migration', type: 'theme' },
33
+ { label: 'Samplingevent', type: 'theme' },
34
+ { label: 'mortality', type: 'theme' },
35
+ ],
36
+ kind: 'dataset',
37
+ languages: [],
38
+ legalConstraints: [],
39
+ licenses: [
40
+ {
41
+ text: 'Creative Commons CC-0',
42
+ url: new URL(
43
+ 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
44
+ ),
45
+ },
46
+ ],
47
+ otherConstraints: [],
48
+ overviews: [],
49
+ securityConstraints: [],
50
+ spatialExtents: [
51
+ {
52
+ geometry: {
53
+ type: 'Polygon',
54
+ coordinates: [
55
+ [
56
+ [3.768, 51.072],
57
+ [3.768, 51.31],
58
+ [4.202, 51.31],
59
+ [4.202, 51.072],
60
+ [3.768, 51.072],
61
+ ],
62
+ ],
63
+ },
64
+ },
65
+ ],
66
+ temporalExtents: [],
67
+ topics: ['biodiversity'],
68
+ lineage: '',
69
+ recordUpdated: new Date('2024-09-19T01:15:09.732Z'),
70
+ resourceUpdated: new Date('2021-04-14T11:15+02:00'),
71
+ status: 'completed',
72
+ updateFrequency: 'unknown',
73
+ }
@@ -22,7 +22,6 @@ import {
22
22
  writeLandingPage,
23
23
  writeLineage,
24
24
  writeOnlineResources,
25
- writeOwnerOrganization,
26
25
  writeRecordCreated,
27
26
  writeRecordPublished,
28
27
  writeRecordUpdated,
@@ -60,7 +59,7 @@ export class Iso191153Converter extends Iso19139Converter {
60
59
  this.writers['resourcePublished'] = writeResourcePublished
61
60
  this.writers['contacts'] = writeContacts
62
61
  this.writers['contactsForResource'] = writeContactsForResource
63
- this.writers['ownerOrganization'] = writeOwnerOrganization
62
+ this.writers['ownerOrganization'] = () => undefined // fixme: find a way to store this value properly
64
63
  this.writers['landingPage'] = writeLandingPage
65
64
  this.writers['lineage'] = writeLineage
66
65
  this.writers['onlineResources'] = writeOnlineResources
@@ -17,7 +17,6 @@ import {
17
17
  findNestedElement,
18
18
  findNestedElements,
19
19
  readAttribute,
20
- removeAllChildren,
21
20
  removeChildren,
22
21
  removeChildrenByName,
23
22
  setTextContent,
@@ -125,7 +124,7 @@ export function writeRecordUpdated(record: CatalogRecord, rootEl: XmlElement) {
125
124
 
126
125
  export function writeRecordCreated(record: CatalogRecord, rootEl: XmlElement) {
127
126
  removeRecordDate('creation')(rootEl)
128
- if (!('recordCreated' in record)) return
127
+ if (!record.recordCreated) return
129
128
  appendRecordDate(record.recordCreated, 'creation')(rootEl)
130
129
  }
131
130
 
@@ -134,14 +133,14 @@ export function writeRecordPublished(
134
133
  rootEl: XmlElement
135
134
  ) {
136
135
  removeRecordDate('publication')(rootEl)
137
- if (!('recordPublished' in record)) return
136
+ if (!record.recordPublished) return
138
137
  appendRecordDate(record.recordPublished, 'publication')(rootEl)
139
138
  }
140
139
 
141
140
  function removeResourceDate(type: 'revision' | 'creation' | 'publication') {
142
141
  return pipe(
143
- findIdentification(),
144
- findNestedElement('mri:citation', 'cit:CI_Citation'),
142
+ findOrCreateIdentification(),
143
+ findNestedChildOrCreate('mri:citation', 'cit:CI_Citation'),
145
144
  removeChildren(
146
145
  pipe(
147
146
  findChildrenElement('cit:date', false),
@@ -191,7 +190,7 @@ export function writeResourceUpdated(
191
190
  rootEl: XmlElement
192
191
  ) {
193
192
  removeResourceDate('revision')(rootEl)
194
- if (!('resourceUpdated' in record)) return
193
+ if (!record.resourceUpdated) return
195
194
  appendResourceDate(record.resourceUpdated, 'revision')(rootEl)
196
195
  }
197
196
 
@@ -200,7 +199,7 @@ export function writeResourceCreated(
200
199
  rootEl: XmlElement
201
200
  ) {
202
201
  removeResourceDate('creation')(rootEl)
203
- if (!('resourceCreated' in record)) return
202
+ if (!record.resourceCreated) return
204
203
  appendResourceDate(record.resourceCreated, 'creation')(rootEl)
205
204
  }
206
205
 
@@ -209,37 +208,10 @@ export function writeResourcePublished(
209
208
  rootEl: XmlElement
210
209
  ) {
211
210
  removeResourceDate('publication')(rootEl)
212
- if (!('resourcePublished' in record)) return
211
+ if (!record.resourcePublished) return
213
212
  appendResourceDate(record.resourcePublished, 'publication')(rootEl)
214
213
  }
215
214
 
216
- export function writeOwnerOrganization(
217
- record: CatalogRecord,
218
- rootEl: XmlElement
219
- ) {
220
- // if no contact matches the owner org, create an empty one
221
- const ownerContact: Individual = record.contacts.find(
222
- (contact) => contact.organization.name === record.ownerOrganization.name
223
- )
224
- pipe(
225
- findChildOrCreate('mdb:contact'),
226
- removeAllChildren(),
227
- appendResponsibleParty(
228
- ownerContact
229
- ? {
230
- ...ownerContact,
231
- // owner responsible party is always point of contact
232
- role: 'point_of_contact',
233
- }
234
- : {
235
- organization: record.ownerOrganization,
236
- email: 'missing@missing.com',
237
- role: 'point_of_contact',
238
- }
239
- )
240
- )(rootEl)
241
- }
242
-
243
215
  export function appendResponsibleParty(contact: Individual) {
244
216
  const fullName = namePartsToFull(contact.firstName, contact.lastName)
245
217
 
@@ -53,7 +53,6 @@ import {
53
53
  writeLineage,
54
54
  writeOnlineResources,
55
55
  writeOtherConstraints,
56
- writeOwnerOrganization,
57
56
  writeRecordUpdated,
58
57
  writeResourceCreated,
59
58
  writeResourcePublished,
@@ -113,7 +112,7 @@ export class Iso19139Converter extends BaseConverter<string> {
113
112
  > = {
114
113
  uniqueIdentifier: writeUniqueIdentifier,
115
114
  kind: writeKind,
116
- ownerOrganization: writeOwnerOrganization,
115
+ ownerOrganization: () => undefined, // fixme: find a way to store this value properly
117
116
  recordUpdated: writeRecordUpdated,
118
117
  recordCreated: () => undefined, // not supported in ISO19139
119
118
  recordPublished: () => undefined, // not supported in ISO19139
@@ -19,9 +19,7 @@ import format from 'date-fns/format'
19
19
  import { Geometry } from 'geojson'
20
20
  import {
21
21
  ChainableFunction,
22
- fallback,
23
22
  filterArray,
24
- getAtIndex,
25
23
  map,
26
24
  mapArray,
27
25
  noop,
@@ -33,10 +31,10 @@ import {
33
31
  appendChildren,
34
32
  createChild,
35
33
  createElement,
36
- findChildElement,
37
34
  findChildOrCreate,
38
35
  findChildrenElement,
39
36
  findNestedChildOrCreate,
37
+ findNestedElement,
40
38
  findNestedElements,
41
39
  readAttribute,
42
40
  removeAllChildren,
@@ -84,11 +82,9 @@ export function writeAnchor(
84
82
  export function writeDateTime(
85
83
  date: Date
86
84
  ): ChainableFunction<XmlElement, XmlElement> {
87
- return tap(
88
- pipe(
89
- findChildOrCreate('gco:DateTime'),
90
- setTextContent(format(date, "yyyy-MM-dd'T'HH:mm:ss"))
91
- )
85
+ return pipe(
86
+ findChildOrCreate('gco:DateTime'),
87
+ setTextContent(format(date, "yyyy-MM-dd'T'HH:mm:ss"))
92
88
  )
93
89
  }
94
90
 
@@ -242,7 +238,7 @@ export function getISODuration(updateFrequency: UpdateFrequencyCustom): string {
242
238
  return `P${duration.years}Y${duration.months}M${duration.days}D${hours}`
243
239
  }
244
240
 
245
- export function appendResponsibleParty(contact: Individual) {
241
+ function appendResponsibleParty(contact: Individual) {
246
242
  const fullName = namePartsToFull(contact.firstName, contact.lastName)
247
243
 
248
244
  const createAddress = pipe(
@@ -278,7 +274,7 @@ export function appendResponsibleParty(contact: Individual) {
278
274
  )
279
275
  : noop,
280
276
  appendChildren(createAddress),
281
- 'website' in contact.organization
277
+ contact.organization?.website
282
278
  ? appendChildren(
283
279
  pipe(
284
280
  createElement('gmd:onlineResource'),
@@ -308,11 +304,16 @@ export function appendResponsibleParty(contact: Individual) {
308
304
  )
309
305
  )
310
306
  : noop,
307
+
308
+ contact.organization?.name
309
+ ? appendChildren(
310
+ pipe(
311
+ createElement('gmd:organisationName'),
312
+ writeCharacterString(contact.organization.name)
313
+ )
314
+ )
315
+ : noop,
311
316
  appendChildren(
312
- pipe(
313
- createElement('gmd:organisationName'),
314
- writeCharacterString(contact.organization.name)
315
- ),
316
317
  createContact,
317
318
  pipe(
318
319
  createElement('gmd:role'),
@@ -328,50 +329,6 @@ export function appendResponsibleParty(contact: Individual) {
328
329
  )
329
330
  }
330
331
 
331
- export function updateCitationDate(
332
- date: Date,
333
- type: 'revision' | 'creation' | 'publication'
334
- ) {
335
- return pipe(
336
- findNestedElements('gmd:date', 'gmd:CI_Date'),
337
- filterArray(
338
- pipe(
339
- findChildElement('gmd:CI_DateTypeCode'),
340
- readAttribute('codeListValue'),
341
- map((value) => value === type)
342
- )
343
- ),
344
- getAtIndex(0),
345
- findChildElement('gmd:date'),
346
- removeAllChildren(),
347
- writeDateTime(date)
348
- )
349
- }
350
-
351
- export function appendCitationDate(
352
- date: Date,
353
- type: 'revision' | 'creation' | 'publication'
354
- ) {
355
- return appendChildren(
356
- pipe(
357
- createElement('gmd:date'),
358
- createChild('gmd:CI_Date'),
359
- appendChildren(
360
- pipe(createElement('gmd:date'), writeDateTime(date)),
361
- pipe(
362
- createElement('gmd:dateType'),
363
- createChild('gmd:CI_DateTypeCode'),
364
- addAttribute(
365
- 'codeList',
366
- 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'
367
- ),
368
- addAttribute('codeListValue', type)
369
- )
370
- )
371
- )
372
- )
373
- }
374
-
375
332
  export function removeKeywords() {
376
333
  return removeChildren(pipe(findNestedElements('gmd:descriptiveKeywords')))
377
334
  }
@@ -745,41 +702,6 @@ export function writeKind(record: CatalogRecord, rootEl: XmlElement) {
745
702
  )(rootEl)
746
703
  }
747
704
 
748
- export function writeOwnerOrganization(
749
- record: CatalogRecord,
750
- rootEl: XmlElement
751
- ) {
752
- // if no contact matches the owner org, create an empty one
753
- const ownerContact: Individual = record.contacts.find(
754
- (contact) => contact.organization.name === record.ownerOrganization.name
755
- )
756
- pipe(
757
- findChildOrCreate('gmd:contact'),
758
- removeAllChildren(),
759
- appendResponsibleParty(
760
- ownerContact
761
- ? {
762
- ...ownerContact,
763
- // owner responsible party is always point of contact
764
- role: 'point_of_contact',
765
- }
766
- : {
767
- organization: record.ownerOrganization,
768
- email: '',
769
- role: 'point_of_contact',
770
- }
771
- )
772
- )(rootEl)
773
- }
774
-
775
- export function writeRecordUpdated(record: CatalogRecord, rootEl: XmlElement) {
776
- pipe(
777
- findChildOrCreate('gmd:dateStamp'),
778
- removeAllChildren(),
779
- writeDateTime(record.recordUpdated)
780
- )(rootEl)
781
- }
782
-
783
705
  export function writeTitle(record: CatalogRecord, rootEl: XmlElement) {
784
706
  pipe(
785
707
  findOrCreateIdentification(),
@@ -939,49 +861,92 @@ export function writeUpdateFrequency(
939
861
  )(rootEl)
940
862
  }
941
863
 
942
- export function writeResourceCreated(
943
- record: DatasetRecord,
944
- rootEl: XmlElement
945
- ) {
946
- if (!('resourceCreated' in record)) return
864
+ export function writeRecordUpdated(record: CatalogRecord, rootEl: XmlElement) {
947
865
  pipe(
866
+ findChildOrCreate('gmd:dateStamp'),
867
+ removeAllChildren(),
868
+ writeDateTime(record.recordUpdated)
869
+ )(rootEl)
870
+ }
871
+
872
+ export function removeResourceDate(
873
+ type: 'revision' | 'creation' | 'publication'
874
+ ) {
875
+ return pipe(
948
876
  findOrCreateIdentification(),
949
877
  findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'),
950
- fallback(
951
- updateCitationDate(record.resourceCreated, 'creation'),
952
- appendCitationDate(record.resourceCreated, 'creation')
878
+ removeChildren(
879
+ pipe(
880
+ findNestedElements('gmd:date'),
881
+ filterArray(
882
+ pipe(
883
+ findNestedElement(
884
+ 'gmd:CI_Date',
885
+ 'gmd:dateType',
886
+ 'gmd:CI_DateTypeCode'
887
+ ),
888
+ readAttribute('codeListValue'),
889
+ map((value) => value === type)
890
+ )
891
+ )
892
+ )
953
893
  )
954
- )(rootEl)
894
+ )
955
895
  }
956
896
 
957
- export function writeResourceUpdated(
958
- record: DatasetRecord,
959
- rootEl: XmlElement
897
+ export function appendResourceDate(
898
+ date: Date,
899
+ type: 'revision' | 'creation' | 'publication'
960
900
  ) {
961
- if (!('resourceUpdated' in record)) return
962
- pipe(
901
+ return pipe(
963
902
  findOrCreateIdentification(),
964
903
  findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'),
965
- fallback(
966
- updateCitationDate(record.resourceUpdated, 'revision'),
967
- appendCitationDate(record.resourceUpdated, 'revision')
904
+ appendChildren(
905
+ pipe(
906
+ createElement('gmd:date'),
907
+ createChild('gmd:CI_Date'),
908
+ appendChildren(
909
+ pipe(createElement('gmd:date'), writeDateTime(date)),
910
+ pipe(
911
+ createElement('gmd:dateType'),
912
+ createChild('gmd:CI_DateTypeCode'),
913
+ addAttribute(
914
+ 'codeList',
915
+ 'http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode'
916
+ ),
917
+ addAttribute('codeListValue', type)
918
+ )
919
+ )
920
+ )
968
921
  )
969
- )(rootEl)
922
+ )
923
+ }
924
+
925
+ export function writeResourceCreated(
926
+ record: DatasetRecord,
927
+ rootEl: XmlElement
928
+ ) {
929
+ removeResourceDate('creation')(rootEl)
930
+ if (!record.resourceCreated) return
931
+ appendResourceDate(record.resourceCreated, 'creation')(rootEl)
932
+ }
933
+
934
+ export function writeResourceUpdated(
935
+ record: DatasetRecord,
936
+ rootEl: XmlElement
937
+ ) {
938
+ removeResourceDate('revision')(rootEl)
939
+ if (!record.resourceUpdated) return
940
+ appendResourceDate(record.resourceUpdated, 'revision')(rootEl)
970
941
  }
971
942
 
972
943
  export function writeResourcePublished(
973
944
  record: DatasetRecord,
974
945
  rootEl: XmlElement
975
946
  ) {
976
- if (!('resourcePublished' in record)) return
977
- pipe(
978
- findOrCreateIdentification(),
979
- findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'),
980
- fallback(
981
- updateCitationDate(record.resourcePublished, 'publication'),
982
- appendCitationDate(record.resourcePublished, 'publication')
983
- )
984
- )(rootEl)
947
+ removeResourceDate('publication')(rootEl)
948
+ if (!record.resourcePublished) return
949
+ appendResourceDate(record.resourcePublished, 'publication')(rootEl)
985
950
  }
986
951
 
987
952
  export function writeSpatialRepresentation(
@@ -36,7 +36,8 @@ export function createDocument(rootEl: XmlElement): XmlDocument {
36
36
  if (namespace === 'xmlns' || namespace === null) return
37
37
  if (rootEl.attributes[`xmlns:${namespace}`]) return
38
38
  if (!NAMESPACES[namespace]) {
39
- throw new Error(`No known URI for namespace ${namespace}`)
39
+ // the namespace is unknown but it might still be declared correctly: ignore it
40
+ return
40
41
  }
41
42
  rootEl.attributes[`xmlns:${namespace}`] = NAMESPACES[namespace]
42
43
  }
@@ -248,7 +249,7 @@ function extractNamespace(name: string): string | null {
248
249
  return colon > -1 ? name.substring(0, colon) : null
249
250
  }
250
251
 
251
- const NAMESPACES = {
252
+ export const NAMESPACES = {
252
253
  gmd: 'http://www.isotc211.org/2005/gmd',
253
254
  gco: 'http://www.isotc211.org/2005/gco',
254
255
  gfc: 'http://www.isotc211.org/2005/gfc',
@@ -283,6 +284,22 @@ const NAMESPACES = {
283
284
  cat: 'http://standards.iso.org/iso/19115/-3/cat/1.0',
284
285
  lan: 'http://standards.iso.org/iso/19115/-3/lan/1.0',
285
286
  mrc: 'http://standards.iso.org/iso/19115/-3/mrc/2.0',
287
+ rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
288
+ rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
289
+ foaf: 'http://xmlns.com/foaf/0.1/',
290
+ xsd: 'http://www.w3.org/2001/XMLSchema#',
291
+ dcat: 'http://www.w3.org/ns/dcat#',
292
+ dct: 'http://purl.org/dc/terms/',
293
+ skos: 'http://www.w3.org/2004/02/skos/core#',
294
+ schema_org: 'http://schema.org/',
295
+ spdx: 'https://spdx.org/rdf/terms/#',
296
+ adms: 'http://www.w3.org/ns/adms#',
297
+ dqv: 'http://www.w3.org/ns/dqv#',
298
+ owl: 'http://www.w3.org/2002/07/owl#',
299
+ vcard: 'http://www.w3.org/2006/vcard/ns#',
300
+ time: 'http://www.w3.org/2006/time#',
301
+ locn: 'http://www.w3.org/ns/locn#',
302
+ mdcat: 'https://data.vlaanderen.be/ns/metadata-dcat#',
286
303
  }
287
304
 
288
305
  /**
@@ -456,3 +473,21 @@ export function renameElements(
456
473
  doReplace(rootElement)
457
474
  return rootElement
458
475
  }
476
+
477
+ /**
478
+ * This function use the DOMParser to check if the given xmlString is a valid XML file or throw an error
479
+ * (Generated by chatGPT)
480
+ * @param xmlString
481
+ */
482
+ export function assertValidXml(xmlString: string): Document {
483
+ const parser = new DOMParser()
484
+ const xmlDoc = parser.parseFromString(xmlString, 'application/xml')
485
+ const parserError = xmlDoc.querySelector('parsererror')
486
+
487
+ if (parserError) {
488
+ console.error(parserError)
489
+ throw new Error('File is not a valid XML.')
490
+ }
491
+
492
+ return xmlDoc
493
+ }