import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; import { FormArray, FormGroup } from '@angular/forms'; import { CompositeField } from '../../../../../core/model/dataset-profile-definition/composite-field'; import { DatasetDescriptionCompositeFieldEditorModel, DatasetDescriptionSectionEditorModel } from '../../dataset-description-form.model'; import { FormFocusService } from '../../form-focus/form-focus.service'; import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.service'; @Component({ selector: 'app-form-section', templateUrl: './form-section.component.html', styleUrls: ['./form-section.component.scss'] }) export class FormSectionComponent implements OnInit, AfterViewInit { @Input() section: DatasetDescriptionSectionEditorModel; form: FormGroup; @Input() pathName: string; @Input() path: string; trackByFn = (index, item) => item ? item['id'] : null; constructor( private visibilityRulesService: VisibilityRulesService, private formFocusService: FormFocusService ) { } ngOnInit() { if (this.section) { this.form = this.visibilityRulesService.getFormGroup(this.section.id); } } ngAfterViewInit() { this.visibilityRulesService.triggerVisibilityEvaluation(); } addMultipleField(fieldsetIndex: number) { const compositeField: DatasetDescriptionCompositeFieldEditorModel = this.section.compositeFields[fieldsetIndex].cloneForMultiplicity(fieldsetIndex); this.section.compositeFields[fieldsetIndex].multiplicityItems.push(compositeField); ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); } isElementVisible(fieldSet: CompositeField): boolean { if (!fieldSet) { return false; } for (let i = 0; i < fieldSet.fields.length; i++) { if (fieldSet.fields[i]) { return true; } } return false; } next(compositeField: CompositeField) { this.formFocusService.focusNext(compositeField); } }