geonetwork-ui 2.2.0-dev.6695ae4d → 2.2.0-dev.6f0f0ee9

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 (126) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +27 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -8
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -2
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +7 -9
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -8
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +31 -14
  9. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  10. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  13. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  15. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
  16. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
  17. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  18. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  19. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  20. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  21. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +7 -7
  22. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
  23. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +3 -3
  24. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +4 -4
  25. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
  26. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  27. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  28. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -6
  29. package/esm2022/translations/de.json +2 -1
  30. package/esm2022/translations/en.json +2 -1
  31. package/esm2022/translations/es.json +2 -1
  32. package/esm2022/translations/fr.json +2 -1
  33. package/esm2022/translations/it.json +2 -1
  34. package/esm2022/translations/nl.json +2 -1
  35. package/esm2022/translations/pt.json +2 -1
  36. package/fesm2022/geonetwork-ui.mjs +267 -122
  37. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  38. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +2 -0
  39. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  40. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  41. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -5
  42. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  43. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
  44. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
  45. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  46. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +2 -3
  47. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  48. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +1 -1
  49. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  50. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  51. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  52. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  53. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  54. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  55. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +13 -2
  56. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  57. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  58. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  59. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  60. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  61. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  62. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  63. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  64. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  65. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  66. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
  67. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
  68. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +3 -3
  69. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  70. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  71. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
  72. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  73. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  74. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  75. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  76. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -40
  77. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  78. package/package.json +1 -1
  79. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +55 -2
  80. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +50 -6
  81. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +203 -20
  82. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +29 -0
  83. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +11 -8
  84. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -1
  85. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +3 -5
  86. package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
  87. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +5 -9
  88. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +53 -19
  89. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +78 -36
  90. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  91. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  92. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  93. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +16 -3
  94. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  95. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  96. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  97. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +50 -10
  98. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
  99. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
  100. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  101. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  102. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  103. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  104. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  105. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  106. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
  107. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +6 -6
  108. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +6 -3
  109. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
  110. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
  111. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
  112. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
  113. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
  114. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
  115. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  116. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
  117. package/tailwind.base.config.js +3 -0
  118. package/tailwind.base.css +2 -2
  119. package/translations/de.json +2 -1
  120. package/translations/en.json +2 -1
  121. package/translations/es.json +2 -1
  122. package/translations/fr.json +2 -1
  123. package/translations/it.json +2 -1
  124. package/translations/nl.json +2 -1
  125. package/translations/pt.json +2 -1
  126. package/translations/sk.json +2 -1
@@ -1,48 +1,48 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./dropdown-selector/dropdown-selector.component";
3
3
  import * as i2 from "./autocomplete/autocomplete.component";
