geonetwork-ui 2.4.0-dev.71a43b38 → 2.4.0-dev.78565730

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/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  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 +12 -1
  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 +2 -6
  7. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  8. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +3 -3
  9. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +7 -2
  10. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
  11. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +7 -3
  12. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +16 -6
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +3 -3
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +1 -2
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +11 -7
  16. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
  17. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +143 -60
  18. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
  19. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
  20. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +4 -3
  21. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +9 -3
  22. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +3 -3
  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/translations/de.json +30 -0
  26. package/esm2022/translations/en.json +30 -0
  27. package/esm2022/translations/es.json +30 -0
  28. package/esm2022/translations/fr.json +30 -0
  29. package/esm2022/translations/it.json +30 -0
  30. package/esm2022/translations/nl.json +30 -0
  31. package/esm2022/translations/pt.json +30 -0
  32. package/fesm2022/geonetwork-ui.mjs +453 -94
  33. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  34. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  35. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  36. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  37. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  38. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  39. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  40. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  41. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +9 -0
  42. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  43. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  44. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +5 -0
  45. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  46. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +4 -4
  47. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  48. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +8 -0
  49. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
  50. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +4 -3
  51. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  52. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +4 -8
  53. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  54. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -1
  55. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  56. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +0 -1
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  58. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +5 -7
  59. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  60. package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
  61. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
  62. package/libs/feature/editor/src/lib/fields.config.d.ts +38 -2
  63. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  64. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +36 -0
  65. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
  66. package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
  67. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  68. package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
  69. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  70. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +3 -1
  71. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  72. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +11 -0
  73. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
  74. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +4 -2
  75. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  78. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
  79. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  80. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -0
  81. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +12 -0
  82. package/src/libs/common/fixtures/src/index.ts +2 -0
  83. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
  84. package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -0
  85. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
  86. package/src/libs/data-access/gn4/src/spec.yaml +0 -8
  87. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +5 -0
  88. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +2 -2
  89. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +9 -1
  90. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +11 -0
  91. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +11 -5
  92. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +22 -8
  93. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +9 -9
  94. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -1
  95. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +0 -1
  96. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +51 -11
  97. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +15 -8
  98. package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
  99. package/src/libs/feature/editor/src/lib/fields.config.ts +175 -61
  100. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +53 -0
  101. package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
  102. package/src/libs/feature/editor/src/lib/services/editor.service.ts +8 -4
  103. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  104. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +5 -0
  105. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
  106. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
  107. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +17 -0
  108. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +22 -0
  109. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +9 -0
  110. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +26 -12
  111. package/translations/de.json +30 -0
  112. package/translations/en.json +30 -0
  113. package/translations/es.json +30 -0
  114. package/translations/fr.json +30 -0
  115. package/translations/it.json +30 -0
  116. package/translations/nl.json +30 -0
  117. package/translations/pt.json +30 -0
  118. package/translations/sk.json +30 -0
  119. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
  120. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
  121. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
  122. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
  123. package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
  124. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
  125. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
  126. package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
@@ -1,4 +1,5 @@
1
1
  import { EditorState } from './editor.reducer';
2
+ import { EditorSectionWithValues } from './editor.models';
2
3
  export declare const selectEditorState: import("@ngrx/store").MemoizedSelector<object, EditorState, import("@ngrx/store").DefaultProjectorFn<EditorState>>;
3
4
  export declare const selectRecord: import("@ngrx/store").MemoizedSelector<object, import("../../../../../common/domain/src/lib/model/record").CatalogRecord, (s1: EditorState) => import("../../../../../common/domain/src/lib/model/record").CatalogRecord>;
4
5
  export declare const selectRecordSource: import("@ngrx/store").MemoizedSelector<object, string, (s1: EditorState) => string>;
@@ -6,12 +7,7 @@ export declare const selectRecordSaving: import("@ngrx/store").MemoizedSelector<
6
7
  export declare const selectRecordSaveError: import("@ngrx/store").MemoizedSelector<object, string, (s1: EditorState) => string>;
7
8
  export declare const selectRecordChangedSinceSave: import("@ngrx/store").MemoizedSelector<object, boolean, (s1: EditorState) => boolean>;
