geonetwork-ui 2.2.0-dev.2446b017 → 2.2.0-dev.260a7d93

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 (386) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +77 -52
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +5 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +16 -11
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -16
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +21 -18
  7. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  8. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  9. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  11. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  13. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  15. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  17. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  18. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  19. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  20. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  21. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
  22. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  23. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  24. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  25. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  26. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  27. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  28. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
  29. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  30. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  31. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +26 -3
  32. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  33. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  34. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
  35. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +11 -1
  36. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  37. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  38. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  39. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  40. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  41. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +7 -4
  42. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  43. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  44. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  45. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  46. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  47. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +3 -3
  48. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  49. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  50. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  51. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  52. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  53. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  54. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  55. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  56. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  57. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  58. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
  59. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  60. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +35 -16
  61. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +2 -3
  62. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  63. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  64. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  65. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
  66. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  67. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  68. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
  69. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  70. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +8 -5
  71. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  72. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  73. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  74. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  75. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +12 -7
  76. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  77. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  78. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  79. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  80. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  81. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  82. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  83. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  84. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  85. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  86. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  87. package/esm2022/libs/util/i18n/src/index.mjs +2 -2
  88. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  89. package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
  90. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  91. package/esm2022/translations/de.json +106 -89
  92. package/esm2022/translations/en.json +42 -25
  93. package/esm2022/translations/es.json +21 -4
  94. package/esm2022/translations/fr.json +26 -9
  95. package/esm2022/translations/it.json +33 -16
  96. package/esm2022/translations/nl.json +21 -4
  97. package/esm2022/translations/pt.json +21 -4
  98. package/fesm2022/geonetwork-ui.mjs +1408 -803
  99. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  100. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
  101. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  102. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  103. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  104. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  105. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -4
  107. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  108. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -2
  109. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  110. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  111. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  112. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  113. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  114. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  115. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  116. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  117. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  118. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  119. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +15 -15
  120. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  121. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  122. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  123. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  124. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  125. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  126. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  127. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  128. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  129. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  130. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  131. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  132. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  133. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  134. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  135. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  136. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  137. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
  138. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  139. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  140. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  141. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  142. package/libs/feature/map/src/index.d.ts +1 -0
  143. package/libs/feature/map/src/index.d.ts.map +1 -1
  144. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  145. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  146. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  147. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  148. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
  149. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
  150. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  151. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  152. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  153. package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
  154. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  155. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  156. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  157. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  158. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  159. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -0
  160. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  161. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  162. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  163. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  164. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  165. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  166. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  167. package/libs/feature/search/src/index.d.ts +3 -0
  168. package/libs/feature/search/src/index.d.ts.map +1 -1
  169. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +5 -4
  170. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  171. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  172. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  173. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  174. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  175. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  176. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  177. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  178. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  179. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  180. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  181. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  182. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  183. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  184. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  185. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  186. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  187. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  188. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  189. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  190. package/libs/ui/elements/src/index.d.ts +3 -0
  191. package/libs/ui/elements/src/index.d.ts.map +1 -1
  192. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  193. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  194. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  195. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
  196. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
  197. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +7 -2
  198. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  199. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  200. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  201. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  202. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  203. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  204. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
  205. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  206. package/libs/ui/inputs/src/index.d.ts +1 -0
  207. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  208. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  209. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  210. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  211. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  212. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  213. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  214. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  215. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -39
  216. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  217. package/libs/ui/layout/src/index.d.ts +2 -0
  218. package/libs/ui/layout/src/index.d.ts.map +1 -1
  219. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  220. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  221. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  222. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  223. package/libs/ui/search/src/index.d.ts +0 -1
  224. package/libs/ui/search/src/index.d.ts.map +1 -1
  225. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  226. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  227. package/libs/util/i18n/src/index.d.ts +1 -1
  228. package/libs/util/i18n/src/index.d.ts.map +1 -1
  229. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  230. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  231. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
  232. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
  233. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  234. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  235. package/package.json +4 -1
  236. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +6 -6
  237. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -3
  238. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +22 -4
  239. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
  240. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +112 -65
  241. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +4 -2
  242. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +19 -12
  243. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +62 -43
  244. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +91 -59
  245. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  246. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  247. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  248. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  249. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  250. package/src/libs/common/domain/src/lib/index.ts +2 -0
  251. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +17 -18
  252. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  253. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  254. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  255. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  256. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  257. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  258. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  259. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  260. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  261. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +6 -2
  262. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  263. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
  264. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  265. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  266. package/src/libs/feature/map/src/index.ts +1 -0
  267. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  268. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  269. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  270. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  271. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  272. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  273. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
  274. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
  275. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
  276. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  277. package/src/libs/feature/map/src/lib/feature-map.module.ts +14 -0
  278. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  279. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  280. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  281. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  282. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
  283. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +16 -0
  284. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  285. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  286. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  287. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  288. package/src/libs/feature/search/src/index.ts +3 -0
  289. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
  290. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  291. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  292. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  293. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  294. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  295. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  296. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  297. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  298. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  299. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  300. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  301. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  302. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  303. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  304. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  305. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  306. package/src/libs/ui/elements/src/index.ts +3 -0
  307. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  308. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  309. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  310. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  311. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  312. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  313. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  314. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
  315. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
  316. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +17 -0
  317. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
  318. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  319. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +104 -50
  320. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +31 -7
  321. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +1 -2
  322. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  323. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  324. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  325. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  326. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +7 -0
  327. package/src/libs/ui/inputs/src/index.ts +1 -0
  328. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  329. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  330. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
  331. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  332. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  333. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
  334. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  335. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  336. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  337. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  338. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +5 -2
  339. package/src/libs/ui/layout/src/index.ts +2 -0
  340. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  341. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  342. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  343. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  344. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  345. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  346. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  347. package/src/libs/ui/search/src/index.ts +0 -1
  348. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  349. package/src/libs/util/i18n/src/index.ts +1 -1
  350. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  351. package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
  352. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  353. package/translations/de.json +106 -89
  354. package/translations/en.json +42 -25
  355. package/translations/es.json +21 -4
  356. package/translations/fr.json +26 -9
  357. package/translations/it.json +33 -16
  358. package/translations/nl.json +21 -4
  359. package/translations/pt.json +21 -4
  360. package/translations/sk.json +21 -4
  361. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  362. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  363. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  364. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  365. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  366. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  367. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  368. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  369. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  370. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  371. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  372. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  373. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  374. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  375. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  376. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  377. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  378. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  379. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  380. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  381. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  382. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  383. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  384. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
  385. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  386. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -30,47 +30,59 @@ export declare const FORMATS: {
30
30
  readonly color: "#328556";
31
31
  readonly mimeTypes: readonly ["x-gis/x-shapefile"];
32
32
  };
