geonetwork-ui 2.4.1-dev.73bac9979 → 2.4.1-dev.89bb09dfa

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 (166) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +4 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +5 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +27 -16
  5. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  6. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +7 -1
  7. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +3 -1
  8. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +18 -14
  9. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +15 -5
  10. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +10 -4
  11. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +6 -5
  12. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  13. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +3 -3
  14. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +2 -2
  15. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +95 -12
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +36 -23
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +7 -12
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +17 -12
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +7 -13
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +3 -3
  21. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +3 -3
  22. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
  23. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +11 -15
  24. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +9 -5
  25. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +3 -4
  26. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +3 -3
  27. package/esm2022/libs/ui/elements/src/index.mjs +3 -2
  28. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +213 -0
  29. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +19 -13
  30. package/esm2022/libs/ui/inputs/src/index.mjs +5 -6
  31. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  32. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -5
  33. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +19 -25
  34. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +6 -6
  35. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +9 -4
  36. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -10
  37. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +40 -1
  38. package/esm2022/translations/de.json +32 -6
  39. package/esm2022/translations/en.json +16 -9
  40. package/esm2022/translations/es.json +30 -4
  41. package/esm2022/translations/fr.json +16 -9
  42. package/esm2022/translations/it.json +246 -218
  43. package/esm2022/translations/nl.json +30 -4
  44. package/esm2022/translations/pt.json +30 -4
  45. package/fesm2022/geonetwork-ui.mjs +1473 -1144
  46. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  47. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -1
  48. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  49. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  50. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  51. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +4 -3
  52. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  53. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +4 -3
  54. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  55. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +3 -0
  56. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  57. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +10 -2
  58. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  59. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +6 -2
  60. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  61. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +5 -2
  62. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  63. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +2 -1
  64. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  65. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +2 -1
  66. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +24 -4
  68. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  69. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +4 -4
  70. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
  71. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +1 -4
  72. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  73. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +6 -5
  74. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  75. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -4
  76. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  77. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  78. package/libs/feature/editor/src/lib/services/editor.service.d.ts +1 -1
  79. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  80. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +0 -1
  81. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  82. package/libs/ui/elements/src/index.d.ts +2 -1
  83. package/libs/ui/elements/src/index.d.ts.map +1 -1
  84. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -0
  85. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  86. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  87. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  88. package/libs/ui/inputs/src/index.d.ts +4 -5
  89. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  90. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  91. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  92. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +1 -1
  93. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  94. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +6 -7
  95. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  96. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -2
  97. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  98. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -1
  99. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  100. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -3
  101. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  102. package/libs/util/shared/src/lib/links/link-utils.d.ts +2 -1
  103. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +4 -3
  106. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -1
  107. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  108. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +53 -27
  109. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +5 -4
  110. package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.fixtures.ts +2 -2
  111. package/src/libs/common/fixtures/src/lib/elasticsearch/search-responses.fixtures.ts +16 -16
  112. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +163 -0
  113. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +24 -4
  114. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +10 -1
  115. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +57 -31
  116. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +15 -9
  117. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +18 -12
  118. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +13 -8
  119. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  120. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +1 -1
  121. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +62 -6
  122. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +108 -4
  123. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +1 -1
  124. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +31 -19
  125. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +1 -10
  126. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +1 -7
  127. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +12 -25
  128. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +15 -10
  129. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +0 -9
  130. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +3 -9
  131. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +6 -6
  132. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  133. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +3 -6
  134. package/src/libs/feature/editor/src/lib/fields.config.ts +10 -14
  135. package/src/libs/feature/editor/src/lib/services/editor.service.ts +18 -16
  136. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +0 -1
  137. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +0 -3
  138. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +1 -0
  139. package/src/libs/ui/elements/src/index.ts +2 -1
  140. package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.html +4 -19
  141. package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.ts +13 -9
  142. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +13 -10
  143. package/src/libs/ui/inputs/src/index.ts +4 -5
  144. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -1
  145. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +1 -1
  146. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +22 -25
  147. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +5 -3
  148. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +1 -1
  149. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +12 -1
  150. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +4 -6
  151. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +23 -6
  152. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -6
  153. package/src/libs/util/shared/src/lib/links/link-utils.ts +51 -1
  154. package/tailwind.base.config.js +2 -0
  155. package/translations/de.json +32 -6
  156. package/translations/en.json +16 -9
  157. package/translations/es.json +30 -4
  158. package/translations/fr.json +16 -9
  159. package/translations/it.json +246 -218
  160. package/translations/nl.json +30 -4
  161. package/translations/pt.json +30 -4
  162. package/translations/sk.json +30 -4
  163. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +0 -214
  164. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +0 -1
  165. /package/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.d.ts +0 -0
  166. /package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.css +0 -0
