argos/dmp-frontend/src/app/models/datasetProfileAdmin/DatasetProfileModelAdmin.ts

44 lines
1.6 KiB
TypeScript

import { BaseModel } from '../BaseModel';
import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';
import { FormGenerator } from '../interfaces/FormGenerator';
import { Section } from './Section';
import { Serializable } from '../interfaces/Serializable';
import { Page } from "./Page";
import { JsonSerializer } from '../../utilities/JsonSerializer';
export class DatasetProfileModelAdmin extends BaseModel implements Serializable<DatasetProfileModelAdmin>,FormGenerator<FormGroup>{
public sections: Array<Section> = new Array<Section>();
public pages: Array<Page> = new Array<Page>();
public label: string;
fromJSONObject(item:any):DatasetProfileModelAdmin{
this.sections = JsonSerializer.fromJSONArray(item.sections, Section);
this.pages = JsonSerializer.fromJSONArray(item.pages, Page);
this.label = item.label;
return this;
}
buildForm():FormGroup{
let formGroup: FormGroup = new FormBuilder().group({});
let sectionsFormArray = new Array<FormGroup>();
this.sections.forEach(item => {
let form: FormGroup = item.buildForm();
sectionsFormArray.push(form)
})
formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray));
let pagesFormArray = new Array<FormGroup>();
this.pages.forEach(item => {
let form: FormGroup = item.buildForm();
pagesFormArray.push(form)
})
formGroup.addControl('pages', this.formBuilder.array(pagesFormArray));
formGroup.addControl('label', new FormControl(this.label, Validators.required));
return formGroup;
}
}