8
9
  export declare const selectRecordAlreadySavedOnce: import("@ngrx/store").MemoizedSelector<object, boolean, (s1: EditorState) => boolean>;
9
- export declare const selectRecordFieldsConfig: import("@ngrx/store").MemoizedSelector<object, import("../models/fields.model").EditorFieldsConfig, (s1: EditorState) => import("../models/fields.model").EditorFieldsConfig>;
10
- export declare const selectRecordFields: import("@ngrx/store").MemoizedSelector<object, {
11
- config: import("../models/fields.model").EditorFieldConfig;
12
- value: any;
13
- }[], (s1: EditorState) => {
14
- config: import("../models/fields.model").EditorFieldConfig;
15
- value: any;
16
- }[]>;
10
+ export declare const selectEditorConfig: import("@ngrx/store").MemoizedSelector<object, import("geonetwork-ui").EditorConfig, (s1: EditorState) => import("geonetwork-ui").EditorConfig>;
11
+ export declare const selectCurrentPage: import("@ngrx/store").MemoizedSelector<object, number, (s1: EditorState) => number>;
12
+ export declare const selectRecordSections: import("@ngrx/store").MemoizedSelector<object, EditorSectionWithValues[], (s1: EditorState) => EditorSectionWithValues[]>;
17
13
  //# sourceMappingURL=editor.selectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.selectors.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/+state/editor.selectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAElE,eAAO,MAAM,iBAAiB,oHAC0B,CAAA;AAExD,eAAO,MAAM,YAAY,2NAGxB,CAAA;AAED,eAAO,MAAM,kBAAkB,qFAG9B,CAAA;AAED,eAAO,MAAM,kBAAkB,uFAG9B,CAAA;AAED,eAAO,MAAM,qBAAqB,qFAGjC,CAAA;AAED,eAAO,MAAM,4BAA4B,uFAGxC,CAAA;AAED,eAAO,MAAM,4BAA4B,uFAGxC,CAAA;AAED,eAAO,MAAM,wBAAwB,+KAGpC,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;IAO9B,CAAA"}
