39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { FormGroup } from '@angular/forms';
|
|
import { JsonSerializer } from 'app/utilities/JsonSerializer';
|
|
import { Serializable } from '../interfaces/Serializable';
|
|
import { BaseModel } from '../BaseModel';
|
|
import {Field} from './Field'
|
|
import {Multiplicity} from './Multiplicity'
|
|
|
|
export class CompositeField extends BaseModel implements Serializable<CompositeField> {
|
|
public fields:Array<Field> = new Array<Field>();
|
|
public id:string;
|
|
public ordinal:number;
|
|
public multiplicity: Multiplicity = new Multiplicity();
|
|
|
|
fromJSONObject(item:any):CompositeField{
|
|
|
|
this.fields = new JsonSerializer<Field>().fromJSONArray(item.fields,Field);
|
|
this.multiplicity = new JsonSerializer<Multiplicity>().fromJSONObject(item.multiplicity, Multiplicity);
|
|
this.id = item.id;
|
|
this.ordinal = item.ordinal;
|
|
return this;
|
|
}
|
|
|
|
buildForm():FormGroup{
|
|
let formGroup = this.formBuilder.group({
|
|
id:[this.id],
|
|
ordinal:[this.ordinal]
|
|
});
|
|
|
|
let fieldsFormArray = new Array<FormGroup>();
|
|
this.fields.forEach(item => {
|
|
let form: FormGroup = item.buildForm();
|
|
fieldsFormArray.push(form)
|
|
})
|
|
formGroup.addControl('fields', this.formBuilder.array(fieldsFormArray));
|
|
formGroup.addControl("multiplicity", this.multiplicity.buildForm());
|
|
|
|
return formGroup;
|
|
}
|
|
} |