add dmp editor re apply validators
This commit is contained in:
parent
6502221343
commit
f49f6d1c04
|
@ -1,4 +1,4 @@
|
|||
import { FormControl, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
|
||||
import { FormArray, FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
|
||||
import { DmpAccessType } from "@app/core/common/enum/dmp-access-type";
|
||||
import { DmpStatus } from "@app/core/common/enum/dmp-status";
|
||||
import { IsActive } from "@app/core/common/enum/is-active.enum";
|
||||
|
@ -33,7 +33,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
|||
super.fromModel(item);
|
||||
this.label = item.label;
|
||||
this.status = item.status;
|
||||
this.properties = new DmpPropertiesEditorModel().fromModel(item.properties, item.dmpReferences.filter(x => x.isActive === IsActive.Active), item.blueprint);
|
||||
this.properties = new DmpPropertiesEditorModel(this.validationErrorModel).fromModel(item.properties, item.dmpReferences.filter(x => x.isActive === IsActive.Active), item.blueprint);
|
||||
this.description = item.description;
|
||||
this.language = item.language;
|
||||
this.blueprint = item.blueprint?.id;
|
||||
|
@ -45,7 +45,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
|||
|
||||
if (sectionTempaltesFromDmp.length > 0) {
|
||||
item.dmpDescriptionTemplates?.filter(x => x.sectionId == section.id).forEach(dmpDescriptionTemplate => {
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel().fromModel(
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel(this.validationErrorModel).fromModel(
|
||||
{
|
||||
sectionId: section.id,
|
||||
descriptionTemplateGroupId: dmpDescriptionTemplate?.descriptionTemplateGroupId,
|
||||
|
@ -53,14 +53,14 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
|||
});
|
||||
} else if (section.descriptionTemplates?.length > 0) {
|
||||
section.descriptionTemplates.forEach(blueprintDefinedDescriptionTemplate => {
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel().fromModel(
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel(this.validationErrorModel).fromModel(
|
||||
{
|
||||
sectionId: section.id,
|
||||
descriptionTemplateGroupId: blueprintDefinedDescriptionTemplate?.descriptionTemplateId,
|
||||
}));
|
||||
});
|
||||
} else {
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel().fromModel(
|
||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel(this.validationErrorModel).fromModel(
|
||||
{
|
||||
sectionId: section.id,
|
||||
}));
|
||||
|
@ -120,6 +120,28 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
|||
baseContext.validation = baseValidationArray;
|
||||
return baseContext;
|
||||
}
|
||||
|
||||
static reApplyPropertiesValidators(params: {
|
||||
formGroup: UntypedFormGroup,
|
||||
validationErrorModel: ValidationErrorModel,
|
||||
}): void {
|
||||
|
||||
const { formGroup, validationErrorModel } = params;
|
||||
const control = formGroup?.get('properties');
|
||||
DmpPropertiesEditorModel.reapplyValidators({
|
||||
formGroup: control as UntypedFormGroup,
|
||||
rootPath: `properties.`,
|
||||
validationErrorModel: validationErrorModel
|
||||
});
|
||||
|
||||
(formGroup.get('descriptionTemplates') as FormArray).controls?.forEach(
|
||||
(control, index) => DmpDescriptionTemplateEditorModel.reapplyValidators({
|
||||
formGroup: control as UntypedFormGroup,
|
||||
rootPath: `descriptionTemplates[${index}].`,
|
||||
validationErrorModel: validationErrorModel
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||
|
@ -137,14 +159,14 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
|||
|
||||
dmpBlueprint.definition.sections.forEach(section => {
|
||||
section.fields.forEach(field => {
|
||||
this.dmpBlueprintValues.set(field.id, new DmpBlueprintValueEditorModel().fromModel(
|
||||
this.dmpBlueprintValues.set(field.id, new DmpBlueprintValueEditorModel(this.validationErrorModel).fromModel(
|
||||
{
|
||||
fieldId: field.id,
|
||||
fieldValue: item?.dmpBlueprintValues?.find(x => x.fieldId == field.id)?.fieldValue,
|
||||
}, dmpReferences));
|
||||
});
|
||||
});
|
||||
if (item?.contacts) { item.contacts.map(x => this.contacts.push(new DmpContactEditorModel().fromModel(x))); }
|
||||
if (item?.contacts) { item.contacts.map(x => this.contacts.push(new DmpContactEditorModel(this.validationErrorModel).fromModel(x))); }
|
||||
|
||||
return this;
|
||||
}
|
||||
|
@ -168,7 +190,7 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
|||
(item, index) => new DmpContactEditorModel(
|
||||
this.validationErrorModel
|
||||
).fromModel(item).buildForm({
|
||||
rootPath: `contacts[${index}].`
|
||||
rootPath: `${rootPath}contacts[${index}].`
|
||||
}), context.getValidation('contacts')
|
||||
)
|
||||
),
|
||||
|
@ -178,7 +200,7 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
|||
|
||||
const dmpBlueprintValuesFormGroup = this.formBuilder.group({});
|
||||
this.dmpBlueprintValues.forEach((value, key) => dmpBlueprintValuesFormGroup.addControl(key.toString(), value.buildForm({
|
||||
rootPath: `dmpBlueprintValues[${key}].`
|
||||
rootPath: `${rootPath}dmpBlueprintValues[${key}].`
|
||||
})), context.getValidation('dmpBlueprintValues')
|
||||
)
|
||||
formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup);
|
||||
|
@ -200,6 +222,33 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
|||
baseContext.validation = baseValidationArray;
|
||||
return baseContext;
|
||||
}
|
||||
|
||||
static reapplyValidators(params: {
|
||||
formGroup: UntypedFormGroup,
|
||||
validationErrorModel: ValidationErrorModel,
|
||||
rootPath: string
|
||||
}): void {
|
||||
|
||||
const { formGroup, rootPath, validationErrorModel } = params;
|
||||
const context = DmpPropertiesEditorModel.createValidationContext({
|
||||
rootPath,
|
||||
validationErrorModel
|
||||
});
|
||||
|
||||
['dmpBlueprintValues'].forEach(keyField => {
|
||||
const control = formGroup?.get(keyField);
|
||||
control?.clearValidators();
|
||||
control?.addValidators(context.getValidation(keyField).validators);
|
||||
});
|
||||
|
||||
(formGroup.get('contacts') as FormArray).controls?.forEach(
|
||||
(control, index) => DmpContactEditorModel.reapplyValidators({
|
||||
formGroup: control as UntypedFormGroup,
|
||||
rootPath: `${rootPath}contacts[${index}].`,
|
||||
validationErrorModel: validationErrorModel
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class DmpBlueprintValueEditorModel implements DmpBlueprintValuePersist {
|
||||
|
@ -256,6 +305,25 @@ export class DmpBlueprintValueEditorModel implements DmpBlueprintValuePersist {
|
|||
baseContext.validation = baseValidationArray;
|
||||
return baseContext;
|
||||
}
|
||||
|
||||
static reapplyValidators(params: {
|
||||
formGroup: UntypedFormGroup,
|
||||
validationErrorModel: ValidationErrorModel,
|
||||
rootPath: string
|
||||
}): void {
|
||||
|
||||
const { formGroup, rootPath, validationErrorModel } = params;
|
||||
const context = DmpBlueprintValueEditorModel.createValidationContext({
|
||||
rootPath,
|
||||
validationErrorModel
|
||||
});
|
||||
|
||||
['fieldId', 'fieldValue', 'references'].forEach(keyField => {
|
||||
const control = formGroup?.get(keyField);
|
||||
control?.clearValidators();
|
||||
control?.addValidators(context.getValidation(keyField).validators);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export class DmpContactEditorModel implements DmpContactPersist {
|
||||
|
@ -316,6 +384,25 @@ export class DmpContactEditorModel implements DmpContactPersist {
|
|||
baseContext.validation = baseValidationArray;
|
||||
return baseContext;
|
||||
}
|
||||
|
||||
static reapplyValidators(params: {
|
||||
formGroup: UntypedFormGroup,
|
||||
validationErrorModel: ValidationErrorModel,
|
||||
rootPath: string
|
||||
}): void {
|
||||
|
||||
const { formGroup, rootPath, validationErrorModel } = params;
|
||||
const context = DmpContactEditorModel.createValidationContext({
|
||||
rootPath,
|
||||
validationErrorModel
|
||||
});
|
||||
|
||||
['userId', 'firstName', 'lastName', 'email'].forEach(keyField => {
|
||||
const control = formGroup?.get(keyField);
|
||||
control?.clearValidators();
|
||||
control?.addValidators(context.getValidation(keyField).validators);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export class DmpReferenceEditorModel implements DmpReferencePersist {
|
||||
|
@ -429,4 +516,23 @@ export class DmpDescriptionTemplateEditorModel implements DmpDescriptionTemplate
|
|||
baseContext.validation = baseValidationArray;
|
||||
return baseContext;
|
||||
}
|
||||
|
||||
static reapplyValidators(params: {
|
||||
formGroup: UntypedFormGroup,
|
||||
validationErrorModel: ValidationErrorModel,
|
||||
rootPath: string
|
||||
}): void {
|
||||
|
||||
const { formGroup, rootPath, validationErrorModel } = params;
|
||||
const context = DmpDescriptionTemplateEditorModel.createValidationContext({
|
||||
rootPath,
|
||||
validationErrorModel
|
||||
});
|
||||
|
||||
['descriptionTemplateGroupId', 'sectionId'].forEach(keyField => {
|
||||
const control = formGroup?.get(keyField);
|
||||
control?.clearValidators();
|
||||
control?.addValidators(context.getValidation(keyField).validators);
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue