Merge branch 'dmp-refactoring' of https://code-repo.d4science.org/MaDgiK-CITE/argos into dmp-refactoring

This commit is contained in:
Diamantis Tziotzios 2024-06-07 16:25:47 +03:00
commit 2474a71b14
4 changed files with 18 additions and 16 deletions

View File

@ -7,7 +7,7 @@ import { DescriptionTemplate, DescriptionTemplateField, DescriptionTemplateField
import { Description, DescriptionExternalIdentifier, DescriptionExternalIdentifierPersist, DescriptionField, DescriptionFieldPersist, DescriptionPersist, DescriptionPropertyDefinition, DescriptionPropertyDefinitionFieldSet, DescriptionPropertyDefinitionFieldSetItem, DescriptionPropertyDefinitionFieldSetItemPersist, DescriptionPropertyDefinitionFieldSetPersist, DescriptionPropertyDefinitionPersist, DescriptionReference, DescriptionReferencePersist } from "@app/core/model/description/description";
import { ReferencePersist } from "@app/core/model/reference/reference";
import { BaseEditorModel } from "@common/base/base-form-editor-model";
import { BackendErrorValidator, MinMaxValidator, RequiredWithVisibilityRulesValidator, UrlValidator } from '@common/forms/validation/custom-validator';
import { BackendErrorValidator, RequiredWithVisibilityRulesValidator, UrlValidator } from '@common/forms/validation/custom-validator';
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
import { Validation, ValidationContext } from '@common/forms/validation/validation-context';
import { Guid } from "@common/types/guid";
@ -323,14 +323,18 @@ export class DescriptionPropertyDefinitionFieldSetEditorModel implements Descrip
const validators = [];
validators.push(BackendErrorValidator(validationErrorModel, `${rootPath}items`));
if (params.fieldSetDefinition?.multiplicity?.min >= 0 && params.fieldSetDefinition?.multiplicity?.max >= 0) {
validators.push(MinMaxValidator(params.fieldSetDefinition.multiplicity.min, params.fieldSetDefinition.multiplicity.min));
} else if (params.fieldSetDefinition?.multiplicity?.min >= 0) {
validators.push(Validators.min(params.fieldSetDefinition.multiplicity.min));
}
else if (params.fieldSetDefinition?.multiplicity?.max >= 0) {
validators.push(Validators.max(params.fieldSetDefinition.multiplicity.max));
if (params.fieldSetDefinition?.hasMultiplicity){
if (params.fieldSetDefinition?.multiplicity?.min >= 0 && params.fieldSetDefinition?.multiplicity?.max >= 0) {
validators.push(Validators.minLength(params.fieldSetDefinition.multiplicity.min));
validators.push(Validators.maxLength(params.fieldSetDefinition.multiplicity.max));
} else if (params.fieldSetDefinition?.multiplicity?.min >= 0) {
validators.push(Validators.minLength(params.fieldSetDefinition.multiplicity.min));
} else if (params.fieldSetDefinition?.multiplicity?.max >= 0) {
validators.push(Validators.maxLength(params.fieldSetDefinition.multiplicity.max));
}
}
baseValidationArray.push({ key: 'items', validators: validators });
baseContext.validation = baseValidationArray;
return baseContext;

View File

@ -4,6 +4,8 @@
<div class="row align-items-center">
<div class="col">
<app-description-form-field-set-title [fieldSet]="fieldSet" [path]="path" [isChild]="isChild"></app-description-form-field-set-title>
<mat-error *ngIf="fieldSet.hasMultiplicity && fieldSet?.multiplicity?.min && propertiesFormGroup.get('items').hasError('minlength')">{{'GENERAL.VALIDATION.MULTIPLICITY.MIN' | translate: { min: fieldSet.multiplicity.min} }}</mat-error>
<mat-error *ngIf="fieldSet.hasMultiplicity && fieldSet?.multiplicity?.max && propertiesFormGroup.get('items').hasError('maxlength')">{{'GENERAL.VALIDATION,MULTIPLICITY.MAX' | translate: { max: fieldSet.multiplicity.max} }}</mat-error>
</div>
<div *ngIf="!hideAnnotations" class="col-auto">
<button mat-icon-button class="col-auto annotation-icon" (click)="showAnnotations(fieldSet.id)" [disabled]="!canReview">

View File

@ -8,6 +8,10 @@
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
},
"MULTIPLICITY" : {
"MIN": "Please provide at least {{ min }} answers",
"MAX": "You can provide until {{ max }} answers"
}
},
"SNACK-BAR": {

View File

@ -46,14 +46,6 @@ export function UrlValidator(): ValidatorFn{
return Validators.pattern(urlRegex);
}
export function MinMaxValidator(min: number, max: number) {
return (control: AbstractControl): { [key: string]: any } => {
return null;
};
}
export function DateValidator(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } => {