import { FieldSet } from './FieldSet'; import { BaseModel } from '../BaseModel'; import { FormGroup } from '@angular/forms'; import { FormGenerator } from '../interfaces/FormGenerator'; import { Validation } from '../Validation'; import { Rule } from './Rule'; import { JsonSerializer } from 'app/utilities/JsonSerializer'; import { Serializable } from '../interfaces/Serializable'; import { Field } from './Field'; export class FieldGroup extends BaseModel implements Serializable, FormGenerator{ public id: string; public title: string; public section: string; public value: string; public description: string; public extendedDescription: string; public defaultVisibility: boolean; public page: number; public ordinal: number; public compositeFields: Array
= new Array
(); fromJSONObject(item: any): FieldGroup { this.id = item.id; this.title = item.title; this.value = item.value; this.description = item.description; this.extendedDescription = item.extendedDescription; this.defaultVisibility = item.defaultVisibility; this.page = item.page; this.ordinal = item.ordinal; this.compositeFields = JsonSerializer.fromJSONArray(item.compositeFields, FieldSet); return this; } buildForm(): FormGroup { let formGroup: FormGroup = this.formBuilder.group({ id: [this.id], title: [this.title], value: [this.value], description: [this.description], extendedDescription: [this.extendedDescription], defaultVisibility: [this.defaultVisibility], page: [this.page], ordinal: [this.ordinal] }); let compositeFieldsFormArray = new Array(); if (this.compositeFields) { this.compositeFields.forEach(item => { let form: FormGroup = item.buildForm(); compositeFieldsFormArray.push(form) }) } formGroup.addControl('compositeFields', this.formBuilder.array(compositeFieldsFormArray)); if( !formGroup.controls["defaultVisibility"].value) formGroup.controls["defaultVisibility"].setValue(true); return formGroup; } }