import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; import { DescriptionTemplateFieldValidationType } from "@app/core/common/enum/description-template-field-validation-type"; import { DescriptionTemplateStatus } from "@app/core/common/enum/description-template-status"; import { DescriptionTemplate, DescriptionTemplateDefinition, DescriptionTemplateField, DescriptionTemplateFieldSet, DescriptionTemplateMultiplicity, DescriptionTemplatePage, DescriptionTemplateRule, DescriptionTemplateSection } from "@app/core/model/description-template/description-template"; import { DescriptionTemplateBaseFieldDataPersist, DescriptionTemplateDefinitionPersist, DescriptionTemplateFieldPersist, DescriptionTemplateFieldSetPersist, DescriptionTemplateMultiplicityPersist, DescriptionTemplatePagePersist, DescriptionTemplatePersist, DescriptionTemplateRulePersist, DescriptionTemplateSectionPersist } from "@app/core/model/description-template/description-template-persist"; import { BaseEditorModel } from "@common/base/base-form-editor-model"; import { BackendErrorValidator } 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"; export class DescriptionTemplateEditorModel extends BaseEditorModel implements DescriptionTemplatePersist { label: string; description: string; language: string; type: Guid; status: DescriptionTemplateStatus = DescriptionTemplateStatus.Draft; definition: DescriptionTemplateDefinitionEditorModel; permissions: string[]; public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor() { super(); } public fromModel(item: DescriptionTemplate): DescriptionTemplateEditorModel { if (item) { super.fromModel(item); this.label = item.label; this.status = item.status; this.description = item.description; this.definition = new DescriptionTemplateDefinitionEditorModel().fromModel(item.definition); } return this; } buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { if (context == null) { context = this.createValidationContext(); } return this.formBuilder.group({ id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], language: [{ value: this.language, disabled: disabled }, context.getValidation('language').validators], type: [{ value: this.type, disabled: disabled }, context.getValidation('type').validators], status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], definition: this.definition.buildForm({ rootPath: `definition.` }), hash: [{ value: this.hash, disabled: disabled }, context.getValidation('hash').validators] }); } createValidationContext(): ValidationContext { const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] }); baseValidationArray.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'label')] }); baseValidationArray.push({ key: 'description', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'description')] }); baseValidationArray.push({ key: 'language', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'language')] }); baseValidationArray.push({ key: 'type', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'type')] }); baseValidationArray.push({ key: 'type', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'type')] }); baseValidationArray.push({ key: 'status', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'status')] }); baseValidationArray.push({ key: 'hash', validators: [] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateDefinitionEditorModel implements DescriptionTemplateDefinitionPersist { pages: DescriptionTemplatePageEditorModel[] = []; sections: DescriptionTemplateSectionEditorModel[] = []; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } public fromModel(item: DescriptionTemplateDefinition): DescriptionTemplateDefinitionEditorModel { if (item) { if (item.pages) { item.pages.map(x => this.pages.push(new DescriptionTemplatePageEditorModel().fromModel(x))); } if (item.sections) { item.sections.map(x => this.sections.push(new DescriptionTemplateSectionEditorModel().fromModel(x))); } } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateDefinitionEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ pages: this.formBuilder.array( (this.pages ?? []).map( (item, index) => new DescriptionTemplatePageEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `pages[${index}].` }), context.getValidation('pages') ) ), sections: this.formBuilder.array( (this.sections ?? []).map( (item, index) => new DescriptionTemplateSectionEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `sections[${index}].` }), context.getValidation('sections') ) ), }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'pages', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}pages`)] }); baseValidationArray.push({ key: 'sections', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}sections`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplatePageEditorModel implements DescriptionTemplatePagePersist { id: Guid; ordinal: number; title: string; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } public fromModel(item: DescriptionTemplatePage): DescriptionTemplatePageEditorModel { if (item) { this.id = item.id; this.ordinal = item.ordinal; this.title = item.title; } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplatePageEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], ordinal: [{ value: this.ordinal, disabled: disabled }, context.getValidation('ordinal').validators], title: [{ value: this.title, disabled: disabled }, context.getValidation('title').validators] }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}id`)] }); baseValidationArray.push({ key: 'ordinal', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}ordinal`)] }); baseValidationArray.push({ key: 'title', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}title`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateSectionEditorModel implements DescriptionTemplateSectionPersist { id: Guid; ordinal: number; defaultVisibility: boolean; multiplicity: boolean; page: string; title: string; description: string; sections?: DescriptionTemplateSectionEditorModel[] = []; fieldSets: DescriptionTemplateFieldSetEditorModel[] = []; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } public fromModel(item: DescriptionTemplateSection | DescriptionTemplateSectionEditorModel): DescriptionTemplateSectionEditorModel { if (item) { this.id = item.id; this.ordinal = item.ordinal; this.defaultVisibility = item.defaultVisibility; this.multiplicity = item.multiplicity; this.page = item.page; this.title = item.title; this.description = item.description; if (item.sections) { item.sections.map(x => this.sections.push(new DescriptionTemplateSectionEditorModel().fromModel(x))); } if (item.fieldSets) { item.fieldSets.map(x => this.fieldSets.push(new DescriptionTemplateFieldSetEditorModel().fromModel(x))); } } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateSectionEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], ordinal: [{ value: this.ordinal, disabled: disabled }, context.getValidation('ordinal').validators], defaultVisibility: [{ value: this.defaultVisibility, disabled: disabled }, context.getValidation('defaultVisibility').validators], multiplicity: [{ value: this.multiplicity, disabled: disabled }, context.getValidation('multiplicity').validators], page: [{ value: this.page, disabled: disabled }, context.getValidation('page').validators], title: [{ value: this.title, disabled: disabled }, context.getValidation('title').validators], description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], sections: this.formBuilder.array( (this.sections ?? []).map( (item, index) => new DescriptionTemplateSectionEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `sections[${index}].` }), context.getValidation('sections') ) ), fieldSets: this.formBuilder.array( (this.fieldSets ?? []).map( (item, index) => new DescriptionTemplateFieldSetEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `fieldSets[${index}].` }), context.getValidation('fieldSets') ) ) }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}id`)] }); baseValidationArray.push({ key: 'ordinal', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}ordinal`)] }); baseValidationArray.push({ key: 'defaultVisibility', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}defaultVisibility`)] }); baseValidationArray.push({ key: 'multiplicity', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}multiplicity`)] }); baseValidationArray.push({ key: 'page', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}page`)] }); baseValidationArray.push({ key: 'title', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}title`)] }); baseValidationArray.push({ key: 'description', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}description`)] }); baseValidationArray.push({ key: 'sections', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}sections`)] }); baseValidationArray.push({ key: 'fieldSets', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}fieldSets`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateFieldSetEditorModel implements DescriptionTemplateFieldSetPersist { id: Guid; ordinal: number; numbering: string; title: string; description: string; extendedDescription: string; additionalInformation: string; multiplicity: DescriptionTemplateMultiplicityEditorModel; hasCommentField: boolean; fields: DescriptionTemplateFieldEditorModel[] = []; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } fromModel(item: DescriptionTemplateFieldSet | DescriptionTemplateFieldSetEditorModel): DescriptionTemplateFieldSetEditorModel { if (item) { this.id = item.id; this.ordinal = item.ordinal; this.numbering = item.numbering; this.title = item.title; this.description = item.description; this.extendedDescription = item.extendedDescription; this.additionalInformation = item.additionalInformation; this.hasCommentField = item.hasCommentField; this.multiplicity = new DescriptionTemplateMultiplicityEditorModel().fromModel(item.multiplicity); if (item.fields) { item.fields.map(x => this.fields.push(new DescriptionTemplateFieldEditorModel().fromModel(x))); } } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateFieldSetEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], ordinal: [{ value: this.ordinal, disabled: disabled }, context.getValidation('ordinal').validators], numbering: [{ value: this.numbering, disabled: disabled }, context.getValidation('numbering').validators], title: [{ value: this.title, disabled: disabled }, context.getValidation('title').validators], description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], extendedDescription: [{ value: this.extendedDescription, disabled: disabled }, context.getValidation('extendedDescription').validators], additionalInformation: [{ value: this.additionalInformation, disabled: disabled }, context.getValidation('additionalInformation').validators], hasCommentField: [{ value: this.hasCommentField, disabled: disabled }, context.getValidation('hasCommentField').validators], multiplicity: this.multiplicity.buildForm({ rootPath: `multiplicity.` }), fields: this.formBuilder.array( (this.fields ?? []).map( (item, index) => new DescriptionTemplateFieldEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `fields[${index}].` }), context.getValidation('fields') ) ) }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}id`)] }); baseValidationArray.push({ key: 'ordinal', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}ordinal`)] }); baseValidationArray.push({ key: 'numbering', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}numbering`)] }); baseValidationArray.push({ key: 'title', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}title`)] }); baseValidationArray.push({ key: 'description', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}description`)] }); baseValidationArray.push({ key: 'extendedDescription', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}extendedDescription`)] }); baseValidationArray.push({ key: 'additionalInformation', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}additionalInformation`)] }); baseValidationArray.push({ key: 'hasCommentField', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}hasCommentField`)] }); baseValidationArray.push({ key: 'fields', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}fields`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateMultiplicityEditorModel implements DescriptionTemplateMultiplicityPersist { min: number; max: number; placeholder: string; tableView: boolean; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } fromModel(item: DescriptionTemplateMultiplicity): DescriptionTemplateMultiplicityEditorModel { if (item) { this.min = item.min; this.max = item.max; this.placeholder = item.placeholder; this.tableView = item.tableView; } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateMultiplicityEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ min: [{ value: this.min, disabled: disabled }, context.getValidation('min').validators], max: [{ value: this.max, disabled: disabled }, context.getValidation('max').validators], placeholder: [{ value: this.placeholder, disabled: disabled }, context.getValidation('placeholder').validators], tableView: [{ value: this.tableView, disabled: disabled }, context.getValidation('tableView').validators], }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'min', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}min`)] }); baseValidationArray.push({ key: 'max', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}max`)] }); baseValidationArray.push({ key: 'placeholder', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}placeholder`)] }); baseValidationArray.push({ key: 'tableView', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}tableView`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateFieldEditorModel implements DescriptionTemplateFieldPersist { id: Guid; ordinal: number; schematics: string[]; defaultValue: string; visibilityRules: DescriptionTemplateRuleEditorModel[] = []; validations: DescriptionTemplateFieldValidationType[]; includeInExport: boolean; data: DescriptionTemplateBaseFieldDataPersist; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } fromModel(item: DescriptionTemplateField | DescriptionTemplateFieldEditorModel): DescriptionTemplateFieldEditorModel { if (item) { this.id = item.id; this.ordinal = item.ordinal; this.schematics = item.schematics; this.defaultValue = item.defaultValue; this.validations = item.validations; this.includeInExport = item.includeInExport; //this.data = new DescriptionTemplateBaseFieldDataEditorModel().fromModel(item.data); if (item.visibilityRules) { item.visibilityRules.map(x => this.visibilityRules.push(new DescriptionTemplateRuleEditorModel().fromModel(x))); } } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateFieldEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], ordinal: [{ value: this.ordinal, disabled: disabled }, context.getValidation('ordinal').validators], schematics: [{ value: this.schematics, disabled: disabled }, context.getValidation('schematics').validators], defaultValue: [{ value: this.defaultValue, disabled: disabled }, context.getValidation('defaultValue').validators], validations: [{ value: this.validations, disabled: disabled }, context.getValidation('validations').validators], includeInExport: [{ value: this.includeInExport, disabled: disabled }, context.getValidation('includeInExport').validators], // data: this.data.buildForm({ // rootPath: `data.` // }), visibilityRules: this.formBuilder.array( (this.visibilityRules ?? []).map( (item, index) => new DescriptionTemplateRuleEditorModel( this.validationErrorModel ).fromModel(item).buildForm({ rootPath: `visibilityRules[${index}].` }), context.getValidation('visibilityRules') ) ) }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}id`)] }); baseValidationArray.push({ key: 'ordinal', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}ordinal`)] }); baseValidationArray.push({ key: 'schematics', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}schematics`)] }); baseValidationArray.push({ key: 'defaultValue', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}defaultValue`)] }); baseValidationArray.push({ key: 'validations', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}validations`)] }); baseValidationArray.push({ key: 'includeInExport', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}includeInExport`)] }); baseValidationArray.push({ key: 'visibilityRules', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}visibilityRules`)] }); baseContext.validation = baseValidationArray; return baseContext; } } export class DescriptionTemplateRuleEditorModel implements DescriptionTemplateRulePersist { target: string; value: string; protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); constructor( public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() ) { } fromModel(item: DescriptionTemplateRule): DescriptionTemplateRuleEditorModel { if (item) { this.target = item.target; this.value = item.value; } return this; } buildForm(params?: { context?: ValidationContext, disabled?: boolean, rootPath?: string }): UntypedFormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = DescriptionTemplateRuleEditorModel.createValidationContext({ validationErrorModel: this.validationErrorModel, rootPath }); } return this.formBuilder.group({ target: [{ value: this.target, disabled: disabled }, context.getValidation('target').validators], value: [{ value: this.value, disabled: disabled }, context.getValidation('value').validators] }); } static createValidationContext(params: { rootPath?: string, validationErrorModel: ValidationErrorModel }): ValidationContext { const { rootPath = '', validationErrorModel } = params; const baseContext: ValidationContext = new ValidationContext(); const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'target', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}target`)] }); baseValidationArray.push({ key: 'value', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}value`)] }); baseContext.validation = baseValidationArray; return baseContext; } } // export class DescriptionTemplatesInSectionEditorModel implements DescriptionTemplatesInSectionPersist { // id: Guid; // descriptionTemplateId: Guid; // label: string; // minMultiplicity: number; // maxMultiplicity: number; // protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); // constructor( // public validationErrorModel: ValidationErrorModel = new ValidationErrorModel() // ) { } // fromModel(item: DescriptionTemplatesInSection): DescriptionTemplatesInSectionEditorModel { // this.id = item.id; // this.descriptionTemplateId = item.descriptionTemplateId; // this.label = item.label; // this.minMultiplicity = item.minMultiplicity; // this.maxMultiplicity = item.maxMultiplicity; // return this; // } // buildForm(params?: { // context?: ValidationContext, // disabled?: boolean, // rootPath?: string // }): UntypedFormGroup { // let { context = null, disabled = false, rootPath } = params ?? {} // if (context == null) { // context = DescriptionTemplatesInSectionEditorModel.createValidationContext({ // validationErrorModel: this.validationErrorModel, // rootPath // }); // } // return this.formBuilder.group({ // id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], // descriptionTemplateId: [{ value: this.descriptionTemplateId, disabled: disabled }, context.getValidation('descriptionTemplateId').validators], // label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], // minMultiplicity: [{ value: this.minMultiplicity, disabled: disabled }, context.getValidation('minMultiplicity').validators], // maxMultiplicity: [{ value: this.maxMultiplicity, disabled: disabled }, context.getValidation('maxMultiplicity').validators], // }); // } // static createValidationContext(params: { // rootPath?: string, // validationErrorModel: ValidationErrorModel // }): ValidationContext { // const { rootPath = '', validationErrorModel } = params; // const baseContext: ValidationContext = new ValidationContext(); // const baseValidationArray: Validation[] = new Array(); // baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}id`)] }); // baseValidationArray.push({ key: 'descriptionTemplateId', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}descriptionTemplateId`)] }); // baseValidationArray.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(validationErrorModel, `${rootPath}label`)] }); // baseValidationArray.push({ key: 'minMultiplicity', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}minMultiplicity`)] }); // baseValidationArray.push({ key: 'maxMultiplicity', validators: [BackendErrorValidator(validationErrorModel, `${rootPath}maxMultiplicity`)] }); // baseContext.validation = baseValidationArray; // return baseContext; // } // }