33
+ readonly gml: {
34
+ readonly extensions: readonly ["gml"];
35
+ readonly priority: 5;
36
+ readonly color: "#c92bce";
37
+ readonly mimeTypes: readonly ["application/gml+xml", "text/xml; subtype=gml"];
38
+ };
33
39
  readonly kml: {
34
40
  readonly extensions: readonly ["kml", "kmz"];
35
- readonly priority: 5;
41
+ readonly priority: 6;
36
42
  readonly color: "#348009";
37
43
  readonly mimeTypes: readonly ["application/vnd.google-earth.kml+xml", "application/vnd.google-earth.kmz"];
38
44
  };
39
45
  readonly gpkg: {
40
46
  readonly extensions: readonly ["gpkg", "geopackage"];
41
- readonly priority: 6;
47
+ readonly priority: 7;
42
48
  readonly color: "#ea79ba";
43
49
  readonly mimeTypes: readonly ["application/geopackage+sqlite3"];
44
50
  };
45
51
  readonly zip: {
46
52
  readonly extensions: readonly ["zip", "tar.gz"];
47
- readonly priority: 7;
53
+ readonly priority: 8;
48
54
  readonly color: "#f2bb3a";
49
55
  readonly mimeTypes: readonly ["application/zip", "application/x-zip"];
50
56
  };
