Skip to content
Snippets Groups Projects
criteria-by-family.component.ts 1.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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 JSON.parse(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);
        }
    }