Skip to content
Snippets Groups Projects
criteria-tabs.component.ts 1.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • François Agneray's avatar
    François Agneray committed
    /**
     * This file is part of Anis Client.
     *
     * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */
    
    import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
    
    
    import { Criterion, SvomKeyword } from '../../../store/models';
    
    François Agneray's avatar
    François Agneray committed
    import { CriteriaFamily, Attribute } from 'src/app/metamodel/models';
    
    
    /**
     * @class
     * @classdesc Search criteria tabs component.
     */
    
    François Agneray's avatar
    François Agneray committed
    @Component({
        selector: 'app-criteria-tabs',
        templateUrl: 'criteria-tabs.component.html',
        changeDetection: ChangeDetectionStrategy.OnPush
    })
    export class CriteriaTabsComponent {
        @Input() attributeList: Attribute[];
    
    François Agneray's avatar
    François Agneray committed
        @Input() criteriaFamilyList: CriteriaFamily[];
    
    François Agneray's avatar
    François Agneray committed
        @Input() criteriaList: Criterion[];
    
        @Input() svomKeywords: SvomKeyword[];
        @Output() selectSvomAcronym: EventEmitter<string> = new EventEmitter();
        @Output() resetSvomKeywords: EventEmitter<{}> = new EventEmitter();
    
    François Agneray's avatar
    François Agneray committed
        @Output() addCriterion: EventEmitter<Criterion> = new EventEmitter();
        @Output() deleteCriterion: EventEmitter<number> = new EventEmitter();
    
        /**
         * Emits event to add the given criterion to the criteria list.
         *
         * @param  {Criterion} criterion - The criterion.
         *
         * @fires EventEmitter<Criterion>
         */
        emitAdd(criterion: Criterion): void {
            this.addCriterion.emit(criterion);
        }
    
        /**
         * Emits event to remove the given criterion ID to the criteria list.
         *
         * @param  {number} id - The criterion ID.
         *
         * @fires EventEmitter<number>
         */
        emitDelete(id: number): void {
            this.deleteCriterion.emit(id);
        }
    }