argos/dmp-frontend/src/app/dataset-profile-form/field-form/field-form.component.ts

57 lines
1.7 KiB
TypeScript

import { Component, Input, OnInit } from '@angular/core';
import { FormGroup, FormControl, FormArray } from '@angular/forms';
import { ValidationTypes } from '../../models/common/ValidationTypes';
import { Field } from '../../models/datasetProfileAdmin/Field';
import { Rule } from '../../models/datasetProfileAdmin/Rule';
@Component({
selector: 'app-field-form',
templateUrl: './field-form.component.html',
styleUrls: ['./field-form.component.scss']
})
export class FieldFormComponent implements OnInit {
@Input() form: FormGroup;
@Input() dataModel: Field;
@Input() showMultiplicity = true;
@Input() indexPath: string;
validationsOptions: Array<any>;
isFieldMultiplicityEnabled = false;
constructon() {
}
ngOnInit() {
if (this.form.get('multiplicity')) {
if (this.form.get('multiplicity').value.min > 1 || this.form.get('multiplicity').value.max > 1) {
this.isFieldMultiplicityEnabled = true;
}
}
this.validationsOptions = [{ key: 0, value: ValidationTypes[0] }, { key: 1, value: ValidationTypes[1] }];
// this.addNewRule();
}
onIsFieldMultiplicityEnabledChange(isFieldMultiplicityEnabled: boolean) {
if (!isFieldMultiplicityEnabled) {
(<FormControl>this.form.get('multiplicity').get('min')).setValue(0);
(<FormControl>this.form.get('multiplicity').get('max')).setValue(0);
}
}
addNewRule() {
const rule: Rule = new Rule();
this.dataModel.visible.rules.push(rule);
(<FormArray>this.form.get('visible').get('rules')).push(rule.buildForm());
}
DeleteRule(index) {
this.dataModel.visible.rules.splice(index, 1);
(<FormArray>this.form.get('visible').get('rules')).removeAt(index);
}
onchangeCombo() {
if (this.form.get('data')) { this.form.removeControl('data'); }
}
}