geonetwork-ui 2.2.0 → 2.3.0-dev.179fba83

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 (218) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  2. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +7 -3
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +242 -0
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +58 -62
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +75 -58
  21. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
  22. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  23. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  24. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  25. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  26. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  27. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
  28. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
  29. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
  30. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
  31. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
  32. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
  33. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +52 -25
  34. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -49
  35. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -2
  36. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  37. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  38. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  39. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -5
  40. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  41. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  42. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  43. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +10 -4
  44. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  45. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  46. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  47. package/esm2022/translations/de.json +12 -0
  48. package/esm2022/translations/en.json +12 -0
  49. package/esm2022/translations/es.json +12 -0
  50. package/esm2022/translations/fr.json +12 -0
  51. package/esm2022/translations/it.json +12 -0
  52. package/esm2022/translations/nl.json +12 -0
  53. package/esm2022/translations/pt.json +12 -0
  54. package/fesm2022/geonetwork-ui.mjs +3910 -2866
  55. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  56. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  57. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  58. package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
  59. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
  60. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
  61. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
  62. package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
  63. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
  64. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  65. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +4 -0
  66. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
  67. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
  68. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
  69. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
  70. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
  71. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
  72. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
  73. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
  74. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
  75. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
  76. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
  77. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
  78. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
  79. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +34 -6
  80. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  81. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
  82. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
  83. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
  84. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
  85. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
  86. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
  87. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +39 -3
  88. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  89. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
  90. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  91. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  92. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  93. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -4
  94. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  95. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  96. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  97. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  98. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  99. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  100. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  101. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
  102. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
  103. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
  104. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  105. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
  106. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  107. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
  108. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  109. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  110. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
  111. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  112. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  113. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  114. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  115. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +20 -20
  116. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  117. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  118. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  119. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  120. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  121. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
  122. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  123. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  124. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  125. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  126. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  127. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  128. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  129. package/package.json +2 -2
  130. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  131. package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
  132. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
  133. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +32 -5
  134. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +11 -4
  135. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +33 -7
  136. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
  137. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
  138. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +2 -2
  139. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
  140. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
  141. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
  142. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
  143. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
  144. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
  145. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
  146. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +327 -0
  147. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +121 -82
  148. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
  149. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +175 -95
  150. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
  151. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  152. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -4
  153. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  154. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  155. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  156. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -1
  157. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.css +0 -0
  158. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  159. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  160. package/src/libs/feature/editor/src/lib/services/editor.service.ts +27 -16
  161. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  162. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
  163. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
  164. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
  165. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
  166. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
  167. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
  168. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
  169. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +60 -32
  170. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +17 -61
  171. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -1
  172. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  173. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
  174. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  175. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  176. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  177. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  178. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  179. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  180. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  181. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  182. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  183. package/translations/de.json +12 -0
  184. package/translations/en.json +12 -0
  185. package/translations/es.json +12 -0
  186. package/translations/fr.json +12 -0
  187. package/translations/it.json +12 -0
  188. package/translations/nl.json +12 -0
  189. package/translations/pt.json +12 -0
  190. package/translations/sk.json +12 -0
  191. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -52
  192. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +0 -14
  193. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
  194. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
  195. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
  196. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -130
  197. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
  198. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  199. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
  200. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +0 -1
  201. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
  202. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
  203. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
  204. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
  205. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
  206. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
  207. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  208. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  209. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -196
  210. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  211. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.d.ts +0 -0
  212. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
  213. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
  214. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
  215. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.ts +0 -0
  216. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
  217. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
  218. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
