import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';

import { Criterion } from '../store/model';
import { Family, Attribute } from '../../metamodel/model';

@Component({
    selector: 'app-criteria-by-family',
    templateUrl: 'criteria-by-family.component.html',
    styleUrls: ['criteria-by-family.component.css'],
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class CriteriaByFamilyComponent {
    @Input() criteriaFamily: Family;
    @Input() datasetAttributeList: Attribute[];
    @Input() criteriaList: Criterion[];
    @Output() addCriterion: EventEmitter<Criterion> = new EventEmitter();
    @Output() deleteCriterion: EventEmitter<number> = new EventEmitter();

    getAttributeByFamily(idFamily) {
        return this.datasetAttributeList
            .filter(attribute => attribute.id_criteria_family === idFamily)
            .sort((a, b) => a.criteria_display - b.criteria_display);
    }

    getOptions(idAttribute) {
        return this.datasetAttributeList.find(attribute => attribute.id === idAttribute).options;
    }

    getCriterion(id: number): Criterion {
        return this.criteriaList.find(criterion => criterion.id === id);
    }

    add(criterion: Criterion): void {
        this.addCriterion.emit(criterion);
    }
}