geonetwork-ui 2.4.0-dev.db93b4c4 → 2.4.0-dev.e079151e

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 (133) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +5 -5
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
  6. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +6 -1
  7. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +12 -1
  8. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  9. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  10. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
  11. package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +138 -0
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +19 -9
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +2 -1
  15. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +12 -2
  16. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -4
  17. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +9 -3
  18. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
  19. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
  20. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +5 -2
  21. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
  22. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +11 -5
  23. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +29 -0
  24. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +15 -7
  25. package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
  26. package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
  27. package/esm2022/translations/de.json +11 -17
  28. package/esm2022/translations/en.json +4 -10
  29. package/esm2022/translations/es.json +3 -9
  30. package/esm2022/translations/fr.json +4 -10
  31. package/esm2022/translations/it.json +4 -10
  32. package/esm2022/translations/nl.json +3 -9
  33. package/esm2022/translations/pt.json +3 -9
  34. package/fesm2022/geonetwork-ui.mjs +440 -131
  35. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  36. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  37. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  38. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  39. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
  40. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  41. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
  42. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
  43. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
  44. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  45. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
  46. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  47. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  48. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  49. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
  50. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  51. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +9 -0
  52. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  53. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  54. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
  55. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
  56. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
  58. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -1
  59. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  60. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  61. package/libs/feature/editor/src/lib/fields.config.d.ts +1 -0
  62. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  63. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  64. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +3 -1
  65. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  66. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  67. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
  68. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  69. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  70. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +7 -6
  71. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  72. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +4 -2
  73. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
  74. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +11 -0
  75. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
  76. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +4 -2
  77. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  78. package/libs/ui/widgets/src/index.d.ts +1 -0
  79. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  80. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
  81. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
  82. package/package.json +1 -1
  83. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  84. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
  85. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
  86. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
  87. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
  88. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
  89. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
  90. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
  91. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +8 -0
  92. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -0
  93. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
  94. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +12 -0
  95. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
  96. package/src/libs/data-access/gn4/src/spec.yaml +0 -8
  97. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +3 -1
  98. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +117 -21
  99. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
  100. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
  101. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
  102. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
  103. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +13 -1
  104. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +1 -0
  105. package/src/libs/feature/editor/src/lib/fields.config.ts +12 -1
  106. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +2 -3
  107. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  108. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +5 -0
  109. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
  110. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
  111. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
  112. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
  113. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
  114. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +1 -1
  115. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +7 -2
  116. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
  117. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +17 -0
  118. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +22 -0
  119. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +9 -0
  120. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +26 -12
  121. package/src/libs/ui/widgets/src/index.ts +1 -0
  122. package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
  123. package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
  124. package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
  125. package/tailwind.base.css +2 -1
  126. package/translations/de.json +11 -17
  127. package/translations/en.json +4 -10
  128. package/translations/es.json +3 -9
  129. package/translations/fr.json +4 -10
  130. package/translations/it.json +4 -10
  131. package/translations/nl.json +3 -9
  132. package/translations/pt.json +3 -9
  133. package/translations/sk.json +4 -10
@@ -28,14 +28,15 @@ import * as i26 from "../../../../util/shared/src/lib/util-shared.module";
28
28
  import * as i27 from "@angular/router";
29
29
  import * as i28 from "../../../inputs/src/lib/ui-inputs.module";
30
30
  import * as i29 from "@angular/forms";
