geonetwork-ui 2.2.0 → 2.3.0-dev.139106e0

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 (387) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  3. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +242 -0
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +58 -62
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +75 -58
  22. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
  23. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  24. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  25. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  26. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  27. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  28. package/esm2022/libs/feature/editor/src/index.mjs +2 -2
  29. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +6 -2
  30. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.mjs +11 -0
  31. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.mjs +28 -0
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.mjs +11 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +45 -0
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +50 -0
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +11 -0
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +11 -0
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +107 -0
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +2 -0
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +10 -0
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +29 -0
  41. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +10 -10
  42. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +1 -1
  43. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
  44. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
  45. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +3 -3
  46. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
  47. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
  48. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
  49. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
  50. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +52 -25
  51. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -49
  52. package/esm2022/libs/feature/notifications/src/index.mjs +4 -0
  53. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +18 -0
  54. package/esm2022/libs/feature/notifications/src/lib/notification.model.mjs +2 -0
  55. package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +49 -0
  56. package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +29 -0
  57. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -2
  58. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +3 -3
  59. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +3 -3
  60. package/esm2022/libs/ui/elements/src/index.mjs +15 -15
  61. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +5 -5
  62. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +45 -0
  63. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  64. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +34 -0
  65. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  67. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -5
  68. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  69. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  70. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  71. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  72. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +10 -23
  73. package/esm2022/libs/ui/layout/src/index.mjs +6 -5
  74. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +18 -0
  75. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  76. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  77. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  78. package/esm2022/translations/de.json +20 -0
  79. package/esm2022/translations/en.json +20 -0
  80. package/esm2022/translations/es.json +20 -0
  81. package/esm2022/translations/fr.json +20 -0
  82. package/esm2022/translations/it.json +20 -0
  83. package/esm2022/translations/nl.json +20 -0
  84. package/esm2022/translations/pt.json +20 -0
  85. package/fesm2022/geonetwork-ui.mjs +4464 -3180
  86. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  87. package/index.d.ts +1 -0
  88. package/index.d.ts.map +1 -1
  89. package/index.ts +1 -0
  90. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  91. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  92. package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
  93. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
  94. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
  95. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
  96. package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
  97. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
  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/index.d.ts +4 -0
  100. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
  101. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
  102. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
  103. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
  104. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
  105. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
  106. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
  107. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
  108. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
  109. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
  110. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
  111. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
  112. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
  113. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +34 -6
  114. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  115. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
  116. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
  117. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
  118. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
  119. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
  120. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
  121. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +39 -3
  122. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  123. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
  124. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  125. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  126. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  127. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -4
  128. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  129. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  130. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  131. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  132. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  133. package/libs/feature/editor/src/index.d.ts +1 -1
  134. package/libs/feature/editor/src/index.d.ts.map +1 -1
  135. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +8 -5
  136. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  137. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.d.ts +1 -1
  138. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.d.ts.map +1 -0
  139. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.d.ts +1 -1
  140. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.d.ts.map +1 -0
  141. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.d.ts +1 -1
  142. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.d.ts.map +1 -0
  143. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +16 -0
  144. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -0
  145. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.d.ts +2 -2
  146. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -0
  147. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +1 -1
  148. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -0
  149. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts +1 -1
  150. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +1 -0
  151. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.d.ts +8 -3
  152. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -0
  153. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +1 -0
  154. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -0
  155. package/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.d.ts +3 -3
  156. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -0
  157. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +1 -1
  158. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  159. package/libs/feature/editor/src/lib/models/fields.model.d.ts +1 -1
  160. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  161. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  162. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
  163. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
  164. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
  165. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  166. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
  167. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  168. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
  169. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  170. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  171. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
  172. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  173. package/libs/feature/notifications/src/index.d.ts +4 -0
  174. package/libs/feature/notifications/src/index.d.ts.map +1 -0
  175. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +7 -0
  176. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +1 -0
  177. package/libs/feature/notifications/src/lib/notification.model.d.ts +7 -0
  178. package/libs/feature/notifications/src/lib/notification.model.d.ts.map +1 -0
  179. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts +12 -0
  180. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts.map +1 -0
  181. package/libs/feature/notifications/src/lib/notifications.service.d.ts +15 -0
  182. package/libs/feature/notifications/src/lib/notifications.service.d.ts.map +1 -0
  183. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  184. package/libs/ui/elements/src/index.d.ts +14 -14
  185. package/libs/ui/elements/src/index.d.ts.map +1 -1
  186. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +13 -0
  187. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -0
  188. package/libs/ui/elements/src/lib/notification/notification.component.d.ts +13 -0
  189. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -0
  190. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  191. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  192. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +20 -20
  193. package/libs/ui/inputs/src/index.d.ts +0 -1
  194. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  195. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  196. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  197. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  198. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  199. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  200. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +26 -33
  201. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  202. package/libs/ui/layout/src/index.d.ts +5 -4
  203. package/libs/ui/layout/src/index.d.ts.map +1 -1
  204. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +8 -0
  205. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -0
  206. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  207. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  208. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  209. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  210. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  211. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  212. package/package.json +2 -2
  213. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  214. package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
  215. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
  216. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +32 -5
  217. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +11 -4
  218. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +33 -7
  219. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
  220. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
  221. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +2 -2
  222. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +9 -3
  223. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
  224. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
  225. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
  226. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
  227. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
  228. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
  229. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +327 -0
  230. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +121 -82
  231. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
  232. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +175 -95
  233. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
  234. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  235. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -4
  236. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  237. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  238. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  239. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -1
  240. package/src/libs/feature/editor/src/index.ts +1 -1
  241. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +8 -1
  242. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  243. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  244. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.ts +1 -0
  245. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.ts +4 -1
  246. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.ts +1 -0
  247. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +20 -0
  248. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +44 -0
  249. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.ts +4 -1
  250. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +1 -0
  251. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.ts +1 -0
  252. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.html +28 -4
  253. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +121 -0
  254. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -0
  255. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.html +1 -0
  256. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.ts +4 -4
  257. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +9 -9
  258. package/src/libs/feature/editor/src/lib/models/fields.model.ts +1 -1
  259. package/src/libs/feature/editor/src/lib/services/editor.service.ts +27 -16
  260. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  261. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -1
  262. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
  263. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
  264. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
  265. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
  266. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
  267. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
  268. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
  269. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +60 -32
  270. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +17 -61
  271. package/src/libs/feature/notifications/src/index.ts +3 -0
  272. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +10 -0
  273. package/src/libs/feature/notifications/src/lib/notification.model.ts +6 -0
  274. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.css +0 -0
  275. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.html +17 -0
  276. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.ts +44 -0
  277. package/src/libs/feature/notifications/src/lib/notifications.service.ts +27 -0
  278. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -1
  279. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +3 -3
  280. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +5 -5
  281. package/src/libs/ui/elements/src/index.ts +14 -14
  282. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  283. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +0 -5
  284. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +0 -21
  285. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -14
  286. package/src/libs/ui/elements/src/lib/notification/notification.component.css +0 -0
  287. package/src/libs/ui/elements/src/lib/notification/notification.component.html +52 -0
  288. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +31 -0
  289. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +1 -1
  290. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  291. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
  292. package/src/libs/ui/inputs/src/index.ts +0 -1
  293. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  294. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  295. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  296. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  297. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  298. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -19
  299. package/src/libs/ui/layout/src/index.ts +5 -4
  300. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -0
  301. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +18 -0
  302. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +16 -0
  303. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  304. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  305. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  306. package/tailwind.base.css +36 -0
  307. package/translations/de.json +20 -0
  308. package/translations/en.json +20 -0
  309. package/translations/es.json +20 -0
  310. package/translations/fr.json +20 -0
  311. package/translations/it.json +20 -0
  312. package/translations/nl.json +20 -0
  313. package/translations/pt.json +20 -0
  314. package/translations/sk.json +20 -0
  315. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -52
  316. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +0 -14
  317. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
  318. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
  319. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
  320. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -130
  321. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
  322. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  323. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +0 -30
  324. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.mjs +0 -11
  325. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.mjs +0 -27
  326. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.mjs +0 -11
  327. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.mjs +0 -27
  328. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.mjs +0 -49
  329. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +0 -11
  330. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +0 -11
  331. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +0 -76
  332. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +0 -2
  333. package/esm2022/libs/ui/inputs/src/lib/form-field/index.mjs +0 -10
  334. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
  335. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +0 -1
  336. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
  337. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
  338. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
  339. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
  340. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
  341. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
  342. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  343. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  344. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +0 -1
  345. package/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.d.ts.map +0 -1
  346. package/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.d.ts.map +0 -1
  347. package/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.d.ts.map +0 -1
  348. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts +0 -11
  349. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts.map +0 -1
  350. package/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.d.ts.map +0 -1
  351. package/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +0 -1
  352. package/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +0 -1
  353. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +0 -1
  354. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +0 -1
  355. package/libs/ui/inputs/src/lib/form-field/index.d.ts.map +0 -1
  356. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -196
  357. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  358. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.html +0 -11
  359. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.ts +0 -15
  360. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +0 -80
  361. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.d.ts +0 -0
  362. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
  363. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
  364. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
  365. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.d.ts +0 -0
  366. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.d.ts +0 -0
  367. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.ts +0 -0
  368. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
  369. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
  370. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
  371. /package/src/libs/feature/editor/src/lib/{record-form/record-form.component.css → components/overview-upload/overview-upload.component.css} +0 -0
  372. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.css +0 -0
  373. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.html +0 -0
  374. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.css +0 -0
  375. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.html +0 -0
  376. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.css +0 -0
  377. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.html +0 -0
  378. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-rich/form-field-rich.component.css +0 -0
  379. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.css +0 -0
  380. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.html +0 -0
  381. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css +0 -0
  382. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +0 -0
  383. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css +0 -0
  384. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.html +0 -0
  385. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.css +0 -0
  386. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.ts +0 -0
  387. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.ts +0 -0
