argos/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-set-editor-model.ts

55 lines
2.0 KiB
TypeScript
Raw Normal View History

2019-01-18 18:03:45 +01:00

import { FormGroup, Validators } from '@angular/forms';
2019-01-18 18:03:45 +01:00
import { FieldSet } from '../../../../core/model/admin/dataset-profile/dataset-profile';
import { BaseFormModel } from '../../../../core/model/base-form-model';
import { FieldEditorModel } from './field-editor-model';
import { MultiplicityEditorModel } from './multiplicity-editor-model';
2019-01-18 18:03:45 +01:00
export class FieldSetEditorModel extends BaseFormModel {
public fields: Array<FieldEditorModel> = new Array<FieldEditorModel>();
2018-10-05 17:00:54 +02:00
public id: string;
public ordinal: number;
2019-01-18 18:03:45 +01:00
public multiplicity: MultiplicityEditorModel = new MultiplicityEditorModel();
2018-10-05 17:00:54 +02:00
public title: string;
public description: string;
public extendedDescription: string;
public additionalInformation:string;
2018-10-05 17:00:54 +02:00
public hasCommentField: boolean;
2019-01-18 18:03:45 +01:00
fromModel(item: FieldSet): FieldSetEditorModel {
2019-01-18 18:03:45 +01:00
if (item.fields) { this.fields = item.fields.map(x => new FieldEditorModel().fromModel(x)); }
if (item.multiplicity) this.multiplicity = new MultiplicityEditorModel().fromModel(item.multiplicity);
2018-10-05 17:00:54 +02:00
this.id = item.id;
this.ordinal = item.ordinal;
this.title = item.title;
this.description = item.description;
this.extendedDescription = item.extendedDescription;
this.additionalInformation=item.additionalInformation;
2018-10-05 17:00:54 +02:00
this.hasCommentField = item.hasCommentField;
return this;
}
2018-10-05 17:00:54 +02:00
buildForm(): FormGroup {
const formGroup = this.formBuilder.group({
id:[this.id,[Validators.required,Validators.pattern('^[^<_>]+$')]],
2018-10-05 17:00:54 +02:00
ordinal: [this.ordinal],
title: [this.title],
description: [this.description],
extendedDescription: [this.extendedDescription],
additionalInformation:[this.additionalInformation],
2018-10-05 17:00:54 +02:00
hasCommentField: [this.hasCommentField]
});
const fieldsFormArray = new Array<FormGroup>();
this.fields.forEach(item => {
const form: FormGroup = item.buildForm();
fieldsFormArray.push(form);
});
formGroup.addControl('fields', this.formBuilder.array(fieldsFormArray));
formGroup.addControl('multiplicity', this.multiplicity.buildForm());
return formGroup;
}
}