51
57
  readonly pdf: {
52
58
  readonly extensions: readonly ["pdf"];
53
- readonly priority: 8;
59
+ readonly priority: 9;
54
60
  readonly color: "#db544a";
55
61
  readonly mimeTypes: readonly ["application/pdf"];
56
62
  };
57
63
  readonly jpg: {
58
64
  readonly extensions: readonly ["jpg", "jpeg", "jfif", "pjpeg", "pjp"];
59
- readonly priority: 8;
65
+ readonly priority: 9;
60
66
  readonly color: "#673ab7";
61
67
  readonly mimeTypes: readonly ["image/jpg"];
62
68
  };
63
69
  readonly svg: {
64
70
  readonly extensions: readonly ["svg"];
65
- readonly priority: 9;
71
+ readonly priority: 10;
66
72
  readonly color: "#d98294";
67
73
  readonly mimeTypes: readonly ["image/svg+xml"];
68
74
  };
75
+ readonly dxf: {
76
+ readonly extensions: readonly ["dxf"];
77
+ readonly priority: 11;
78
+ readonly color: "#de630b";
79
+ readonly mimeTypes: readonly ["application/x-dxf", "image/x-dxf"];
80
+ };
69
81
  };
70
82
  export type FileFormat = keyof typeof FORMATS;
71
83
  export declare function getFormatPriority(linkFormat: FileFormat): number;
72
84
  export declare function getLinkPriority(link: DatasetDistribution): number;
73
- export declare function extensionToFormat(extension: string): FileFormat;
85
+ export declare function getFileFormatFromServiceOutput(serviceOutput: string): FileFormat | null;
74
86
  export declare function getFileFormat(link: DatasetDistribution): FileFormat;
75
87
  export declare function isFormatInQueryParam(link: DatasetDistribution, alias: string): boolean;
76
88
  export declare function mimeTypeToFormat(mimeType: string): FileFormat;
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAA;AAI/F,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+EV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAEjE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAO/D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,UAAU,CAcnE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA0B9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAA;AAI/F,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAEjE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,UAAU,CAcnE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA0B9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,9 @@
1
+ type FuzzyFilter = (input: string) => boolean;
2
+ /**
3
+ * This creates a filter function based on a pattern (typically a user-input
4
+ * search text).
5
+ * @param pattern
6
+ */
7
+ export declare function createFuzzyFilter(pattern: string): FuzzyFilter;
8
+ export {};
9
+ //# sourceMappingURL=fuzzy-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-filter.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/fuzzy-filter.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;AAkB7C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAQ9D"}
@@ -5,4 +5,5 @@ export * from './geojson';
5
5
  export * from './sort-by';
6
6
  export * from './url';
7
7
  export * from './event';
8
+ export * from './fuzzy-filter';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.2.0-dev.2446b017",
3
+ "version": "2.2.0-dev.260a7d93",
4
4
  "engines": {
5
5
  "node": ">=14.17.0"
6
6
  },