31
- import * as i30 from "./markdown-parser/markdown-parser.component";
32
- import * as i31 from "./thumbnail/thumbnail.component";
33
- import * as i32 from "./user-feedback-item/time-since.pipe";
34
- import * as i33 from "../../../inputs/src/lib/badge/badge.component";
35
- import * as i34 from "../../../layout/src/lib/max-lines/max-lines.component";
31
+ import * as i30 from "../../../widgets/src/lib/popover/popover.component";
32
+ import * as i31 from "./markdown-parser/markdown-parser.component";
33
+ import * as i32 from "./thumbnail/thumbnail.component";
34
+ import * as i33 from "./user-feedback-item/time-since.pipe";
35
+ import * as i34 from "../../../inputs/src/lib/badge/badge.component";
36
+ import * as i35 from "../../../layout/src/lib/max-lines/max-lines.component";
36
37
  export declare class UiElementsModule {
37
38
  static ɵfac: i0.ɵɵFactoryDeclaration<UiElementsModule, never>;
38
- static ɵmod: i0.ɵɵNgModuleDeclaration<UiElementsModule, [typeof i1.MetadataInfoComponent, typeof i2.ContentGhostComponent, typeof i3.DownloadItemComponent, typeof i4.DownloadsListComponent, typeof i5.ApiCardComponent, typeof i6.RelatedRecordCardComponent, typeof i7.MetadataContactComponent, typeof i8.MetadataCatalogComponent, typeof i9.MetadataQualityComponent, typeof i10.MetadataQualityItemComponent, typeof i11.ErrorComponent, typeof i12.PaginationComponent, typeof i13.AvatarComponent, typeof i14.UserPreviewComponent, typeof i15.GnUiLinkifyDirective, typeof i16.PaginationButtonsComponent, typeof i17.RecordApiFormComponent, typeof i18.UserFeedbackItemComponent, typeof i19.ImageOverlayPreviewComponent], [typeof i20.CommonModule, typeof i21.MatIconModule, typeof i22.MatTooltipModule, typeof i23.UiWidgetsModule, typeof i24.UiLayoutModule, typeof i25.TranslateModule, typeof i26.UtilSharedModule, typeof i27.RouterModule, typeof i28.UiInputsModule, typeof i29.FormsModule, typeof i20.NgOptimizedImage, typeof i30.MarkdownParserComponent, typeof i31.ThumbnailComponent, typeof i32.TimeSincePipe, typeof i33.BadgeComponent, typeof i34.MaxLinesComponent], [typeof i1.MetadataInfoComponent, typeof i2.ContentGhostComponent, typeof i3.DownloadItemComponent, typeof i4.DownloadsListComponent, typeof i5.ApiCardComponent, typeof i6.RelatedRecordCardComponent, typeof i7.MetadataContactComponent, typeof i8.MetadataCatalogComponent, typeof i9.MetadataQualityComponent, typeof i10.MetadataQualityItemComponent, typeof i11.ErrorComponent, typeof i12.PaginationComponent, typeof i31.ThumbnailComponent, typeof i13.AvatarComponent, typeof i14.UserPreviewComponent, typeof i16.PaginationButtonsComponent, typeof i17.RecordApiFormComponent, typeof i30.MarkdownParserComponent, typeof i18.UserFeedbackItemComponent, typeof i19.ImageOverlayPreviewComponent]>;
39
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiElementsModule, [typeof i1.MetadataInfoComponent, typeof i2.ContentGhostComponent, typeof i3.DownloadItemComponent, typeof i4.DownloadsListComponent, typeof i5.ApiCardComponent, typeof i6.RelatedRecordCardComponent, typeof i7.MetadataContactComponent, typeof i8.MetadataCatalogComponent, typeof i9.MetadataQualityComponent, typeof i10.MetadataQualityItemComponent, typeof i11.ErrorComponent, typeof i12.PaginationComponent, typeof i13.AvatarComponent, typeof i14.UserPreviewComponent, typeof i15.GnUiLinkifyDirective, typeof i16.PaginationButtonsComponent, typeof i17.RecordApiFormComponent, typeof i18.UserFeedbackItemComponent, typeof i19.ImageOverlayPreviewComponent], [typeof i20.CommonModule, typeof i21.MatIconModule, typeof i22.MatTooltipModule, typeof i23.UiWidgetsModule, typeof i24.UiLayoutModule, typeof i25.TranslateModule, typeof i26.UtilSharedModule, typeof i27.RouterModule, typeof i28.UiInputsModule, typeof i29.FormsModule, typeof i20.NgOptimizedImage, typeof i30.PopoverComponent, typeof i31.MarkdownParserComponent, typeof i32.ThumbnailComponent, typeof i33.TimeSincePipe, typeof i34.BadgeComponent, typeof i35.MaxLinesComponent], [typeof i1.MetadataInfoComponent, typeof i2.ContentGhostComponent, typeof i3.DownloadItemComponent, typeof i4.DownloadsListComponent, typeof i5.ApiCardComponent, typeof i6.RelatedRecordCardComponent, typeof i7.MetadataContactComponent, typeof i8.MetadataCatalogComponent, typeof i9.MetadataQualityComponent, typeof i10.MetadataQualityItemComponent, typeof i11.ErrorComponent, typeof i12.PaginationComponent, typeof i32.ThumbnailComponent, typeof i13.AvatarComponent, typeof i14.UserPreviewComponent, typeof i16.PaginationButtonsComponent, typeof i17.RecordApiFormComponent, typeof i31.MarkdownParserComponent, typeof i18.UserFeedbackItemComponent, typeof i19.ImageOverlayPreviewComponent]>;
39
40
  static ɵinj: i0.ɵɵInjectorDeclaration<UiElementsModule>;
40
41
  }
41
42
  //# sourceMappingURL=ui-elements.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,qBA+Da,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,qBAgEa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
