argos/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-comp...

69 lines
2.2 KiB
TypeScript
Raw Normal View History

2018-10-05 17:00:54 +02:00
import { Component, Input, OnInit } from '@angular/core';
2019-01-18 18:03:45 +01:00
import { FormArray, FormControl, FormGroup } from '@angular/forms';
import { FieldEditorModel } from '../../../admin/field-editor-model';
@Component({
2019-01-18 18:03:45 +01:00
selector: 'app-dataset-profile-editor-composite-field-component',
templateUrl: './dataset-profile-editor-composite-field.component.html',
styleUrls: ['./dataset-profile-editor-composite-field.component.scss']
})
2019-01-18 18:03:45 +01:00
export class DatasetProfileEditorCompositeFieldComponent implements OnInit {
2018-10-05 17:00:54 +02:00
@Input() form: FormGroup;
@Input() indexPath: string;
@Input() viewOnly: boolean;
2018-10-05 17:00:54 +02:00
isComposite = false;
isMultiplicityEnabled = false;
2019-01-18 18:03:45 +01:00
constructor() { }
2018-10-05 17:00:54 +02:00
ngOnInit() {
//this.addNewField();
if (this.form.get('multiplicity')) {
if (this.form.get('multiplicity').value.min > 1 || this.form.get('multiplicity').value.max > 1) {
this.isMultiplicityEnabled = true;
}
}
2019-01-18 18:03:45 +01:00
this.isComposite = (this.form.get('fields') as FormArray).length > 1;
if (this.viewOnly) {
this.form.get('hasCommentField').disable();
}
2018-10-05 17:00:54 +02:00
}
onIsCompositeChange(isComposite: boolean) {
if (!isComposite && (<FormArray>this.form.get('fields')).length > 1) {
for (let i = 0; i < (<FormArray>this.form.get('fields')).length - 1; i++) {
(<FormArray>this.form.get('fields')).removeAt(1);
}
2019-01-18 18:03:45 +01:00
(this.form.get('fields') as FormArray).controls.splice(1);
2018-10-05 17:00:54 +02:00
}
if ((<FormArray>this.form.get('fields')).length === 0) {
const field: FieldEditorModel = new FieldEditorModel();
(<FormArray>this.form.get('fields')).push(field.buildForm());
}
2018-10-05 17:00:54 +02:00
}
onIsMultiplicityEnabledChange(isMultiplicityEnabled: boolean) {
if (!isMultiplicityEnabled) {
(<FormControl>this.form.get('multiplicity').get('min')).setValue(0);
(<FormControl>this.form.get('multiplicity').get('max')).setValue(0);
}
}
addNewField() {
2019-01-18 18:03:45 +01:00
const field: FieldEditorModel = new FieldEditorModel();
2018-10-05 17:00:54 +02:00
(<FormArray>this.form.get('fields')).push(field.buildForm());
}
DeleteField(index) {
(<FormArray>this.form.get('fields')).removeAt(index);
}
2019-01-18 18:03:45 +01:00
getFieldTile(formGroup: FormGroup, index: number) {
if (formGroup.get('title') && formGroup.get('title').value && formGroup.get('title').value.length > 0) { return formGroup.get('title').value; }
return "Field " + (index + 1);
}
2018-10-02 16:33:58 +02:00
}