@@ -0,0 +1,193 @@
1
+ import { CommonModule } from '@angular/common'
2
+ import { HttpClient } from '@angular/common/http'
3
+ import {
4
+ ChangeDetectionStrategy,
5
+ ChangeDetectorRef,
6
+ Component,
7
+ EventEmitter,
8
+ Input,
9
+ Output,
10
+ } from '@angular/core'
11
+ import { MatIconModule } from '@angular/material/icon'
12
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'
13
+ import { downgradeImage, megabytesToBytes } from '../../../../../../libs/util/shared/src'
14
+ import { firstValueFrom } from 'rxjs'
15
+ import { ButtonComponent } from '../button/button.component'
16
+ import { FilesDropDirective } from '../files-drop/files-drop.directive'
17
+ import { TranslateModule } from '@ngx-translate/core'
18
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker'
19
+
20
+ @Component({
21
+ selector: 'gn-ui-image-input',
22
+ templateUrl: './image-input.component.html',
23
+ styleUrls: ['./image-input.component.css'],
24
+ changeDetection: ChangeDetectionStrategy.OnPush,
25
+ standalone: true,
26
+ imports: [
27
+ CommonModule,
28
+ ButtonComponent,
29
+ MatIconModule,
30
+ FilesDropDirective,
31
+ MatProgressSpinnerModule,
32
+ TranslateModule,
33
+ ],
34
+ })
35
+ export class ImageInputComponent {
36
+ @Input() maxSizeMB: number
37
+ @Input() previewUrl?: string
38
+ @Input() altText?: string
39
+ @Input() uploadProgress?: number
40
+ @Input() uploadError?: boolean
41
+ @Output() fileChange: EventEmitter<File> = new EventEmitter()
42
+ @Output() urlChange: EventEmitter<string> = new EventEmitter()
43
+ @Output() uploadCancel: EventEmitter<void> = new EventEmitter()
44
+ @Output() delete: EventEmitter<void> = new EventEmitter()
45
+ @Output() altTextChange: EventEmitter<string> = new EventEmitter()
46
+
47
+ dragFilesOver = false
48
+ showUrlInput = false
49
+ downloadError = false
50
+ showAltTextInput = false
51
+
52
+ urlInputValue?: string
53
+ lastUploadType?: 'file' | 'url'
54
+ lastUploadContent?: string | File
55
+
56
+ constructor(private http: HttpClient, private cd: ChangeDetectorRef) {}
57
+
58
+ getPrimaryText() {
59
+ if (this.uploadError) {
60
+ return marker('input.image.uploadErrorLabel')
61
+ }
62
+ if (this.uploadProgress) {
63
+ return marker('input.image.uploadProgressLabel')
64
+ }
65
+ return marker('input.image.selectFileLabel')
66
+ }
67
+
68
+ getSecondaryText() {
69
+ if (this.uploadError) {
70
+ return marker('input.image.uploadErrorRetry')
71
+ }
72
+ if (this.uploadProgress) {
73
+ return marker('input.image.uploadProgressCancel')
74
+ }
75
+ return marker('input.image.dropFileLabel')
76
+ }
77
+
78
+ handleDragFilesOver(dragFilesOver: boolean) {
79
+ if (!this.showUrlInput) {
80
+ this.dragFilesOver = dragFilesOver
81
+ this.cd.markForCheck()
82
+ }
83
+ }
84
+
85
+ handleDropFiles(files: File[]) {
86
+ if (!this.showUrlInput) {
87
+ const validFiles = this.filterTypeImage(files)
88
+ if (validFiles.length > 0) {
89
+ this.resizeAndEmit(validFiles[0])
90
+ }
91
+ }
92
+ }
93
+
94
+ handleFileInput(event: Event) {
95
+ const inputFiles = Array.from((event.target as HTMLInputElement).files)
96
+ const validFiles = this.filterTypeImage(inputFiles)
97
+ if (validFiles.length > 0) {
98
+ this.resizeAndEmit(validFiles[0])
99
+ }
100
+ }
101
+
102
+ displayUrlInput() {
103
+ this.uploadCancel.emit()
104
+ this.showUrlInput = true
105
+ }
106
+
107
+ handleUrlChange(event: Event) {
108
+ this.downloadError = false
109
+ this.urlInputValue = (event.target as HTMLInputElement).value
110
+ }
111
+
112
+ async downloadUrl() {
113
+ const name = this.urlInputValue.split('/').pop()
114
+
115
+ try {
116
+ const response = await firstValueFrom(
117
+ this.http.head(this.urlInputValue, { observe: 'response' })
118
+ )
119
+ if (
120
+ response.headers.get('content-type')?.startsWith('image/') &&
121
+ parseInt(response.headers.get('content-length')) <
122
+ megabytesToBytes(this.maxSizeMB)
123
+ ) {
124
+ this.http.get(this.urlInputValue, { responseType: 'blob' }).subscribe({
125
+ next: (blob) => {
126
+ this.cd.markForCheck()
127
+ const file = new File([blob], name)
128
+ this.fileChange.emit(file)
129
+ },
130
+ error: () => {
131
+ this.downloadError = true
132
+ this.cd.markForCheck()
133
+ this.urlChange.emit(this.urlInputValue)
134
+ },
135
+ })
136
+ }
137
+ } catch {
138
+ this.downloadError = true
139
+ this.cd.markForCheck()
140
+ return
141
+ }
142
+ }
143
+
144
+ handleSecondaryTextClick() {
145
+ if (this.uploadError) {
146
+ this.handleRetry()
147
+ } else if (this.uploadProgress) {
148
+ this.handleCancel()
149
+ }
150
+ }
151
+
152
+ handleCancel() {
153
+ this.uploadCancel.emit()
154
+ }
155
+
156
+ handleRetry() {
157
+ switch (this.lastUploadType) {
158
+ case 'file':
159
+ this.fileChange.emit(this.lastUploadContent as File)
160
+ break
161
+ case 'url':
162
+ this.urlChange.emit(this.lastUploadContent as string)
163
+ break
164
+ }
165
+ }
166
+
167
+ handleDelete() {
168
+ this.delete.emit()
169
+ }
170
+
171
+ toggleAltTextInput() {
172
+ this.showAltTextInput = !this.showAltTextInput
173
+ }
174
+
175
+ handleAltTextChange(event: Event) {
176
+ const input = event.target as HTMLInputElement
177
+ this.altTextChange.emit(input.value)
178
+ }
179
+
180
+ private filterTypeImage(files: File[]) {
181
+ return files.filter((file) => {
182
+ return file.type.startsWith('image/')
183
+ })
184
+ }
185
+
186
+ private resizeAndEmit(imageToResize: File) {
187
+ const maxSizeBytes = megabytesToBytes(this.maxSizeMB)
188
+ downgradeImage(imageToResize, maxSizeBytes).then((resizedImage) => {
189
+ const fileToEmit = new File([resizedImage], imageToResize.name)
190
+ this.fileChange.emit(fileToEmit)
191
+ })
192
+ }
193
+ }
@@ -42,6 +42,7 @@ import { MatInputModule } from '@angular/material/input'
42
42
  import { MatDatepickerModule } from '@angular/material/datepicker'
