geonetwork-ui 2.4.1-dev.9ee0df3df → 2.4.1-dev.a1ec7cf5a
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.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +4 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +5 -2
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +27 -16
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +7 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +3 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +18 -14
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +15 -5
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +10 -4
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +6 -5
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +36 -23
- 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
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +7 -12
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +6 -12
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +9 -5
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +3 -4
- package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +4 -4
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +9 -4
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -10
- package/esm2022/translations/de.json +27 -6
- package/esm2022/translations/en.json +11 -9
- package/esm2022/translations/es.json +25 -4
- package/esm2022/translations/fr.json +11 -9
- package/esm2022/translations/it.json +241 -218
- package/esm2022/translations/nl.json +25 -4
- package/esm2022/translations/pt.json +25 -4
- package/fesm2022/geonetwork-ui.mjs +777 -609
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +4 -3
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +4 -3
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +3 -0
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +10 -2
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +6 -2
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +5 -2
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +2 -1
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +2 -1
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +4 -4
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
- 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
- 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
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +1 -4
- 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
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -4
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +0 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -3
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +4 -3
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +53 -27
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +5 -4
- package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.fixtures.ts +2 -2
- package/src/libs/common/fixtures/src/lib/elasticsearch/search-responses.fixtures.ts +16 -16
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +163 -0
- package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +24 -4
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +10 -1
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +57 -31
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +15 -9
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +18 -12
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +13 -8
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +31 -19
- 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
- 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
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +0 -11
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -8
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +0 -9
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -8
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +2 -2
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +18 -16
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +0 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +0 -3
- package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +12 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +4 -6
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +23 -6
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -6
- package/tailwind.base.config.js +2 -0
- package/translations/de.json +27 -6
- package/translations/en.json +11 -9
- package/translations/es.json +25 -4
- package/translations/fr.json +11 -9
- package/translations/it.json +241 -218
- package/translations/nl.json +25 -4
- package/translations/pt.json +25 -4
- package/translations/sk.json +25 -4
|
@@ -1578,7 +1578,7 @@ export const elasticFullResponseFixture = () => ({
|
|
|
1578
1578
|
'http://inspire.ec.europa.eu/metadatacodelist/LimitationsOnPublicAccess/noLimitations',
|
|
1579
1579
|
],
|
|
1580
1580
|
},
|
|
1581
|
-
edit:
|
|
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:
|
|
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:
|
|
127
|
+
edit: true,
|
|
128
128
|
owner: false,
|
|
129
|
-
isPublishedToAll:
|
|
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:
|
|
206
|
+
edit: true,
|
|
207
207
|
owner: false,
|
|
208
|
-
isPublishedToAll:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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',
|
|
@@ -1371,7 +1371,10 @@ export class RecordsApiService {
|
|
|
1371
1371
|
hasAttachmentsOfSource?: boolean,
|
|
1372
1372
|
observe?: 'body',
|
|
1373
1373
|
reportProgress?: boolean,
|
|
1374
|
-
options?: {
|
|
1374
|
+
options?: {
|
|
1375
|
+
httpHeaderAccept?: 'application/json'
|
|
1376
|
+
httpContentTypeSelected?: 'application/json;charset=UTF-8'
|
|
1377
|
+
}
|
|
1375
1378
|
): Observable<string>
|
|
1376
1379
|
public create(
|
|
1377
1380
|
sourceUuid: string,
|
|
@@ -1389,7 +1392,10 @@ export class RecordsApiService {
|
|
|
1389
1392
|
hasAttachmentsOfSource?: boolean,
|
|
1390
1393
|
observe?: 'response',
|
|
1391
1394
|
reportProgress?: boolean,
|
|
1392
|
-
options?: {
|
|
1395
|
+
options?: {
|
|
1396
|
+
httpHeaderAccept?: 'application/json'
|
|
1397
|
+
httpContentTypeSelected?: 'application/json;charset=UTF-8'
|
|
1398
|
+
}
|
|
1393
1399
|
): Observable<HttpResponse<string>>
|
|
1394
1400
|
public create(
|
|
1395
1401
|
sourceUuid: string,
|
|
@@ -1407,7 +1413,10 @@ export class RecordsApiService {
|
|
|
1407
1413
|
hasAttachmentsOfSource?: boolean,
|
|
1408
1414
|
observe?: 'events',
|
|
1409
1415
|
reportProgress?: boolean,
|
|
1410
|
-
options?: {
|
|
1416
|
+
options?: {
|
|
1417
|
+
httpHeaderAccept?: 'application/json'
|
|
1418
|
+
httpContentTypeSelected?: 'application/json;charset=UTF-8'
|
|
1419
|
+
}
|
|
1411
1420
|
): Observable<HttpEvent<string>>
|
|
1412
1421
|
public create(
|
|
1413
1422
|
sourceUuid: string,
|
|
@@ -1425,7 +1434,10 @@ export class RecordsApiService {
|
|
|
1425
1434
|
hasAttachmentsOfSource?: boolean,
|
|
1426
1435
|
observe: any = 'body',
|
|
1427
1436
|
reportProgress: boolean = false,
|
|
1428
|
-
options?: {
|
|
1437
|
+
options?: {
|
|
1438
|
+
httpHeaderAccept?: 'application/json'
|
|
1439
|
+
httpContentTypeSelected?: 'application/json;charset=UTF-8'
|
|
1440
|
+
}
|
|
1429
1441
|
): Observable<any> {
|
|
1430
1442
|
if (sourceUuid === null || sourceUuid === undefined) {
|
|
1431
1443
|
throw new Error(
|
|
@@ -1510,6 +1522,14 @@ export class RecordsApiService {
|
|
|
1510
1522
|
|
|
1511
1523
|
let headers = this.defaultHeaders
|
|
1512
1524
|
|
|
1525
|
+
// to determine the Content-Type header
|
|
1526
|
+
const consumes: string[] = ['application/json;charset=UTF-8']
|
|
1527
|
+
const httpContentTypeSelected: string | undefined =
|
|
1528
|
+
this.configuration.selectHeaderContentType(consumes)
|
|
1529
|
+
if (httpContentTypeSelected !== undefined) {
|
|
1530
|
+
headers = headers.set('Content-Type', httpContentTypeSelected)
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1513
1533
|
let httpHeaderAcceptSelected: string | undefined =
|
|
1514
1534
|
options && options.httpHeaderAccept
|
|
1515
1535
|
if (httpHeaderAcceptSelected === undefined) {
|
|
@@ -7,7 +7,6 @@ export const openRecord = createAction(
|
|
|
7
7
|
'[Editor] Open record',
|
|
8
8
|
props<{
|
|
9
9
|
record: CatalogRecord
|
|
10
|
-
alreadySavedOnce: boolean
|
|
11
10
|
recordSource?: string | null
|
|
12
11
|
}>()
|
|
13
12
|
)
|
|
@@ -51,3 +50,13 @@ export const hasRecordChangedSinceDraftSuccess = createAction(
|
|
|
51
50
|
'[Editor] Has Record Changed Since Draft Success',
|
|
52
51
|
props<{ changes: { user: string; date: Date } }>()
|
|
53
52
|
)
|
|
53
|
+
|
|
54
|
+
export const isPublished = createAction(
|
|
55
|
+
'[Editor] Record Saved But Not Published',
|
|
56
|
+
props<{ isPublished: boolean }>()
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
export const canEditRecord = createAction(
|
|
60
|
+
'[Editor] User can edit record',
|
|
61
|
+
props<{ canEditRecord: boolean }>()
|
|
62
|
+
)
|
|
@@ -8,7 +8,6 @@ import { Store } from '@ngrx/store'
|
|
|
8
8
|
import {
|
|
9
9
|
selectEditorConfig,
|
|
10
10
|
selectRecord,
|
|
11
|
-
selectRecordAlreadySavedOnce,
|
|
12
11
|
selectRecordSource,
|
|
13
12
|
} from './editor.selectors'
|
|
14
13
|
import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
|
|
@@ -28,31 +27,27 @@ export class EditorEffects {
|
|
|
28
27
|
withLatestFrom(
|
|
29
28
|
this.store.select(selectRecord),
|
|
30
29
|
this.store.select(selectRecordSource),
|
|
31
|
-
this.store.select(selectEditorConfig)
|
|
32
|
-
this.store.select(selectRecordAlreadySavedOnce)
|
|
30
|
+
this.store.select(selectEditorConfig)
|
|
33
31
|
),
|
|
34
|
-
switchMap(([, record, recordSource, fieldsConfig
|
|
35
|
-
this.editorService
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
EditorActions.saveRecordFailure({
|
|
51
|
-
error,
|
|
52
|
-
})
|
|
53
|
-
)
|
|
32
|
+
switchMap(([, record, recordSource, fieldsConfig]) =>
|
|
33
|
+
this.editorService.saveRecord(record, recordSource, fieldsConfig).pipe(
|
|
34
|
+
switchMap(([record, recordSource]) =>
|
|
35
|
+
of(
|
|
36
|
+
EditorActions.saveRecordSuccess(),
|
|
37
|
+
EditorActions.openRecord({
|
|
38
|
+
record,
|
|
39
|
+
recordSource,
|
|
40
|
+
})
|
|
41
|
+
)
|
|
42
|
+
),
|
|
43
|
+
catchError((error) =>
|
|
44
|
+
of(
|
|
45
|
+
EditorActions.saveRecordFailure({
|
|
46
|
+
error,
|
|
47
|
+
})
|
|
54
48
|
)
|
|
55
49
|
)
|
|
50
|
+
)
|
|
56
51
|
)
|
|
57
52
|
)
|
|
58
53
|
)
|
|
@@ -63,12 +58,14 @@ export class EditorEffects {
|
|
|
63
58
|
ofType(EditorActions.saveRecordSuccess),
|
|
64
59
|
withLatestFrom(this.store.select(selectRecord)),
|
|
65
60
|
switchMap(([_, record]) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
if (record.uniqueIdentifier !== null) {
|
|
62
|
+
this.gn4PlateformService.cleanRecordAttachments(record).subscribe({
|
|
63
|
+
next: (_) => undefined,
|
|
64
|
+
error: (err) => {
|
|
65
|
+
console.error(err)
|
|
66
|
+
},
|
|
67
|
+
})
|
|
68
|
+
}
|
|
72
69
|
return EMPTY
|
|
73
70
|
}),
|
|
74
71
|
catchError((error) => {
|
|
@@ -106,10 +103,9 @@ export class EditorEffects {
|
|
|
106
103
|
ofType(EditorActions.undoRecordDraft),
|
|
107
104
|
withLatestFrom(this.store.select(selectRecord)),
|
|
108
105
|
switchMap(([, record]) => this.editorService.undoRecordDraft(record)),
|
|
109
|
-
map(([record, recordSource
|
|
106
|
+
map(([record, recordSource]) =>
|
|
110
107
|
EditorActions.openRecord({
|
|
111
108
|
record,
|
|
112
|
-
alreadySavedOnce,
|
|
113
109
|
recordSource,
|
|
114
110
|
})
|
|
115
111
|
)
|
|
@@ -141,4 +137,34 @@ export class EditorEffects {
|
|
|
141
137
|
)
|
|
142
138
|
)
|
|
143
139
|
)
|
|
140
|
+
|
|
141
|
+
checkIsRecordPublished$ = createEffect(() =>
|
|
142
|
+
this.actions$.pipe(
|
|
143
|
+
ofType(EditorActions.openRecord),
|
|
144
|
+
map(({ record }) => record.uniqueIdentifier),
|
|
145
|
+
switchMap((uniqueIdentifier) =>
|
|
146
|
+
this.recordsRepository.getRecordPublicationStatus(uniqueIdentifier)
|
|
147
|
+
),
|
|
148
|
+
map((isPublished) =>
|
|
149
|
+
EditorActions.isPublished({
|
|
150
|
+
isPublished: isPublished,
|
|
151
|
+
})
|
|
152
|
+
)
|
|
153
|
+
)
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
checkCanEditRecord$ = createEffect(() =>
|
|
157
|
+
this.actions$.pipe(
|
|
158
|
+
ofType(EditorActions.openRecord),
|
|
159
|
+
map(({ record }) => record.uniqueIdentifier),
|
|
160
|
+
switchMap((uniqueIdentifier) =>
|
|
161
|
+
this.recordsRepository.canEditRecord(uniqueIdentifier)
|
|
162
|
+
),
|
|
163
|
+
map((canEditRecord) =>
|
|
164
|
+
EditorActions.canEditRecord({
|
|
165
|
+
canEditRecord: canEditRecord,
|
|
166
|
+
})
|
|
167
|
+
)
|
|
168
|
+
)
|
|
169
|
+
)
|
|
144
170
|
}
|
|
@@ -14,9 +14,6 @@ export class EditorFacade {
|
|
|
14
14
|
|
|
15
15
|
record$ = this.store.pipe(select(EditorSelectors.selectRecord))
|
|
16
16
|
recordSource$ = this.store.pipe(select(EditorSelectors.selectRecordSource))
|
|
17
|
-
alreadySavedOnce$ = this.store.pipe(
|
|
18
|
-
select(EditorSelectors.selectRecordAlreadySavedOnce)
|
|
19
|
-
)
|
|
20
17
|
saving$ = this.store.pipe(select(EditorSelectors.selectRecordSaving))
|
|
21
18
|
saveError$ = this.store.pipe(
|
|
22
19
|
select(EditorSelectors.selectRecordSaveError),
|
|
@@ -35,14 +32,15 @@ export class EditorFacade {
|
|
|
35
32
|
hasRecordChanged$ = this.store.pipe(
|
|
36
33
|
select(EditorSelectors.selectHasRecordChanged)
|
|
37
34
|
)
|
|
35
|
+
isPublished$ = this.store.pipe(select(EditorSelectors.selectIsPublished))
|
|
36
|
+
canEditRecord$ = this.store.pipe(select(EditorSelectors.selectCanEditRecord))
|
|
38
37
|
|
|
39
|
-
openRecord(
|
|
40
|
-
record: CatalogRecord,
|
|
41
|
-
recordSource: string,
|
|
42
|
-
alreadySavedOnce: boolean
|
|
43
|
-
) {
|
|
38
|
+
openRecord(record: CatalogRecord, recordSource: string) {
|
|
44
39
|
this.store.dispatch(
|
|
45
|
-
EditorActions.openRecord({
|
|
40
|
+
EditorActions.openRecord({
|
|
41
|
+
record,
|
|
42
|
+
recordSource,
|
|
43
|
+
})
|
|
46
44
|
)
|
|
47
45
|
this.setCurrentPage(0)
|
|
48
46
|
}
|
|
@@ -70,4 +68,12 @@ export class EditorFacade {
|
|
|
70
68
|
checkHasRecordChanged(record: CatalogRecord) {
|
|
71
69
|
this.store.dispatch(EditorActions.hasRecordChangedSinceDraft({ record }))
|
|
72
70
|
}
|
|
71
|
+
|
|
72
|
+
isPublished(isPublished: boolean) {
|
|
73
|
+
this.store.dispatch(EditorActions.isPublished({ isPublished }))
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
canEditRecord(canEditRecord: boolean) {
|
|
77
|
+
this.store.dispatch(EditorActions.canEditRecord({ canEditRecord }))
|
|
78
|
+
}
|
|
73
79
|
}
|
|
@@ -18,13 +18,14 @@ export const EDITOR_FEATURE_KEY = 'editor'
|
|
|
18
18
|
export interface EditorState {
|
|
19
19
|
record: CatalogRecord | null
|
|
20
20
|
recordSource: string | null
|
|
21
|
-
alreadySavedOnce: boolean
|
|
22
21
|
saving: boolean
|
|
23
22
|
saveError: SaveRecordError | null
|
|
24
23
|
changedSinceSave: boolean
|
|
25
24
|
editorConfig: EditorConfig
|
|
26
25
|
currentPage: number
|
|
27
26
|
hasRecordChanged: { user: string; date: Date }
|
|
27
|
+
isPublished: boolean
|
|
28
|
+
canEditRecord: boolean
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export interface EditorPartialState {
|
|
@@ -34,27 +35,24 @@ export interface EditorPartialState {
|
|
|
34
35
|
export const initialEditorState: EditorState = {
|
|
35
36
|
record: null,
|
|
36
37
|
recordSource: null,
|
|
37
|
-
alreadySavedOnce: false,
|
|
38
38
|
saving: false,
|
|
39
39
|
saveError: null,
|
|
40
40
|
changedSinceSave: false,
|
|
41
41
|
editorConfig: DEFAULT_CONFIGURATION,
|
|
42
42
|
currentPage: 0,
|
|
43
43
|
hasRecordChanged: null,
|
|
44
|
+
isPublished: true,
|
|
45
|
+
canEditRecord: true,
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
const reducer = createReducer(
|
|
47
49
|
initialEditorState,
|
|
48
|
-
on(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
alreadySavedOnce,
|
|
55
|
-
record,
|
|
56
|
-
})
|
|
57
|
-
),
|
|
50
|
+
on(EditorActions.openRecord, (state, { record, recordSource }) => ({
|
|
51
|
+
...state,
|
|
52
|
+
changedSinceSave: false,
|
|
53
|
+
recordSource: recordSource ?? null,
|
|
54
|
+
record,
|
|
55
|
+
})),
|
|
58
56
|
on(EditorActions.saveRecord, (state) => ({
|
|
59
57
|
...state,
|
|
60
58
|
saving: true,
|
|
@@ -110,6 +108,14 @@ const reducer = createReducer(
|
|
|
110
108
|
on(EditorActions.hasRecordChangedSinceDraftSuccess, (state, { changes }) => ({
|
|
111
109
|
...state,
|
|
112
110
|
hasRecordChanged: changes,
|
|
111
|
+
})),
|
|
112
|
+
on(EditorActions.isPublished, (state, { isPublished }) => ({
|
|
113
|
+
...state,
|
|
114
|
+
isPublished: isPublished,
|
|
115
|
+
})),
|
|
116
|
+
on(EditorActions.canEditRecord, (state, { canEditRecord }) => ({
|
|
117
|
+
...state,
|
|
118
|
+
canEditRecord: canEditRecord,
|
|
113
119
|
}))
|
|
114
120
|
)
|
|
115
121
|
|