diff --git a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts index 843dd6c9d..75f3775bc 100644 --- a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts @@ -71,7 +71,6 @@ export class DescriptionTemplateEditorComponent extends BaseEditor = new Map(); userFormControl = new FormControl(); @@ -200,9 +199,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor void): void { this.formService.removeAllBackEndErrors(this.formGroup); this.formService.touchAllFormFields(this.formGroup); if (!this.isFormValid()) { return; } - this.persistEntity(); + this.persistEntity(onSuccess); } saveWithClose(close: boolean){ - this.close = close; - this.formSubmit(); + this.formSubmit((data) => { + this.uiNotificationService.snackBarNotification(this.isNew ? this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-CREATION') : this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); + if(close){ + this.router.navigate(['/description-templates']); + } else { + this.refreshOnNavigateToData(data ? data.id : null); + } + }); } public delete() { diff --git a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts index ade0c6dbd..20e8f585c 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts @@ -91,6 +91,7 @@ export class DmpBlueprintEditorModel extends BaseEditorModel implements DmpBluep rootPath: `definition.`, validationErrorModel: validationErrorModel }); + formGroup.updateValueAndValidity(); } } @@ -409,13 +410,13 @@ export class FieldInSectionEditorModel implements FieldInSectionPersist { if (keyField == 'label') { control?.addValidators(context.has('label-system') ? context.getValidation('label-system').validators : (context.has('label-extra') ? context.getValidation('label-extra').validators : context.getValidation('label-external-reference').validators)); } else if (keyField == 'referenceTypeId') { - if (formGroup.get('category').value == DmpBlueprintFieldCategory.ReferenceType) control?.addValidators([Validators.required, ...context.getValidation('referenceTypeId').validators]); + if (formGroup.get('category').value === DmpBlueprintFieldCategory.ReferenceType) control?.addValidators([Validators.required, ...context.getValidation('referenceTypeId').validators]); else control?.addValidators([...context.getValidation('referenceTypeId').validators]); } else if (keyField == 'systemFieldType') { - if (formGroup.get('category').value == DmpBlueprintFieldCategory.System) control?.addValidators([Validators.required, ...context.getValidation('systemFieldType').validators]); + if (formGroup.get('category').value === DmpBlueprintFieldCategory.System) control?.addValidators([Validators.required, ...context.getValidation('systemFieldType').validators]); else control?.addValidators([...context.getValidation('systemFieldType').validators]); } else if (keyField == 'dataType') { - if (formGroup.get('category').value == DmpBlueprintFieldCategory.Extra) control?.addValidators([Validators.required, ...context.getValidation('dataType').validators]); + if (formGroup.get('category').value === DmpBlueprintFieldCategory.Extra) control?.addValidators([Validators.required, ...context.getValidation('dataType').validators]); else control?.addValidators([...context.getValidation('dataType').validators]); } else { control?.addValidators(context.getValidation(keyField).validators); diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index c4f803dd3..ede07057d 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -1274,7 +1274,7 @@ }, "SECTIONS-REQUIRED": "Required", "FIELDS-REQUIRED": "Required", - "SYSTEM-FIELDS-REQUIRED": "Title and Description are required", + "SYSTEM-FIELDS-REQUIRED": "Title, Description, Language and Access are required", "FIELDS": { "NAME": "Name", "SECTIONS": "Sections", diff --git a/dmp-frontend/src/common/forms/validation/custom-validator.ts b/dmp-frontend/src/common/forms/validation/custom-validator.ts index a3f0c4040..aa87b724a 100644 --- a/dmp-frontend/src/common/forms/validation/custom-validator.ts +++ b/dmp-frontend/src/common/forms/validation/custom-validator.ts @@ -104,6 +104,8 @@ export function DmpBlueprintSystemFieldRequiredValidator(): ValidatorFn { return (control: AbstractControl): { [key: string]: any } => { let foundTitle = false; let foundDescription = false; + let foundLanguage = false; + let foundAccess = false; const sectionsFormArray = (control as UntypedFormArray); if (sectionsFormArray.controls != null && sectionsFormArray.controls.length > 0 ){ @@ -116,10 +118,16 @@ export function DmpBlueprintSystemFieldRequiredValidator(): ValidatorFn { if (fieldsFormArray.controls.some(y => (y as UntypedFormGroup).get('systemFieldType')?.value === DmpBlueprintSystemFieldType.Description)){ foundDescription = true; } + if (fieldsFormArray.controls.some(y => (y as UntypedFormGroup).get('systemFieldType')?.value === DmpBlueprintSystemFieldType.Language)){ + foundLanguage = true; + } + if (fieldsFormArray.controls.some(y => (y as UntypedFormGroup).get('systemFieldType')?.value === DmpBlueprintSystemFieldType.AccessRights)){ + foundAccess = true; + } } }); } - return foundTitle && foundDescription ? null : { 'dmpBlueprintSystemFieldRequired': true }; + return foundTitle && foundDescription && foundAccess && foundLanguage ? null : { 'dmpBlueprintSystemFieldRequired': true }; }; }