43
43
  import { MatNativeDateModule } from '@angular/material/core'
44
44
  import { EditableLabelDirective } from './editable-label/editable-label.directive'
45
+ import { ImageInputComponent } from './image-input/image-input.component'
45
46
 
46
47
  @NgModule({
47
48
  declarations: [
@@ -89,6 +90,7 @@ import { EditableLabelDirective } from './editable-label/editable-label.directiv
89
90
  EditableLabelDirective,
90
91
  TextAreaComponent,
91
92
  ButtonComponent,
93
+ ImageInputComponent,
92
94
  ],
93
95
  exports: [
94
96
  DropdownSelectorComponent,
@@ -109,6 +111,7 @@ import { EditableLabelDirective } from './editable-label/editable-label.directiv
109
111
  SearchInputComponent,
110
112
  DateRangePickerComponent,
111
113
  EditableLabelDirective,
114
+ ImageInputComponent,
112
115
  ],
113
116
  })
114
117
  export class UiInputsModule {}
@@ -0,0 +1,3 @@
1
+ export function megabytesToBytes(megabytes) {
2
+ return megabytes * 1048576
3
+ }
@@ -0,0 +1,72 @@
1
+ export function downsizeImage(
2
+ blob: Blob,
3
+ maxWidth: number,
4
+ maxHeight: number
5
+ ): Promise<Blob> {
6
+ return new Promise((resolve, reject) => {
7
+ const image = new Image()
8
+ image.src = URL.createObjectURL(blob)
9
+ image.onload = () => {
10
+ let width = image.width
11
+ let height = image.height
12
+
13
+ if (width > maxWidth || height > maxHeight) {
14
+ if (width > height) {
15
+ height = height * (maxWidth / width)
16
+ width = maxWidth
17
+ } else {
18
+ width = width * (maxHeight / height)
19
+ height = maxHeight
20
+ }
21
+ }
22
+
23
+ const canvas = document.createElement('canvas')
24
+ canvas.width = width
25
+ canvas.height = height
26
+
27
+ const context = canvas.getContext('2d')
28
+ context.drawImage(image, 0, 0, width, height)
29
+
30
+ canvas.toBlob(resolve, blob.type)
31
+ }
32
+ image.onerror = reject
33
+ })
34
+ }
35
+
36
+ export function downgradeImage(
37
+ blob: Blob,
38
+ maxSizeBytes: number
39
+ ): Promise<Blob> {
40
+ return new Promise((resolve, reject) => {
41
+ const image = new Image()
42
+ image.src = URL.createObjectURL(blob)
43
+ image.onload = () => {
44
+ const width = image.width
45
+ const height = image.height
46
+ let quality = 1.0
47
+
48
+ const canvas = document.createElement('canvas')
49
+ canvas.width = width
50
+ canvas.height = height
51
+
52
+ const context = canvas.getContext('2d')
53
+ context.drawImage(image, 0, 0, width, height)
54
+
55
+ const compressAndResolveBlob = (blobToCompress: Blob) => {
56
+ if (blobToCompress.size <= maxSizeBytes) {
57
+ resolve(blobToCompress)
58
+ } else {
59
+ quality -= 0.1
60
+ if (quality >= 0) {
61
+ canvas.toBlob(compressAndResolveBlob, blob.type, quality)
62
+ } else {
63
+ reject('Unable to compress image below max size')
64
+ }
65
+ }
66
+ }
67
+
68
+ canvas.toBlob(compressAndResolveBlob, blob.type, quality)
69
+ }
70
+ image.onerror = reject
71
+ })
72
+ }
@@ -1,9 +1,11 @@
1
+ export * from './bytes-convert'
2
+ export * from './event'
3
+ export * from './fuzzy-filter'
4
+ export * from './geojson'
5
+ export * from './image-resize'
1
6
  export * from './parse'
