argos/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor-mode...

47 lines
1.8 KiB
TypeScript
Raw Normal View History

2019-01-18 18:03:45 +01:00
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { DatasetProfile } from '../../../../core/model/admin/dataset-profile/dataset-profile';
import { BaseFormModel } from '../../../../core/model/base-form-model';
import { PageEditorModel } from '../admin/page-editor-model';
import { SectionEditorModel } from '../admin/section-editor-model';
export class DatasetProfileEditorModel extends BaseFormModel {
public sections: Array<SectionEditorModel> = new Array<SectionEditorModel>();
public pages: Array<PageEditorModel> = new Array<PageEditorModel>();
public label: string;
public status: number;
2019-03-26 15:30:33 +01:00
public version: number;
2019-01-18 18:03:45 +01:00
fromModel(item: DatasetProfile): DatasetProfileEditorModel {
if (item.sections) { this.sections = item.sections.map(x => new SectionEditorModel().fromModel(x)); }
if (item.pages) { this.pages = item.pages.map(x => new PageEditorModel().fromModel(x)); }
this.label = item.label;
this.status = item.status;
2019-03-26 15:30:33 +01:00
this.version = item.version;
2019-01-18 18:03:45 +01:00
return this;
}
buildForm(): FormGroup {
const formGroup: FormGroup = new FormBuilder().group({});
const sectionsFormArray = new Array<FormGroup>();
this.sections.forEach(item => {
const form: FormGroup = item.buildForm();
sectionsFormArray.push(form);
});
formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray));
const pagesFormArray = new Array<FormGroup>();
this.pages.forEach(item => {
const form: FormGroup = item.buildForm();
pagesFormArray.push(form);
});
formGroup.addControl('pages', this.formBuilder.array(pagesFormArray));
formGroup.addControl('label', new FormControl(this.label, Validators.required));
formGroup.addControl('status', new FormControl(this.status));
2019-03-26 15:30:33 +01:00
formGroup.addControl('version', new FormControl(this.version));
2019-01-18 18:03:45 +01:00
return formGroup;
}
}