Adding sorting for tables of EI
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / ei-coordinator / ei-job.datasource.ts
index 27a70c4..0727625 100644 (file)
@@ -24,6 +24,10 @@ import { BehaviorSubject } from 'rxjs/BehaviorSubject';
 
 import { EIJob } from '../interfaces/ei.types';
 import { EIService } from '../services/ei/ei.service';
+import { MatTableDataSource } from '@angular/material';
+import { ViewChild } from '@angular/core';
+import { MatSort } from '@angular/material/sort';
+import { delay } from 'rxjs/operators';
 
 @Injectable({
     providedIn: 'root'
@@ -32,9 +36,12 @@ import { EIService } from '../services/ei/ei.service';
 export class EIJobDataSource {
 
     private jobs: Array<EIJob> = [];
+    private dataSource: MatTableDataSource<any> = new MatTableDataSource();
+    @ViewChild(MatSort, { static: true }) sort: MatSort;
 
-    public eiJobs(): EIJob[] {
-        return this.jobs;
+
+    public jobsDataSource(): MatTableDataSource<any> {
+        return this.dataSource;
     }
 
     private loadingSubject = new BehaviorSubject<boolean>(false);
@@ -55,14 +62,21 @@ export class EIJobDataSource {
                 producerIds.forEach(id => {
                     this.getJobsForProducer(id);
                 });
+                //this.dataSource = new MatTableDataSource();  
+                this.dataSource.data = this.jobs;
+                this.dataSource.sort = this.sort;
+                console.log("datasource: "+this.dataSource.data);  
             });
         this.rowCount = this.jobs.length;
     }
 
     private getJobsForProducer(id: string) {
         console.log('Getting jobs for producer ID: ', id);
-        this.eiSvc.getJobsForProducer(id).subscribe(producerJobs => {
-            this.jobs = this.jobs.concat(producerJobs);
+        this.eiSvc.getJobsForProducer(id)//.pipe(delay(5000))
+        .subscribe(producerJobs => {
+            this.jobs = this.jobs.concat(producerJobs);    
+            console.log("producerJobs: "+producerJobs);  
+            
         });
     }
 }