Skip to content
Snippets Groups Projects
datatable.component.ts 2.82 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tifenn Guillas's avatar
    Tifenn Guillas committed
    import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
    
    François Agneray's avatar
    François Agneray committed
    
    
    import { SearchMeta, SearchQueryParams } from '../../store/model';
    
    François Agneray's avatar
    François Agneray committed
    import { Attribute, Dataset } from 'src/app/metamodel/model';
    
    François Agneray's avatar
    François Agneray committed
    
    @Component({
        selector: 'app-datatable',
        templateUrl: 'datatable.component.html',
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        styleUrls: ['datatable.component.css'],
    
    François Agneray's avatar
    François Agneray committed
        changeDetection: ChangeDetectionStrategy.OnPush
    })
    export class DatatableComponent {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        @Input() datasetName: string;
    
    François Agneray's avatar
    François Agneray committed
        @Input() datasetList: Dataset[];
    
        @Input() queryParams: SearchQueryParams;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        @Input() datasetAttributeList: Attribute[];
    
    François Agneray's avatar
    François Agneray committed
        @Input() searchMeta: SearchMeta;
        @Input() searchData: any[];
    
    François Agneray's avatar
    François Agneray committed
        @Input() selectedData: any[];
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        @Input() processWip: boolean;
        @Input() processDone: boolean;
        @Input() processId: string;
    
    François Agneray's avatar
    François Agneray committed
        @Output() initSearchMeta: EventEmitter<{}> = new EventEmitter();
        @Output() getSearchData: EventEmitter<number> = new EventEmitter();
    
    François Agneray's avatar
    François Agneray committed
        @Output() addSelectedData: EventEmitter<any> = new EventEmitter();
        @Output() deleteSelectedData: EventEmitter<any> = new EventEmitter();
    
        @Output() executeProcess: EventEmitter<string> = new EventEmitter();
    
    François Agneray's avatar
    François Agneray committed
        initDatatable() {
    
    François Agneray's avatar
    François Agneray committed
            this.initSearchMeta.emit();
            this.getSearchData.emit(1);
        }
    
    François Agneray's avatar
    François Agneray committed
        getDataset() {
            return this.datasetList.find(dataset => dataset.name === this.datasetName);
        }
    
    
    François Agneray's avatar
    François Agneray committed
        getAttributeId(attributeName: string): number {
            const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
            return attribute.id;
        }
    
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
        getAttributeRenderer(attributeName: string): string {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            return attribute.renderer;
        }
    
        getAttributeUriAction(attributeName: string, datum: string): string {
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
            if (attribute.uri_action) {
                return attribute.uri_action + datum;
            } else {
                return datum;
            }
    
    François Agneray's avatar
    François Agneray committed
        toggleSelection(datum: any): void {
            const attribute = this.datasetAttributeList.find(a => a.search_flag === 'ID');
    
    
            const index = this.selectedData.indexOf(datum[attribute.label]);
    
            if (index > -1) {
    
                this.deleteSelectedData.emit(datum[attribute.label]);
    
            } else {
    
                this.addSelectedData.emit(datum[attribute.label]);
    
    François Agneray's avatar
    François Agneray committed
        isSelected(datum: any): boolean {
            const attribute = this.datasetAttributeList.find(a => a.search_flag === 'ID');
    
    
            if (this.selectedData.indexOf(datum[attribute.label]) > -1) {
    
                return true;
            }
            return false;
        }
    
    François Agneray's avatar
    François Agneray committed
    
        noSelectedData() {
            return this.selectedData.length < 1;
        }
    
        fireProcess(typeProcess: string): void {
            this.executeProcess.emit(typeProcess);
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
    }