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