1
+ {"version":3,"file":"editor.selectors.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/+state/editor.selectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,eAAO,MAAM,iBAAiB,oHAC0B,CAAA;AAExD,eAAO,MAAM,YAAY,2NAGxB,CAAA;AAED,eAAO,MAAM,kBAAkB,qFAG9B,CAAA;AAED,eAAO,MAAM,kBAAkB,uFAG9B,CAAA;AAED,eAAO,MAAM,qBAAqB,qFAGjC,CAAA;AAED,eAAO,MAAM,4BAA4B,uFAGxC,CAAA;AAED,eAAO,MAAM,4BAA4B,uFAGxC,CAAA;AAED,eAAO,MAAM,kBAAkB,iJAG9B,CAAA;AAED,eAAO,MAAM,iBAAiB,qFAG7B,CAAA;AAED,eAAO,MAAM,oBAAoB,2HAehC,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
3
  import { Observable } from 'rxjs';
4
- import { FormFieldConfig } from './form-field.model';
5
4
  import { CatalogRecordKeys } from '../../../../../../../../libs/common/domain/src/lib/model/record';
5
+ import { FormFieldConfig } from '../../../models';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class FormFieldComponent {
8
8
  model: CatalogRecordKeys;
@@ -1 +1 @@
1
- {"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EAIX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAuB,MAAM,gBAAgB,CAAA;AAMjE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAYjC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iEAAiE,CAAA;;AAGnG,qBA2Ba,kBAAkB;IACpB,KAAK,EAAE,iBAAiB,CAAA;IACxB,MAAM,EAAE,eAAe,CAAA;IAChC,IAAa,KAAK,CAAC,CAAC,EAAE,OAAO,EAI5B;IACS,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAEjB,UAAU,EAAE,UAAU,CAAA;IAE/C,WAAW,mBAAoB;;IAM/B,eAAe;IAIf,IAAI,OAAO,YAEV;IACD,IAAI,UAAU,YAEb;IACD,IAAI,UAAU,YAEb;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,oBAAoB,YAEvB;IACD,IAAI,aAAa,YAEhB;IACD,IAAI,UAAU,YAEb;IACD,IAAI,UAAU,YAEb;IAED,IAAI,cAAc,YAEjB;yCAvDU,kBAAkB;2CAAlB,kBAAkB;CAwD9B"}
1
+ {"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EAIX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAuB,MAAM,gBAAgB,CAAA;AAMjE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAajC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iEAAiE,CAAA;AAEnG,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;;AAEjD,qBA2Ba,kBAAkB;IACpB,KAAK,EAAE,iBAAiB,CAAA;IACxB,MAAM,EAAE,eAAe,CAAA;IAChC,IAAa,KAAK,CAAC,CAAC,EAAE,OAAO,EAI5B;IAES,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAEjB,UAAU,EAAE,UAAU,CAAA;IAE/C,WAAW,mBAAoB;;IAM/B,eAAe;IAIf,IAAI,OAAO,YAEV;IACD,IAAI,UAAU,YAEb;IACD,IAAI,UAAU,YAEb;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,iBAAiB,YAEpB;IACD,IAAI,oBAAoB,YAEvB;IACD,IAAI,aAAa,YAEhB;IACD,IAAI,UAAU,YAEb;IACD,IAAI,UAAU,YAEb;IAED,IAAI,cAAc,YAEjB;yCAxDU,kBAAkB;2CAAlB,kBAAkB;CAyD9B"}
@@ -9,5 +9,4 @@ export * from './form-field-object/form-field-object.component';
9
9
  export * from './form-field-array/form-field-array.component';
10
10
  export * from './form-field-spatial-extent/form-field-spatial-extent.component';
11
11
  export * from './form-field.component';
12
- export * from './form-field.model';
13
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA;AACnE,cAAc,mDAAmD,CAAA;AACjE,cAAc,qEAAqE,CAAA;AACnF,cAAc,qEAAqE,CAAA;AACnF,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iEAAiE,CAAA;AAC/E,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA;AACnE,cAAc,mDAAmD,CAAA;AACjE,cAAc,qEAAqE,CAAA;AACnF,cAAc,qEAAqE,CAAA;AACnF,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iEAAiE,CAAA;AAC/E,cAAc,wBAAwB,CAAA"}
@@ -1,15 +1,13 @@
1
1
  import { EditorFacade } from '../../+state/editor.facade';
2
- import { EditorFieldState, EditorFieldValue } from '../../models/fields.model';
2
+ import { EditorFieldValue } from '../../models';
3
+ import { EditorFieldWithValue, EditorSectionWithValues } from '../../+state/editor.models';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class RecordFormComponent {
5
6
  facade: EditorFacade;
6
- fields$: import("rxjs").Observable<{
7
- config: import("../../models/fields.model").EditorFieldConfig;
8
- value: any;
9
- }[]>;
10
7
  constructor(facade: EditorFacade);
11
- handleFieldValueChange(field: EditorFieldState, newValue: EditorFieldValue): void;
12
- fieldTracker(index: number, field: EditorFieldState): string;
8
+ handleFieldValueChange(model: string, newValue: EditorFieldValue): void;
9
+ fieldTracker(index: number, field: EditorFieldWithValue): any;
10
+ sectionTracker(index: number, section: EditorSectionWithValues): any;
13
11
  static ɵfac: i0.ɵɵFactoryDeclaration<RecordFormComponent, never>;
14
12
  static ɵcmp: i0.ɵɵComponentDeclaration<RecordFormComponent, "gn-ui-record-form", never, {}, {}, never, never, true, never>;
15
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"record-form.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;;AAG9E,qBAQa,mBAAmB;IAGX,MAAM,EAAE,YAAY;IAFvC,OAAO;;;SAA4B;gBAEhB,MAAM,EAAE,YAAY;IAEvC,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB;IAO1E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB;yCAZxC,mBAAmB;2CAAnB,mBAAmB;CAe/B"}
1
+ {"version":3,"file":"record-form.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,4BAA4B,CAAA;;AAEnC,qBAQa,mBAAmB;IACX,MAAM,EAAE,YAAY;gBAApB,MAAM,EAAE,YAAY;IAEvC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;IAOhE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,GAAG;IAI7D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,GAAG;yCAdzD,mBAAmB;2CAAnB,mBAAmB;CAiB/B"}
@@ -1,4 +1,4 @@
1
- import { EditorFieldState, EditorFieldValue } from './models/fields.model';
1
+ import { EditorFieldState, EditorFieldValue } from './models/';
2
2
  export type ExpressionEvaluator = (field: EditorFieldState) => EditorFieldValue;
3
3
  export declare function evaluate(expression: string): ExpressionEvaluator;
4
4
  //# sourceMappingURL=expressions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;AAE/E,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAWhE"}
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;AAE/E,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAWhE"}
@@ -1,3 +1,39 @@
1
- import { EditorFieldsConfig } from './models/fields.model';
2
- export declare const DEFAULT_FIELDS: EditorFieldsConfig;
1
+ import { EditorConfig, EditorField, EditorSection } from './models/editor-config.model';
2
+ /**
3
+ * This file contains the configuration of the fields that will be displayed in the editor.
4
+ * To add a new field, you need to create a new EditorField object in the fields part of this file.
5
+ * Then add it to the corresponding section in the sections part of this file.
6
+ * Finally, add the section to the corresponding page in the pages part of this file.
7
+ */
8
+ /************************************************************
9
+ *************** FIELDS *****************
10
+ ************************************************************
11
+ */
12
+ export declare const RECORD_LICENSE_FIELD: EditorField;
13
+ export declare const RECORD_KEYWORDS_FIELD: EditorField;
14
+ export declare const RECORD_UNIQUE_IDENTIFIER_FIELD: EditorField;
15
+ export declare const RECORD_RESOURCE_UPDATED_FIELD: EditorField;
16
+ export declare const RECORD_UPDATED_FIELD: EditorField;
17
+ export declare const RECORD_UPDATE_FREQUENCY_FIELD: EditorField;
18
+ export declare const RECORD_TEMPORAL_EXTENTS_FIELD: EditorField;
19
+ export declare const RECORD_TITLE_FIELD: EditorField;
20
+ export declare const RECORD_ABSTRACT_FIELD: EditorField;
21
+ /************************************************************
22
+ *************** SECTIONS *****************
23
+ ************************************************************
24
+ */
25
+ export declare const TITLE_SECTION: EditorSection;
26
+ export declare const ABOUT_SECTION: EditorSection;
27
+ export declare const GEOGRAPHICAL_COVERAGE_SECTION: EditorSection;
28
+ export declare const ASSOCIATED_RESOURCES_SECTION: EditorSection;
29
+ export declare const ANNEXES_SECTION: EditorSection;
30
+ export declare const CLASSIFICATION_SECTION: EditorSection;
31
+ export declare const USE_AND_ACCESS_CONDITIONS_SECTION: EditorSection;
32
+ export declare const DATA_MANAGERS_SECTION: EditorSection;
33
+ export declare const DATA_POINT_OF_CONTACT_SECTION: EditorSection;
34
+ /************************************************************
35
+ *************** PAGES *****************
36
+ ************************************************************
37
+ */
38
+ export declare const DEFAULT_CONFIGURATION: EditorConfig;
3
39
  //# sourceMappingURL=fields.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/fields.config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,eAAO,MAAM,cAAc,EAAE,kBAmE5B,CAAA"}
1
+ {"version":3,"file":"fields.config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/feature/editor/src/lib/fields.config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,8BAA8B,CAAA;AAErC;;;;;GAKG;AAEH;;;GAGG;AAEH,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAKnC,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,WAM5C,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAK3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,WAOlC,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAK3C,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,WAK3C,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,WAKhC,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,WAKnC,CAAA;AAED;;;GAGG;AAEH,eAAO,MAAM,aAAa,EAAE,aAG3B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,aAW3B,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,aAI3C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,aAO1C,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,aAI7B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,aAI/C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,aAKnC,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,aAO3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAoBnC,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { CatalogRecordKeys } from '../../../../../../libs/common/domain/src/lib/model/record';
2
+ export type EditorFieldExpression = `$\{${string}}`;
3
+ export type EditorFieldValue = string | number | boolean | unknown;
4
+ export interface FormFieldConfig {
5
+ labelKey?: string;
6
+ hintKey?: string;
7
+ tooltipKey?: string;
8
+ required?: boolean;
9
+ locked?: boolean;
10
+ invalid?: boolean;
11
+ invalidHintKey?: string;
12
+ }
13
+ export interface EditorField {
14
+ formFieldConfig: FormFieldConfig;
15
+ model?: CatalogRecordKeys;
16
+ hidden?: boolean;
17
+ onSaveProcess?: EditorFieldExpression;
18
+ }
19
+ export interface EditorSection {
20
+ labelKey?: string;
21
+ descriptionKey?: string;
22
+ hidden: boolean;
23
+ fields: EditorField[];
24
+ }
25
+ export interface EditorFieldPage {
26
+ labelKey?: string;
27
+ sections: EditorSection[];
28
+ }
29
+ export interface EditorConfig {
30
+ pages: EditorFieldPage[];
31
+ }
32
+ export interface EditorFieldState {
33
+ model: string;
34
+ value: EditorFieldValue;
35
+ }
36
+ //# sourceMappingURL=editor-config.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-config.model.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/models/editor-config.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAI7F,MAAM,MAAM,qBAAqB,GAAG,MAAM,MAAM,GAAG,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAE1B,eAAe,EAAE,eAAe,CAAA;IAGhC,KAAK,CAAC,EAAE,iBAAiB,CAAA;IAIzB,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,aAAa,CAAC,EAAE,qBAAqB,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,gBAAgB,CAAA;CACxB"}
@@ -1,3 +1,4 @@
1
1
  export * from './wizard-field.model';
2
2
  export * from './wizard-field.type';
3
+ export * from './editor-config.model';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA"}
@@ -1,12 +1,12 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
3
- import { EditorFieldsConfig } from '../models/fields.model';
3
+ import { EditorConfig } from '../models/';
4
4
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class EditorService {
7
7
  private recordsRepository;
8
8
  constructor(recordsRepository: RecordsRepositoryInterface);
9
- saveRecord(record: CatalogRecord, fieldsConfig: EditorFieldsConfig, generateNewUniqueIdentifier?: boolean): Observable<[CatalogRecord, string]>;
9
+ saveRecord(record: CatalogRecord, fieldsConfig: EditorConfig, generateNewUniqueIdentifier?: boolean): Observable<[CatalogRecord, string]>;
10
10
  saveRecordAsDraft(record: CatalogRecord): Observable<void>;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorService, never>;
12
12
  static ɵprov: i0.ɵɵInjectableDeclaration<EditorService>;
@@ -1 +1 @@
1
- {"version":3,"file":"editor.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/services/editor.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,MAAM,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAEjI,qBAGa,aAAa;IACZ,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,0BAA0B;IAGjE,UAAU,CACR,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,kBAAkB,EAChC,2BAA2B,UAAQ,GAClC,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAiCtC,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;yCAzC/C,aAAa;6CAAb,aAAa;CA8CzB"}
1
+ {"version":3,"file":"editor.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/editor/src/lib/services/editor.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,MAAM,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAEjI,qBAGa,aAAa;IACZ,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,0BAA0B;IAGjE,UAAU,CACR,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,YAAY,EAC1B,2BAA2B,UAAQ,GAClC,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAqCtC,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;yCA7C/C,aAAa;6CAAb,aAAa;CAkDzB"}
@@ -11,15 +11,17 @@ export declare class ResultsTableContainerComponent {
11
11
  private selectionService;
12
12
  private recordsRepository;
13
13
  recordClick: EventEmitter<CatalogRecord>;
14
+ duplicateRecord: EventEmitter<CatalogRecord>;
14
15
  records$: import("rxjs").Observable<CatalogRecord[]>;
15
16
  selectedRecords$: import("rxjs").BehaviorSubject<string[]>;
16
17
  sortBy$: import("rxjs").Observable<import("../../../../../common/domain/src/lib/model/search").SortByField>;
17
18
  hasDraft: (record: CatalogRecord) => boolean;
18
19
  constructor(searchFacade: SearchFacade, searchService: SearchService, selectionService: SelectionService, recordsRepository: RecordsRepositoryInterface);
19
20
  handleRecordClick(item: unknown): void;
21
+ handleDuplicateRecord(item: unknown): void;
20
22
  handleSortByChange(col: string, order: 'asc' | 'desc'): void;
21
23
  handleRecordsSelectedChange(records: CatalogRecord[], selected: boolean): void;
22
24
  static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableContainerComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableContainerComponent, "gn-ui-results-table-container", never, {}, { "recordClick": "recordClick"; }, never, never, true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableContainerComponent, "gn-ui-results-table-container", never, {}, { "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; }, never, never, true, never>;
24
26
  }
25
27
  //# sourceMappingURL=results-table-container.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"results-table-container.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/results-table/results-table-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAU,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAIjI,qBAOa,8BAA8B;IAWvC,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IAbjB,WAAW,8BAAoC;IAEzD,QAAQ,6CAA6B;IACrC,gBAAgB,2CAAoD;IACpE,OAAO,qGAA4B;IAEnC,QAAQ,WAAY,aAAa,KAAG,OAAO,CACqB;gBAGtD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,0BAA0B;IAGvD,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIrD,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO;yCAzB5D,8BAA8B;2CAA9B,8BAA8B;CAgC1C"}
1
+ {"version":3,"file":"results-table-container.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/results-table/results-table-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAU,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAIjI,qBAOa,8BAA8B;IAYvC,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IAdjB,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IAE7D,QAAQ,6CAA6B;IACrC,gBAAgB,2CAAoD;IACpE,OAAO,qGAA4B;IAEnC,QAAQ,WAAY,aAAa,KAAG,OAAO,CACqB;gBAGtD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,0BAA0B;IAGvD,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,qBAAqB,CAAC,IAAI,EAAE,OAAO;IAInC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIrD,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO;yCA9B5D,8BAA8B;2CAA9B,8BAA8B;CAqC1C"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.4.0-dev.71a43b38",
3
+ "version": "2.4.0-dev.78565730",
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'
@@ -120,6 +120,7 @@ export const mapKeywords = (thesauri: Thesaurus[], language: string) => {
120
120
  keywords.push({
121
121
  label: selectTranslatedValue<string>(keyword, language),
122
122
  type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
123
+ ...(keyword.link && { key: keyword.link }),
123
124
  ...(thesaurus && { thesaurus }),
124
125
  })
125
126
  }
@@ -5,6 +5,7 @@ type MultilingualField = {
5
5
  [K in `lang${LangCode}`]: string
6
6
  } & {
7
7
  default: string
8
+ link?: string
8
9
  }
9
10
 
10
11
  type BooleanString = 'true' | 'false'
@@ -24,6 +24,7 @@ import {
24
24
  } from '../../../../../../libs/common/domain/src/lib/model/search'
25
25
  import { catchError, map, tap } from 'rxjs/operators'
26
26
  import {
27
+ BaseConverter,
27
28
  findConverterForDocument,
28
29
  Gn4Converter,
29
30
  Gn4SearchResults,
@@ -230,6 +231,25 @@ export class Gn4Repository implements RecordsRepositoryInterface {
230
231
  )
231
232
  }
232
233
 
234
+ openRecordForDuplication(
235
+ uniqueIdentifier: string
236
+ ): Observable<[CatalogRecord, string, false] | null> {
237
+ return this.loadRecordAsXml(uniqueIdentifier).pipe(
238
+ switchMap(async (recordAsXml) => {
239
+ const converter = findConverterForDocument(recordAsXml)
240
+ const record = await converter.readRecord(recordAsXml)
241
+ record.uniqueIdentifier = `TEMP-ID-${Date.now()}`
242
+ record.title = `${record.title} (Copy)`
243
+ const xml = await converter.writeRecord(record, recordAsXml)
244
+ window.localStorage.setItem(
245
+ this.getLocalStorageKeyForRecord(record.uniqueIdentifier),
246
+ xml
247
+ )
248
+ return [record, xml, false] as [CatalogRecord, string, false]
249
+ })
250
+ )
251
+ }
252
+
233
253
  private serializeRecordToXml(
234
254
  record: CatalogRecord,
235
255
  referenceRecordSource?: string
@@ -30,6 +30,18 @@ export abstract class RecordsRepositoryInterface {
30
30
  uniqueIdentifier: string
31
31
  ): Observable<[CatalogRecord, string, boolean] | null>
32
32
 
33
+ /**
34
+ * This emits once:
35
+ * - record object with a new unique identifier and suffixed title
36
+ * - serialized representation of the record as text
37
+ * - false, as the duplicated record is always a draft
38
+ * @param uniqueIdentifier
39
+ * @returns Observable<[CatalogRecord, string, false] | null>
40
+ */
41
+ abstract openRecordForDuplication(
42
+ uniqueIdentifier: string
43
+ ): Observable<[CatalogRecord, string, false] | null>
44
+
33
45
  /**
34
46
  * @param record
35
47
  * @param referenceRecordSource
@@ -11,3 +11,5 @@ export * from './lib/records.fixtures'
11
11
  export * from './lib/repository.fixtures'
12
12
  export * from './lib/user.fixtures'
13
13
  export * from './lib/user-feedbacks.fixtures'
14
+
15
+ export * from './lib/editor'
@@ -0,0 +1,156 @@
1
+ export const EDITOR_CONFIG = () => ({
2
+ pages: [
3
+ {
4
+ labelKey: 'Resource description',
5
+ sections: [EDITOR_SECTION_ABOUT()],
6
+ },
7
+ {
8
+ labelKey: 'Resources',
9
+ sections: [EDITOR_SECTION_CLASSIFICATION()],
10
+ },
11
+ {
12
+ labelKey: 'Access and contact',
13
+ sections: [
14
+ EDITOR_SECTION_USE_AND_ACCESS_CONDITIONS(),
15
+ EDITOR_SECTION_DATA_MANAGER(),
16
+ ],
17
+ },
18
+ ],
19
+ })
20
+
21
+ export const EDITOR_SECTION_ABOUT = () => ({
22
+ labelKey: 'About the resource',
23
+ descriptionKey: 'This section describes the resource.',
24
+ hidden: false,
25
+ fields: [
26
+ EDITOR_FIELD_TITLE(),
27
+ EDITOR_FIELD_ABSTRACT(),
28
+ EDITOR_FIELD_RESOURCE_UPDATED(),
29
+ EDITOR_FIELD_RECORD_UPDATED(),
30
+ EDITOR_FIELD_UPDATE_FREQUENCY(),
31
+ EDITOR_FIELD_TEMPORAL_EXTENTS(),
32
+ ],
33
+ })
34
+
35
+ export const EDITOR_SECTION_DATA_MANAGER = () => ({
36
+ labelKey: 'Data manager',
37
+ descriptionKey: '',
38
+ hidden: false,
39
+ fields: [],
40
+ })
41
+
42
+ export const EDITOR_SECTION_USE_AND_ACCESS_CONDITIONS = () => ({
43
+ labelKey: 'Data manager',
44
+ descriptionKey: '',
45
+ hidden: false,
46
+ fields: [EDITOR_FIELD_LICENSE()],
47
+ })
48
+
49
+ export const EDITOR_SECTION_CLASSIFICATION = () => ({
50
+ labelKey: 'Classification',
51
+ descriptionKey: 'The classification has an impact on the access to the data.',
52
+ hidden: false,
53
+ fields: [EDITOR_FIELD_KEYWORDS(), EDITOR_FIELD_UNIQUE_IDENTIFIER()],
54
+ })
55
+
56
+ export const EDITOR_FIELD_TITLE = () => ({
57
+ model: 'title',
58
+ hidden: false,
59
+ value: 'Accroches vélos MEL',
60
+ formFieldConfig: {
61
+ labelKey: 'editor.record.form.field.title',
62
+ },
63
+ })
64
+
65
+ export const EDITOR_FIELD_ABSTRACT = () => ({
66
+ model: 'abstract',
67
+ hidden: false,
68
+ value: 'Abstract',
69
+ formFieldConfig: {
70
+ labelKey: 'editor.record.form.field.abstract',
71
+ },
72
+ })
73
+
74
+ export const EDITOR_FIELD_RESOURCE_UPDATED = () => ({
75
+ model: 'resourceUpdated',
76
+ hidden: false,
77
+ formFieldConfig: {
78
+ labelKey: 'editor.record.form.field.resourceUpdated',
79
+ },
80
+ })
81
+
82
+ export const EDITOR_FIELD_RECORD_UPDATED = () => ({
83
+ model: 'recordUpdated',
84
+ hidden: false,
85
+ formFieldConfig: {
86
+ labelKey: 'editor.record.form.field.recordUpdated',
87
+ locked: true,
88
+ },
89
+ value: '2024-07-16T05:18:53.000Z',
90
+ onSaveProcess: '${dateNow()}',
91
+ })
92
+
93
+ export const EDITOR_FIELD_UPDATE_FREQUENCY = () => ({
94
+ model: 'updateFrequency',
95
+ hidden: false,
96
+ formFieldConfig: {
97
+ labelKey: 'editor.record.form.field.updateFrequency',
98
+ },
99
+ value: 'unknown',
100
+ })
101
+
102
+ export const EDITOR_FIELD_TEMPORAL_EXTENTS = () => ({
103
+ model: 'temporalExtents',
104
+ hidden: false,
105
+ formFieldConfig: {
106
+ labelKey: 'editor.record.form.field.temporalExtents',
107
+ },
108
+ value: [],
109
+ })
110
+
111
+ export const EDITOR_FIELD_SPATIAL_EXTENTS = () => ({
112
+ model: 'spatialExtents',
113
+ hidden: false,
114
+ formFieldConfig: {
115
+ labelKey: 'editor.record.form.field.spatialExtents',
116
+ },
117
+ })
118
+
119
+ export const EDITOR_FIELD_KEYWORDS = () => ({
120
+ model: 'keywords',
121
+ hidden: false,
122
+ formFieldConfig: {
123
+ labelKey: 'editor.record.form.field.keywords',
124
+ },
125
+ })
126
+
127
+ export const EDITOR_FIELD_UNIQUE_IDENTIFIER = () => ({
128
+ model: 'uniqueIdentifier',
129
+ hidden: false,
130
+ formFieldConfig: {
131
+ labelKey: 'editor.record.form.field.uniqueIdentifier',
132
+ locked: true,
133
+ },
134
+ value: 'accroche_velos',
135
+ })
136
+
137
+ export const EDITOR_FIELD_LICENSE = () => ({
138
+ model: 'licenses',
139
+ hidden: false,
140
+ formFieldConfig: {
141
+ labelKey: 'editor.record.form.field.license',
142
+ locked: true,
143
+ },
144
+ })
145
+
146
+ export const EDITOR_FIELDS = () => [
147
+ EDITOR_FIELD_TITLE(),
148
+ EDITOR_FIELD_ABSTRACT(),
149
+ EDITOR_FIELD_RESOURCE_UPDATED(),
150
+ EDITOR_FIELD_RECORD_UPDATED(),
151
+ EDITOR_FIELD_UPDATE_FREQUENCY(),
152
+ EDITOR_FIELD_TEMPORAL_EXTENTS(),
153
+ EDITOR_FIELD_SPATIAL_EXTENTS(),
154
+ EDITOR_FIELD_KEYWORDS(),
155
+ EDITOR_FIELD_UNIQUE_IDENTIFIER(),
156
+ ]
@@ -0,0 +1 @@
1
+ export * from './editor.fixtures'
@@ -7201,11 +7201,7 @@ export class RecordsApiService {
7201
7201
  }
7202
7202
 
7203
7203
  // to determine the Content-Type header
7204
- const consumes: string[] = [
7205
- 'application/xml',
7206
- 'application/json',
7207
- 'application/x-www-form-urlencoded',
7208
- ]
7204
+ const consumes: string[] = ['application/xml']
7209
7205
  const httpContentTypeSelected: string | undefined =
7210
7206
  this.configuration.selectHeaderContentType(consumes)
7211
7207
  if (httpContentTypeSelected !== undefined) {
@@ -1832,14 +1832,6 @@ paths:
1832
1832
  schema:
1833
1833
  type: string
1834
1834
  description: XML fragment.
1835
- application/json:
1836
- schema:
1837
- type: string
1838
- description: XML fragment.
1839
- application/x-www-form-urlencoded:
1840
- schema:
1841
- type: string
1842
- description: XML fragment.
1843
1835
  responses:
1844
1836
  default:
1845
1837
  description: default response
@@ -28,3 +28,8 @@ export const saveRecordFailure = createAction(
28
28
  )
29
29
 
30
30
  export const draftSaveSuccess = createAction('[Editor] Draft save success')
31
+
32
+ export const setCurrentPage = createAction(
33
+ '[Editor] Set current page',
34
+ props<{ page: number }>()
35
+ )