argos/dmp-admin/src/app/models/Field.ts

57 lines
1.9 KiB
TypeScript

import { BaseModel } from './BaseModel';
import { FormGroup } from '@angular/forms';
import { FormGenerator } from './interfaces/FormGenerator';
import { JsonSerializer } from '../utilities/JsonSerializer';
import { Serializable } from './interfaces/Serializable';
import {Rule} from './Rule'
export class Field extends BaseModel implements Serializable<Field>,FormGenerator<FormGroup>{
public id:string;
public title:string;
public value:string;
public description:string;
public extendedDescription:string;
public viewStyle:string;
public defaultVisibility:boolean;
public page:number;
public rules: Array<Rule> = new Array<Rule>();
fromJSONObject(item:any):Field{
this.id = item.id;
this.title = item.title;
this.value = item.value;
this.description = item.description;
this.extendedDescription = item.extendedDescription;
this.viewStyle = item.viewStyle;
this.defaultVisibility = item.defaultVisibility;
this.page = item.page;
this.rules = new JsonSerializer<Rule>().fromJSONArray(item.rule, Rule);
return this;
}
buildForm():FormGroup{
let formGroup = this.formBuilder.group({
id: [this.id],
title: [this.title],
value: [this.value],
description: [this.description],
extendedDescription:[this.extendedDescription],
viewStyle: [this.viewStyle],
defaultVisibility:[this.defaultVisibility],
page:[this.page]
});
let rulesFormArray = new Array<FormGroup>();
if (this.rules){
this.rules.forEach(rule =>{
let form:FormGroup = rule.buildForm();
rulesFormArray.push(form);
});
}
formGroup.addControl("rules", this.formBuilder.array(rulesFormArray))
return formGroup;
}
}