Newer
Older
import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter, ViewEncapsulation, OnInit } from '@angular/core';
import { SearchQueryParams } from '../../store/model';
import { Attribute, Dataset } from 'src/app/metamodel/model';
@Component({
selector: 'app-datatable',
templateUrl: 'datatable.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
export class DatatableComponent implements OnInit {
@Input() outputList: number[];
@Input() dataLength: number;
@Input() processWip: boolean;
@Input() processDone: boolean;
@Input() processId: string;
@Output() getSearchData: EventEmitter<[number, number, number, string]> = new EventEmitter();
@Output() addSelectedData: EventEmitter<any> = new EventEmitter();
@Output() deleteSelectedData: EventEmitter<any> = new EventEmitter();
@Output() executeProcess: EventEmitter<string> = new EventEmitter();
sortedCol: number = null;
sortedOrder: string = null;
ngOnInit() {
this.sortedCol = this.datasetAttributeList.find(a => a.search_flag === 'ID').id;
this.sortedOrder = 'a';
this.getSearchData.emit([this.page, this.nbItems, this.sortedCol, this.sortedOrder]);
return this.datasetAttributeList
.filter(a => this.outputList.includes(a.id))
.sort((a, b) => a.output_display - b.output_display);
}
return this.datasetList.find(dataset => dataset.name === this.datasetName);
}
getAttributeId(attributeName: string): number {
const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
return attribute.id;
}
getAttributeRenderer(attributeName: string): string {
const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
return attribute.renderer;
}
getAttributeUriAction(attributeName: string, datum: string): string {
const attribute = this.datasetAttributeList.find(a => a.name === attributeName);
if (attribute.uri_action) {
return attribute.uri_action + datum;
} else {
return datum;
}
toggleSelection(datum: any): void {
const attribute = this.datasetAttributeList.find(a => a.search_flag === 'ID');
const index = this.selectedData.indexOf(datum[attribute.label]);
this.deleteSelectedData.emit(datum[attribute.label]);
this.addSelectedData.emit(datum[attribute.label]);
isSelected(datum: any): boolean {
const attribute = this.datasetAttributeList.find(a => a.search_flag === 'ID');
if (this.selectedData.indexOf(datum[attribute.label]) > -1) {
emitProcess(typeProcess: string): void {
changePage(nb: number): void {
this.page = nb;
this.getSearchData.emit([this.page, this.nbItems, this.sortedCol, this.sortedOrder]);
}
changeNbItems(nb: number): void {
this.nbItems = nb;
this.getSearchData.emit([this.page, this.nbItems, this.sortedCol, this.sortedOrder]);
}
sort(id: number): void {
if (id === this.sortedCol) {
this.sortedOrder = this.sortedOrder === 'a' ? 'd' : 'a';
} else {
this.sortedCol = id;
this.sortedOrder = 'a';
}
this.getSearchData.emit([this.page, this.nbItems, this.sortedCol, this.sortedOrder]);