77 lines
3.9 KiB
TypeScript
77 lines
3.9 KiB
TypeScript
|
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|||
|
import { ValidationType } from '../../../../core/common/enum/validation-type';
|
|||
|
import { Field } from '../../../../core/model/admin/dataset-profile/dataset-profile';
|
|||
|
import { BaseFormModel } from '../../../../core/model/base-form-model';
|
|||
|
import { DefaultValueEditorModel } from './default-value-editor-model';
|
|||
|
import { AutoCompleteFieldDataEditorModel } from './field-data/auto-complete-field-data-editor-model';
|
|||
|
import { BooleanDecisionFieldDataEditorModel } from './field-data/boolean-decision-field-data-editor-model';
|
|||
|
import { CheckBoxFieldDataEditorModel } from './field-data/check-box-field-data-editor-model';
|
|||
|
import { FieldDataEditorModel } from './field-data/field-data-editor-model';
|
|||
|
import { FreeTextFieldDataEditorModel } from './field-data/free-text-field-data-editor-model';
|
|||
|
import { RadioBoxFieldDataEditorModel } from './field-data/radio-box-field-data-editor-model';
|
|||
|
import { TextAreaFieldDataEditorModel } from './field-data/text-area-field-data-editor-model';
|
|||
|
import { WordListFieldDataEditorModel } from './field-data/word-list-field-data-editor-model';
|
|||
|
import { ViewStyleEditorModel } from './view-style-editor-model';
|
|||
|
import { VisibilityEditorModel } from './visibility-editor-model';
|
|||
|
|
|||
|
export class FieldEditorModel extends BaseFormModel {
|
|||
|
|
|||
|
public id: string;
|
|||
|
// public title: string;
|
|||
|
public defaultValue: DefaultValueEditorModel = new DefaultValueEditorModel();
|
|||
|
public viewStyle: ViewStyleEditorModel = new ViewStyleEditorModel();
|
|||
|
public page: number;
|
|||
|
public ordinal: number;
|
|||
|
public visible: VisibilityEditorModel = new VisibilityEditorModel();
|
|||
|
public data: FieldDataEditorModel<any>;
|
|||
|
public validations: ValidationType[];
|
|||
|
|
|||
|
fromModel(item: Field): FieldEditorModel {
|
|||
|
this.id = item.id;
|
|||
|
if (item.defaultValue) { this.defaultValue = new DefaultValueEditorModel().fromModel(item.defaultValue); }
|
|||
|
this.page = item.page;
|
|||
|
this.ordinal = item.ordinal;
|
|||
|
this.validations = item.validations;
|
|||
|
this.viewStyle = new ViewStyleEditorModel().fromModel(item.viewStyle);
|
|||
|
this.visible = new VisibilityEditorModel().fromModel(item.visible);
|
|||
|
|
|||
|
if (item.data) {
|
|||
|
if (this.viewStyle.renderStyle === 'combobox') {
|
|||
|
if (item.data.type === 'autocomplete') { this.data = new AutoCompleteFieldDataEditorModel().fromModel(item.data); }
|
|||
|
if (item.data.type === 'wordlist') { this.data = new WordListFieldDataEditorModel().fromModel(item.data); }
|
|||
|
} else {
|
|||
|
if (this.viewStyle.renderStyle === 'radiobox') { this.data = new RadioBoxFieldDataEditorModel().fromModel(item.data); }
|
|||
|
if (this.viewStyle.renderStyle === 'checkBox') { this.data = new CheckBoxFieldDataEditorModel().fromModel(item.data); }
|
|||
|
if (this.viewStyle.renderStyle === 'textarea') { this.data = new TextAreaFieldDataEditorModel().fromModel(item.data); }
|
|||
|
if (this.viewStyle.renderStyle === 'freetext') { this.data = new FreeTextFieldDataEditorModel().fromModel(item.data); }
|
|||
|
if (this.viewStyle.renderStyle === 'booleanDecision') { this.data = new BooleanDecisionFieldDataEditorModel().fromModel(item.data); }
|
|||
|
}
|
|||
|
}
|
|||
|
return this;
|
|||
|
}
|
|||
|
|
|||
|
buildForm(): FormGroup {
|
|||
|
const formGroup = this.formBuilder.group({
|
|||
|
id: [this.id],
|
|||
|
// title: [this.title],
|
|||
|
page: [this.page],
|
|||
|
ordinal: [this.ordinal]
|
|||
|
});
|
|||
|
let valid = ValidationType.None;
|
|||
|
if (this.validations && this.validations[0] === 1) { valid = ValidationType.Required; }
|
|||
|
const arr = new FormArray([
|
|||
|
new FormControl(valid)
|
|||
|
]);
|
|||
|
|
|||
|
// formGroup.addControl("multiplicity", this.multiplicity.buildForm());
|
|||
|
formGroup.addControl('validations', new FormControl(this.validations));
|
|||
|
formGroup.addControl('defaultValue', this.defaultValue.buildForm());
|
|||
|
formGroup.addControl('viewStyle', this.viewStyle.buildForm());
|
|||
|
formGroup.addControl('visible', this.visible.buildForm());
|
|||
|
//formGroup.addControl("data",this.data? this.data.buildForm():this.formBuilder.group({}));
|
|||
|
if (this.data) { formGroup.addControl('data', this.data.buildForm()); }
|
|||
|
|
|||
|
return formGroup;
|
|||
|
}
|
|||
|
}
|