@@ -0,0 +1,513 @@
1
+ import {
2
+ CatalogRecord,
3
+ DatasetRecord,
4
+ Individual,
5
+ ServiceOnlineResource,
6
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
7
+ import {
8
+ addAttribute,
9
+ allChildrenElement,
10
+ appendChildren,
11
+ appendChildTree,
12
+ createChild,
13
+ createElement,
14
+ findChildElement,
15
+ findChildOrCreate,
16
+ findChildrenElement,
17
+ findNestedChildOrCreate,
18
+ findNestedElement,
19
+ findNestedElements,
20
+ readAttribute,
21
+ removeAllChildren,
22
+ removeChildren,
23
+ removeChildrenByName,
24
+ setTextContent,
25
+ XmlElement,
26
+ } from '../xml-utils'
27
+ import {
28
+ fallback,
29
+ filterArray,
30
+ getAtIndex,
31
+ map,
32
+ mapArray,
33
+ noop,
34
+ pipe,
35
+ } from '../function-utils'
36
+ import {
37
+ appendDistribution,
38
+ appendKeywords,
39
+ createDistributionInfo,
40
+ findOrCreateDistribution,
41
+ findOrCreateIdentification,
42
+ getProgressCode,
43
+ getRoleCode,
44
+ getServiceEndpointProtocol,
45
+ removeKeywords,
46
+ writeCharacterString,
47
+ writeDateTime,
48
+ writeLinkage,
49
+ } from '../iso19139/write-parts'
50
+ import { findIdentification } from '../iso19139/read-parts'
51
+ import { namePartsToFull } from '../iso19139/utils/individual-name'
52
+
53
+ export function writeUniqueIdentifier(
54
+ record: CatalogRecord,
55
+ rootEl: XmlElement
56
+ ) {
57
+ pipe(
58
+ findChildOrCreate('mdb:metadataIdentifier'),
59
+ findChildOrCreate('mcc:MD_Identifier'),
60
+ findChildOrCreate('mcc:code'),
61
+ writeCharacterString(record.uniqueIdentifier)
62
+ )(rootEl)
63
+ }
64
+
65
+ export function writeKind(record: CatalogRecord, rootEl: XmlElement) {
66
+ pipe(
67
+ findNestedChildOrCreate(
68
+ 'mdb:metadataScope',
69
+ 'mdb:MD_MetadataScope',
70
+ 'mdb:resourceScope',
71
+ 'mcc:MD_ScopeCode'
72
+ ),
73
+ addAttribute(
74
+ 'codeList',
75
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode'
76
+ ),
77
+ addAttribute('codeListValue', record.kind),
78
+ setTextContent(record.kind)
79
+ )(rootEl)
80
+ }
81
+
82
+ function removeRecordDate(type: 'revision' | 'creation' | 'publication') {
83
+ return removeChildren(
84
+ pipe(
85
+ findChildrenElement('mdb:dateInfo', false),
86
+ filterArray(
87
+ pipe(
88
+ findChildElement('cit:CI_DateTypeCode'),
89
+ readAttribute('codeListValue'),
90
+ map((value) => value === type)
91
+ )
92
+ )
93
+ )
94
+ )
95
+ }
96
+
97
+ function appendRecordDate(
98
+ date: Date,
99
+ type: 'revision' | 'creation' | 'publication'
100
+ ) {
101
+ return appendChildren(
102
+ pipe(
103
+ createElement('mdb:dateInfo'),
104
+ createChild('cit:CI_Date'),
105
+ appendChildren(
106
+ pipe(createElement('cit:date'), writeDateTime(date)),
107
+ pipe(
108
+ createElement('cit:dateType'),
109
+ createChild('cit:CI_DateTypeCode'),
110
+ addAttribute(
111
+ 'codeList',
112
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode'
113
+ ),
114
+ addAttribute('codeListValue', type),
115
+ setTextContent(type)
116
+ )
117
+ )
118
+ )
119
+ )
120
+ }
121
+
122
+ export function writeRecordUpdated(record: CatalogRecord, rootEl: XmlElement) {
123
+ removeRecordDate('revision')(rootEl)
124
+ appendRecordDate(record.recordUpdated, 'revision')(rootEl)
125
+ }
126
+
127
+ export function writeRecordCreated(record: CatalogRecord, rootEl: XmlElement) {
128
+ removeRecordDate('creation')(rootEl)
129
+ if (!('recordCreated' in record)) return
130
+ appendRecordDate(record.recordCreated, 'creation')(rootEl)
131
+ }
132
+
133
+ export function writeRecordPublished(
134
+ record: CatalogRecord,
135
+ rootEl: XmlElement
136
+ ) {
137
+ removeRecordDate('publication')(rootEl)
138
+ if (!('recordPublished' in record)) return
139
+ appendRecordDate(record.recordPublished, 'publication')(rootEl)
140
+ }
141
+
142
+ function removeResourceDate(type: 'revision' | 'creation' | 'publication') {
143
+ return pipe(
144
+ findIdentification(),
145
+ findNestedElement('mri:citation', 'cit:CI_Citation'),
146
+ removeChildren(
147
+ pipe(
148
+ findChildrenElement('cit:date', false),
149
+ filterArray(
150
+ pipe(
151
+ findChildElement('cit:CI_DateTypeCode'),
152
+ readAttribute('codeListValue'),
153
+ map((value) => value === type)
154
+ )
155
+ )
156
+ )
157
+ )
158
+ )
159
+ }
160
+
161
+ function appendResourceDate(
162
+ date: Date,
163
+ type: 'revision' | 'creation' | 'publication'
164
+ ) {
165
+ return pipe(
166
+ findIdentification(),
167
+ findNestedElement('mri:citation', 'cit:CI_Citation'),
168
+ appendChildren(
169
+ pipe(
170
+ createElement('cit:date'),
171
+ createChild('cit:CI_Date'),
172
+ appendChildren(
173
+ pipe(createElement('cit:date'), writeDateTime(date)),
174
+ pipe(
175
+ createElement('cit:dateType'),
176
+ createChild('cit:CI_DateTypeCode'),
177
+ addAttribute(
178
+ 'codeList',
179
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode'
180
+ ),
181
+ addAttribute('codeListValue', type),
182
+ setTextContent(type)
183
+ )
184
+ )
185
+ )
186
+ )
187
+ )
188
+ }
189
+
190
+ export function writeResourceUpdated(
191
+ record: CatalogRecord,
192
+ rootEl: XmlElement
193
+ ) {
194
+ removeResourceDate('revision')(rootEl)
195
+ if (!('resourceUpdated' in record)) return
196
+ appendResourceDate(record.resourceUpdated, 'revision')(rootEl)
197
+ }
198
+
199
+ export function writeResourceCreated(
200
+ record: CatalogRecord,
201
+ rootEl: XmlElement
202
+ ) {
203
+ removeResourceDate('creation')(rootEl)
204
+ if (!('resourceCreated' in record)) return
205
+ appendResourceDate(record.resourceCreated, 'creation')(rootEl)
206
+ }
207
+
208
+ export function writeResourcePublished(
209
+ record: CatalogRecord,
210
+ rootEl: XmlElement
211
+ ) {
212
+ removeResourceDate('publication')(rootEl)
213
+ if (!('resourcePublished' in record)) return
214
+ appendResourceDate(record.resourcePublished, 'publication')(rootEl)
215
+ }
216
+
217
+ export function writeOwnerOrganization(
218
+ record: CatalogRecord,
219
+ rootEl: XmlElement
220
+ ) {
221
+ // if no contact matches the owner org, create an empty one
222
+ const ownerContact: Individual = record.contacts.find(
223
+ (contact) => contact.organization.name === record.ownerOrganization.name
224
+ )
225
+ pipe(
226
+ findChildOrCreate('mdb:contact'),
227
+ removeAllChildren(),
228
+ appendResponsibleParty(
229
+ ownerContact
230
+ ? {
231
+ ...ownerContact,
232
+ // owner responsible party is always point of contact
233
+ role: 'point_of_contact',
234
+ }
235
+ : {
236
+ organization: record.ownerOrganization,
237
+ email: 'missing@missing.com',
238
+ role: 'point_of_contact',
239
+ }
240
+ )
241
+ )(rootEl)
242
+ }
243
+
244
+ export function appendResponsibleParty(contact: Individual) {
245
+ const fullName = namePartsToFull(contact.firstName, contact.lastName)
246
+
247
+ const createIndividual = pipe(
248
+ createElement('cit:individual'),
249
+ createChild('cit:CI_Individual'),
250
+ fullName
251
+ ? appendChildren(
252
+ pipe(createElement('cit:name'), writeCharacterString(fullName))
253
+ )
254
+ : noop,
255
+ contact.position
256
+ ? appendChildren(
257
+ pipe(
258
+ createElement('cit:positionName'),
259
+ writeCharacterString(contact.position)
260
+ )
261
+ )
262
+ : noop
263
+ )
264
+
265
+ const createContactInfo = pipe(
266
+ createElement('cit:contactInfo'),
267
+ createChild('cit:CI_Contact'),
268
+ appendChildren(
269
+ pipe(
270
+ createElement('cit:address'),
271
+ createChild('cit:CI_Address'),
272
+ appendChildren(
273
+ pipe(
274
+ createElement('cit:electronicMailAddress'),
275
+ writeCharacterString(contact.email)
276
+ )
277
+ ),
278
+ contact.address
279
+ ? appendChildren(
280
+ pipe(
281
+ createElement('cit:deliveryPoint'),
282
+ writeCharacterString(contact.address)
283
+ )
284
+ )
285
+ : noop
286
+ )
287
+ ),
288
+ contact.organization?.website
289
+ ? appendChildren(
290
+ pipe(
291
+ createElement('cit:onlineResource'),
292
+ createChild('cit:CI_OnlineResource'),
293
+ createChild('cit:linkage'),
294
+ writeCharacterString(contact.organization.website.toString())
295
+ )
296
+ )
297
+ : noop,
298
+ contact.phone
299
+ ? appendChildren(
300
+ pipe(
301
+ createElement('cit:phone'),
302
+ createChild('cit:CI_Telephone'),
303
+ createChild('cit:number'),
304
+ writeCharacterString(contact.phone)
305
+ )
306
+ )
307
+ : noop
308
+ )
309
+
310
+ const createRole = pipe(
311
+ createElement('cit:role'),
312
+ createChild('cit:CI_RoleCode'),
313
+ addAttribute(
314
+ 'codeList',
315
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode'
316
+ ),
317
+ addAttribute('codeListValue', getRoleCode(contact.role)),
318
+ setTextContent(getRoleCode(contact.role))
319
+ )
320
+
321
+ const createParty = pipe(
322
+ createElement('cit:party'),
323
+ createChild('cit:CI_Organisation'),
324
+ contact.organization?.name
325
+ ? appendChildren(
326
+ pipe(
327
+ createElement('cit:name'),
328
+ writeCharacterString(contact.organization?.name)
329
+ )
330
+ )
331
+ : noop,
332
+ appendChildren(createContactInfo, createIndividual)
333
+ )
334
+
335
+ return appendChildren(
336
+ pipe(
337
+ createElement('cit:CI_Responsibility'),
338
+ appendChildren(createRole, createParty)
339
+ )
340
+ )
341
+ }
342
+
343
+ export function writeContacts(record: CatalogRecord, rootEl: XmlElement) {
344
+ pipe(
345
+ removeChildrenByName('mdb:contact'),
346
+ appendChildren(
347
+ ...record.contacts.map((contact) =>
348
+ pipe(createElement('gmd:contact'), appendResponsibleParty(contact))
349
+ )
350
+ )
351
+ )(rootEl)
352
+ }
353
+
354
+ export function writeContactsForResource(
355
+ record: CatalogRecord,
356
+ rootEl: XmlElement
357
+ ) {
358
+ const withoutDistributors = record.contactsForResource.filter(
359
+ (c) => c.role !== 'distributor'
360
+ )
361
+ const distributors = record.contactsForResource.filter(
362
+ (c) => c.role === 'distributor'
363
+ )
364
+ pipe(
365
+ findOrCreateIdentification(),
366
+ removeChildrenByName('mri:pointOfContact'),
367
+ appendChildren(
368
+ ...withoutDistributors.map((contact) =>
369
+ pipe(
370
+ createElement('mri:pointOfContact'),
371
+ appendResponsibleParty(contact)
372
+ )
373
+ )
374
+ )
375
+ )(rootEl)
376
+ if (!distributors.length) return
377
+ pipe(
378
+ findOrCreateDistribution(),
379
+ removeChildrenByName('mrd:distributor'),
380
+ createChild('mrd:distributor'),
381
+ createChild('mrd:MD_Distributor'),
382
+ appendChildren(
383
+ ...distributors.map((contact) =>
384
+ pipe(
385
+ createElement('mrd:distributorContact'),
386
+ appendResponsibleParty(contact)
387
+ )
388
+ )
389
+ )
390
+ )(rootEl)
391
+ }
392
+
393
+ export function writeKeywords(record: CatalogRecord, rootEl: XmlElement) {
394
+ pipe(
395
+ findOrCreateIdentification(),
396
+ removeKeywords(),
397
+ appendKeywords(record.keywords)
398
+ )(rootEl)
399
+ }
400
+
401
+ export function writeLandingPage(record: DatasetRecord, rootEl: XmlElement) {
402
+ pipe(
403
+ findNestedChildOrCreate(
404
+ 'mdb:metadataLinkage',
405
+ 'cit:CI_OnlineResource',
406
+ 'cit:linkage'
407
+ ),
408
+ writeLinkage(record.landingPage)
409
+ )(rootEl)
410
+ }
411
+
412
+ export function writeLineage(record: DatasetRecord, rootEl: XmlElement) {
413
+ pipe(
414
+ findNestedChildOrCreate(
415
+ 'mdb:resourceLineage',
416
+ 'mrl:LI_Lineage',
417
+ 'mrl:statement'
418
+ ),
419
+ writeCharacterString(record.lineage)
420
+ )(rootEl)
421
+ }
422
+
423
+ export function writeStatus(record: DatasetRecord, rootEl: XmlElement) {
424
+ const progressCode = getProgressCode(record.status)
425
+ pipe(
426
+ findOrCreateIdentification(),
427
+ findNestedChildOrCreate('mri:status', 'mcc:MD_ProgressCode'),
428
+ addAttribute(
429
+ 'codeList',
430
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ProgressCode'
431
+ ),
432
+ addAttribute('codeListValue', progressCode),
433
+ setTextContent(progressCode)
434
+ )(rootEl)
435
+ }
436
+
437
+ export function writeSpatialRepresentation(
438
+ record: DatasetRecord,
439
+ rootEl: XmlElement
440
+ ) {
441
+ pipe(
442
+ findOrCreateIdentification(),
443
+ findNestedChildOrCreate(
444
+ 'mri:spatialRepresentationType',
445
+ 'mcc:MD_SpatialRepresentationTypeCode'
446
+ ),
447
+ addAttribute(
448
+ 'codeList',
449
+ 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode'
450
+ ),
451
+ addAttribute('codeListValue', record.spatialRepresentation),
452
+ setTextContent(record.spatialRepresentation)
453
+ )(rootEl)
454
+ }
455
+
456
+ // this will remove all transfer options and formats from distribution info
457
+ // and remove empty distribution info
458
+ function removeTransferOptions(rootEl: XmlElement) {
459
+ // remove transfer options & formats
460
+ pipe(
461
+ findNestedElements('mdb:distributionInfo', 'mrd:MD_Distribution'),
462
+ mapArray(
463
+ pipe(
464
+ removeChildren(findChildrenElement('mrd:distributionFormat', false)),
465
+ removeChildren(findChildrenElement('mrd:transferOptions', false))
466
+ )
467
+ )
468
+ )(rootEl)
469
+ // remove empty distributions
470
+ removeChildren(
471
+ pipe(
472
+ findChildrenElement('mdb:distributionInfo', false),
473
+ filterArray(
474
+ pipe(
475
+ findChildElement('mrd:MD_Distribution'),
476
+ allChildrenElement,
477
+ map((children) => children.length === 0)
478
+ )
479
+ )
480
+ )
481
+ )(rootEl)
482
+ }
483
+
484
+ function appendDistributionFormat(mimeType: string) {
485
+ return appendChildren(
486
+ pipe(
487
+ createElement('mrd:distributionFormat'),
488
+ createChild('mrd:MD_Format'),
489
+ createChild('mrd:formatSpecificationCitation'),
490
+ createChild('cit:CI_Citation'),
491
+ createChild('cit:title'),
492
+ writeCharacterString(mimeType)
493
+ )
494
+ )
495
+ }
496
+
497
+ export function writeDistributions(record: DatasetRecord, rootEl: XmlElement) {
498
+ removeTransferOptions(rootEl)
499
+
500
+ // for each distribution, either find an existing distribution info or create a new one
501
+ record.distributions.forEach((distribution, index) => {
502
+ pipe(
503
+ fallback(
504
+ pipe(
505
+ findNestedElements('gmd:distributionInfo', 'gmd:MD_Distribution'),
506
+ getAtIndex(index)
507
+ ),
508
+ appendChildTree(createDistributionInfo())
509
+ ),
510
+ appendDistribution(distribution, appendDistributionFormat)
511
+ )(rootEl)
512
+ })
513
+ }
@@ -0,0 +1 @@
1
+ export * from './iso19139.converter'