4
- import * as i3 from "./button/button.component";
5
- import * as i4 from "./text-input/text-input.component";
6
- import * as i5 from "./drag-and-drop-file-input/drag-and-drop-file-input.component";
7
- import * as i6 from "./text-area/text-area.component";
8
- import * as i7 from "./chips-input/chips-input.component";
9
- import * as i8 from "./navigation-button/navigation-button.component";
10
- import * as i9 from "./star-toggle/star-toggle.component";
11
- import * as i10 from "./dropdown-multiselect/dropdown-multiselect.component";
12
- import * as i11 from "./viewport-intersector/viewport-intersector.component";
13
- import * as i12 from "./form-field/form-field.component";
14
- import * as i13 from "./form-field/form-field-simple/form-field-simple.component";
15
- import * as i14 from "./form-field/form-field-array/form-field-array.component";
16
- import * as i15 from "./form-field/form-field-object/form-field-object.component";
17
- import * as i16 from "./form-field/form-field-rich/form-field-rich.component";
18
- import * as i17 from "./form-field/form-field-file/form-field-file.component";
19
- import * as i18 from "./form-field/form-field-spatial-extent/form-field-spatial-extent.component";
20
- import * as i19 from "./form-field/form-field-temporal-extent/form-field-temporal-extent.component";
21
- import * as i20 from "./check-toggle/check-toggle.component";
22
- import * as i21 from "./copy-text-button/copy-text-button.component";
23
- import * as i22 from "./checkbox/checkbox.component";
24
- import * as i23 from "./search-input/search-input.component";
25
- import * as i24 from "./date-range-picker/date-range-picker.component";
26
- import * as i25 from "@angular/common";
27
- import * as i26 from "@ngx-translate/core";
28
- import * as i27 from "ngx-dropzone";
29
- import * as i28 from "@angular/forms";
30
- import * as i29 from "ngx-chips";
31
- import * as i30 from "../../../../util/shared/src/lib/util-shared.module";
32
- import * as i31 from "@angular/material/autocomplete";
33
- import * as i32 from "@angular/material/icon";
34
- import * as i33 from "../../../widgets/src/lib/ui-widgets.module";
35
- import * as i34 from "@angular/cdk/overlay";
36
- import * as i35 from "@angular/material/checkbox";
37
- import * as i36 from "@angular/material/tooltip";
38
- import * as i37 from "@angular/material/form-field";
39
- import * as i38 from "@angular/material/input";
40
- import * as i39 from "@angular/material/datepicker";
41
- import * as i40 from "@angular/material/core";
42
- import * as i41 from "./editable-label/editable-label.directive";
4
+ import * as i3 from "./text-input/text-input.component";
5
+ import * as i4 from "./drag-and-drop-file-input/drag-and-drop-file-input.component";
6
+ import * as i5 from "./chips-input/chips-input.component";
7
+ import * as i6 from "./navigation-button/navigation-button.component";
8
+ import * as i7 from "./star-toggle/star-toggle.component";
9
+ import * as i8 from "./dropdown-multiselect/dropdown-multiselect.component";
10
+ import * as i9 from "./viewport-intersector/viewport-intersector.component";
11
+ import * as i10 from "./form-field/form-field.component";
12
+ import * as i11 from "./form-field/form-field-simple/form-field-simple.component";
13
+ import * as i12 from "./form-field/form-field-array/form-field-array.component";
14
+ import * as i13 from "./form-field/form-field-object/form-field-object.component";
15
+ import * as i14 from "./form-field/form-field-rich/form-field-rich.component";
16
+ import * as i15 from "./form-field/form-field-file/form-field-file.component";
17
+ import * as i16 from "./form-field/form-field-spatial-extent/form-field-spatial-extent.component";
18
+ import * as i17 from "./form-field/form-field-temporal-extent/form-field-temporal-extent.component";
19
+ import * as i18 from "./check-toggle/check-toggle.component";
20
+ import * as i19 from "./copy-text-button/copy-text-button.component";
21
+ import * as i20 from "./checkbox/checkbox.component";
22
+ import * as i21 from "./search-input/search-input.component";
23
+ import * as i22 from "./date-range-picker/date-range-picker.component";
24
+ import * as i23 from "@angular/common";
25
+ import * as i24 from "@ngx-translate/core";
26
+ import * as i25 from "ngx-dropzone";
27
+ import * as i26 from "@angular/forms";
28
+ import * as i27 from "ngx-chips";
29
+ import * as i28 from "../../../../util/shared/src/lib/util-shared.module";
30
+ import * as i29 from "@angular/material/autocomplete";
31
+ import * as i30 from "@angular/material/icon";
32
+ import * as i31 from "../../../widgets/src/lib/ui-widgets.module";
33
+ import * as i32 from "@angular/cdk/overlay";
34
+ import * as i33 from "@angular/material/checkbox";
35
+ import * as i34 from "@angular/material/tooltip";
36
+ import * as i35 from "@angular/material/form-field";
37
+ import * as i36 from "@angular/material/input";
38
+ import * as i37 from "@angular/material/datepicker";
39
+ import * as i38 from "@angular/material/core";
40
+ import * as i39 from "./editable-label/editable-label.directive";
41
+ import * as i40 from "./text-area/text-area.component";
42
+ import * as i41 from "./button/button.component";
43
43
  export declare class UiInputsModule {
44
44
  static ɵfac: i0.ɵɵFactoryDeclaration<UiInputsModule, never>;
45
- static ɵmod: i0.ɵɵNgModuleDeclaration<UiInputsModule, [typeof i1.DropdownSelectorComponent, typeof i2.AutocompleteComponent, typeof i3.ButtonComponent, typeof i4.TextInputComponent, typeof i5.DragAndDropFileInputComponent, typeof i6.TextAreaComponent, typeof i7.ChipsInputComponent, typeof i8.NavigationButtonComponent, typeof i9.StarToggleComponent, typeof i10.DropdownMultiselectComponent, typeof i11.ViewportIntersectorComponent, typeof i12.FormFieldComponent, typeof i13.FormFieldSimpleComponent, typeof i14.FormFieldArrayComponent, typeof i15.FormFieldObjectComponent, typeof i16.FormFieldRichComponent, typeof i17.FormFieldFileComponent, typeof i18.FormFieldSpatialExtentComponent, typeof i19.FormFieldTemporalExtentComponent, typeof i20.CheckToggleComponent, typeof i21.CopyTextButtonComponent, typeof i22.CheckboxComponent, typeof i23.SearchInputComponent, typeof i24.DateRangePickerComponent], [typeof i25.CommonModule, typeof i26.TranslateModule, typeof i27.NgxDropzoneModule, typeof i28.FormsModule, typeof i28.ReactiveFormsModule, typeof i29.TagInputModule, typeof i30.UtilSharedModule, typeof i31.MatAutocompleteModule, typeof i32.MatIconModule, typeof i33.UiWidgetsModule, typeof i34.OverlayModule, typeof i35.MatCheckboxModule, typeof i36.MatTooltipModule, typeof i37.MatFormFieldModule, typeof i38.MatInputModule, typeof i39.MatDatepickerModule, typeof i40.MatNativeDateModule, typeof i41.EditableLabelDirective], [typeof i1.DropdownSelectorComponent, typeof i2.AutocompleteComponent, typeof i3.ButtonComponent, typeof i4.TextInputComponent, typeof i5.DragAndDropFileInputComponent, typeof i6.TextAreaComponent, typeof i7.ChipsInputComponent, typeof i8.NavigationButtonComponent, typeof i9.StarToggleComponent, typeof i10.DropdownMultiselectComponent, typeof i11.ViewportIntersectorComponent, typeof i12.FormFieldComponent, typeof i20.CheckToggleComponent, typeof i21.CopyTextButtonComponent, typeof i22.CheckboxComponent, typeof i23.SearchInputComponent, typeof i24.DateRangePickerComponent, typeof i41.EditableLabelDirective]>;
45
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiInputsModule, [typeof i1.DropdownSelectorComponent, typeof i2.AutocompleteComponent, typeof i3.TextInputComponent, typeof i4.DragAndDropFileInputComponent, typeof i5.ChipsInputComponent, typeof i6.NavigationButtonComponent, typeof i7.StarToggleComponent, typeof i8.DropdownMultiselectComponent, typeof i9.ViewportIntersectorComponent, typeof i10.FormFieldComponent, typeof i11.FormFieldSimpleComponent, typeof i12.FormFieldArrayComponent, typeof i13.FormFieldObjectComponent, typeof i14.FormFieldRichComponent, typeof i15.FormFieldFileComponent, typeof i16.FormFieldSpatialExtentComponent, typeof i17.FormFieldTemporalExtentComponent, typeof i18.CheckToggleComponent, typeof i19.CopyTextButtonComponent, typeof i20.CheckboxComponent, typeof i21.SearchInputComponent, typeof i22.DateRangePickerComponent], [typeof i23.CommonModule, typeof i24.TranslateModule, typeof i25.NgxDropzoneModule, typeof i26.FormsModule, typeof i26.ReactiveFormsModule, typeof i27.TagInputModule, typeof i28.UtilSharedModule, typeof i29.MatAutocompleteModule, typeof i30.MatIconModule, typeof i31.UiWidgetsModule, typeof i32.OverlayModule, typeof i33.MatCheckboxModule, typeof i34.MatTooltipModule, typeof i35.MatFormFieldModule, typeof i36.MatInputModule, typeof i37.MatDatepickerModule, typeof i38.MatNativeDateModule, typeof i39.EditableLabelDirective, typeof i40.TextAreaComponent, typeof i41.ButtonComponent], [typeof i1.DropdownSelectorComponent, typeof i2.AutocompleteComponent, typeof i41.ButtonComponent, typeof i3.TextInputComponent, typeof i4.DragAndDropFileInputComponent, typeof i40.TextAreaComponent, typeof i5.ChipsInputComponent, typeof i6.NavigationButtonComponent, typeof i7.StarToggleComponent, typeof i8.DropdownMultiselectComponent, typeof i9.ViewportIntersectorComponent, typeof i10.FormFieldComponent, typeof i18.CheckToggleComponent, typeof i19.CopyTextButtonComponent, typeof i20.CheckboxComponent, typeof i21.SearchInputComponent, typeof i22.DateRangePickerComponent, typeof i39.EditableLabelDirective]>;
46
46
  static ɵinj: i0.ɵɵInjectorDeclaration<UiInputsModule>;
47
47
  }
