argos/dmp-frontend/src/app/models/Section.ts

64 lines
2.9 KiB
TypeScript
Raw Normal View History

import { BaseModel } from './BaseModel';
import { FormGenerator } from './interfaces/FormGenerator';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { JsonSerializer } from '../utilities/JsonSerializer';
import { Serializable } from './interfaces/Serializable';
import { FieldGroup } from './FieldGroup';
2018-01-03 12:36:28 +01:00
import { CompositeField } from '@app/models/CompositeField';
export class Section extends BaseModel implements Serializable<Section>, FormGenerator<FormGroup>{
public sections: Array<Section> = new Array<Section>();
2018-01-03 12:36:28 +01:00
//public fieldGroups: Array<FieldGroup>;
public defaultVisibility: boolean;
public page: number;
public id: string
public title: string
public description: string;
2018-01-03 12:36:28 +01:00
public compositeFields: Array<CompositeField> = new Array<CompositeField>();
fromJSONObject(item: any): Section {
2018-01-03 17:36:31 +01:00
this.sections = JsonSerializer.fromJSONArray(item.sections, Section);
2018-01-03 12:36:28 +01:00
//this.fieldGroups = new JsonSerializer<FieldGroup>().fromJSONArray(item.fieldGroups, FieldGroup);
this.page = item.page;
this.defaultVisibility = item.defaultVisibility;
this.id = item.id;
this.title = item.title;
this.description = item.description;
2018-01-03 17:36:31 +01:00
this.compositeFields = JsonSerializer.fromJSONArray(item.fieldSets, CompositeField);
return this;
}
buildForm(): FormGroup {
let formGroup: FormGroup = new FormBuilder().group({});
let sectionsFormArray = new Array<FormGroup>();
if (this.sections) {
this.sections.forEach(item => {
let form: FormGroup = item.buildForm();
sectionsFormArray.push(form)
})
}
let fieldGroupsFormArray = new Array<FormGroup>();
2018-01-03 12:36:28 +01:00
// if (this.fieldGroups) {
// this.fieldGroups.forEach(item => {
// let form: FormGroup = item.buildForm();
// fieldGroupsFormArray.push(form)
// })
// }
let compositeFieldsFormArray = new Array<FormGroup>();
if (this.compositeFields) {
this.compositeFields.forEach(item => {
let form: FormGroup = item.buildForm();
2018-01-03 12:36:28 +01:00
compositeFieldsFormArray.push(form)
})
}
2018-01-03 12:36:28 +01:00
formGroup.addControl('compositeFields', this.formBuilder.array(compositeFieldsFormArray));
formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray));
2018-01-03 12:36:28 +01:00
// formGroup.addControl('fieldGroups', this.formBuilder.array(fieldGroupsFormArray));
2017-12-05 17:56:21 +01:00
/* formGroup.addControl('defaultVisibility', new FormControl(this.defaultVisibility))
formGroup.addControl('page', new FormControl(this.page))
formGroup.addControl('id', new FormControl(this.id))
formGroup.addControl('title', new FormControl(this.title))
2017-12-05 17:56:21 +01:00
formGroup.addControl('description', new FormControl(this.description)) */
return formGroup;
}
}