@@ -48,12 +48,14 @@
48
48
  "dependencies": {
49
49
  "@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
50
50
  "@camptocamp/ogc-client": "^0.4.0",
51
+ "@geospatial-sdk/geocoding": "^0.0.5-alpha.2",
51
52
  "@ltd/j-toml": "~1.35.2",
52
53
  "@messageformat/core": "^3.0.1",
53
54
  "@nx/angular": "16.6.0",
54
55
  "@rgrove/parse-xml": "~4.0.1",
55
56
  "alasql": "^3.1.0",
56
57
  "axios": "^1.6.0",
58
+ "basiclightbox": "^5.0.4",
57
59
  "chart.js": "^4.2.0",
58
60
  "chroma-js": "^2.1.2",
59
61
  "date-fns": "^2.29.3",
@@ -62,6 +64,7 @@
62
64
  "embla-carousel": "^8.0.0-rc14",
63
65
  "express": "^4.17.1",
64
66
  "geojson-validation": "^1.0.2",
67
+ "marked": "^11.1.1",
65
68
  "moment": "^2.29.4",
66
69
  "ng-table-virtual-scroll": "^1.4.1",
67
70
  "ngx-chips": "3.0.0",
@@ -93,9 +93,9 @@ Cette section contient des *caractères internationaux* (ainsi que des "caractè
93
93
  lineage: `This record was edited manually to test the conversion processes
94
94
 
95
95
  As such, **it is not very interesting at all.**`,
96
- useLimitations: [
97
- 'Should only be used as a testing tool',
98
- 'Might cause minor annoyance in people',
96
+ otherConstraints: [
97
+ { text: 'Should only be used as a testing tool' },
98
+ { text: 'Might cause minor annoyance in people' },
99
99
  ],
100
100
  licenses: [
101
101
  {
@@ -103,14 +103,14 @@ As such, **it is not very interesting at all.**`,
103
103
  url: new URL('https://data.rennesmetropole.fr/pages/licence/'),
104
104
  },
105
105
  ],
106
- accessConstraints: [
106
+ legalConstraints: [
107
107
  {
108
108
  text: "Dataset access isn't possible since it does not really exist",
109
- type: 'other',
110
109
  },
110
+ ],
111
+ securityConstraints: [
111
112
  {
112
113
  text: 'Contains sensitive information related to national defense',
113
- type: 'security',
114
114
  },
115
115
  ],
116
116
  spatialExtents: [],
@@ -59,14 +59,16 @@ Malgré l'attention portée à la création de ces données, il est rappelé que
59
59
  ],
60
60
  lineage: `Document d’urbanisme numérisé conformément aux prescriptions nationales du CNIG par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.
61
61
  Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur de 2019 et contrôlé par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.`,
62
- accessConstraints: [],
63
- useLimitations: ["Aucune condition ne s'applique", 'Licence Ouverte 2.0'],
64
62
  licenses: [
65
- // this does not make sense but there's no way to infer anything else from the metadata
66
63
  {
67
64
  text: "En dépit des efforts et diligences mis en œuvre pour en vérifier la fiabilité, le fournisseur n’est pas en mesure de garantir l’exactitude, la mise à jour, l’intégrité, l’exhaustivité des données et en particulier que les données sont exemptes d'erreurs, notamment de localisation, d’identification ou d’actualisation ou d’imprécisions. Les données ne sont pas fournies en vue d'une utilisation particulière et aucune garantie quant à leur aptitude à un usage particulier n'est apportée par le fournisseur. En conséquence, les utilisateurs utilisent les données sous leur responsabilité pleine et entière, à leurs risques et périls, sans recours possible contre le fournisseur dont la responsabilité ne saurait être engagée du fait d’un dommage résultant directement ou indirectement de l’utilisation de ces données. En particulier, il appartient aux utilisateurs d’apprécier, sous leur seule responsabilité : – l'opportunité d'utiliser les données ; – la compatibilité des fichiers avec leurs systèmes informatiques ; – l’adéquation des données à leurs besoins ; – qu’ils disposent de la compétence suffisante pour utiliser les données ; – l’opportunité d’utiliser la documentation ou les outils d’analyse fournis ou préconisés, en relation avec l’utilisation des données, le cas échéant. Le fournisseur n’est en aucune façon responsable des éléments extérieurs aux données et notamment des outils d’analyse, matériels, logiciels, réseaux..., utilisés pour consulter et/ou traiter les données, même s’il a préconisé ces éléments. L’utilisateur veille à vérifier que l’actualité des informations mises à disposition est compatible avec l’usage qu’il en fait.",
68
65
  },
66
+ { text: "Aucune condition ne s'applique" },
67
+ { text: 'Licence Ouverte 2.0' },
69
68
  ],
69
+ legalConstraints: [],
70
+ securityConstraints: [],
71
+ otherConstraints: [],
70
72
  // data quality?
71
73
  spatialExtents: [],
72
74
  temporalExtents: [],
@@ -138,13 +138,30 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
138
138
  ],
139
139
  lineage:
140
140
  'Digitalisiert nach den administrativen Einheiten der Schweiz, die im Anhang des Übereinkommens erscheinen.',
141
- accessConstraints: [],
142
- useLimitations: [],
143
141
  licenses: [
144
142
  {
145
143
  text: "Licence passée entre l'Office fédéral de l'environnement (OFEV), et le canton de Fribourg, représenté par la Coordination SIT (SITel)",
146
144
  },
147
145
  ],
146
+ legalConstraints: [
147
+ {
148
+ text: `1. Nutzungsbestimmung
149
+
150
+ Diese Geodaten unterliegen folgenden Nutzungsbeschränkungen:
151
+
152
+ - Sie dürfen nicht vervielfältigt, verbreitet und/oder weiter zugänglich gemacht werden.
153
+
154
+ - Sie dürfen nicht kommerziell genutzt werden.
155
+
156
+ - Sie dürfen ausschliesslich zu vorgegebenen Zwecken genutzt werden.
157
+
158
+ - Sie dürfen ausschliesslich zu dem unter 4. beschriebenen Zweck genutzt werden.
159
+
160
+ Die Quelle ist zu bezeichnen: „Quelle: Stadt Zürich“.`,
161
+ },
162
+ ],
163
+ securityConstraints: [],
164
+ otherConstraints: [],
148
165
  // data quality?
149
166
  spatialExtents: [],
150
167
  temporalExtents: [],
@@ -216,7 +233,8 @@ export const GEOCAT_CH_SERVICE_RECORD: ServiceRecord = {
216
233
  'https://services.geo.sg.ch/wss/service/SG00170_WMS/guest?request=GetCapabilities&service=WMS',
217
234
  },
218
235
  ],
219
- accessConstraints: [],
220
- useLimitations: [],
221
236
  licenses: [],
237
+ legalConstraints: [],
238
+ securityConstraints: [],
239
+ otherConstraints: [],
222
240
  }
@@ -41,6 +41,9 @@ export const toDate = (field) => new Date(field)
41
41
  export const getFirstValue = (field) =>
42
42
  Array.isArray(field) ? field[0] : field
43
43
 
44
+ export const getArrayItem = (field, index) =>
45
+ Array.isArray(field) && field[index] !== undefined ? field[index] : null
46
+
44
47
  export const getAsArray = (field) =>
45
48
  Array.isArray(field) ? field : field !== null ? [field] : []
46
49
 
@@ -1,4 +1,5 @@
1
1
  import {
2
+ getArrayItem,
2
3
  getAsArray,
3
4
  getAsUrl,
4
5
  getFirstValue,
@@ -16,12 +17,13 @@ import { Injectable } from '@angular/core'
16
17
  import { getStatusFromStatusCode } from '../iso19139/codelists/status.mapper'
17
18
  import { getUpdateFrequencyFromFrequencyCode } from '../iso19139/codelists/update-frequency.mapper'
18
19
  import {
19
- AccessConstraintType,
20
20
  CatalogRecord,
21
+ Constraint,
21
22
  DatasetDistribution,
22
23
  DatasetDistributionType,
23
24
  DatasetDownloadDistribution,
24
25
  DatasetServiceDistribution,
26
+ DatasetSpatialExtent,
25
27
  OnlineLinkResource,
26
28
  } from '../../../../../../libs/common/domain/src/lib/model/record'
27
29
  import { matchProtocol } from '../common/distribution.mapper'
@@ -183,37 +185,41 @@ export class Gn4FieldMapper {
183
185
  ],
184
186
  }),
185
187
  MD_ConstraintsUseLimitationObject: (output, source) =>
186
- this.constraintField('MD_ConstraintsUseLimitationObject', output, source),
188
+ this.constraintField(
189
+ 'other',
190
+ output,
191
+ getAsArray(selectField(source, 'MD_ConstraintsUseLimitationObject'))
192
+ ),
187
193
  MD_LegalConstraintsUseLimitationObject: (output, source) =>
188
194
  this.constraintField(
189
- 'MD_LegalConstraintsUseLimitationObject',
195
+ 'legal',
190
196
  output,
191
- source
197
+ getAsArray(
198
+ selectField(source, 'MD_LegalConstraintsUseLimitationObject')
199
+ )
192
200
  ),
193
201
  MD_LegalConstraintsOtherConstraintsObject: (output, source) =>
194
202
  this.constraintField(
195
- 'MD_LegalConstraintsOtherConstraintsObject',
203
+ 'legal',
196
204
  output,
197
- source
205
+ getAsArray(
206
+ selectField(source, 'MD_LegalConstraintsOtherConstraintsObject')
207
+ )
198
208
  ),
199
209
  MD_SecurityConstraintsUseLimitationObject: (output, source) =>
200
210
  this.constraintField(
201
- 'MD_SecurityConstraintsUseLimitationObject',
211
+ 'security',
202
212
  output,
203
- source
213
+ getAsArray(
214
+ selectField(source, 'MD_SecurityConstraintsUseLimitationObject')
215
+ )
216
+ ),
217
+ licenseObject: (output, source) =>
218
+ this.constraintField(
219
+ 'license',
220
+ output,
221
+ getAsArray(selectField(source, 'licenseObject'))
204
222
  ),
205
- licenseObject: (output, source) => ({
206
- ...output,
207
- licenses: getAsArray(
208
- selectField<SourceWithUnknownProps[]>(source, 'licenseObject')
209
- ).map((license) => {
210
- const link = getAsUrl(selectField(license, 'link'))
211
- return {
212
- text: selectTranslatedValue<string>(license, this.lang3),
213
- ...(link ? { link } : {}),
214
- }
215
- }),
216
- }),
217
223
  lineageObject: (output, source) => ({
218
224
  ...output,
219
225
  lineage: selectTranslatedField(source, 'lineageObject', this.lang3),
@@ -258,57 +264,98 @@ export class Gn4FieldMapper {
258
264
  kind,
259
265
  }
260
266
  },
267
+ geom: (output, source) => {
268
+ const geoms = getAsArray(selectField(source, 'geom'))
269
+ const shapes = getAsArray(selectField(source, 'shape'))
270
+ const extentDescriptions = getAsArray(
271
+ selectField(source, 'extentDescriptionObject')
272
+ )
273
+ const spatialExtents = getAsArray(selectField(source, 'spatialExtents'))
274
+ return {
275
+ ...output,
276
+ spatialExtents: [
277
+ ...spatialExtents,
278
+ ...geoms.map((geom, index) => {
279
+ const description = selectTranslatedValue(
280
+ getArrayItem(extentDescriptions, index),
281
+ this.lang3
282
+ )
283
+ const geometry = shapes[index] ?? geom
284
+ return {
285
+ ...(description !== null ? { description } : null),
286
+ geometry,
287
+ } as DatasetSpatialExtent
288
+ }),
289
+ ],
290
+ }
291
+ },
292
+ resourceTemporalDateRange: (output, source) => {
293
+ const ranges = getAsArray(
294
+ selectField(source, 'resourceTemporalDateRange')
295
+ )
296
+ return {
297
+ ...output,
298
+ temporalExtents: ranges.map((range) => {
299
+ const start = selectField(range, 'gte')
300
+ const end = selectField(range, 'lte')
301
+ return {
302
+ ...(start !== null ? { start: toDate(start) } : null),
303
+ ...(end !== null ? { end: toDate(end) } : null),
304
+ }
305
+ }),
306
+ }
307
+ },
261
308
  }
262
309
 
263
310
  private genericField = (output) => output
264
311
 
265
- private constraintField = (fieldName: string, output, source) => ({
266
- ...output,
267
- ...(fieldName.endsWith('UseLimitationObject')
268
- ? {
269
- legalConstraints:
270
- fieldName === 'MD_LegalConstraintsUseLimitationObject'
271
- ? [
272
- ...(output.legalConstraints || []),
273
- ...selectField<SourceWithUnknownProps[]>(
274
- source,
275
- fieldName
276
- ).map((source: SourceWithUnknownProps) =>
277
- selectTranslatedValue(source, this.lang3)
278
- ),
279
- ]
280
- : output.legalConstraints || [],
281
- useLimitations: [
282
- ...(output.useLimitations || []),
283
- ...selectField<SourceWithUnknownProps[]>(source, fieldName).map(
284
- (source: SourceWithUnknownProps) =>
285
- selectTranslatedValue(source, this.lang3)
286
- ),
287
- ],
312
+ private constraintField = (
313
+ type: 'license' | 'legal' | 'security' | 'other',
314
+ output: Partial<CatalogRecord>,
315
+ constraintArray: SourceWithUnknownProps[]
316
+ ) => {
317
+ let outputField: string
318
+ switch (type) {
319
+ case 'license':
320
+ outputField = 'licenses'
321
+ break
322
+ case 'legal':
323
+ outputField = 'legalConstraints'
324
+ break
325
+ case 'security':
326
+ outputField = 'securityConstraints'
327
+ break
328
+ case 'other':
329
+ outputField = 'otherConstraints'
330
+ break
331
+ }
332
+ const outputArray: Constraint[] =
333
+ outputField in output ? output[outputField] : []
334
+ outputArray.push(
335
+ ...constraintArray.map((item) => {
336
+ const text = selectTranslatedValue(item, this.lang3) as string
337
+ const url = getAsUrl(selectField(item, 'link'))
338
+ return {
339
+ text,
340
+ ...(url ? { url } : {}),
288
341
  }
289
- : {
290
- accessConstraints: [
291
- ...(output.accessConstraints || []),
292
- ...selectField<SourceWithUnknownProps[]>(source, fieldName).map(
293
- (field) => ({
294
- text: selectTranslatedValue(field, this.lang3),
295
- type: this.getConstraintsType(fieldName),
296
- })
297
- ),
298
- ],
299
- }),
300
- })
301
-
302
- private getConstraintsType(indexField: string): AccessConstraintType {
303
- switch (indexField) {
304
- case 'MD_LegalConstraintsUseLimitationObject':
305
- return 'legal'
306
- case 'MD_SecurityConstraintsUseLimitationObject':
307
- return 'security'
308
- case 'MD_ConstraintsUseLimitationObject':
309
- default:
310
- return 'other'
342
+ })
343
+ )
344
+ const result = {
345
+ ...output,
346
+ [outputField]: outputArray,
347
+ }
348
+ // avoid legal constraints being duplicates of licenses
349
+ if (
350
+ 'legalConstraints' in result &&
351
+ (type === 'legal' || type === 'license')
352
+ ) {
353
+ result.legalConstraints = result.legalConstraints.filter(
354
+ (constraint) =>
355
+ !output.licenses?.some((license) => license.text === constraint.text)
356
+ )
311
357
  }
358
+ return result
312
359
  }
313
360
 
314
361
  getMappingFn(fieldName: string) {
@@ -26,14 +26,16 @@ export class Gn4MetadataMapper extends MetadataBaseMapper<Gn4Record> {
26
26
  recordUpdated: null,
27
27
  ownerOrganization: null,
28
28
  licenses: [],
29
+ legalConstraints: [],
30
+ securityConstraints: [],
31
+ otherConstraints: [],
29
32
  contacts: [],
30
33
  contactsForResource: [],
31
- accessConstraints: [],
32
34
  keywords: [],
33
35
  themes: [],
34
- useLimitations: [],
35
36
  spatialExtents: [],
36
37
  temporalExtents: [],
38
+ overviews: [],
37
39
  }
38
40
  const record: CatalogRecord = Object.keys(_source).reduce(
39
41
  (prev, fieldName) =>
@@ -12,7 +12,6 @@ import {
12
12
  } from '../xml-utils'
13
13
  import {
14
14
  writeAbstract,
15
- writeAccessConstraints,
16
15
  writeContacts,
17
16
  writeDatasetCreated,
18
17
  writeDatasetUpdated,
@@ -20,22 +19,23 @@ import {
20
19
  writeGraphicOverviews,
21
20
  writeKeywords,
22
21
  writeKind,
22
+ writeLegalConstraints,
23
23
  writeLicenses,
24
24
  writeLineage,
25
25
  writeOnlineResources,
26
+ writeOtherConstraints,
26
27
  writeOwnerOrganization,
27
28
  writeRecordUpdated,
29
+ writeSecurityConstraints,
28
30
  writeSpatialRepresentation,
29
31
  writeStatus,
30
32
  writeThemes,
31
33
  writeTitle,
32
34
  writeUniqueIdentifier,
33
35
  writeUpdateFrequency,
34
- writeUseLimitations,
35
36
  } from './write-parts'
36
37
  import {
37
38
  readAbstract,
38
- readAccessConstraints,
39
39
  readContacts,
40
40
  readDatasetCreated,
41
41
  readDatasetUpdated,
@@ -43,12 +43,15 @@ import {
43
43
  readIsoTopics,
44
44
  readKeywords,
45
45
  readKind,
46
+ readLegalConstraints,
46
47
  readLicenses,
47
48
  readLineage,
48
49
  readOnlineResources,
50
+ readOtherConstraints,
49
51
  readOverviews,
50
52
  readOwnerOrganization,
51
53
  readRecordUpdated,
54
+ readSecurityConstraints,
52
55
  readSpatialExtents,
53
56
  readSpatialRepresentation,
54
57
  readStatus,
@@ -57,7 +60,6 @@ import {
57
60
  readTitle,
58
61
  readUniqueIdentifier,
59
62
  readUpdateFrequency,
60
- readUseLimitations,
61
63
  } from './read-parts'
62
64
  import { isEqual } from '../convert-utils'
63
65
 
@@ -75,8 +77,9 @@ export function toModel(xml: string): CatalogRecord {
75
77
  const recordCreated = recordUpdated
76
78
  const keywords = readKeywords(rootEl)
77
79
  const themes = readThemes(rootEl)
78
- const accessConstraints = readAccessConstraints(rootEl)
79
- const useLimitations = readUseLimitations(rootEl)
80
+ const legalConstraints = readLegalConstraints(rootEl)
81
+ const otherConstraints = readOtherConstraints(rootEl)
82
+ const securityConstraints = readSecurityConstraints(rootEl)
80
83
  const licenses = readLicenses(rootEl)
81
84
  const overviews = readOverviews(rootEl)
82
85
 
@@ -107,9 +110,10 @@ export function toModel(xml: string): CatalogRecord {
107
110
  contactsForResource: [], // FIXME: is that really useful??
108
111
  keywords,
109
112
  themes,
110
- accessConstraints,
111
- useLimitations,
112
113
  licenses,
114
+ legalConstraints,
115
+ securityConstraints,
116
+ otherConstraints,
113
117
  ...(datasetCreated && { datasetCreated }),
114
118
  ...(datasetUpdated && { datasetUpdated }),
115
119
  lineage,
@@ -133,9 +137,10 @@ export function toModel(xml: string): CatalogRecord {
133
137
  contacts,
134
138
  keywords,
135
139
  themes,
136
- accessConstraints,
137
- useLimitations,
138
140
  licenses,
141
+ legalConstraints,
142
+ securityConstraints,
143
+ otherConstraints,
139
144
  overviews,
140
145
  onlineResources,
141
146
  } as ServiceRecord
@@ -164,9 +169,11 @@ export function toXml(record: CatalogRecord, originalXml?: string): string {
164
169
  fieldChanged('contacts') && writeContacts(record, rootEl)
165
170
  fieldChanged('keywords') && writeKeywords(record, rootEl)
166
171
  fieldChanged('themes') && writeThemes(record, rootEl)
167
- fieldChanged('accessConstraints') && writeAccessConstraints(record, rootEl)
172
+ fieldChanged('legalConstraints') && writeLegalConstraints(record, rootEl)
173
+ fieldChanged('securityConstraints') &&
174
+ writeSecurityConstraints(record, rootEl)
168
175
  fieldChanged('licenses') && writeLicenses(record, rootEl)
169
- fieldChanged('useLimitations') && writeUseLimitations(record, rootEl)
176
+ fieldChanged('otherConstraints') && writeOtherConstraints(record, rootEl)
170
177
 
171
178
  if (record.kind === 'dataset') {
172
179
  writeStatus(record, rootEl)