diff --git a/backend/core/src/main/java/org/opencdmp/service/prefillingsource/PrefillingSourceServiceImpl.java b/backend/core/src/main/java/org/opencdmp/service/prefillingsource/PrefillingSourceServiceImpl.java index 951a0c564..03daa3584 100644 --- a/backend/core/src/main/java/org/opencdmp/service/prefillingsource/PrefillingSourceServiceImpl.java +++ b/backend/core/src/main/java/org/opencdmp/service/prefillingsource/PrefillingSourceServiceImpl.java @@ -476,6 +476,7 @@ public class PrefillingSourceServiceImpl implements PrefillingSourceService { Tag tag = new Tag(); tag.setLabel(tagString.trim()); descriptionTag.setTag(tag); + descriptionTag.setIsActive(IsActive.Active); description.getDescriptionTags().add(descriptionTag); } } diff --git a/backend/web/src/main/resources/config/permissions.yml b/backend/web/src/main/resources/config/permissions.yml index 476f465f6..783899a01 100644 --- a/backend/web/src/main/resources/config/permissions.yml +++ b/backend/web/src/main/resources/config/permissions.yml @@ -403,12 +403,6 @@ permissions: allowAuthenticated: false # Dmp BrowseDmp: - roles: - - TenantAdmin - clients: [ ] - allowAnonymous: false - allowAuthenticated: false - EditDmp: roles: - TenantAdmin dmp: @@ -420,7 +414,7 @@ permissions: clients: [ ] allowAnonymous: false allowAuthenticated: false - ReviewDmp: + EditDmp: roles: - TenantAdmin dmp: diff --git a/dmp-db-scema/updates/00.01.060_Insert_values.sql b/dmp-db-scema/updates/00.01.060_Insert_values.sql index 446f06d39..e3a7e509c 100644 --- a/dmp-db-scema/updates/00.01.060_Insert_values.sql +++ b/dmp-db-scema/updates/00.01.060_Insert_values.sql @@ -16,8 +16,8 @@ BEGIN INSERT INTO public."Language" VALUES ('110d2e49-1580-4ee3-b1df-84da966f97a8', 'pt', null, '2024-02-29 16:35:18.114652', '2024-02-29 16:35:18.114652', 1, 9, null); INSERT INTO public."Language" VALUES ('3b865f61-a863-43de-98cd-da86fc3f5940', 'pl', null, '2024-02-29 16:35:18.114652', '2024-02-29 16:35:18.114652', 1, 10, null); - INSERT INTO public."PrefillingSource" VALUES ('7a1ef5db-8833-45e1-85d8-476cea3d4f7a', 'OpenAIRE', 'openaire10falseapplication/jsonremote00$[''meta''][''pagination''][''page'',''pages'',''count'']{like}likereference_idoriginalIdlabeltitledescriptiondescriptiontitle.content[''title''][''content'']children.instance.license[''children''][''instance''][''license'']subject.content[''subject''][''content'']publisherpublisherlanguage.classid[''language''][''classid'']issued.content[''issued''][''content'']bestaccessright.classid[''bestaccessright''][''classid'']pid.content[''pid''][''content'']pid.classid[''pid''][''classid'']$[''results''][*][''result''][''metadata''][''oaf:entity''][''oaf:result'']https://services.openaire.eu/search/v2/api/datasets/?q={like}&page={page}&size={pageSize}&format=jsontitle.contentrda.dataset.distribution.titlelabeldescriptionrda.dataset.distribution.descriptiondescriptionchildren.instance.licenserda.dataset.distribution.license.license_refsubject.contentrda.dataset.keywordtagspublisherrda.dataset.distribution.host.titlelanguage.classidrda.dataset.metadata.languageissued.contentrda.dataset.issuedbestaccessright.classidrda.dataset.distribution.data_accesspid.contentrda.dataset.dataset_idpid.contentrda.dataset.dataset_id.identifierpid.classidrda.dataset.dataset_id.type', 1, '2024-02-28 09:12:41.051733', '2024-04-18 10:32:24.812946', NULL); - INSERT INTO public."PrefillingSource" VALUES ('d79952bf-cfd9-4af4-b7b4-5a83d68890a5', 'Zenodo', 'zenodo search20falseapplication/jsonremote10$[''hits''][''total'']{like}likereference_ididlabeltitledescriptiondescription$[''hits''][''hits'']https://zenodo.org/api/records/?page={page}&size={pageSize}&q=title:"{like}" doi:"{like}" conceptdoi:"{like}"zenodo get10falseapplication/jsonremote0${like}likemetadata.title[''metadata''][''title'']metadata.description[''metadata''][''description'']metadata.license.id[''metadata''][''license''][''id'']metadata.keywords[''metadata''][''keywords'']metadata.filesize[''metadata''][''files''][''size'']metadata.language[''metadata''][''language'']metadata.dates.valid[''metadata''][''dates''][''type'']metadata.license.created[''metadata''][''license''][''created'']metadata.embargo_date[''metadata''][''embargo_date'']metadata.publication_date[''metadata''][''publication_date'']metadata.access_right[''metadata''][''access_right'']files[''files''][''key'']doidoi$https://zenodo.org/api/records/{like}metadata.titlerda.dataset.distribution.titlelabelmetadata.descriptionrda.dataset.distribution.descriptiondescriptionmetadata.license.idrda.dataset.distribution.license.license_refmetadata.keywordsrda.dataset.keywordtagsmetadata.filesizerda.dataset.distribution.byte_sizemetadata.languagerda.dataset.metadata.languagemetadata.dates.validrda.dataset.distribution.available_untilmetadata.license.createdrda.dataset.distribution.license.start_datemetadata.embargo_daterda.dataset.distribution.license.start_datemetadata.publication_daterda.dataset.issuedmetadata.access_rightrda.dataset.distribution.data_accessfilesrda.dataset.distribution.format^.*\.doirda.dataset.dataset_iddoirda.dataset.dataset_id.identifierZenodorda.dataset.distribution.host.titleMore than 99% uptime yearlyrda.dataset.distribution.host.availabilityCHrda.dataset.distribution.host.geo_locationAll files uploaded to Zenodo are stored in CERN’s EOS service in an 18 petabytes disk cluster.rda.dataset.distribution.host.storage_typedoirda.dataset.dataset_id.typehttps://schema.datacite.org/meta/kernel-4.4/rda.dataset.metadata.metadata_standard_id.identifierurlrda.dataset.metadata.metadata_standard_id.typeengrda.dataset.metadata.languageDataCite Metadata Schemarda.dataset.metadata.descriptionHourlyrda.dataset.distribution.host.backup_frequencyIncremental backuprda.dataset.distribution.host.backup_typeRepository hosted by Zenodorda.dataset.distribution.host.descriptionhttps://zenodo.orgrda.dataset.distribution.host.urldoirda.dataset.distribution.host.pid_system', 1, '2024-02-28 10:20:50.570055', '2024-04-17 07:11:52.483139', NULL); + INSERT INTO public."PrefillingSource" VALUES ('7a1ef5db-8833-45e1-85d8-476cea3d4f7a', 'OpenAIRE', 'openaire10falseapplication/jsonremote00$[''meta''][''pagination''][''page'',''pages'',''count'']{like}likereference_idoriginalIdlabeltitledescriptiondescriptiontitle.content[''title''][''content'']children.instance.license[''children''][''instance''][''license'']subject.content[''subject''][''content'']publisherpublisherlanguage.classid[''language''][''classid'']issued.content[''issued''][''content'']bestaccessright.classid[''bestaccessright''][''classid'']pid.content[''pid''][''content'']pid.classid[''pid''][''classid'']$[''results''][*][''result''][''metadata''][''oaf:entity''][''oaf:result'']https://services.openaire.eu/search/v2/api/datasets/?q={like}&page={page}&size={pageSize}&format=jsontitle.contentrda.dataset.distribution.titlelabeldescriptionrda.dataset.distribution.descriptiondescriptionchildren.instance.licenserda.dataset.distribution.license.license_refsubject.contentrda.dataset.keyworddescriptionTagspublisherrda.dataset.distribution.host.titlelanguage.classidrda.dataset.metadata.languageissued.contentrda.dataset.issuedbestaccessright.classidrda.dataset.distribution.data_accesspid.contentrda.dataset.dataset_idpid.contentrda.dataset.dataset_id.identifierpid.classidrda.dataset.dataset_id.type', 1, '2024-02-28 09:12:41.051733', '2024-04-30 11:38:57.583157', NULL); + INSERT INTO public."PrefillingSource" VALUES ('d79952bf-cfd9-4af4-b7b4-5a83d68890a5', 'Zenodo', 'zenodo search20falseapplication/jsonremote10$[''hits''][''total'']{like}likereference_ididlabeltitledescriptiondescription$[''hits''][''hits'']https://zenodo.org/api/records/?page={page}&size={pageSize}&q=title:"{like}" doi:"{like}" conceptdoi:"{like}"zenodo get10falseapplication/jsonremote0${like}likemetadata.title[''metadata''][''title'']metadata.description[''metadata''][''description'']metadata.license.id[''metadata''][''license''][''id'']metadata.keywords[''metadata''][''keywords'']metadata.filesize[''metadata''][''files''][''size'']metadata.language[''metadata''][''language'']metadata.dates.valid[''metadata''][''dates''][''type'']metadata.license.created[''metadata''][''license''][''created'']metadata.embargo_date[''metadata''][''embargo_date'']metadata.publication_date[''metadata''][''publication_date'']metadata.access_right[''metadata''][''access_right'']files[''files''][''key'']doidoi$https://zenodo.org/api/records/{like}metadata.titlerda.dataset.distribution.titlelabelmetadata.descriptionrda.dataset.distribution.descriptiondescriptionmetadata.license.idrda.dataset.distribution.license.license_refmetadata.keywordsrda.dataset.keyworddescriptionTagsmetadata.filesizerda.dataset.distribution.byte_sizemetadata.languagerda.dataset.metadata.languagemetadata.dates.validrda.dataset.distribution.available_untilmetadata.license.createdrda.dataset.distribution.license.start_datemetadata.embargo_daterda.dataset.distribution.license.start_datemetadata.publication_daterda.dataset.issuedmetadata.access_rightrda.dataset.distribution.data_accessfilesrda.dataset.distribution.format^.*\.doirda.dataset.dataset_iddoirda.dataset.dataset_id.identifierZenodorda.dataset.distribution.host.titleMore than 99% uptime yearlyrda.dataset.distribution.host.availabilityCHrda.dataset.distribution.host.geo_locationAll files uploaded to Zenodo are stored in CERN’s EOS service in an 18 petabytes disk cluster.rda.dataset.distribution.host.storage_typedoirda.dataset.dataset_id.typehttps://schema.datacite.org/meta/kernel-4.4/rda.dataset.metadata.metadata_standard_id.identifierurlrda.dataset.metadata.metadata_standard_id.typeengrda.dataset.metadata.languageDataCite Metadata Schemarda.dataset.metadata.descriptionHourlyrda.dataset.distribution.host.backup_frequencyIncremental backuprda.dataset.distribution.host.backup_typeRepository hosted by Zenodorda.dataset.distribution.host.descriptionhttps://zenodo.orgrda.dataset.distribution.host.urldoirda.dataset.distribution.host.pid_system', 1, '2024-02-28 10:20:50.570055', '2024-04-30 10:22:32.443123', NULL); INSERT INTO public."ReferenceType" VALUES ('2baab1e8-561f-4c15-84c3-571b811c52f6', 'Licenses', 'licenses', 'opendefinition100falseapplication/vnd.api+json; charset=utf-8local10$[*]reference_ididlabeltitledescriptionmaintaineruriurl$[*]https://licenses.opendefinition.org/licenses/groups/all.json', 1, '2023-11-16 16:24:12.162675', '2024-02-16 09:14:22.723311', NULL); INSERT INTO public."ReferenceType" VALUES ('2beacaad-3223-43ad-ad99-1e5f21328e7b', 'Registries', 'registries', 'rda-metadata-schemes100falseapplication/json; charset=utf-8remote10$[''meta''][''pagination''][''page'',''pages'',''count'']{like}likereference_idmscidlabeltitledescriptiondescriptionurluri$[''data''][''items''][*]https://rdamsc.bath.ac.uk/api2/m?q={like}&start=1&pageSize={pageSize}', 1, '2023-11-16 10:08:21.240804', '2024-02-16 09:16:50.456347', NULL); diff --git a/dmp-frontend/src/app/core/common/enum/permission.enum.ts b/dmp-frontend/src/app/core/common/enum/permission.enum.ts index c0e3a1c2f..07ef9f662 100644 --- a/dmp-frontend/src/app/core/common/enum/permission.enum.ts +++ b/dmp-frontend/src/app/core/common/enum/permission.enum.ts @@ -71,7 +71,6 @@ export enum AppPermission { //Dmp BrowseDmp = "BrowseDmp", EditDmp = "EditDmp", - ReviewDmp = "ReviewDmp", NewDmp = "NewDmp", DepositDmp = "DepositDmp", DeleteDmp = "DeleteDmp", diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html index 42c8a4757..c6d36e197 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html @@ -17,7 +17,7 @@ -
+
@@ -162,7 +162,7 @@
- +
@@ -228,8 +228,8 @@
-
-
@@ -239,7 +239,7 @@
-
@@ -263,6 +263,7 @@
+ {{formGroup.get('properties').get('dmpBlueprintValues').get(field.id)?.get('reference')?.status }} diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts index bead0e5fc..18de61f5c 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts @@ -224,7 +224,7 @@ export class DmpEditorComponent extends BaseEditor implemen .pipe(takeUntil(this._destroyed)).subscribe( complete => { this.permissionPerSection = complete, - this.buildForm(); + this.buildForm(); }, error => this.onCallbackError(error) ); diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.model.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.model.ts index 7035e0a32..3203fce13 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.model.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.model.ts @@ -87,7 +87,8 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist { label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], properties: this.properties.buildForm({ - rootPath: `properties.` + rootPath: `properties.`, + disabled: disabled }), users: this.formBuilder.array( (this.users ?? []).map( @@ -242,7 +243,8 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist { contacts: this.formBuilder.array( (this.contacts ?? []).map( (item, index) => item.buildForm({ - rootPath: `${rootPath}contacts[${index}].` + rootPath: `${rootPath}contacts[${index}].`, + disabled: disabled }) ), context.getValidation('contacts').validators ), @@ -252,7 +254,8 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist { const dmpBlueprintValuesFormGroup = this.formBuilder.group({}); this.dmpBlueprintValues.forEach((value, key) => dmpBlueprintValuesFormGroup.addControl(key.toString(), value.buildForm({ - rootPath: `${rootPath}dmpBlueprintValues[${key}].` + rootPath: `${rootPath}dmpBlueprintValues[${key}].`, + disabled: disabled })), context.getValidation('dmpBlueprintValues') ) formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup); @@ -734,7 +737,7 @@ export class DmpDescriptionTemplateEditorModel implements DmpDescriptionTemplate } export class DmpFieldIndicator { - + private _fieldControlNames; get fieldControlNames(): string[] { @@ -747,7 +750,7 @@ export class DmpFieldIndicator { if (section.hasTemplates) { this._fieldControlNames.push(`descriptionTemplates.${section.id}`); } else { - section.fields.forEach((field: FieldInSection) => { + section.fields.forEach((field: FieldInSection) => { switch (field.category) { case DmpBlueprintFieldCategory.System: this.buildSystemField(field as SystemFieldInSection); @@ -785,7 +788,7 @@ export class DmpFieldIndicator { break; } } - + buildReferenceTypeField(field: ReferenceTypeFieldInSection): void { if (field.multipleSelect) { this._fieldControlNames.push(`properties.dmpBlueprintValues.${field.id}.references`); @@ -793,7 +796,7 @@ export class DmpFieldIndicator { this._fieldControlNames.push(`properties.dmpBlueprintValues.${field.id}.reference`); } } - + buildExtraField(field: ExtraFieldInSection): void { this._fieldControlNames.push(`properties.dmpBlueprintValues.${field.id}.fieldValue`); } diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index c41fbc125..b3404cd99 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -43,9 +43,9 @@
-
+
-
+
diff --git a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts index 3ee6be608..2113ffdec 100644 --- a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts +++ b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts @@ -313,7 +313,7 @@ export class ResultFieldsMappingConfigurationEditorModel implements ResultFields } return this.formBuilder.group({ - code: [{ value: this.code, disabled: true }, context.getValidation('code').validators], + code: [{ value: this.code, disabled: disabled }, context.getValidation('code').validators], responsePath: [{ value: this.responsePath, disabled: disabled }, context.getValidation('responsePath').validators], }); } @@ -722,7 +722,7 @@ export class StaticOptionEditorModel implements StaticOptionPersist { } return this.formBuilder.group({ - code: [{ value: this.code, disabled: true }, context.getValidation('code').validators], + code: [{ value: this.code, disabled: disabled }, context.getValidation('code').validators], value: [{ value: this.value, disabled: disabled }, context.getValidation('value').validators], }); } diff --git a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source.component.html b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source.component.html index cac29980f..de9579499 100644 --- a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source.component.html +++ b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source.component.html @@ -141,7 +141,7 @@
{{'EXTERNAL-FETCHER-SOURCE-EDITOR.FIELDS.CODE' | translate}} - + {{field.get('code').getError('backendError').message}} {{'GENERAL.VALIDATION.REQUIRED' | translate}} @@ -372,7 +372,7 @@
{{'EXTERNAL-FETCHER-SOURCE-EDITOR.FIELDS.CODE' | translate}} - + {{option.get('code').getError('backendError').message}} {{'GENERAL.VALIDATION.REQUIRED' | translate}} diff --git a/dmp-frontend/src/app/ui/tag/tags-field/tags-field.component.ts b/dmp-frontend/src/app/ui/tag/tags-field/tags-field.component.ts index c9bf5bd8f..cfb0d4f41 100644 --- a/dmp-frontend/src/app/ui/tag/tags-field/tags-field.component.ts +++ b/dmp-frontend/src/app/ui/tag/tags-field/tags-field.component.ts @@ -1,5 +1,5 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; -import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core'; +import { Component, ElementRef, Input, OnInit, SimpleChanges, ViewChild } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; import { MatChipInputEvent } from '@angular/material/chips'; @@ -30,8 +30,15 @@ export class TagsComponent extends BaseComponent implements OnInit { ) { super(); } + ngOnChanges(changes: SimpleChanges) { + if(changes['form']) this.applyTags(); + } ngOnInit(): void { + this.applyTags(); + } + + applyTags(){ this.tags = this.form.value || []; this.filteredTags = this.form.valueChanges.pipe( startWith(null),