@@ -1,11 +1,13 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { ChangeDetectorRef, EventEmitter } from '@angular/core';
3
+ import { FormControl } from '@angular/forms';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class ImageInputComponent {
5
6
  private http;
6
7
  private cd;
8
+ formControl: FormControl;
7
9
  maxSizeMB: number;
8
- previewUrl?: string;
10
+ previewUrl?: URL;
9
11
  altText?: string;
10
12
  uploadProgress?: number;
11
13
  uploadError?: boolean;
@@ -39,6 +41,6 @@ export declare class ImageInputComponent {
39
41
  private filterTypeImage;
40
42
  private resizeAndEmit;
41
43
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageInputComponent, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<ImageInputComponent, "gn-ui-image-input", never, { "maxSizeMB": { "alias": "maxSizeMB"; "required": false; }; "previewUrl": { "alias": "previewUrl"; "required": false; }; "altText": { "alias": "altText"; "required": false; }; "uploadProgress": { "alias": "uploadProgress"; "required": false; }; "uploadError": { "alias": "uploadError"; "required": false; }; }, { "fileChange": "fileChange"; "urlChange": "urlChange"; "uploadCancel": "uploadCancel"; "delete": "delete"; "altTextChange": "altTextChange"; }, never, never, true, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImageInputComponent, "gn-ui-image-input", never, { "formControl": { "alias": "formControl"; "required": false; }; "maxSizeMB": { "alias": "maxSizeMB"; "required": false; }; "previewUrl": { "alias": "previewUrl"; "required": false; }; "altText": { "alias": "altText"; "required": false; }; "uploadProgress": { "alias": "uploadProgress"; "required": false; }; "uploadError": { "alias": "uploadError"; "required": false; }; }, { "fileChange": "fileChange"; "urlChange": "urlChange"; "uploadCancel": "uploadCancel"; "delete": "delete"; "altTextChange": "altTextChange"; }, never, never, true, never>;
43
45
  }
44
46
  //# sourceMappingURL=image-input.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/image-input/image-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;;AAUtB,qBAea,mBAAmB;IAqBlB,OAAO,CAAC,IAAI;IAAc,OAAO,CAAC,EAAE;IApBvC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACnD,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IAC/C,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IAElE,aAAa,UAAQ;IACrB,YAAY,UAAQ;IACpB,aAAa,UAAQ;IACrB,gBAAgB,UAAQ;IAExB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;gBAEb,IAAI,EAAE,UAAU,EAAU,EAAE,EAAE,iBAAiB;IAEnE,cAAc;IAUd,gBAAgB;IAUhB,mBAAmB,CAAC,aAAa,EAAE,OAAO;IAO1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;IAS7B,eAAe,CAAC,KAAK,EAAE,KAAK;IAQ5B,eAAe;IAKf,eAAe,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW;IAgCjB,wBAAwB;IAQxB,YAAY;IAIZ,WAAW;IAWX,YAAY;IAIZ,kBAAkB;IAIlB,mBAAmB,CAAC,KAAK,EAAE,KAAK;IAKhC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;yCAvJV,mBAAmB;2CAAnB,mBAAmB;CA8J/B"}
1
+ {"version":3,"file":"image-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/image-input/image-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;AAStB,OAAO,EAAE,WAAW,EAAuB,MAAM,gBAAgB,CAAA;;AAEjE,qBAgBa,mBAAmB;IAsBlB,OAAO,CAAC,IAAI;IAAc,OAAO,CAAC,EAAE;IArBvC,WAAW,EAAG,WAAW,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACnD,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IAC/C,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IAElE,aAAa,UAAQ;IACrB,YAAY,UAAQ;IACpB,aAAa,UAAQ;IACrB,gBAAgB,UAAQ;IAExB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;gBAEb,IAAI,EAAE,UAAU,EAAU,EAAE,EAAE,iBAAiB;IAEnE,cAAc;IAUd,gBAAgB;IAUhB,mBAAmB,CAAC,aAAa,EAAE,OAAO;IAO1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;IAS7B,eAAe,CAAC,KAAK,EAAE,KAAK;IAQ5B,eAAe;IAKf,eAAe,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW;IAiCjB,wBAAwB;IAQxB,YAAY;IAIZ,WAAW;IAWX,YAAY;IAKZ,kBAAkB;IAIlB,mBAAmB,CAAC,KAAK,EAAE,KAAK;IAKhC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;yCA1JV,mBAAmB;2CAAnB,mBAAmB;CAiK/B"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { MatMenuTrigger } from '@angular/material/menu';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ActionMenuComponent {
5
+ duplicate: EventEmitter<void>;
6
+ trigger: MatMenuTrigger;
7
+ openMenu(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionMenuComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionMenuComponent, "gn-ui-action-menu", never, {}, { "duplicate": "duplicate"; }, never, never, true, never>;
10
+ }
11
+ //# sourceMappingURL=action-menu.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-menu.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAqB,MAAM,eAAe,CAAA;AAE1E,OAAO,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAA;;AAItE,qBAOa,mBAAmB;IACpB,SAAS,qBAA2B;IAEnB,OAAO,EAAE,cAAc,CAAA;IAElD,QAAQ;yCALG,mBAAmB;2CAAnB,mBAAmB;CAQ/B"}
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
3
- import { FileFormat } from '../../../../../../libs/util/shared/src';
4
3
  import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search';
4
+ import { FileFormat } from '../../../../../../libs/util/shared/src';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class ResultsTableComponent {
7
7
  records: CatalogRecord[];
@@ -10,6 +10,7 @@ export declare class ResultsTableComponent {
10
10
  recordHasDraft: (record: CatalogRecord) => boolean;
11
11
  sortByChange: EventEmitter<[string, "asc" | "desc"]>;
12
12
  recordClick: EventEmitter<CatalogRecord>;
13
+ duplicateRecord: EventEmitter<CatalogRecord>;
13
14
  recordsSelectedChange: EventEmitter<[CatalogRecord[], boolean]>;
14
15
  dateToString(date: Date): string;
15
16
  getStatus(isPublishedToAll: boolean | unknown): "published" | "not published";
@@ -17,6 +18,7 @@ export declare class ResultsTableComponent {
17
18
  formatUserInfo(userInfo: string | unknown): string;
18
19
  getBadgeColor(format: FileFormat): string;
19
20
  handleRecordClick(item: unknown): void;
21
+ handleDuplicate(item: unknown): void;
20
22
  setSortBy(col: string, order: 'asc' | 'desc'): void;
21
23
  isSortedBy(col: string): 'desc' | 'asc' | null;
22
24
  isChecked(record: CatalogRecord): boolean;
@@ -25,6 +27,6 @@ export declare class ResultsTableComponent {
25
27
  isAllSelected(): boolean;
26
28
  isSomeSelected(): boolean;
27
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "recordHasDraft": { "alias": "recordHasDraft"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "recordHasDraft": { "alias": "recordHasDraft"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
29
31
  }
30
32
  //# sourceMappingURL=results-table.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EACL,UAAU,EAIX,MAAM,wCAAwC,CAAA;AAS/C,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;;AAElE,qBAea,qBAAqB;IACvB,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAG/D,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,qBAAqB,2CAE5B;IAEH,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,SAAS,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAI7C,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAarD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAQlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIzC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAI7D,eAAe;IAIrB,aAAa,IAAI,OAAO;IAMxB,cAAc,IAAI,OAAO;yCA5Fd,qBAAqB;2CAArB,qBAAqB;CAqGjC"}
1
+ {"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EAIb,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,UAAU,EAIX,MAAM,wCAAwC,CAAA;;AAI/C,qBAgBa,qBAAqB;IACvB,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAG/D,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,qBAAqB,2CAE5B;IAEH,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,SAAS,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAI7C,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAarD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAQlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIzC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAI7D,eAAe;IAIrB,aAAa,IAAI,OAAO;IAMxB,cAAc,IAAI,OAAO;yCAjGd,qBAAqB;2CAArB,qBAAqB;CA0GjC"}
@@ -1,5 +1,6 @@
1
1
  export * from './lib/ui-widgets.module';
2
2
  export * from './lib/progress-bar/progress-bar.component';
3
+ export * from './lib/popover/popover.component';
3
4
  export * from './lib/loading-mask/loading-mask.component';
4
5
  export * from './lib/color-scale/color-scale.component';
5
6
  export * from './lib/popup-alert/popup-alert.component';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/widgets/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,2CAA2C,CAAA;AACzD,cAAc,2CAA2C,CAAA;AACzD,cAAc,yCAAyC,CAAA;AACvD,cAAc,yCAAyC,CAAA;AACvD,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mCAAmC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/widgets/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,2CAA2C,CAAA;AACzD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2CAA2C,CAAA;AACzD,cAAc,yCAAyC,CAAA;AACvD,cAAc,yCAAyC,CAAA;AACvD,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mCAAmC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { AfterViewInit, ElementRef, OnDestroy, OnChanges, SimpleChanges, TemplateRef, Renderer2, ViewContainerRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PopoverComponent implements AfterViewInit, OnChanges, OnDestroy {
4
+ private viewContainerRef;
5
+ private renderer;
6
+ popoverContent: ElementRef;
7
+ content: string | TemplateRef<any>;
8
+ theme: 'light' | 'light-border' | 'translucent' | 'material' | '';
9
+ private tippyInstance;
10
+ private view;
11
+ constructor(viewContainerRef: ViewContainerRef, renderer: Renderer2);
12
+ private getContent;
13
+ ngAfterViewInit(): void;
14
+ ngOnChanges(changes: SimpleChanges): void;
15
+ ngOnDestroy(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<PopoverComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<PopoverComponent, "gn-ui-popover", never, { "content": { "alias": "content"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; }, {}, never, ["*"], true, never>;
18
+ }
19
+ //# sourceMappingURL=popover.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/widgets/src/lib/popover/popover.component.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EACb,UAAU,EAGV,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,gBAAgB,EAEjB,MAAM,eAAe,CAAA;;AAGtB,qBAOa,gBAAiB,YAAW,aAAa,EAAE,SAAS,EAAE,SAAS;IASxE,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,QAAQ;IAT8B,cAAc,EAAE,UAAU,CAAA;IACjE,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAClC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,EAAE,CAAA;IAE1E,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,IAAI,CAAsB;gBAGxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,SAAS;IAG7B,OAAO,CAAC,UAAU;IAgBlB,eAAe,IAAI,IAAI;IAQvB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAezC,WAAW,IAAI,IAAI;yCApDR,gBAAgB;2CAAhB,gBAAgB;CA4D5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.4.0-dev.db93b4c4",
3
+ "version": "2.4.0-dev.e079151e",
4
4
  "engines": {
5
5
  "node": ">=14.17.0"
6
6
  },
@@ -1,3 +1,4 @@
1
+ export * from './lib/base.converter'
1
2
  export * from './lib/iso19139'
2
3
  export * from './lib/iso19115-3'
3
4
  export * from './lib/find-converter'
@@ -122,7 +122,11 @@ Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur
122
122
  securityConstraints: [],
123
123
  otherConstraints: [],
124
124
  // data quality?
125
- spatialExtents: [],
125
+ spatialExtents: [
126
+ {
127
+ bbox: [2.5587, 49.3677, 2.5934, 49.4051],
128
+ },
129
+ ],
126
130
  temporalExtents: [],
127
131
  status: 'completed',
128
132
  updateFrequency: 'unknown',
@@ -94,7 +94,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
94
94
  id: 'geonetwork.thesaurus.external.theme.gemet',
95
95
  name: 'GEMET',
96
96
  url: new URL(
97
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
97
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
98
98
  ),
99
99
  },
100
100
  type: 'theme',
@@ -105,7 +105,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
105
105
  id: 'geonetwork.thesaurus.external.theme.gemet',
106
106
  name: 'GEMET',
107
107
  url: new URL(
108
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
108
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
109
109
  ),
110
110
  },
111
111
  type: 'theme',
@@ -116,7 +116,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
116
116
  id: 'geonetwork.thesaurus.external.theme.gemet',
117
117
  name: 'GEMET',
118
118
  url: new URL(
119
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
119
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
120
120
  ),
121
121
  },
122
122
  type: 'theme',
@@ -127,7 +127,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
127
127
  id: 'geonetwork.thesaurus.external.theme.gemet',
128
128
  name: 'GEMET',
129
129
  url: new URL(
130
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
130
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
131
131
  ),
132
132
  },
133
133
  type: 'theme',
@@ -138,7 +138,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
138
138
  id: 'geonetwork.thesaurus.external.theme.gemet',
139
139
  name: 'GEMET',
140
140
  url: new URL(
141
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
141
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
142
142
  ),
143
143
  },
144
144
  type: 'theme',
@@ -149,7 +149,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
149
149
  id: 'geonetwork.thesaurus.external.theme.gemet',
150
150
  name: 'GEMET',
151
151
  url: new URL(
152
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
152
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
153
153
  ),
154
154
  },
155
155
  type: 'theme',
@@ -160,7 +160,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
160
160
  id: 'geonetwork.thesaurus.external.theme.gemet',
161
161
  name: 'GEMET',
162
162
  url: new URL(
163
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
163
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
164
164
  ),
165
165
  },
166
166
  type: 'theme',
@@ -171,7 +171,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
171
171
  id: 'geonetwork.thesaurus.external.theme.gemet',
172
172
  name: 'GEMET',
173
173
  url: new URL(
174
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
174
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
175
175
  ),
176
176
  },
177
177
  type: 'theme',
@@ -182,7 +182,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
182
182
  id: 'geonetwork.thesaurus.external.theme.gemet',
183
183
  name: 'GEMET',
184
184
  url: new URL(
185
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
185
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.gemet'
186
186
  ),
187
187
  },
188
188
  type: 'theme',
@@ -193,7 +193,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
193
193
  id: 'geonetwork.thesaurus.external.theme.inspire-theme',
194
194
  name: 'GEMET - INSPIRE themes, version 1.0',
195
195
  url: new URL(
196
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
196
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.inspire-theme'
197
197
  ),
198
198
  },
199
199
  type: 'theme',
@@ -204,7 +204,7 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
204
204
  id: 'geonetwork.thesaurus.external.theme.inspire-theme',
205
205
  name: 'GEMET - INSPIRE themes, version 1.0',
206
206
  url: new URL(
207
- 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
207
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/external.theme.inspire-theme'
208
208
  ),
209
209
  },