2
- export * from './strip-html'
3
7
  export * from './remove-whitespace'
4
- export * from './geojson'
5
8
  export * from './sort-by'
6
- export * from './url'
7
- export * from './event'
8
- export * from './fuzzy-filter'
9
+ export * from './strip-html'
9
10
  export * from './temporal-extent-union'
11
+ export * from './url'
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Stichwort",
160
160
  "facets.block.title.th_regions_tree.default": "Regionen",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Katalanisch",
163
173
  "language.cs": "Tschechisch",
164
174
  "language.de": "Deutsch",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "Eine Ebene hinzufügen",
178
188
  "map.add.layer.catalog": "Aus dem Katalog",
179
189
  "map.add.layer.file": "Aus einer Datei",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "Aus WFS",
181
192
  "map.add.layer.wms": "Aus WMS",
182
193
  "map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "Kartendaten werden geladen...",
189
200
  "map.loading.service": "Dienst wird geladen...",
190
201
  "map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "Datenquelle",
192
204
  "map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
193
205
  "map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Regions",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
162
+ "input.image.altTextPlaceholder": "Image alternate text",
163
+ "input.image.delete": "Delete",
164
+ "input.image.displayAltTextInput": "Alternate text",
165
+ "input.image.displayUrlInput": "Enter a URL",
166
+ "input.image.dropFileLabel": "or drop it here",
167
+ "input.image.selectFileLabel": "Select an image",
168
+ "input.image.uploadErrorLabel": "The image could not be uploaded",
169
+ "input.image.uploadErrorRetry": "Retry",
170
+ "input.image.uploadProgressCancel": "Cancel",
171
+ "input.image.uploadProgressLabel": "Upload in progress...",
162
172
  "language.ca": "Catalan",
163
173
  "language.cs": "Czech",
164
174
  "language.de": "German",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "Add a layer",
178
188
  "map.add.layer.catalog": "From the catalog",
179
189
  "map.add.layer.file": "From a file",
190
+ "map.add.layer.ogc.api": "From OGC API",
180
191
  "map.add.layer.wfs": "From WFS",
181
192
  "map.add.layer.wms": "From WMS",
182
193
  "map.addFromFile.placeholder": "Click or drop a file here",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "Loading map data...",
189
200
  "map.loading.service": "Loading service...",
190
201
  "map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
202
+ "map.ogc.urlInput.hint": "Enter OGC API service URL",
191
203
  "map.select.layer": "Data source",
192
204
  "map.wfs.urlInput.hint": "Enter WFS service URL",
193
205
  "map.wms.urlInput.hint": "Enter WMS service URL",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalán",
