diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java index 283ead523..73a371059 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java @@ -7,16 +7,16 @@ import java.util.Map; public enum DmpBlueprintSystemFieldType implements DatabaseEnum { - Text((short)0), - HtmlText((short)1), - Researchers((short)2), - Organizations((short)3), + Text((short)0), //TODO: Rename to "Title" + HtmlText((short)1), //TODO: Rename to "Description" + Researchers((short)2), //TODO: replace by reference type + Organizations((short)3), //TODO: replace by reference type Language((short)4), Contact((short)5), - Funder((short)6), - Grant((short)7), - Project((short)8), - License((short)9), + Funder((short)6), //TODO: replace by reference type + Grant((short)7), //TODO: replace by reference type + Project((short)8), //TODO: replace by reference type + License((short)9), //TODO: replace by reference type AccessRights((short)10); private final Short value; diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java index 186442ad2..97324ed53 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java @@ -6,31 +6,31 @@ import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; public enum FieldType implements DatabaseEnum { - EXTERNAL_SELECT(Names.ExternalSelect), + EXTERNAL_SELECT(Names.ExternalSelect), //TODO: remove SELECT(Names.Select), BOOLEAN_DECISION(Names.BooleanDecision), RADIO_BOX(Names.RadioBox), - INTERNAL_DMP_ENTRIES_RESEARCHERS(Names.InternalDmpResearchers), - INTERNAL_DMP_ENTRIES_DMPS(Names.InternalDmpDmps), - INTERNAL_ENTRIES_DESCRIPTIONS(Names.InternalDmpDescriptions), + INTERNAL_DMP_ENTRIES_RESEARCHERS(Names.InternalDmpResearchers), //TODO: remove + INTERNAL_DMP_ENTRIES_DMPS(Names.InternalDmpDmps), //TODO: rename InternalEntitiesDmps + INTERNAL_DMP_ENTRIES_DATASETS(Names.InternalDmpDescriptions), CHECK_BOX(Names.CheckBox), FREE_TEXT(Names.FreeText), TEXT_AREA(Names.TextArea), RICH_TEXT_AREA(Names.RichTextarea), UPLOAD(Names.Upload), DATE_PICKER(Names.DatePicker), - EXTERNAL_DATASETS(Names.ExternalDatasets), - DATA_REPOSITORIES(Names.DataRepositories), - JOURNAL_REPOSITORIES(Names.JournalRepositories), - PUB_REPOSITORIES(Names.PubRepositories), - LICENSES(Names.Licenses), - TAXONOMIES(Names.Taxonomies), - PUBLICATIONS(Names.Publications), - REGISTRIES(Names.Registries), - SERVICES(Names.Services), + EXTERNAL_DATASETS(Names.ExternalDatasets), //TODO: replace with reference type + DATA_REPOSITORIES(Names.DataRepositories), //TODO: replace with reference type + JOURNAL_REPOSITORIES(Names.JournalRepositories), //TODO: replace with reference type + PUB_REPOSITORIES(Names.PubRepositories), //TODO: replace with reference type + LICENSES(Names.Licenses), //TODO: replace with reference type + TAXONOMIES(Names.Taxonomies), //TODO: replace with reference type + PUBLICATIONS(Names.Publications), //TODO: replace with reference type + REGISTRIES(Names.Registries), //TODO: replace with reference type + SERVICES(Names.Services), //TODO: replace with reference type TAGS(Names.Tags), - RESEARCHERS(Names.Researchers), - ORGANIZATIONS(Names.Organizations), + RESEARCHERS(Names.Researchers), //TODO: replace with reference type + ORGANIZATIONS(Names.Organizations), //TODO: replace with reference type DATASET_IDENTIFIER(Names.DatasetIdentifier), CURRENCY(Names.Currency), VALIDATION(Names.Validation); @@ -43,7 +43,7 @@ public enum FieldType implements DatabaseEnum { public static final String RadioBox = "radiobox"; public static final String InternalDmpResearchers = "internalDmpResearchers"; public static final String InternalDmpDmps = "internalDmpDmps"; - public static final String InternalDmpDescriptions = "internalDmpDescriptions"; + public static final String InternalDmpDescriptions = "internalDmpDatasets"; public static final String CheckBox = "checkBox"; public static final String FreeText = "freetext"; public static final String TextArea = "textarea"; @@ -101,7 +101,7 @@ public enum FieldType implements DatabaseEnum { public static boolean isTextListType(FieldType fieldType){ return fieldType.equals(FieldType.SELECT) || fieldType.equals(FieldType.TAGS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) || - fieldType.equals(FieldType.INTERNAL_ENTRIES_DESCRIPTIONS); + fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DATASETS); } public static boolean isDateType(FieldType fieldType){ diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/deposit/DescriptionFieldDepositBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/deposit/DescriptionFieldDepositBuilder.java index 59c548e0c..ba146f952 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/deposit/DescriptionFieldDepositBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/deposit/DescriptionFieldDepositBuilder.java @@ -86,7 +86,7 @@ public class DescriptionFieldDepositBuilder extends BaseDepositBuilder m.setFieldType(FieldType.RADIO_BOX); case INTERNAL_DMP_ENTRIES_RESEARCHERS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS); case INTERNAL_DMP_ENTRIES_DMPS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_DMPS); - case INTERNAL_ENTRIES_DESCRIPTIONS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_DATASETS); + case INTERNAL_DMP_ENTRIES_DATASETS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_DATASETS); case CHECK_BOX -> m.setFieldType(FieldType.CHECK_BOX); case FREE_TEXT -> m.setFieldType(FieldType.FREE_TEXT); case TEXT_AREA -> m.setFieldType(FieldType.TEXT_AREA); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionPersist.java index 255e251fe..245287eaf 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionPersist.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DescriptionPersist.java @@ -173,49 +173,49 @@ public class DescriptionPersist { DescriptionTemplateEntity descriptionTemplate = this.isValidGuid(item.getDescriptionTemplateId()) ? this.entityManager.find(DescriptionTemplateEntity.class, item.getDescriptionTemplateId()) : null; DefinitionEntity definition = descriptionTemplate == null ? null : this.xmlHandlingService.fromXmlSafe(DefinitionEntity.class, descriptionTemplate.getDefinition()); return Arrays.asList( - this.spec() - .iff(() -> this.isValidGuid(item.getId())) - .must(() -> this.isValidHash(item.getHash())) - .failOn(DescriptionPersist._hash).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._hash}, LocaleContextHolder.getLocale())), - this.spec() - .iff(() -> !this.isValidGuid(item.getId())) - .must(() -> !this.isValidHash(item.getHash())) - .failOn(DescriptionPersist._hash).failWith(messageSource.getMessage("Validation_OverPosting", new Object[]{}, LocaleContextHolder.getLocale())), - this.spec() - .must(() -> !this.isEmpty(item.getLabel())) - .failOn(DescriptionPersist._label).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._label}, LocaleContextHolder.getLocale())), - this.spec() - .iff(() -> !this.isEmpty(item.getLabel())) - .must(() -> this.lessEqualLength(item.getLabel(), DescriptionEntity._labelLength)) - .failOn(DescriptionPersist._label).failWith(messageSource.getMessage("Validation_MaxLength", new Object[]{DescriptionPersist._label}, LocaleContextHolder.getLocale())), - this.spec() - .must(() -> this.isValidGuid(item.getDmpId())) - .failOn(DescriptionPersist._dmpId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._dmpId}, LocaleContextHolder.getLocale())), - this.spec() - .iff(() -> item.getStatus() == DescriptionStatus.Finalized) - .must(() -> this.isValidGuid(item.getDescriptionTemplateId())) - .failOn(DescriptionPersist._descriptionTemplateId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._descriptionTemplateId}, LocaleContextHolder.getLocale())), - this.spec() - .iff(() -> item.getStatus() == DescriptionStatus.Finalized) - .must(() -> this.isValidGuid(item.getDmpDescriptionTemplateId())) - .failOn(DescriptionPersist._dmpDescriptionTemplateId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._dmpDescriptionTemplateId}, LocaleContextHolder.getLocale())), - this.spec() - .must(() -> !this.isNull(item.getStatus())) - .failOn(DescriptionPersist._status).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._status}, LocaleContextHolder.getLocale())), - this.spec() - .iff(() -> item.getStatus() == DescriptionStatus.Finalized) - .must(() -> !this.isListNullOrEmpty(item.getTags())) - .failOn(DescriptionPersist._tags).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._tags}, LocaleContextHolder.getLocale())), - - this.spec() - .iff(() -> item.getStatus() == DescriptionStatus.Finalized) - .must(() -> !this.isNull(item.getProperties())) - .failOn(DescriptionPersist._properties).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._properties}, LocaleContextHolder.getLocale())), - this.refSpec() - .iff(() -> !this.isNull(item.getProperties())) - .on(DescriptionPersist._properties) - .over(item.getProperties()) - .using(() -> this.validatorFactory.validator(PropertyDefinitionPersist.PropertyDefinitionPersistValidator.class).setStatus(item.getStatus()).withDefinition(definition)) +// this.spec() +// .iff(() -> this.isValidGuid(item.getId())) +// .must(() -> this.isValidHash(item.getHash())) +// .failOn(DescriptionPersist._hash).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._hash}, LocaleContextHolder.getLocale())), +// this.spec() +// .iff(() -> !this.isValidGuid(item.getId())) +// .must(() -> !this.isValidHash(item.getHash())) +// .failOn(DescriptionPersist._hash).failWith(messageSource.getMessage("Validation_OverPosting", new Object[]{}, LocaleContextHolder.getLocale())), +// this.spec() +// .must(() -> !this.isEmpty(item.getLabel())) +// .failOn(DescriptionPersist._label).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._label}, LocaleContextHolder.getLocale())), +// this.spec() +// .iff(() -> !this.isEmpty(item.getLabel())) +// .must(() -> this.lessEqualLength(item.getLabel(), DescriptionEntity._labelLength)) +// .failOn(DescriptionPersist._label).failWith(messageSource.getMessage("Validation_MaxLength", new Object[]{DescriptionPersist._label}, LocaleContextHolder.getLocale())), +// this.spec() +// .must(() -> this.isValidGuid(item.getDmpId())) +// .failOn(DescriptionPersist._dmpId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._dmpId}, LocaleContextHolder.getLocale())), +// this.spec() +// .iff(() -> item.getStatus() == DescriptionStatus.Finalized) +// .must(() -> this.isValidGuid(item.getDescriptionTemplateId())) +// .failOn(DescriptionPersist._descriptionTemplateId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._descriptionTemplateId}, LocaleContextHolder.getLocale())), +// this.spec() +// .iff(() -> item.getStatus() == DescriptionStatus.Finalized) +// .must(() -> this.isValidGuid(item.getDmpDescriptionTemplateId())) +// .failOn(DescriptionPersist._dmpDescriptionTemplateId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._dmpDescriptionTemplateId}, LocaleContextHolder.getLocale())), +// this.spec() +// .must(() -> !this.isNull(item.getStatus())) +// .failOn(DescriptionPersist._status).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._status}, LocaleContextHolder.getLocale())), +// this.spec() +// .iff(() -> item.getStatus() == DescriptionStatus.Finalized) +// .must(() -> !this.isListNullOrEmpty(item.getTags())) +// .failOn(DescriptionPersist._tags).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._tags}, LocaleContextHolder.getLocale())), +// +// this.spec() +// .iff(() -> item.getStatus() == DescriptionStatus.Finalized) +// .must(() -> !this.isNull(item.getProperties())) +// .failOn(DescriptionPersist._properties).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionPersist._properties}, LocaleContextHolder.getLocale())), +// this.refSpec() +// .iff(() -> !this.isNull(item.getProperties())) +// .on(DescriptionPersist._properties) +// .over(item.getProperties()) +// .using(() -> this.validatorFactory.validator(PropertyDefinitionPersist.PropertyDefinitionPersistValidator.class).setStatus(item.getStatus()).withDefinition(definition)) ); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptionproperties/FieldPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptionproperties/FieldPersist.java index f3bc32ab8..b4937bb3a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptionproperties/FieldPersist.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptionproperties/FieldPersist.java @@ -130,7 +130,7 @@ public class FieldPersist { .must(() -> this.isUUID(item.getTextValue())) .failOn(FieldPersist._textValue).failWith(messageSource.getMessage("Validation_UnexpectedValue", new Object[]{FieldPersist._textValue}, LocaleContextHolder.getLocale())), this.spec() - .iff(()-> !this.isNull(item.getTextListValue()) && (fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS) || fieldType.equals(FieldType.INTERNAL_ENTRIES_DESCRIPTIONS))) + .iff(()-> !this.isNull(item.getTextListValue()) && (fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DATASETS))) .must(() -> item.getTextListValue().stream().allMatch(this::isUUID)) .failOn(FieldPersist._textListValue).failWith(messageSource.getMessage("Validation_UnexpectedValue", new Object[]{FieldPersist._textListValue}, LocaleContextHolder.getLocale())), this.navSpec() diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index 039e2d5e3..f90ef3514 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -155,12 +155,13 @@ public class DescriptionServiceImpl implements DescriptionService { data.setId(UUID.randomUUID()); data.setIsActive(IsActive.Active); data.setCreatedAt(Instant.now()); + data.setCreatedById(this.userScope.getUserId()); data.setDmpId(model.getDmpId()); data.setDmpDescriptionTemplateId(model.getDmpDescriptionTemplateId()); } - DmpDescriptionTemplateEntity dmpDescriptionTemplate = this.entityManager.find(DmpDescriptionTemplateEntity.class, data.getDescriptionTemplateId()); - if (dmpDescriptionTemplate == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{data.getDescriptionTemplateId(), DmpDescriptionTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale())); + DmpDescriptionTemplateEntity dmpDescriptionTemplate = this.entityManager.find(DmpDescriptionTemplateEntity.class, data.getDmpDescriptionTemplateId()); + if (dmpDescriptionTemplate == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{data.getDmpDescriptionTemplateId(), DmpDescriptionTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale())); DescriptionTemplateEntity descriptionTemplateEntity = this.entityManager.find(DescriptionTemplateEntity.class, model.getDescriptionTemplateId()); if (descriptionTemplateEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getDescriptionTemplateId(), DescriptionTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale())); @@ -385,6 +386,8 @@ public class DescriptionServiceImpl implements DescriptionService { PropertyDefinitionFieldSetItemEntity data = new PropertyDefinitionFieldSetItemEntity(); if (persist == null) return data; if (persist.getFields() != null && !persist.getFields().isEmpty()){ + data.setOrdinal(persist.getOrdinal()); + data.setComment(persist.getComment()); data.setFields(new HashMap<>()); for (String key: persist.getFields().keySet()) { eu.eudat.commons.types.descriptiontemplate.FieldEntity fieldEntity = fieldSetEntity != null ? fieldSetEntity.getAllField().stream().findFirst().orElse(null) : null; @@ -400,7 +403,7 @@ public class DescriptionServiceImpl implements DescriptionService { if (persist == null) return data; if (FieldType.isTextType(fieldType)) { - if (FieldType.UPLOAD.equals(fieldType)){ + if (FieldType.UPLOAD.equals(fieldType) && !this.conventionService.isNullOrEmpty(persist.getTextValue())){ StorageFile storageFile = this.storageFileService.copyToStorage(UUID.fromString(persist.getTextValue()), StorageType.Main, true, new BaseFieldSet().ensure(StorageFile._id)); this.storageFileService.updatePurgeAt(storageFile.getId(), null); data.setTextValue(storageFile.getId().toString()); @@ -415,7 +418,7 @@ public class DescriptionServiceImpl implements DescriptionService { for (UUID id : ids){ if (!existingIds.contains(id)) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale())); } - } if (FieldType.INTERNAL_ENTRIES_DESCRIPTIONS.equals(fieldType) && !this.conventionService.isListNullOrEmpty(persist.getTextListValue())){ + } if (FieldType.INTERNAL_DMP_ENTRIES_DATASETS.equals(fieldType) && !this.conventionService.isListNullOrEmpty(persist.getTextListValue())){ List ids = persist.getTextListValue().stream().map(UUID::fromString).toList(); Set existingIds = this.queryFactory.query(DescriptionQuery.class).ids(ids).isActive(IsActive.Active).collectAs(new BaseFieldSet().ensure(Description._id)).stream().map(DescriptionEntity::getId).collect(Collectors.toSet()); for (UUID id : ids){ diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/fielddatahelper/FieldDataHelperServiceProvider.java b/dmp-backend/core/src/main/java/eu/eudat/service/fielddatahelper/FieldDataHelperServiceProvider.java index 4c4db3cae..570b9c7f3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/fielddatahelper/FieldDataHelperServiceProvider.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/fielddatahelper/FieldDataHelperServiceProvider.java @@ -24,7 +24,7 @@ public class FieldDataHelperServiceProvider { case REGISTRIES: case SERVICES: case RESEARCHERS: - case INTERNAL_ENTRIES_DESCRIPTIONS: + case INTERNAL_DMP_ENTRIES_DATASETS: case INTERNAL_DMP_ENTRIES_DMPS: case INTERNAL_DMP_ENTRIES_RESEARCHERS: case ORGANIZATIONS: { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java index e1c1406cf..503b5c57b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java @@ -290,7 +290,7 @@ public class ExportXmlBuilderDatasetProfile { dataOut.setAttribute("label", baseFieldDataObject.getLabel()); break; case INTERNAL_DMP_ENTRIES_RESEARCHERS: - case INTERNAL_ENTRIES_DESCRIPTIONS: + case INTERNAL_DMP_ENTRIES_DATASETS: case INTERNAL_DMP_ENTRIES_DMPS: // InternalDmpBaseDataEntity internalDmpEntitiesData = (InternalDmpBaseDataEntity) field.getData(); // dataOut.setAttribute("label", internalDmpEntitiesData.getLabel()); diff --git a/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts b/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts index fb86d56fa..f9732bd47 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts +++ b/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts @@ -784,9 +784,12 @@ export class DescriptionEditorComponent extends BaseEditor { this.editorModel.properties = new DescriptionPropertyDefinitionEditorModel().fromModel(null, descriptionTemplate, null); - this.formGroup.removeControl('properties'); - this.formGroup.addControl('properties', this.editorModel.buildProperties()); + this.formGroup.setControl('properties', this.editorModel.buildProperties()); this.item.descriptionTemplate = descriptionTemplate; + + const sectionId = this.item.dmpDescriptionTemplate.sectionId; + this.item.dmpDescriptionTemplate = this.item.dmp.dmpDescriptionTemplates.find(x => x.sectionId == sectionId && x.descriptionTemplateGroupId == descriptionTemplate.groupId); + this.formGroup.get('dmpDescriptionTemplateId').setValue(this.item.dmpDescriptionTemplate.id); }); // this.formGroup.removeControl('descriptionProfileDefinition'); // this.getDefinition(profiledId); diff --git a/dmp-frontend/src/app/ui/description/editor/description-editor.model.ts b/dmp-frontend/src/app/ui/description/editor/description-editor.model.ts index 81c6f9d50..f6fc3f81a 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-editor.model.ts +++ b/dmp-frontend/src/app/ui/description/editor/description-editor.model.ts @@ -34,7 +34,7 @@ export class DescriptionEditorModel extends BaseEditorModel implements Descripti this.dmpId = item.dmp?.id; this.dmpDescriptionTemplateId = item.dmpDescriptionTemplate?.id; this.descriptionTemplateId = item.descriptionTemplate?.id; - this.status = item.status; + this.status = item.status ?? DescriptionStatus.Draft; this.description = item.description; this.tags = item.descriptionTags?.map(x => x.tag?.label); this.properties = new DescriptionPropertyDefinitionEditorModel().fromModel(item.properties, descriptionTemplate, item.descriptionReferences); diff --git a/dmp-frontend/src/app/ui/description/editor/description-editor.resolver.ts b/dmp-frontend/src/app/ui/description/editor/description-editor.resolver.ts index 3e82c9783..889484c29 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-editor.resolver.ts +++ b/dmp-frontend/src/app/ui/description/editor/description-editor.resolver.ts @@ -68,6 +68,7 @@ export class DescriptionEditorResolver extends BaseEditorResolver { (prefix ? prefix + '.' : '') + [nameof(x => x.id)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.label)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.version)].join('.'), + (prefix ? prefix + '.' : '') + [nameof(x => x.groupId)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.definition), nameof(x => x.pages), nameof(x => x.id)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.definition), nameof(x => x.pages), nameof(x => x.ordinal)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.definition), nameof(x => x.pages), nameof(x => x.title)].join('.'), @@ -121,6 +122,7 @@ export class DescriptionEditorResolver extends BaseEditorResolver { // (prefix ? prefix + '.' : '') + [nameof(x => x.blueprint), nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.minMultiplicity)].join('.'), // (prefix ? prefix + '.' : '') + [nameof(x => x.blueprint), nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.maxMultiplicity)].join('.'), + (prefix ? prefix + '.' : '') + [nameof(x => x.dmpDescriptionTemplates), nameof(x => x.id)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.dmpDescriptionTemplates), nameof(x => x.sectionId)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.dmpDescriptionTemplates), nameof(x => x.descriptionTemplateGroupId)].join('.'), (prefix ? prefix + '.' : '') + [nameof(x => x.dmpDescriptionTemplates), nameof(x => x.currentDescriptionTemplate), nameof(x => x.id)].join('.'), diff --git a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.html b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.html index 3ffaf7c2c..8653b61f4 100644 --- a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.html +++ b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.html @@ -1,10 +1,12 @@
+ - + + false); if (this.selected) { @@ -73,13 +73,14 @@ export class TableOfContentsInternal implements OnInit { if (entry.type === ToCEntryType.FieldSet) { const fieldSetId = entry.id; - const element = document.getElementById(this.TOCENTRY_ID_PREFIX + fieldSetId); + // const element = document.getElementById(this.TOCENTRY_ID_PREFIX + fieldSetId); + const element = document.getElementById(fieldSetId); if (element) { element.click();//open mat expansion panel //scroll asyn in 200 ms so the expansion panel is expanded and the element coordinates are updated setTimeout(() => { - const element = document.getElementById(this.TOCENTRY_ID_PREFIX + fieldSetId); + const element = document.getElementById(fieldSetId); if (element) { element.scrollIntoView({ behavior: 'smooth' }); } diff --git a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.component.ts b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.component.ts index 619d7b364..9d9cb97fd 100644 --- a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.component.ts +++ b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.component.ts @@ -83,9 +83,9 @@ export class TableOfContentsComponent extends BaseComponent implements OnInit, O if (this.descriptionTemplate) { this.tocentries = this.getTocEntries(this.descriptionTemplate); - if (this.visibilityRulesService) { - this.hiddenEntries = this._findHiddenEntries(this.tocentries); - } + // if (this.visibilityRulesService) { + // this.hiddenEntries = this._findHiddenEntries(this.tocentries); + // } } else { @@ -96,57 +96,57 @@ export class TableOfContentsComponent extends BaseComponent implements OnInit, O this.linksSubject.next(headers); }); - if (!this.links || this.links.length === 0) { - this.linksSubject.asObservable() - .pipe(distinctUntilChanged((p: HTMLElement[], q: HTMLElement[]) => JSON.stringify(p) == JSON.stringify(q))) - .subscribe(headers => { - const links: Array = []; + // if (!this.links || this.links.length === 0) { + // this.linksSubject.asObservable() + // .pipe(distinctUntilChanged((p: HTMLElement[], q: HTMLElement[]) => JSON.stringify(p) == JSON.stringify(q))) + // .subscribe(headers => { + // const links: Array = []; - if (headers.length) { - let page; - let section; - let show - for (const header of headers) { - let name; - let id; - if (header.classList.contains('toc-page-header')) { // deprecated after removing stepper - name = header.innerText.trim().replace(/^link/, ''); - id = header.id; - page = header.id.split('_')[1]; - section = undefined; - show = true; - } else if (header.classList.contains('toc-section-header')) { - name = header.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue.trim().replace(/^link/, ''); - id = header.id; - page = header.id.split('.')[1]; - section = header.id; - if (header.id.split('.')[4]) { show = false; } - else { show = true; } - } else if (header.classList.contains('toc-compositeField-header')) { - name = (header.childNodes[0]).nodeValue.trim().replace(/^link/, ''); - id = header.id; - // id = header.parentElement.parentElement.parentElement.id; - show = false; - } - const { top } = header.getBoundingClientRect(); - links.push({ - name, - id, - type: header.tagName.toLowerCase(), - top: top, - active: false, - page: page, - section: section, - show: show, - selected: false - }); - } - } - this.links = links; - // Initialize selected for button next on dataset wizard component editor - this.links.length > 0 ? this.links[0].selected = true : null; - }) - } + // if (headers.length) { + // let page; + // let section; + // let show + // for (const header of headers) { + // let name; + // let id; + // if (header.classList.contains('toc-page-header')) { // deprecated after removing stepper + // name = header.innerText.trim().replace(/^link/, ''); + // id = header.id; + // page = header.id.split('_')[1]; + // section = undefined; + // show = true; + // } else if (header.classList.contains('toc-section-header')) { + // name = header.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].nodeValue.trim().replace(/^link/, ''); + // id = header.id; + // page = header.id.split('.')[1]; + // section = header.id; + // if (header.id.split('.')[4]) { show = false; } + // else { show = true; } + // } else if (header.classList.contains('toc-compositeField-header')) { + // name = (header.childNodes[0]).nodeValue.trim().replace(/^link/, ''); + // id = header.id; + // // id = header.parentElement.parentElement.parentElement.id; + // show = false; + // } + // const { top } = header.getBoundingClientRect(); + // links.push({ + // name, + // id, + // type: header.tagName.toLowerCase(), + // top: top, + // active: false, + // page: page, + // section: section, + // show: show, + // selected: false + // }); + // } + // } + // this.links = links; + // // Initialize selected for button next on dataset wizard component editor + // this.links.length > 0 ? this.links[0].selected = true : null; + // }) + // } } } @@ -201,9 +201,9 @@ export class TableOfContentsComponent extends BaseComponent implements OnInit, O } if (changes['descriptionTemplate'] && changes.descriptionTemplate != null) { this.tocentries = this.getTocEntries(this.descriptionTemplate); - if (this.visibilityRulesService) { - this.hiddenEntries = this._findHiddenEntries(this.tocentries); - } + // if (this.visibilityRulesService) { + // this.hiddenEntries = this._findHiddenEntries(this.tocentries); + // } } if ('visibilityRulesService') { @@ -365,7 +365,7 @@ export class TableOfContentsComponent extends BaseComponent implements OnInit, O id: item.id, label: item.title, numbering: 's', - subEntries: tempResult, + subEntries: null, subEntriesType: ToCEntryType.Field, type: ToCEntryType.FieldSet, ordinal: item.ordinal @@ -383,7 +383,7 @@ export class TableOfContentsComponent extends BaseComponent implements OnInit, O subEntriesType: null, type: ToCEntryType.Field, ordinal: item.ordinal, - hidden: true + hidden: false }; }