210
210
  type: 'theme',
@@ -332,7 +332,32 @@ Die Quelle ist zu bezeichnen: „Quelle: Stadt Zürich“.`,
332
332
  securityConstraints: [],
333
333
  otherConstraints: [],
334
334
  // data quality?
335
- spatialExtents: [],
335
+ spatialExtents: [
336
+ {
337
+ description: 'AK',
338
+ },
339
+ {
340
+ bbox: [
341
+ 6.75599105586694, 45.7887442565203, 10.5418236945627, 47.5175655551557,
342
+ ],
343
+ },
344
+ {
345
+ geometry: {
346
+ type: 'MultiPolygon',
347
+ coordinates: [
348
+ [
349
+ [
350
+ [6.777075, 45.827119, 0],
351
+ [6.755991, 47.517566, 0],
352
+ [10.541824, 47.477984, 0],
353
+ [10.446252, 45.788744, 0],
354
+ [6.777075, 45.827119, 0],
355
+ ],
356
+ ],
357
+ ],
358
+ },
359
+ },
360
+ ],
336
361
  temporalExtents: [],
337
362
  status: 'completed',
338
363
  updateFrequency: 'asNeeded',
@@ -388,7 +388,11 @@ Depuis, ce sont les Districts routiers qui assurent la tenue à jour de ces info
388
388
  name: 'Direction Asset Management (SPW - Mobilité et Infrastructures - Direction Asset Management)',
389
389
  },
390
390
  securityConstraints: [],
391
- spatialExtents: [],
391
+ spatialExtents: [
392
+ {
393
+ bbox: [2.75, 49.45, 6.5, 50.85],
394
+ },
395
+ ],
392
396
  spatialRepresentation: 'vector',
393
397
  status: 'ongoing',
394
398
  temporalExtents: [],
@@ -34,6 +34,7 @@ import {
34
34
  readResourcePublished,
35
35
  readResourceUpdated,
36
36
  readSecurityConstraints,
37
+ readSpatialExtents,
37
38
  readSpatialRepresentation,
38
39
  readStatus,
39
40
  readTemporalExtents,
@@ -60,6 +61,7 @@ import {
60
61
  writeResourcePublished,
61
62
  writeResourceUpdated,
62
63
  writeSecurityConstraints,
64
+ writeSpatialExtents,
63
65
  writeSpatialRepresentation,
64
66
  writeStatus,
65
67
  writeTemporalExtents,
@@ -101,8 +103,8 @@ export class Iso19139Converter extends BaseConverter<string> {
101
103
  distributions: readDistributions,
102
104
  onlineResources: readOnlineResources,
103
105
  temporalExtents: readTemporalExtents,
106
+ spatialExtents: readSpatialExtents,
104
107
  // TODO
105
- spatialExtents: () => [],
106
108
  extras: () => undefined,
107
109
  landingPage: () => undefined,
108
110
  languages: () => [],
@@ -139,8 +141,8 @@ export class Iso19139Converter extends BaseConverter<string> {
139
141
  distributions: writeDistributions,
140
142
  onlineResources: writeOnlineResources,
141
143
  temporalExtents: writeTemporalExtents,
144
+ spatialExtents: () => writeSpatialExtents,
142
145
  // TODO
143
- spatialExtents: () => undefined,
144
146
  extras: () => undefined,
145
147
  landingPage: () => undefined,
146
148
  languages: () => undefined,
@@ -13,6 +13,8 @@ import {
13
13
  UpdateFrequency,
14
14
  UpdateFrequencyCustom,
15
15
  } from '../../../../../../libs/common/domain/src/lib/model/record'
16
+ import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
17
+ import { Geometry } from 'geojson'
16
18
  import { matchMimeType, matchProtocol } from '../common/distribution.mapper'
17
19
  import {
18
20
  ChainableFunction,
@@ -26,21 +28,22 @@ import {
26
28
  pipe,
27
29
  } from '../function-utils'
28
30
  import {
29
- XmlElement,
30
31
  findChildElement,
31
32
  findChildrenElement,
32
33
  findNestedElement,
33
34
  findNestedElements,
34
35
  findParent,
36
+ firstChildElement,
35
37
  readAttribute,
36
38
  readText,
39
+ XmlElement,
37
40
  } from '../xml-utils'
41
+ import { readGeometry } from './utils/geometry'
38
42
  import { fullNameToParts } from './utils/individual-name'
39
43
  import { getKeywordTypeFromKeywordTypeCode } from './utils/keyword.mapper'
40
44
  import { getRoleFromRoleCode } from './utils/role.mapper'
41
45
  import { getStatusFromStatusCode } from './utils/status.mapper'
42
46
  import { getUpdateFrequencyFromFrequencyCode } from './utils/update-frequency.mapper'
43
- import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
44
47
 
45
48
  export function extractCharacterString(): ChainableFunction<
46
49
  XmlElement,
@@ -66,6 +69,14 @@ export function extractDateTime(): ChainableFunction<XmlElement, Date> {
66
69
  )
67
70
  }
68
71
 
72
+ export function extractDecimal(): ChainableFunction<XmlElement, number> {
73
+ return pipe(
74
+ findChildElement('gco:Decimal', false),
75
+ readText(),
76
+ map((numberStr) => (numberStr ? Number(numberStr) : null))
77
+ )
78
+ }
79
+
69
80
  export function extractUrl(): ChainableFunction<XmlElement, URL> {
70
81
  const getUrl = pipe(findChildElement('gmd:URL', false), readText())
71
82
  const getCharacterString = pipe(
@@ -895,3 +906,62 @@ export function readTemporalExtents(rootEl: XmlElement) {
895
906
  })
896
907
  )(rootEl)
897
908
  }
909
+
910
+ export function readSpatialExtents(rootEl: XmlElement) {
911
+ const extractGeometry = (rootEl: XmlElement): Geometry => {
912
+ if (!rootEl) return null
913
+ return pipe(
914
+ findChildElement('gmd:polygon', false),
915
+ firstChildElement,
916
+ map((el) => readGeometry(el))
917
+ )(rootEl)
918
+ }
919
+
920
+ const extractBBox = (
921
+ rootEl: XmlElement
922
+ ): [number, number, number, number] => {
923
+ if (!rootEl) return null
924
+ return pipe(
925
+ combine(
926
+ pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()),
927
+ pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()),
928
+ pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()),
929
+ pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())
930
+ )
931
+ )(rootEl)
932
+ }
933
+
934
+ const extractDescription = (rootEl: XmlElement): string => {
935
+ if (!rootEl) return null
936
+ return pipe(
937
+ findNestedElement(
938
+ 'gmd:geographicIdentifier',
939
+ 'gmd:MD_Identifier',
940
+ 'gmd:code'
941
+ ),
942
+ extractCharacterString()
943
+ )(rootEl)
944
+ }
945
+
946
+ return pipe(
947
+ findIdentification(),
948
+ findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:geographicElement'),
949
+ mapArray(
950
+ combine(
951
+ pipe(findChildElement('gmd:EX_BoundingPolygon'), extractGeometry),
952
+ pipe(findChildElement('gmd:EX_GeographicBoundingBox'), extractBBox),
953
+ pipe(
954
+ findChildElement('gmd:EX_GeographicDescription'),
955
+ extractDescription
956
+ )
957
+ )
958
+ ),
959
+ mapArray(([geometry, bbox, description]) => {
960
+ return {
961
+ ...(geometry && { geometry }),
962
+ ...(bbox && { bbox }),
963
+ ...(description && { description }),
964
+ }
965
+ })
966
+ )(rootEl)
967
+ }
@@ -0,0 +1,39 @@
1
+ import { XmlElement } from '@rgrove/parse-xml'
2
+ import { Geometry } from 'geojson'
3
+ import GML32 from 'ol/format/GML32'
4
+ import GeoJSON from 'ol/format/GeoJSON'
5
+ import { parse } from 'ol/xml'
6
+ import {
7
+ createDocument,
8
+ getRootElement,
9
+ parseXmlString,
10
+ xmlToString,
11
+ } from '../../xml-utils'
12
+
13
+ export function readGeometry(el: XmlElement): Geometry {
14
+ const xmlDoc = createDocument(el)
15
+ xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2'
16
+ const gmlString = xmlToString(xmlDoc)
17
+ const doc = parse(gmlString)
18
+ // we need an intermediate node to be able to parse the GML
19
+ const node = document.createElement('pre')
20
+ node.appendChild(doc.documentElement)
21
+ const gml32Format = new GML32()
22
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
+ // @ts-ignore
24
+ const geometry = gml32Format.readGeometryFromNode(node)
25
+ const geojsonFormat = new GeoJSON()
26
+ return geojsonFormat.writeGeometryObject(geometry)
27
+ }
28
+
29
+ export function writeGeometry(geometryObject: Geometry): XmlElement {
30
+ const geojsonFormat = new GeoJSON()
31
+ const geometry = geojsonFormat.readGeometry(geometryObject)
32
+ const gml32Format = new GML32()
33
+ const node = gml32Format.writeGeometryNode(geometry)
34
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
+ // @ts-ignore
36
+ const element = node.firstElementChild as HTMLElement
37
+ const gmlString = new XMLSerializer().serializeToString(element)
38
+ return getRootElement(parseXmlString(gmlString))
39
+ }
@@ -14,7 +14,9 @@ import {
14
14
  UpdateFrequencyCode,
15
15
  UpdateFrequencyCustom,
16
16
  } from '../../../../../../libs/common/domain/src/lib/model/record'
17
+ import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
17
18
  import format from 'date-fns/format'
19
+ import { Geometry } from 'geojson'
18
20
  import {
19
21
  ChainableFunction,
20
22
  fallback,
@@ -44,8 +46,8 @@ import {
44
46
  setTextContent,
45
47
  } from '../xml-utils'
46
48
  import { readKind } from './read-parts'
49
+ import { writeGeometry } from './utils/geometry'
47
50
  import { namePartsToFull } from './utils/individual-name'
48
- import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
49
51
 
50
52
  export function writeCharacterString(
51
53
  text: string
@@ -101,6 +103,14 @@ export function writeDate(
101
103
  )
102
104
  }
103
105
 
106
+ export function writeDecimal(
107
+ decimal: number
108
+ ): ChainableFunction<XmlElement, XmlElement> {
109
+ return tap(
110
+ pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString()))
111
+ )
112
+ }
113
+
104
114
  export function getProgressCode(status: RecordStatus): string {
105
115
  switch (status) {
106
116
  case 'completed':
@@ -1184,3 +1194,62 @@ export function writeTemporalExtents(
1184
1194
  )
1185
1195
  )(rootEl)
1186
1196
  }
1197
+
1198
+ export function writeSpatialExtents(record: DatasetRecord, rootEl: XmlElement) {
1199
+ const appendBoundingPolygon = (geometry?: Geometry) => {
1200
+ if (!geometry) return null
1201
+ return pipe(
1202
+ createElement('gmd:EX_BoundingPolygon'),
1203
+ appendChildren(
1204
+ pipe(
1205
+ createElement('gmd:polygon'),
1206
+ appendChildren(() => writeGeometry(geometry))
1207
+ )
1208
+ )
1209
+ )
1210
+ }
1211
+
1212
+ const appendGeographicBoundingBox = (
1213
+ bbox?: [number, number, number, number]
1214
+ ) => {
1215
+ if (!bbox) return null
1216
+ return pipe(
1217
+ createElement('gmd:EX_GeographicBoundingBox'),
1218
+ appendChildren(
1219
+ pipe(createElement('gmd:westBoundLongitude'), writeDecimal(bbox[0])),
1220
+ pipe(createElement('gmd:eastBoundLongitude'), writeDecimal(bbox[2])),
1221
+ pipe(createElement('gmd:southBoundLatitude'), writeDecimal(bbox[1])),
1222
+ pipe(createElement('gmd:northBoundLatitude'), writeDecimal(bbox[3]))
1223
+ )
1224
+ )
1225
+ }
1226
+
1227
+ const appendGeographicDescription = (description?: string) => {
1228
+ if (!description) return null
1229
+ return pipe(
1230
+ createElement('gmd:EX_GeographicDescription'),
1231
+ createChild('gmd:geographicIdentifier'),
1232
+ createChild('gmd:MD_Identifier'),
1233
+ createChild('gmd:code'),
1234
+ writeCharacterString(description)
1235
+ )
1236
+ }
1237
+
1238
+ pipe(
1239
+ findOrCreateIdentification(),
1240
+ findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'),
1241
+ removeChildrenByName('gmd:geographicElement'),
1242
+ appendChildren(
1243
+ ...record.spatialExtents.map((extent) =>
1244
+ pipe(
1245
+ createElement('gmd:geographicElement'),
1246
+ appendChildren(
1247
+ appendBoundingPolygon(extent.geometry),
1248
+ appendGeographicBoundingBox(extent.bbox),
1249
+ appendGeographicDescription(extent.description)
1250
+ )
1251
+ )
1252
+ )
1253
+ )
1254
+ )(rootEl)
1255
+ }