@@ -4,12 +4,13 @@ import * as i0 from "@angular/core";
4
4
  export declare class InteractiveTableComponent {
5
5
  columns: QueryList<InteractiveTableColumnComponent>;
6
6
  items: unknown[];
7
+ isDraftPage: boolean;
7
8
  itemClick: EventEmitter<unknown>;
8
9
  get gridStyle(): {
9
10
  'grid-template-columns': string;
10
11
  };
11
12
  handleRowClick(item: unknown): void;
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<InteractiveTableComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveTableComponent, "gn-ui-interactive-table", never, { "items": { "alias": "items"; "required": false; }; }, { "itemClick": "itemClick"; }, ["columns"], never, true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveTableComponent, "gn-ui-interactive-table", never, { "items": { "alias": "items"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; }, { "itemClick": "itemClick"; }, ["columns"], never, true, never>;
14
15
  }
15
16
  //# sourceMappingURL=interactive-table.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAGZ,SAAS,EACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAA;;AAS/G,qBASa,yBAAyB;IAEpC,OAAO,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAA;IAE1C,KAAK,EAAE,OAAO,EAAE,CAAK;IACpB,SAAS,wBAA8B;IAEjD,IAAI,SAAS;;MAYZ;IAED,cAAc,CAAC,IAAI,EAAE,OAAO;yCArBjB,yBAAyB;2CAAzB,yBAAyB;CAwBrC"}
1
+ {"version":3,"file":"interactive-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAGZ,SAAS,EACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAA;;AAM/G,qBASa,yBAAyB;IAEpC,OAAO,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAA;IAE1C,KAAK,EAAE,OAAO,EAAE,CAAK;IACrB,WAAW,UAAQ;IAClB,SAAS,wBAA8B;IAEjD,IAAI,SAAS;;MAYZ;IAED,cAAc,CAAC,IAAI,EAAE,OAAO;yCAtBjB,yBAAyB;2CAAzB,yBAAyB;CAyBrC"}
@@ -13,8 +13,8 @@ export declare class ResultsTableComponent {
13
13
  sortOrder: SortByField;
14
14
  hasDraft: (record: CatalogRecord) => boolean;
15
15
  canDuplicate: (record: CatalogRecord) => boolean;
16
- isUnsavedDraft: (record: CatalogRecord) => boolean;
17
16
  canDelete: (record: CatalogRecord) => boolean;
17
+ isDraftPage: boolean;
18
18
  sortByChange: EventEmitter<[string, "desc" | "asc"]>;
19
19
  recordClick: EventEmitter<CatalogRecord>;
20
20
  duplicateRecord: EventEmitter<CatalogRecord>;
@@ -30,7 +30,7 @@ export declare class ResultsTableComponent {
30
30
  getRecordFormats(record: CatalogRecord): FileFormat[];
31
31
  formatUserInfo(userInfo: string | unknown): string;
32
32
  getBadgeColor(format: FileFormat): string;
33
- handleRecordClick(item: unknown): void;
33
+ handleRecordClick(item: CatalogRecord): void;
34
34
  handleDuplicate(item: unknown): void;
35
35
  handleDelete(item: unknown): void;
36
36
  setSortBy(col: string, order: 'asc' | 'desc'): void;
@@ -38,6 +38,6 @@ export declare class ResultsTableComponent {
38
38
  isChecked(record: CatalogRecord): boolean;
39
39
  handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
40
40
  static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableComponent, never>;
41
- 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; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "isUnsavedDraft": { "alias": "isUnsavedDraft"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
41
+ 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; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
42
42
  }
43
43
  //# 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":"AACA,OAAO,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,UAAU,EAKX,MAAM,wCAAwC,CAAA;AAK/C,OAAO,EAGL,OAAO,EAER,MAAM,sBAAsB,CAAA;;AAI7B,qBAmBa,qBAAqB;IAyB9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IA1BJ,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC/D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAGzD,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,YAAY,8BAAoC;IAChD,qBAAqB,2CAE5B;IAGH,iBAAiB,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB,UAAQ;gBAGd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB;IAGhC,cAAc,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAyC7B,eAAe;IAQf,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAerD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,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;yCAnJxD,qBAAqB;2CAArB,qBAAqB;CAsJjC"}
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,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,UAAU,EAKX,MAAM,wCAAwC,CAAA;AAK/C,OAAO,EAGL,OAAO,EAER,MAAM,sBAAsB,CAAA;;AAI7B,qBAkBa,qBAAqB;IAyB9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IA1BJ,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC1D,WAAW,UAAQ;IAGlB,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,YAAY,8BAAoC;IAChD,qBAAqB,2CAE5B;IAGH,iBAAiB,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB,UAAQ;gBAGd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB;IAGhC,cAAc,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAyC7B,eAAe;IAQf,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAerD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,aAAa;IAKrC,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,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;yCApJxD,qBAAqB;2CAArB,qBAAqB;CAuJjC"}
@@ -1,4 +1,4 @@
1
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record';
1
+ import { DatasetOnlineResource, ServiceProtocol } from '../../../../../../libs/common/domain/src/lib/model/record';
2
2
  export declare const FORMATS: {
3
3
  readonly csv: {
4
4
  readonly extensions: readonly ["csv"];
@@ -107,5 +107,6 @@ export declare function mimeTypeToFormat(mimeType: string): FileFormat;
107
107
  export declare function checkFileFormat(link: DatasetOnlineResource, format: FileFormat): boolean;
108
108
  export declare function getBadgeColor(linkFormat: FileFormat): string;
109
109
  export declare function getLinkLabel(link: DatasetOnlineResource): string;
110
+ export declare function getLayers(url: string, serviceProtocol: ServiceProtocol): Promise<any[]>;
110
111
  export declare function getMimeTypeForFormat(format: FileFormat): string | null;
111
112
  //# sourceMappingURL=link-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;AAIjG,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAcrE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA0BhE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAcrE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA0BhE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,kBA2B5E;AAcD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.4.1-dev.73bac9979",
3
+ "version": "2.4.1-dev.89bb09dfa",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -18,7 +18,8 @@ export class Gn4Converter extends BaseConverter<Gn4Record> {
18
18
  }
19
19
 
20
20
  readRecord(document: Gn4Record): Promise<CatalogRecord> {
21
- const { _source } = document
21
+ const { _source, ...rootDocument } = document
22
+ const allKeys = { ..._source, ...rootDocument }
22
23
  const emptyRecord: Partial<CatalogRecord> = {
23
24
  kind: 'dataset',
24
25
  status: null,
@@ -40,9 +41,9 @@ export class Gn4Converter extends BaseConverter<Gn4Record> {
40
41
  defaultLanguage: null,
41
42
  otherLanguages: [],
42
43
  }
43
- const record: CatalogRecord = Object.keys(_source).reduce(
44
+ const record: CatalogRecord = Object.keys(allKeys).reduce(
44
45
  (prev, fieldName) =>
45
- this.fieldMapper.getMappingFn(fieldName)(prev, _source),
46
+ this.fieldMapper.getMappingFn(fieldName)(prev, allKeys),
46
47
  emptyRecord
47
48
  )
48
49
  return lastValueFrom(
@@ -280,7 +280,14 @@ export class Gn4FieldMapper {
280
280
  isPublishedToAll: (output, source) =>
281
281
  this.addExtra(
282
282
  {
283
- isPublishedToAll: selectField(source, 'isPublishedToAll') !== 'false',
283
+ isPublishedToAll: selectField(source, 'isPublishedToAll'),
284
+ },
285
+ output
286
+ ),
287
+ edit: (output, source) =>
288
+ this.addExtra(
289
+ {
290
+ edit: selectField(source, 'edit'),
284
291
  },
285
292
  output
286
293
  ),
@@ -131,6 +131,7 @@ export type MetadataObject = Partial<{
131
131
  inspireTheme_syn: string[]
132
132
  isHarvested: string
133
133
  isOpenData: string
134
+ edit: boolean
134
135
  isPublishedToAll: string
135
136
  isTemplate: string
136
137
  keywordType: Record<string, MultilingualField[]>
@@ -201,6 +201,22 @@ export class Gn4Repository implements RecordsRepositoryInterface {
201
201
  )
202
202
  }
203
203
 
204
+ getRecordPublicationStatus(uniqueIdentifier: string): Observable<boolean> {
205
+ return uniqueIdentifier
206
+ ? this.getRecord(uniqueIdentifier).pipe(
207
+ map((record) => record.extras['isPublishedToAll'] as boolean)
208
+ )
209
+ : of(true)
210
+ }
211
+
212
+ canEditRecord(uniqueIdentifier: string): Observable<boolean> {
213
+ return this.getRecord(uniqueIdentifier).pipe(
214
+ map((record) => {
215
+ return record.extras['edit'] as boolean
216
+ })
217
+ )
218
+ }
219
+
204
220
  openRecordForEdition(
205
221
  uniqueIdentifier: string
206
222
  ): Observable<[CatalogRecord, string, boolean] | null> {
@@ -223,31 +239,45 @@ export class Gn4Repository implements RecordsRepositoryInterface {
223
239
 
224
240
  openRecordForDuplication(
225
241
  uniqueIdentifier: string
226
- ): Observable<[CatalogRecord, string, false] | null> {
227
- return this.getRecordAsXml(uniqueIdentifier).pipe(
228
- switchMap(async (fetchedRecordAsXml) => {
229
- const converter = findConverterForDocument(fetchedRecordAsXml)
230
- const record = await converter.readRecord(fetchedRecordAsXml)
231
-
232
- record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`
233
- record.title = `${record.title} (Copy)`
234
-
235
- const recordAsXml = await converter.writeRecord(
236
- record,
237
- fetchedRecordAsXml
238
- )
239
-
240
- this.saveRecordToLocalStorage(recordAsXml, record.uniqueIdentifier)
241
- this._draftsChanged.next()
242
-
243
- return [record, recordAsXml, false] as [CatalogRecord, string, false]
244
- })
245
- )
242
+ ): Observable<[CatalogRecord, string, true] | null> {
243
+ return this.gn4RecordsApi
244
+ .create(
245
+ uniqueIdentifier,
246
+ '2',
247
+ 'METADATA',
248
+ '',
249
+ false,
250
+ undefined,
251
+ true,
252
+ false,
253
+ undefined,
254
+ 'body',
255
+ false,
256
+ {
257
+ httpHeaderAccept: 'application/json',
258
+ httpContentTypeSelected: 'application/json;charset=UTF-8',
259
+ }
260
+ )
261
+ .pipe(
262
+ switchMap((uniqueIdentifier) => {
263
+ return this.getRecordAsXml(uniqueIdentifier)
264
+ }),
265
+ switchMap((xml) => {
266
+ return from(
267
+ findConverterForDocument(xml)
268
+ .readRecord(xml)
269
+ .then((record) => {
270
+ return [record, xml, true] as [CatalogRecord, string, true]
271
+ })
272
+ )
273
+ })
274
+ )
246
275
  }
247
276
 
248
277
  saveRecord(
249
278
  record: CatalogRecord,
250
- referenceRecordSource?: string
279
+ referenceRecordSource?: string,
280
+ publishToAll = true
251
281
  ): Observable<string> {
252
282
  return this.platformService.getApiVersion().pipe(
253
283
  map((version) => {
@@ -262,7 +292,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
262
292
  undefined,
263
293
  undefined,
264
294
  undefined,
265
- true,
295
+ publishToAll,
266
296
  undefined,
267
297
  'OVERWRITE',
268
298
  undefined,
@@ -337,10 +367,6 @@ export class Gn4Repository implements RecordsRepositoryInterface {
337
367
  return this.getRecordFromLocalStorage(uniqueIdentifier) !== null
338
368
  }
339
369
 
340
- isRecordNotYetSaved(uniqueIdentifier: string): boolean {
341
- return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX)
342
- }
343
-
344
370
  // generated by copilot
345
371
  getAllDrafts(): Observable<CatalogRecord[]> {
346
372
  const items = { ...window.localStorage }
@@ -368,7 +394,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
368
394
 
369
395
  hasRecordChangedSinceDraft(localRecord: CatalogRecord) {
370
396
  return of({
371
- isUnsaved: this.isRecordNotYetSaved(localRecord.uniqueIdentifier),
397
+ isUnsaved: !localRecord.uniqueIdentifier,
372
398
  hasDraft: this.recordHasDraft(localRecord.uniqueIdentifier),
373
399
  }).pipe(
374
400
  switchMap(({ isUnsaved, hasDraft }) => {
@@ -17,7 +17,7 @@ export abstract class RecordsRepositoryInterface {
17
17
  similarTo: CatalogRecord
18
18
  ): Observable<CatalogRecord[]>
19
19
  abstract fuzzySearch(query: string): Observable<SearchResults>
20
-
20
+ abstract canEditRecord(uniqueIdentifier: string): Observable<boolean>
21
21
  /**
22
22
  * This emits once:
23
23
  * - record object; if a draft exists, this will return it
@@ -40,7 +40,7 @@ export abstract class RecordsRepositoryInterface {
40
40
  */
41
41
  abstract openRecordForDuplication(
42
42
  uniqueIdentifier: string
43
- ): Observable<[CatalogRecord, string, false] | null>
43
+ ): Observable<[CatalogRecord, string, true] | null>
44
44
 
45
45
  /**
46
46
  * @param record
@@ -49,7 +49,8 @@ export abstract class RecordsRepositoryInterface {
49
49
  */
50
50
  abstract saveRecord(
51
51
  record: CatalogRecord,
52
- referenceRecordSource?: string
52
+ referenceRecordSource?: string,
53
+ publishToAll?: boolean
53
54
  ): Observable<string>
54
55
 
55
56
  /**
@@ -82,7 +83,6 @@ export abstract class RecordsRepositoryInterface {
82
83
 
83
84
  abstract clearRecordDraft(uniqueIdentifier: string): void
84
85
  abstract recordHasDraft(uniqueIdentifier: string): boolean
85
- abstract isRecordNotYetSaved(uniqueIdentifier: string): boolean
86
86
 
87
87
  /** will return all pending drafts, both published and not published */
88
88
  abstract getAllDrafts(): Observable<CatalogRecord[]>
@@ -91,4 +91,5 @@ export abstract class RecordsRepositoryInterface {
91
91
  abstract hasRecordChangedSinceDraft(
92
92
  localRecord: CatalogRecord
93
93
  ): Observable<{ user: string; date: Date }>
94
+ abstract getRecordPublicationStatus(uuid: string): Observable<boolean>
94
95
  }
@@ -1578,7 +1578,7 @@ export const elasticFullResponseFixture = () => ({
1578
1578
  'http://inspire.ec.europa.eu/metadatacodelist/LimitationsOnPublicAccess/noLimitations',
1579
1579
  ],
1580
1580
  },
1581
- edit: false,
1581
+ edit: true,
1582
1582
  owner: false,
1583
1583
  isPublishedToAll: true,
1584
1584
  view: true,
@@ -3249,7 +3249,7 @@ export const elasticFullResponseFixture = () => ({
3249
3249
  userSavedCount: '0',
3250
3250
  sourceCatalogue: '7ea582d4-9ddf-422e-b28f-29760a4c0147',
3251
3251
  },
3252
- edit: false,
3252
+ edit: true,
3253
3253
  canReview: false,
3254
3254
  owner: false,
3255
3255
  isPublishedToAll: true,
@@ -124,9 +124,9 @@ export const elasticHitsOnlyFixture = () => ({
124
124
  sourceCatalogue: '6731be1e-6533-44e0-9b8a-580b45e36e80',
125
125
  link: [],
126
126
  },
127
- edit: false,
127
+ edit: true,
128
128
  owner: false,
129
- isPublishedToAll: false,
129
+ isPublishedToAll: true,
130
130
  view: false,
131
131
  notify: false,
132
132
  download: false,
@@ -203,9 +203,9 @@ export const elasticHitsOnlyFixture = () => ({
203
203
  userSavedCount: '4',
204
204
  link: [],
205
205
  },
206
- edit: false,
206
+ edit: true,
207
207
  owner: false,
208
- isPublishedToAll: false,
208
+ isPublishedToAll: true,
209
209
  view: false,
210
210
  notify: false,
211
211
  download: false,
@@ -299,7 +299,7 @@ export const elasticSummaryHitsFixture = () => ({
299
299
  userSavedCount: '5',
300
300
  },
301
301
  sort: [1660176316000],
302
- edit: false,
302
+ edit: true,
303
303
  owner: false,
304
304
  isPublishedToAll: true,
305
305
  view: true,
@@ -370,7 +370,7 @@ export const elasticSummaryHitsFixture = () => ({
370
370
  userSavedCount: '0',
371
371
  },
372
372
  sort: [1660089739000],
373
- edit: false,
373
+ edit: true,
374
374
  owner: false,
375
375
  isPublishedToAll: true,
376
376
  view: true,
@@ -428,7 +428,7 @@ export const elasticSummaryHitsFixture = () => ({
428
428
  userSavedCount: '0',
429
429
  },
430
430
  sort: [1660089729000],
431
- edit: false,
431
+ edit: true,
432
432
  owner: false,
433
433
  isPublishedToAll: true,
434
434
  view: true,
@@ -1531,7 +1531,7 @@ export const elasticServiceMetadataHistsFixture = () => ({
1531
1531
  },
1532
1532
  ],
1533
1533
  },
1534
- edit: false,
1534
+ edit: true,
1535
1535
  canReview: false,
1536
1536
  owner: false,
1537
1537
  isPublishedToAll: true,
@@ -1715,7 +1715,7 @@ export const elasticServiceMetadataHistsFixture = () => ({
1715
1715
  op3: ['1', '25', '14688'],
1716
1716
  op6: ['1', '14688'],
1717
1717
  op5: ['1', '14688'],
1718
- edit: false,
1718
+ edit: true,
1719
1719
  canReview: false,
1720
1720
  owner: false,
1721
1721
  isPublishedToAll: true,
@@ -2369,7 +2369,7 @@ export const elasticServiceMetadataHistsFixture = () => ({
2369
2369
  inspireAnnexForFirstTheme: 'iii',
2370
2370
  userSavedCount: '0',
2371
2371
  },
2372
- edit: false,
2372
+ edit: true,
2373
2373
  canReview: false,
2374
2374
  owner: false,
2375
2375
  isPublishedToAll: true,
@@ -2796,7 +2796,7 @@ export const elasticServiceMetadataHistsFixture = () => ({
2796
2796
  uuid: 'ebef2115-bee5-40bb-b5cc-4593d82ba334',
2797
2797
  op0: '1',
2798
2798
  resourceType: ['dataset', 'map', 'map/static'],
2799
- edit: false,
2799
+ edit: true,
2800
2800
  canReview: false,
2801
2801
  owner: false,
2802
2802
  isPublishedToAll: true,
@@ -4920,7 +4920,7 @@ export const elasticReuseMetadataHitsFixture = () => ({
4920
4920
  },
4921
4921
  ],
4922
4922
  },
4923
- edit: false,
4923
+ edit: true,
4924
4924
  canReview: false,
4925
4925
  owner: false,
4926
4926
  isPublishedToAll: true,
@@ -5148,7 +5148,7 @@ export const elasticReuseMetadataHitsFixture = () => ({
5148
5148
  op3: '1',
5149
5149
  op6: '1',
5150
5150
  op5: '1',
5151
- edit: false,
5151
+ edit: true,
5152
5152
  canReview: false,
5153
5153
  owner: false,
5154
5154
  isPublishedToAll: true,
@@ -12690,7 +12690,7 @@ export const elasticReuseMetadataHitsFixture = () => ({
12690
12690
  inspireAnnexForFirstTheme: 'iii',
12691
12691
  userSavedCount: '0',
12692
12692
  },
12693
- edit: false,
12693
+ edit: true,
12694
12694
  canReview: false,
12695
12695
  owner: false,
12696
12696
  isPublishedToAll: true,
@@ -13022,7 +13022,7 @@ export const elasticReuseMetadataHitsFixture = () => ({
13022
13022
  userSavedCount: '0',
13023
13023
  sourceCatalogue: 'ce008f24-8e0d-45a8-97f8-9f10399f0190',
13024
13024
  },
13025
- edit: false,
13025
+ edit: true,
13026
13026
  canReview: false,
13027
13027
  owner: false,
13028
13028
  isPublishedToAll: true,
@@ -13349,7 +13349,7 @@ export const elasticReuseMetadataHitsFixture = () => ({
13349
13349
  userSavedCount: '0',
13350
13350
  sourceCatalogue: 'ce008f24-8e0d-45a8-97f8-9f10399f0190',
13351
13351
  },
13352
- edit: false,
13352
+ edit: true,
13353
13353
  canReview: false,
13354
13354
  owner: false,
13355
13355
  isPublishedToAll: true,
@@ -157,6 +157,10 @@ As such, **it is not very interesting at all.**`,
157
157
  },
158
158
  otherLanguages: ['de'],
159
159
  defaultLanguage: 'en',
160
+ extras: {
161
+ isPublishedToAll: true,
162
+ edit: true,
163
+ },
160
164
  },
161
165
  {
162
166
  uniqueIdentifier: '7d002c4c-92ef-4b9f-a568-d732f740b99e',
@@ -467,6 +471,165 @@ export const simpleDatasetRecordAsXmlFixture =
467
471
  </mdb:resourceLineage>
468
472
  </mdb:MD_Metadata>`
469
473
 
474
+ export const duplicateDatasetRecordAsXmlFixture =
475
+ (): string => `<?xml version="1.0" encoding="UTF-8"?>
476
+ <mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0">
477
+ <mdb:metadataIdentifier>
478
+ <mcc:MD_Identifier>
479
+ <mcc:code>
480
+ <gco:CharacterString>my-dataset-001</gco:CharacterString>
481
+ </mcc:code>
482
+ </mcc:MD_Identifier>
483
+ </mdb:metadataIdentifier>
484
+ <mdb:metadataScope>
485
+ <mdb:MD_MetadataScope>
486
+ <mdb:resourceScope>
487
+ <mcc:MD_ScopeCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" codeListValue="dataset">dataset</mcc:MD_ScopeCode>
488
+ </mdb:resourceScope>
489
+ </mdb:MD_MetadataScope>
490
+ </mdb:metadataScope>
491
+ <mdb:contact>
492
+ <cit:CI_Responsibility>
493
+ <cit:role>
494
+ <cit:CI_RoleCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" codeListValue="pointOfContact">pointOfContact</cit:CI_RoleCode>
495
+ </cit:role>
496
+ <cit:party>
497
+ <cit:CI_Organisation>
498
+ <cit:name>
499
+ <gco:CharacterString>MyOrganization</gco:CharacterString>
500
+ </cit:name>
501
+ <cit:contactInfo>
502
+ <cit:CI_Contact>
503
+ <cit:address>
504
+ <cit:CI_Address>
505
+ <cit:electronicMailAddress>
506
+ <gco:CharacterString>bob@org.net</gco:CharacterString>
507
+ </cit:electronicMailAddress>
508
+ </cit:CI_Address>
509
+ </cit:address>
510
+ </cit:CI_Contact>
511
+ </cit:contactInfo>
512
+ <cit:individual>
513
+ <cit:CI_Individual>
514
+ <cit:name>
515
+ <gco:CharacterString>Bob TheGreat</gco:CharacterString>
516
+ </cit:name>
517
+ <cit:positionName>
518
+ <gco:CharacterString>developer</gco:CharacterString>
519
+ </cit:positionName>
520
+ </cit:CI_Individual>
521
+ </cit:individual>
522
+ </cit:CI_Organisation>
523
+ </cit:party>
524
+ </cit:CI_Responsibility>
525
+ </mdb:contact>
526
+ <mdb:dateInfo>
527
+ <cit:CI_Date>
528
+ <cit:date>
529
+ <gco:DateTime>2022-02-01T15:12:00</gco:DateTime>
530
+ </cit:date>
531
+ <cit:dateType>
532
+ <cit:CI_DateTypeCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" codeListValue="revision">revision</cit:CI_DateTypeCode>
533
+ </cit:dateType>
534
+ </cit:CI_Date>
535
+ </mdb:dateInfo>
536
+ <mdb:identificationInfo>
537
+ <mri:MD_DataIdentification>
538
+ <mri:citation>
539
+ <cit:CI_Citation>
540
+ <cit:title>
541
+ <gco:CharacterString>Copy of record A very interesting dataset (un jeu de données très intéressant)</gco:CharacterString>
542
+ </cit:title>
543
+ <cit:date>
544
+ <cit:CI_Date>
545
+ <cit:date>
546
+ <gco:DateTime>2022-09-01T14:18:19</gco:DateTime>
547
+ </cit:date>
548
+ <cit:dateType>
549
+ <cit:CI_DateTypeCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" codeListValue="creation">creation</cit:CI_DateTypeCode>
550
+ </cit:dateType>
551
+ </cit:CI_Date>
552
+ </cit:date>
553
+ <cit:date>
554
+ <cit:CI_Date>
555
+ <cit:date>
556
+ <gco:DateTime>2022-12-04T15:12:00</gco:DateTime>
557
+ </cit:date>
558
+ <cit:dateType>
559
+ <cit:CI_DateTypeCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" codeListValue="revision">revision</cit:CI_DateTypeCode>
560
+ </cit:dateType>
561
+ </cit:CI_Date>
562
+ </cit:date>
563
+ </cit:CI_Citation>
564
+ </mri:citation>
565
+ <mri:abstract>
566
+ <gco:CharacterString>This dataset has been established for testing purposes.</gco:CharacterString>
567
+ </mri:abstract>
568
+ <mri:topicCategory>
569
+ <mri:MD_TopicCategoryCode>testData</mri:MD_TopicCategoryCode>
570
+ </mri:topicCategory>
571
+ <mri:status>
572
+ <mcc:MD_ProgressCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ProgressCode" codeListValue="onGoing">onGoing</mcc:MD_ProgressCode>
573
+ </mri:status>
574
+ <mri:resourceMaintenance>
575
+ <mmi:MD_MaintenanceInformation>
576
+ <mmi:userDefinedMaintenanceFrequency>
577
+ <gco:TM_PeriodDuration>P0Y0M10D</gco:TM_PeriodDuration>
578
+ </mmi:userDefinedMaintenanceFrequency>
579
+ </mmi:MD_MaintenanceInformation>
580
+ </mri:resourceMaintenance>
581
+ <mri:spatialRepresentationType>
582
+ <mcc:MD_SpatialRepresentationTypeCode codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode" codeListValue="grid">grid</mcc:MD_SpatialRepresentationTypeCode>
583
+ </mri:spatialRepresentationType>
584
+ </mri:MD_DataIdentification>
585
+ </mdb:identificationInfo>
586
+ <mdb:distributionInfo>
587
+ <mrd:MD_Distribution>
588
+ <mrd:distributionFormat>
589
+ <mrd:MD_Format>
590
+ <mrd:formatSpecificationCitation>
591
+ <cit:CI_Citation>
592
+ <cit:title>
593
+ <gco:CharacterString>x-gis/x-shapefile</gco:CharacterString>
594
+ </cit:title>
595
+ </cit:CI_Citation>
596
+ </mrd:formatSpecificationCitation>
597
+ </mrd:MD_Format>
598
+ </mrd:distributionFormat>
599
+ <mrd:transferOptions>
600
+ <mrd:MD_DigitalTransferOptions>
601
+ <mrd:onLine>
602
+ <cit:CI_OnlineResource>
603
+ <cit:linkage>
604
+ <gco:CharacterString>http://my-org.net/download/1.zip</gco:CharacterString>
605
+ </cit:linkage>
606
+ <cit:description>
607
+ <gco:CharacterString>Dataset downloaded as a shapefile</gco:CharacterString>
608
+ </cit:description>
609
+ <cit:name>
610
+ <gco:CharacterString>Direct download</gco:CharacterString>
611
+ </cit:name>
612
+ <cit:protocol>
613
+ <gco:CharacterString>WWW:DOWNLOAD</gco:CharacterString>
614
+ </cit:protocol>
615
+ <cit:function>
616
+ <cit:CI_OnLineFunctionCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="download"/>
617
+ </cit:function>
618
+ </cit:CI_OnlineResource>
619
+ </mrd:onLine>
620
+ </mrd:MD_DigitalTransferOptions>
621
+ </mrd:transferOptions>
622
+ </mrd:MD_Distribution>
623
+ </mdb:distributionInfo>
624
+ <mdb:resourceLineage>
625
+ <mrl:LI_Lineage>
626
+ <mrl:statement>
627
+ <gco:CharacterString>This record was edited manually to test the conversion processes</gco:CharacterString>
628
+ </mrl:statement>
629
+ </mrl:LI_Lineage>
630
+ </mdb:resourceLineage>
631
+ </mdb:MD_Metadata>`
632
+
470
633
  export const NATIONAL_KEYWORD = {
471
634
  key: 'http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/national',
472
635
  label: 'National',