48
48
  //# sourceMappingURL=ui-inputs.module.d.ts.map
@@ -6,7 +6,7 @@ export declare class InteractiveTableColumnComponent {
6
6
  grow: boolean;
7
7
  sortable: boolean;
8
8
  activeSort: 'asc' | 'desc' | null;
9
- sortChange: EventEmitter<"desc" | "asc">;
9
+ sortChange: EventEmitter<"asc" | "desc">;
10
10
  handleSortChange(): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<InteractiveTableColumnComponent, never>;
12
12
  static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveTableColumnComponent, "gn-ui-interactive-table-column", never, { "grow": { "alias": "grow"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "activeSort": { "alias": "activeSort"; "required": false; }; }, { "sortChange": "sortChange"; }, ["header", "cell"], never, true, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.2.0-dev.6695ae4d",
3
+ "version": "2.2.0-dev.6f0f0ee9",
4
4
  "engines": {
5
5
  "node": ">=14.17.0"
6
6
  },
@@ -57,8 +57,61 @@ Cette section contient des *caractères internationaux* (ainsi que des "caractè
57
57
  url: new URL('http://my-org.net/two.png'),
58
58
  },
59
59
  ],
60
- keywords: ['international', 'test', '_another_keyword_'],
61
- themes: ['testData', 'exampleData'],
60
+ keywords: [
61
+ {
62
+ thesaurus: {
63
+ id: 'geonetwork.thesaurus.local',
64
+ name: 'geonetwork.thesaurus.local',
65
+ },
66
+ type: 'other',
67
+ label: 'international',
68
+ },
69
+ {
70
+ thesaurus: {
71
+ id: 'geonetwork.thesaurus.local',
72
+ name: 'geonetwork.thesaurus.local',
73
+ },
74
+ type: 'other',
75
+ label: 'test',
76
+ },
77
+ {
78
+ thesaurus: {
79
+ id: 'geonetwork.thesaurus.local',
80
+ name: 'geonetwork.thesaurus.local',
81
+ },
82
+ type: 'other',
83
+ label: '_another_keyword_',
84
+ },
85
+ {
86
+ thesaurus: {
87
+ id: 'geonetwork.thesaurus.theme',
88
+ name: 'geonetwork.thesaurus.theme',
89
+ },
90
+ type: 'theme',
91
+ label: 'test theme',
92
+ },
93
+ {
94
+ thesaurus: {
95
+ id: 'geonetwork.thesaurus.place',
96
+ name: 'geonetwork.thesaurus.place',
97
+ },
98
+ type: 'place',
99
+ label: 'test place',
100
+ },
101
+ {
102
+ type: 'theme',
103
+ label: 'themeNoThesaurus',
104
+ },
105
+ {
106
+ type: 'theme',
107
+ label: 'themeNoThesaurus 2',
108
+ },
109
+ {
110
+ type: 'temporal',
111
+ label: 'temporalNoThesaurus',
112
+ },
113
+ ],
114
+ topics: ['agriculture'],
62
115
  spatialRepresentation: 'grid',
63
116
  distributions: [
64
117
  {
@@ -38,13 +38,57 @@ Malgré l'attention portée à la création de ces données, il est rappelé que
38
38
  },
39
39
  ],
40
40
  keywords: [
41
- 'planification',
42
- 'PLU',
43
- "Plan local d'urbanisme",
44
- 'données ouvertes',
45
- 'Avrigny*60036',
41
+ {
42
+ thesaurus: {
43
+ name: 'GEMET - INSPIRE themes, version 1.0',
44
+ id: 'geonetwork.thesaurus.external.theme.inspire-theme',
45
+ url: new URL(
46
+ 'http://geo.compiegnois.fr/geonetwork/srv/eng/thesaurus.download?ref=external.theme.inspire-theme'
47
+ ),
48
+ },
49
+ type: 'theme',
50
+ label: 'Usage des sols',
51
+ },
52
+ {
53
+ thesaurus: {
54
+ name: 'GEMET - Concepts, version 2.4',
55
+ id: 'geonetwork.thesaurus.external.theme.gemet',
56
+ url: new URL(
57
+ 'http://geo.compiegnois.fr/geonetwork/srv/eng/thesaurus.download?ref=external.theme.gemet'
58
+ ),
59
+ },
60
+ type: 'theme',
61
+ label: "document d'urbanisme",
62
+ },
63
+ {
64
+ type: 'other',
65
+ label: 'planification',
66
+ },
67
+ {
68
+ type: 'other',
69
+ label: 'PLU',
70
+ },
71
+ {
72
+ type: 'other',
73
+ label: "Plan local d'urbanisme",
74
+ },
75
+ {
76
+ type: 'other',
77
+ label: 'données ouvertes',
78
+ },
79
+ {
80
+ thesaurus: {
81
+ id: 'geonetwork.thesaurus.external.place.GeoCompiegnois',
82
+ name: 'Collectivités du Pays Compiégnois',
83
+ url: new URL(
84
+ 'http://geo.compiegnois.fr/geonetwork/srv/eng/thesaurus.download?ref=external.place.GeoCompiegnois'
85
+ ),
86
+ },
87
+ type: 'place',
88
+ label: 'Avrigny*60036',
89
+ },
46
90
  ],
47
- themes: ['Usage des sols', "document d'urbanisme"],
91
+ topics: ['planningCadastre'],
48
92
  spatialRepresentation: 'vector',
49
93
  distributions: [
50
94
  {
@@ -33,25 +33,185 @@ export const GEOCAT_CH_DATASET_RECORD: DatasetRecord = {
33
33
  title: 'Alpenkonvention',
34
34
  abstract: `Perimeter der Alpenkonvention in der Schweiz. Die Alpenkonvention ist ein völkerrechtlicher Vertrag zwischen den acht Alpenländern Deutschland, Frankreich, Italien, Liechtenstein, Monaco, Österreich, Schweiz, Slowenien sowie der Europäischen Union. Das Ziel des Übereinkommens ist der Schutz der Alpen durch eine sektorübergreifende, ganzheitliche und nachhaltige Politik.`,
35
35
  overviews: [],
36
- themes: [
37
- 'Aufbewahrungs- und Archivierungsplanung AAP - Bund',
38
- 'Geobasisdaten',
39
- 'e-geo.ch',
40
- 'opendata.swiss',
41
- 'Nachhaltige Entwicklung',
42
- 'Raumplanung',
43
- 'Bergschutz',
44
- 'Bodenschutz',
45
- 'Umweltpolitik',
46
- 'Umweltpolitik',
47
- 'Verkehr',
48
- 'Verkehr',
49
- 'Verkehr',
50
- 'Umweltüberwachung',
51
- 'Verwaltungseinheiten',
52
- 'BGDI Bundesgeodaten-Infrastruktur',
36
+ topics: ['planningCadastre', 'planningCadastre_Planning'],
37
+ keywords: [
38
+ {
39
+ thesaurus: {
40
+ name: 'geocat.ch',
41
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
42
+ url: new URL(
43
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
44
+ ),
45
+ },
46
+ type: 'theme',
47
+ label: 'Aufbewahrungs- und Archivierungsplanung AAP - Bund',
48
+ },
49
+ {
50
+ thesaurus: {
51
+ name: 'geocat.ch',
52
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
53
+ url: new URL(
54
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
55
+ ),
56
+ },
57
+ type: 'theme',
58
+ label: 'Geobasisdaten',
59
+ },
60
+ {
61
+ thesaurus: {
62
+ name: 'geocat.ch',
63
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
64
+ url: new URL(
65
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
66
+ ),
67
+ },
68
+ type: 'theme',
69
+ label: 'e-geo.ch',
70
+ },
71
+ {
72
+ label: 'opendata.swiss',
73
+ thesaurus: {
74
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
75
+ name: 'geocat.ch',
76
+ url: new URL(
77
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
78
+ ),
79
+ },
80
+ type: 'theme',
81
+ },
82
+ {
83
+ label: 'Nachhaltige Entwicklung',
84
+ thesaurus: {
85
+ id: 'geonetwork.thesaurus.external.theme.gemet',
86
+ name: 'GEMET',
87
+ url: new URL(
88
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
89
+ ),
90
+ },
91
+ type: 'theme',
92
+ },
93
+ {
94
+ label: 'Raumplanung',
95
+ thesaurus: {
96
+ id: 'geonetwork.thesaurus.external.theme.gemet',
97
+ name: 'GEMET',
98
+ url: new URL(
99
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
100
+ ),
101
+ },
102
+ type: 'theme',
103
+ },
104
+ {
105
+ label: 'Bergschutz',
106
+ thesaurus: {
107
+ id: 'geonetwork.thesaurus.external.theme.gemet',
108
+ name: 'GEMET',
109
+ url: new URL(
110
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
111
+ ),
112
+ },
113
+ type: 'theme',
114
+ },
115
+ {
116
+ label: 'Bodenschutz',
117
+ thesaurus: {
118
+ id: 'geonetwork.thesaurus.external.theme.gemet',
119
+ name: 'GEMET',
120
+ url: new URL(
121
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
122
+ ),
123
+ },
124
+ type: 'theme',
125
+ },
126
+ {
127
+ label: 'Umweltpolitik',
128
+ thesaurus: {
129
+ id: 'geonetwork.thesaurus.external.theme.gemet',
130
+ name: 'GEMET',
131
+ url: new URL(
132
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
133
+ ),
134
+ },
135
+ type: 'theme',
136
+ },
137
+ {
138
+ label: 'Umweltpolitik',
139
+ thesaurus: {
140
+ id: 'geonetwork.thesaurus.external.theme.gemet',
141
+ name: 'GEMET',
142
+ url: new URL(
143
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
144
+ ),
145
+ },
146
+ type: 'theme',
147
+ },
148
+ {
149
+ label: 'Verkehr',
150
+ thesaurus: {
151
+ id: 'geonetwork.thesaurus.external.theme.gemet',
152
+ name: 'GEMET',
153
+ url: new URL(
154
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
155
+ ),
156
+ },
157
+ type: 'theme',
158
+ },
159
+ {
160
+ label: 'Verkehr',
161
+ thesaurus: {
162
+ id: 'geonetwork.thesaurus.external.theme.gemet',
163
+ name: 'GEMET',
164
+ url: new URL(
165
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
166
+ ),
167
+ },
168
+ type: 'theme',
169
+ },
170
+ {
171
+ label: 'Verkehr',
172
+ thesaurus: {
173
+ id: 'geonetwork.thesaurus.external.theme.gemet',
174
+ name: 'GEMET',
175
+ url: new URL(
176
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
177
+ ),
178
+ },
179
+ type: 'theme',
180
+ },
181
+ {
182
+ label: 'Umweltüberwachung',
183
+ thesaurus: {
184
+ id: 'geonetwork.thesaurus.external.theme.inspire-theme',
185
+ name: 'GEMET - INSPIRE themes, version 1.0',
186
+ url: new URL(
187
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
188
+ ),
189
+ },
190
+ type: 'theme',
191
+ },
192
+ {
193
+ label: 'Verwaltungseinheiten',
194
+ thesaurus: {
195
+ id: 'geonetwork.thesaurus.external.theme.inspire-theme',
196
+ name: 'GEMET - INSPIRE themes, version 1.0',
197
+ url: new URL(
198
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
199
+ ),
200
+ },
201
+ type: 'theme',
202
+ },
203
+ {
204
+ label: 'BGDI Bundesgeodaten-Infrastruktur',
205
+ thesaurus: {
206
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
207
+ name: 'geocat.ch',
208
+ url: new URL(
209
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
210
+ ),
211
+ },
212
+ type: 'theme',
213
+ },
53
214
  ],
54
- keywords: [],
55
215
  spatialRepresentation: 'vector',
56
216
  distributions: [
57
217
  {
@@ -210,8 +370,31 @@ export const GEOCAT_CH_SERVICE_RECORD: ServiceRecord = {
210
370
  description: 'Vorschaubild',
211
371
  },
212
372
  ],
213
- themes: [],
214
- keywords: ['Verkehr', 'opendata.swiss'],
373
+ topics: [],
374
+ keywords: [
375
+ {
376
+ label: 'Verkehr',
377
+ thesaurus: {
378
+ id: 'geonetwork.thesaurus.external.theme.gemet',
379
+ name: 'GEMET',
380
+ url: new URL(
381
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
382
+ ),
383
+ },
384
+ type: 'other',
385
+ },
386
+ {
387
+ label: 'opendata.swiss',
388
+ thesaurus: {
389
+ id: 'geonetwork.thesaurus.local.theme.geocat.ch',
390
+ name: 'geocat.ch',
391
+ url: new URL(
392
+ 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch'
393
+ ),
394
+ },
395
+ type: 'other',
396
+ },
397
+ ],
215
398
  onlineResources: [
216
399
  {
217
400
  type: 'link',
@@ -3,6 +3,8 @@ import {
3
3
  Organization,
4
4
  } from '../../../../../../libs/common/domain/src/lib/model/record'
5
5
  import { getRoleFromRoleCode } from '../iso19139/codelists/role.mapper'
6
+ import { Thesaurus } from './types'
7
+ import { getKeywordTypeFromKeywordTypeCode } from '../iso19139/codelists/keyword.mapper'
6
8
 
7
9
  export type SourceWithUnknownProps = { [key: string]: unknown }
8
10
 
@@ -98,3 +100,30 @@ export const mapContact = (
98
100
  ...(phone && { phone }),
99
101
  }
100
102
  }
103
+
104
+ export const mapKeywords = (thesauri: Thesaurus[], language: string) => {
105
+ const keywords = []
106
+ for (const thesaurusId in thesauri) {
107
+ const rawThesaurus = thesauri[thesaurusId]
108
+ let thesaurus = null
109
+ if (rawThesaurus.id) {
110
+ const thesaurusSource: SourceWithUnknownProps = { ...rawThesaurus }
111
+ const url = getAsUrl(selectField(thesaurusSource, 'link'))
112
+ const name = selectField(thesaurusSource, 'title')
113
+ thesaurus = {
114
+ id: rawThesaurus.id,
115
+ ...(name && { name }),
116
+ ...(url && { url }),
117
+ }
118
+ }
119
+ for (const keyword of rawThesaurus.keywords) {
120
+ keywords.push({
121
+ label: selectTranslatedValue<string>(keyword, language),
122
+ type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
123
+ ...(thesaurus && { thesaurus }),
124
+ })
125
+ }
126
+ }
127
+
128
+ return keywords
129
+ }
@@ -4,6 +4,7 @@ import {
4
4
  getAsUrl,
5
5
  getFirstValue,
6
6
  mapContact,
7
+ mapKeywords,
7
8
  selectFallback,
8
9
  selectFallbackFields,
9
10
  selectField,
@@ -28,6 +29,7 @@ import {
28
29
  } from '../../../../../../libs/common/domain/src/lib/model/record'
29
30
  import { matchProtocol } from '../common/distribution.mapper'
30
31
  import { LangService } from '../../../../../../libs/util/i18n/src'
32
+ import { Thesaurus } from './types'
31
33
 
32
34
  type ESResponseSource = SourceWithUnknownProps
33
35
 
@@ -92,8 +94,8 @@ export class Gn4FieldMapper {
92
94
  },
93
95
  cl_topic: (output, source) => ({
94
96
  ...output,
95
- themes: [
96
- ...(output.themes || []),
97
+ topics: [
98
+ ...(output.topics || []),
97
99
  ...getAsArray(
98
100
  selectField<SourceWithUnknownProps[]>(source, 'cl_topic')
99
101
  ).map((topic) => selectTranslatedValue<string>(topic, this.lang3)),
@@ -171,16 +173,17 @@ export class Gn4FieldMapper {
171
173
  output
172
174
  )
173
175
  },
174
- tag: (output, source) => ({
176
+ allKeywords: (output, source) => ({
175
177
  ...output,
176
- keywords: getAsArray(
177
- selectField<SourceWithUnknownProps[]>(source, 'tag')
178
- ).map((tag) => selectTranslatedValue<string>(tag, this.lang3)),
178
+ keywords: mapKeywords(
179
+ selectField<Thesaurus[]>(source, 'allKeywords'),
180
+ this.lang3
181
+ ),
179
182
  }),
180
183
  inspireTheme: (output, source) => ({
181
184
  ...output,
182
- themes: [
183
- ...(output.themes || []),
185
+ topics: [
186
+ ...(output.topics || []),
184
187
  ...getAsArray(selectField(source, 'inspireTheme_syn')),
185
188
  ],
186
189
  }),
@@ -32,7 +32,7 @@ export class Gn4MetadataMapper extends MetadataBaseMapper<Gn4Record> {
32
32
  contacts: [],
33
33
  contactsForResource: [],
34
34
  keywords: [],
35
- themes: [],
35
+ topics: [],
36
36
  spatialExtents: [],
37
37
  temporalExtents: [],
38
38
  overviews: [],
@@ -56,15 +56,13 @@ interface SpecificationConformance {
56
56
  pass: BooleanString
57
57
  }
58
58
 
59
- type Keyword = MultilingualField
60
- type Keywords = Keyword[]
61
59
  type ThesaurusName = string
62
- interface Thesaurus {
60
+ export interface Thesaurus {
63
61
  id?: string
64
62
  title?: string
65
63
  theme?: string
66
64
  link?: string
67
- keywords: Keywords
65
+ keywords: MultilingualField[]
68
66
  }
69
67
 
70
68
  export interface Link {
@@ -175,7 +173,7 @@ export type MetadataObject = Partial<{
175
173
  specificationConformance: MaybeArray<SpecificationConformance>
176
174
  standardNameObject: MultilingualField
177
175
  standardVersionObject: MultilingualField
178
- tag: Keywords
176
+ tag: MultilingualField[]
179
177
  tagNumber: string
180
178
  userSavedCount: string
181
179
  userinfo: string
@@ -0,0 +1,16 @@
1
+ import { KeywordType } from '../../../../../../../libs/common/domain/src/lib/model/record'
2
+
3
+ export function getKeywordTypeFromKeywordTypeCode(
4
+ typeCode: string
5
+ ): KeywordType {
6
+ if (!typeCode) return 'other'
7
+ switch (typeCode) {
8
+ case 'theme':
9
+ case 'place':
10
+ case 'temporal':
11
+ case 'other':
12
+ return typeCode
13
+ default:
14
+ return 'other'
15
+ }
16
+ }