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 { DmpAccessType } from "@app/core/common/enum/dmp-access-type";
|
||||||
import { DmpStatus } from "@app/core/common/enum/dmp-status";
|
import { DmpStatus } from "@app/core/common/enum/dmp-status";
|
||||||
import { IsActive } from "@app/core/common/enum/is-active.enum";
|
import { IsActive } from "@app/core/common/enum/is-active.enum";
|
||||||
|
@ -33,7 +33,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
||||||
super.fromModel(item);
|
super.fromModel(item);
|
||||||
this.label = item.label;
|
this.label = item.label;
|
||||||
this.status = item.status;
|
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.description = item.description;
|
||||||
this.language = item.language;
|
this.language = item.language;
|
||||||
this.blueprint = item.blueprint?.id;
|
this.blueprint = item.blueprint?.id;
|
||||||
|
@ -45,7 +45,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
||||||
|
|
||||||
if (sectionTempaltesFromDmp.length > 0) {
|
if (sectionTempaltesFromDmp.length > 0) {
|
||||||
item.dmpDescriptionTemplates?.filter(x => x.sectionId == section.id).forEach(dmpDescriptionTemplate => {
|
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,
|
sectionId: section.id,
|
||||||
descriptionTemplateGroupId: dmpDescriptionTemplate?.descriptionTemplateGroupId,
|
descriptionTemplateGroupId: dmpDescriptionTemplate?.descriptionTemplateGroupId,
|
||||||
|
@ -53,14 +53,14 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
||||||
});
|
});
|
||||||
} else if (section.descriptionTemplates?.length > 0) {
|
} else if (section.descriptionTemplates?.length > 0) {
|
||||||
section.descriptionTemplates.forEach(blueprintDefinedDescriptionTemplate => {
|
section.descriptionTemplates.forEach(blueprintDefinedDescriptionTemplate => {
|
||||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel().fromModel(
|
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel(this.validationErrorModel).fromModel(
|
||||||
{
|
{
|
||||||
sectionId: section.id,
|
sectionId: section.id,
|
||||||
descriptionTemplateGroupId: blueprintDefinedDescriptionTemplate?.descriptionTemplateId,
|
descriptionTemplateGroupId: blueprintDefinedDescriptionTemplate?.descriptionTemplateId,
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel().fromModel(
|
this.descriptionTemplates.push(new DmpDescriptionTemplateEditorModel(this.validationErrorModel).fromModel(
|
||||||
{
|
{
|
||||||
sectionId: section.id,
|
sectionId: section.id,
|
||||||
}));
|
}));
|
||||||
|
@ -120,6 +120,28 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
|
||||||
baseContext.validation = baseValidationArray;
|
baseContext.validation = baseValidationArray;
|
||||||
return baseContext;
|
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 {
|
export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||||
|
@ -137,14 +159,14 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||||
|
|
||||||
dmpBlueprint.definition.sections.forEach(section => {
|
dmpBlueprint.definition.sections.forEach(section => {
|
||||||
section.fields.forEach(field => {
|
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,
|
fieldId: field.id,
|
||||||
fieldValue: item?.dmpBlueprintValues?.find(x => x.fieldId == field.id)?.fieldValue,
|
fieldValue: item?.dmpBlueprintValues?.find(x => x.fieldId == field.id)?.fieldValue,
|
||||||
}, dmpReferences));
|
}, 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;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +190,7 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||||
(item, index) => new DmpContactEditorModel(
|
(item, index) => new DmpContactEditorModel(
|
||||||
this.validationErrorModel
|
this.validationErrorModel
|
||||||
).fromModel(item).buildForm({
|
).fromModel(item).buildForm({
|
||||||
rootPath: `contacts[${index}].`
|
rootPath: `${rootPath}contacts[${index}].`
|
||||||
}), context.getValidation('contacts')
|
}), context.getValidation('contacts')
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
@ -178,7 +200,7 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||||
|
|
||||||
const dmpBlueprintValuesFormGroup = this.formBuilder.group({});
|
const dmpBlueprintValuesFormGroup = this.formBuilder.group({});
|
||||||
this.dmpBlueprintValues.forEach((value, key) => dmpBlueprintValuesFormGroup.addControl(key.toString(), value.buildForm({
|
this.dmpBlueprintValues.forEach((value, key) => dmpBlueprintValuesFormGroup.addControl(key.toString(), value.buildForm({
|
||||||
rootPath: `dmpBlueprintValues[${key}].`
|
rootPath: `${rootPath}dmpBlueprintValues[${key}].`
|
||||||
})), context.getValidation('dmpBlueprintValues')
|
})), context.getValidation('dmpBlueprintValues')
|
||||||
)
|
)
|
||||||
formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup);
|
formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup);
|
||||||
|
@ -200,6 +222,33 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
|
||||||
baseContext.validation = baseValidationArray;
|
baseContext.validation = baseValidationArray;
|
||||||
return baseContext;
|
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 {
|
export class DmpBlueprintValueEditorModel implements DmpBlueprintValuePersist {
|
||||||
|
@ -256,6 +305,25 @@ export class DmpBlueprintValueEditorModel implements DmpBlueprintValuePersist {
|
||||||
baseContext.validation = baseValidationArray;
|
baseContext.validation = baseValidationArray;
|
||||||
return baseContext;
|
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 {
|
export class DmpContactEditorModel implements DmpContactPersist {
|
||||||
|
@ -316,6 +384,25 @@ export class DmpContactEditorModel implements DmpContactPersist {
|
||||||
baseContext.validation = baseValidationArray;
|
baseContext.validation = baseValidationArray;
|
||||||
return baseContext;
|
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 {
|
export class DmpReferenceEditorModel implements DmpReferencePersist {
|
||||||
|
@ -429,4 +516,23 @@ export class DmpDescriptionTemplateEditorModel implements DmpDescriptionTemplate
|
||||||
baseContext.validation = baseValidationArray;
|
baseContext.validation = baseValidationArray;
|
||||||
return baseContext;
|
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