163
173
  "language.cs": "Checo",
164
174
  "language.de": "Alemán",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "",
178
188
  "map.add.layer.catalog": "",
179
189
  "map.add.layer.file": "",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "",
181
192
  "map.add.layer.wms": "",
182
193
  "map.addFromFile.placeholder": "",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "",
189
200
  "map.loading.service": "",
190
201
  "map.navigation.message": "",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "",
192
204
  "map.wfs.urlInput.hint": "",
193
205
  "map.wms.urlInput.hint": "",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Régions",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
162
+ "input.image.altTextPlaceholder": "Texte alternatif de l'image",
163
+ "input.image.delete": "Supprimer",
164
+ "input.image.displayAltTextInput": "Texte alternatif",
165
+ "input.image.displayUrlInput": "Saisir une URL",
166
+ "input.image.dropFileLabel": "ou la glisser ici",
167
+ "input.image.selectFileLabel": "Sélectionner une image",
168
+ "input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
169
+ "input.image.uploadErrorRetry": "Réessayer",
170
+ "input.image.uploadProgressCancel": "Annuler",
171
+ "input.image.uploadProgressLabel": "Chargement en cours...",
162
172
  "language.ca": "Catalan",
163
173
  "language.cs": "Tchèque",
164
174
  "language.de": "Allemand",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "Ajouter une couche",
178
188
  "map.add.layer.catalog": "Du catalogue",
179
189
  "map.add.layer.file": "À partir d'un fichier",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "Depuis un service WFS",
181
192
  "map.add.layer.wms": "Depuis un service WMS",
182
193
  "map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "Chargement des données...",
189
200
  "map.loading.service": "Chargement du service...",
190
201
  "map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "Source de données",
192
204
  "map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
193
205
  "map.wms.urlInput.hint": "Entrez l'URL du service WMS",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Regioni",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalano",
163
173
  "language.cs": "Ceco",
164
174
  "language.de": "Tedesco",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "Aggiungere un layer",
178
188
  "map.add.layer.catalog": "Dal catalogo",
179
189
  "map.add.layer.file": "Da un file",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "Da un WFS",
181
192
  "map.add.layer.wms": "Da un WMS",
182
193
  "map.addFromFile.placeholder": "Clicca o trascina un file qui",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "Caricamento dati...",
189
200
  "map.loading.service": "Caricamento del servizio...",
190
201
  "map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "Sorgente dati",
192
204
  "map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
193
205
  "map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalaans",
163
173
  "language.cs": "Tsjechisch",
164
174
  "language.de": "Duits",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "",
178
188
  "map.add.layer.catalog": "",
179
189
  "map.add.layer.file": "",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "",
181
192
  "map.add.layer.wms": "",
182
193
  "map.addFromFile.placeholder": "",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "",
189
200
  "map.loading.service": "",
190
201
  "map.navigation.message": "",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "",
192
204
  "map.wfs.urlInput.hint": "",
193
205
  "map.wms.urlInput.hint": "",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalão",
163
173
  "language.cs": "Tcheco",
164
174
  "language.de": "Alemão",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "",
178
188
  "map.add.layer.catalog": "",
179
189
  "map.add.layer.file": "",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "",
181
192
  "map.add.layer.wms": "",
182
193
  "map.addFromFile.placeholder": "",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "",
189
200
  "map.loading.service": "",
190
201
  "map.navigation.message": "",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "",
192
204
  "map.wfs.urlInput.hint": "",
193
205
  "map.wms.urlInput.hint": "",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Štítok",
160
160
  "facets.block.title.th_regions_tree.default": "Regióny",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href='{link}'>Prihlásiť sa</a> pre prístup k tejto funkcii</div>",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalánsky",
163
173
  "language.cs": "Čeština",
164
174
  "language.de": "Nemecky",
@@ -177,6 +187,7 @@
177
187
  "map.add.layer": "Pridať vrstvu",
178
188
  "map.add.layer.catalog": "Z katalógu",
179
189
  "map.add.layer.file": "Zo súboru",
190
+ "map.add.layer.ogc.api": "",
180
191
  "map.add.layer.wfs": "Z WFS",
181
192
  "map.add.layer.wms": "Z WMS",
182
193
  "map.addFromFile.placeholder": "Kliknite na tlačidlo alebo sem vložte súbor",
@@ -188,6 +199,7 @@
188
199
  "map.loading.data": "Načítavanie dát mapy...",
189
200
  "map.loading.service": "Načítavanie služieb...",
190
201
  "map.navigation.message": "Použite prosím CTRL + myš (alebo dva prsty na mobilnom zariadení) na navigáciu po mape",
202
+ "map.ogc.urlInput.hint": "",
191
203
  "map.select.layer": "Zdroj dát",
192
204
  "map.wfs.urlInput.hint": "Zadajte URL adresu služby WFS",
193
205
  "map.wms.urlInput.hint": "Zadajte URL adresu služby WMS",
@@ -1,52 +0,0 @@
1
- import { Gn4FieldMapper } from './gn4.field.mapper';
2
- import { lastValueFrom } from 'rxjs';
3
- import { OrganizationsServiceInterface } from '../../../../../../libs/common/domain/src/lib/organizations.service.interface';
4
- import { MetadataBaseMapper } from '../metadata-base.mapper';
5
- import { Injectable } from '@angular/core';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./gn4.field.mapper";
8
- import * as i2 from "../../../../../../libs/common/domain/src/lib/organizations.service.interface";
9
- export class Gn4MetadataMapper extends MetadataBaseMapper {
10
- constructor(fieldMapper, orgsService) {
11
- super();
12
- this.fieldMapper = fieldMapper;
13
- this.orgsService = orgsService;
14
- }
15
- readRecord(document) {
16
- const { _source } = document;
17
- const emptyRecord = {
18
- kind: 'dataset',
19
- status: null,
20
- lineage: null,
21
- recordUpdated: null,
22
- recordPublished: null,
23
- ownerOrganization: null,
24
- licenses: [],
25
- legalConstraints: [],
26
- securityConstraints: [],
27
- otherConstraints: [],
28
- contacts: [],
29
- contactsForResource: [],
30
- keywords: [],
31
- topics: [],
32
- spatialExtents: [],
33
- temporalExtents: [],
34
- overviews: [],
35
- languages: [],
36
- };
37
- const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
38
- return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
39
- }
40
- writeRecord(record) {
41
- throw new Error('not implemented');
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4MetadataMapper, deps: [{ token: i1.Gn4FieldMapper }, { token: i2.OrganizationsServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
44
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4MetadataMapper, providedIn: 'root' }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4MetadataMapper, decorators: [{
47
- type: Injectable,
48
- args: [{
49
- providedIn: 'root',
50
- }]
51
- }], ctorParameters: function () { return [{ type: i1.Gn4FieldMapper }, { type: i2.OrganizationsServiceInterface }]; } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240Lm1ldGFkYXRhLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQubWV0YWRhdGEubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhFQUE4RSxDQUFBO0FBRTVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7QUFNMUMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUE2QjtJQUNsRSxZQUNVLFdBQTJCLEVBQzNCLFdBQTBDO1FBRWxELEtBQUssRUFBRSxDQUFBO1FBSEMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUErQjtJQUdwRCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQW1CO1FBQzVCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUE7UUFDNUIsTUFBTSxXQUFXLEdBQTJCO1lBQzFDLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsSUFBSTtZQUNiLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsUUFBUSxFQUFFLEVBQUU7WUFDWixnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixRQUFRLEVBQUUsRUFBRTtZQUNaLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtZQUNWLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFBO1FBQ0QsTUFBTSxNQUFNLEdBQWtCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUN2RCxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQ3pELFdBQVcsQ0FDWixDQUFBO1FBQ0QsT0FBTyxhQUFhLENBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUNwRSxDQUFBO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDcEMsQ0FBQzs4R0ExQ1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEduNEZpZWxkTWFwcGVyIH0gZnJvbSAnLi9nbjQuZmllbGQubWFwcGVyJ1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgTWV0YWRhdGFCYXNlTWFwcGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEtYmFzZS5tYXBwZXInXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEduNFJlY29yZCB9IGZyb20gJy4vdHlwZXMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHbjRNZXRhZGF0YU1hcHBlciBleHRlbmRzIE1ldGFkYXRhQmFzZU1hcHBlcjxHbjRSZWNvcmQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaWVsZE1hcHBlcjogR240RmllbGRNYXBwZXIsXG4gICAgcHJpdmF0ZSBvcmdzU2VydmljZTogT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbiAgKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcmVhZFJlY29yZChkb2N1bWVudDogR240UmVjb3JkKTogUHJvbWlzZTxDYXRhbG9nUmVjb3JkPiB7XG4gICAgY29uc3QgeyBfc291cmNlIH0gPSBkb2N1bWVudFxuICAgIGNvbnN0IGVtcHR5UmVjb3JkOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+ID0ge1xuICAgICAga2luZDogJ2RhdGFzZXQnLFxuICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgbGluZWFnZTogbnVsbCxcbiAgICAgIHJlY29yZFVwZGF0ZWQ6IG51bGwsXG4gICAgICByZWNvcmRQdWJsaXNoZWQ6IG51bGwsXG4gICAgICBvd25lck9yZ2FuaXphdGlvbjogbnVsbCxcbiAgICAgIGxpY2Vuc2VzOiBbXSxcbiAgICAgIGxlZ2FsQ29uc3RyYWludHM6IFtdLFxuICAgICAgc2VjdXJpdHlDb25zdHJhaW50czogW10sXG4gICAgICBvdGhlckNvbnN0cmFpbnRzOiBbXSxcbiAgICAgIGNvbnRhY3RzOiBbXSxcbiAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IFtdLFxuICAgICAga2V5d29yZHM6IFtdLFxuICAgICAgdG9waWNzOiBbXSxcbiAgICAgIHNwYXRpYWxFeHRlbnRzOiBbXSxcbiAgICAgIHRlbXBvcmFsRXh0ZW50czogW10sXG4gICAgICBvdmVydmlld3M6IFtdLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICB9XG4gICAgY29uc3QgcmVjb3JkOiBDYXRhbG9nUmVjb3JkID0gT2JqZWN0LmtleXMoX3NvdXJjZSkucmVkdWNlKFxuICAgICAgKHByZXYsIGZpZWxkTmFtZSkgPT5cbiAgICAgICAgdGhpcy5maWVsZE1hcHBlci5nZXRNYXBwaW5nRm4oZmllbGROYW1lKShwcmV2LCBfc291cmNlKSxcbiAgICAgIGVtcHR5UmVjb3JkXG4gICAgKVxuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5vcmdzU2VydmljZS5hZGRPcmdhbml6YXRpb25Ub1JlY29yZEZyb21Tb3VyY2UoX3NvdXJjZSwgcmVjb3JkKVxuICAgIClcbiAgfVxuXG4gIHdyaXRlUmVjb3JkKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IFByb21pc2U8R240UmVjb3JkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKVxuICB9XG59XG4iXX0=
@@ -1,14 +0,0 @@
1
- export function getKeywordTypeFromKeywordTypeCode(typeCode) {
2
- if (!typeCode)
3
- return 'other';
4
- switch (typeCode) {
5
- case 'theme':
6
- case 'place':
7
- case 'temporal':
8
- case 'other':
9
- return typeCode;
10
- default:
11
- return 'other';
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5d29yZC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTEzOS9jb2RlbGlzdHMva2V5d29yZC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGlDQUFpQyxDQUMvQyxRQUFnQjtJQUVoQixJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sT0FBTyxDQUFBO0lBQzdCLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLFVBQVUsQ0FBQztRQUNoQixLQUFLLE9BQU87WUFDVixPQUFPLFFBQVEsQ0FBQTtRQUNqQjtZQUNFLE9BQU8sT0FBTyxDQUFBO0tBQ2pCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleXdvcmRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5d29yZFR5cGVGcm9tS2V5d29yZFR5cGVDb2RlKFxuICB0eXBlQ29kZTogc3RyaW5nXG4pOiBLZXl3b3JkVHlwZSB7XG4gIGlmICghdHlwZUNvZGUpIHJldHVybiAnb3RoZXInXG4gIHN3aXRjaCAodHlwZUNvZGUpIHtcbiAgICBjYXNlICd0aGVtZSc6XG4gICAgY2FzZSAncGxhY2UnOlxuICAgIGNhc2UgJ3RlbXBvcmFsJzpcbiAgICBjYXNlICdvdGhlcic6XG4gICAgICByZXR1cm4gdHlwZUNvZGVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdvdGhlcidcbiAgfVxufVxuIl19