import { Component, Input, Output, ChangeDetectionStrategy, EventEmitter } from '@angular/core'; import { Attribute, Dataset, Project } from "../../../metamodel/model"; import { DatasetCount } from "../../store/model"; import { sortByDisplay } from "../../../shared/utils"; @Component({ selector: 'app-datasets-result', templateUrl: 'datasets-result.component.html', changeDetection: ChangeDetectionStrategy.OnPush }) export class DatasetsResultComponent { @Input() datasetsCountIsLoaded: boolean; @Input() projectList: Project[]; @Input() datasetList: Dataset[]; @Input() selectedDatasets: string[]; // TODO: change any type @Input() datasetsAttributeList: any; @Input() datasetsCount: DatasetCount[]; @Output() retrieveMeta: EventEmitter<string> = new EventEmitter(); @Output() retrieveData: EventEmitter<string> = new EventEmitter(); getOrderedDatasetWithResults(): Dataset[] { let datasets: Dataset[] = []; const projectOrderedByName: Project[] = [...this.projectList].sort((a, b) => a.name.localeCompare(b.name)); projectOrderedByName.map(p => { this.datasetList.filter(d => d.project_name === p.name) .sort(sortByDisplay) .map(d => { this.datasetsCount.map(c => { if (c.dname === d.name && c.count > 0) { datasets.push(d); } }); }); }); return datasets; } getCount(dname: string): number { return this.datasetsCount.find(c => c.dname === dname).count; } // getDatasetAttributeList(dname: string): Attribute[] { // // } getData(dname: string, pagination: any): void { console.log(dname, pagination); } addSelectedData(d: number | string): void { console.log('addSelectedData: ' + d); } deleteSelectedData(d: number | string): void { console.log('deleteSelectedData: ' + d); } executeProcess(typeProcess: string): void { console.log('executeProcess: ' + typeProcess); } }