* ========================LICENSE_END===================================
*/
import { Component, OnInit, ViewChild } from '@angular/core';
-import { MatDialog } from '@angular/material/dialog';
import { MatSort } from '@angular/material/sort';
import { animate, state, style, transition, trigger } from '@angular/animations';
+import { FormBuilder, FormGroup } from '@angular/forms';
+import { MatTableDataSource } from '@angular/material';
-import { EIService } from '../services/ei/ei.service';
-import { EIJob, EIProducer } from '../interfaces/ei.jobs';
-import { EIProducerDataSource } from './ei-producer.datasource';
+import { defer, BehaviorSubject, Observable } from 'rxjs';
+import { map, withLatestFrom, startWith } from 'rxjs/operators';
+
+import { EIJob, EIProducer } from '../interfaces/ei.types';
import { EIJobDataSource } from './ei-job.datasource';
-import { NotificationService } from '../services/ui/notification.service';
-import { BehaviorSubject, Observable } from 'rxjs';
+import { EIProducerDataSource } from './ei-producer.datasource';
import { UiService } from '../services/ui/ui.service';
class EIJobInfo {
})
export class EICoordinatorComponent implements OnInit {
-
- eiJobsDataSource: EIJobDataSource;
- eiProducersDataSource: EIProducerDataSource;
+ producers$: Observable<EIProducer[]>;
+ filteredProducers$: Observable<EIProducer[]>;
@ViewChild(MatSort, { static: true }) sort: MatSort;
eiJobInfo = new Map<string, EIJobInfo>();
darkMode: boolean;
+ searchString: string;
+ formGroup: FormGroup;
+ eiProducersData: MatTableDataSource<EIProducerDataSource>;
constructor(
- private eiSvc: EIService,
- private dialog: MatDialog,
- private notificationService: NotificationService,
- private ui: UiService) { }
+ private eiJobsDataSource: EIJobDataSource,
+ private eiProducersDataSource: EIProducerDataSource,
+ private ui: UiService,
+ private formBuilder: FormBuilder) {
+ this.formGroup = formBuilder.group({ filter: [""] });
+ }
ngOnInit() {
- this.eiJobsDataSource = new EIJobDataSource(this.eiSvc, this.sort, this.notificationService);
- this.eiProducersDataSource = new EIProducerDataSource(this.eiSvc, this.sort, this.notificationService);
this.eiJobsDataSource.loadTable();
- this.eiProducersDataSource.loadTable();
+
+ this.producers$= this.eiProducersDataSource.getProducers();
+ this.filteredProducers$ = defer(() => this.formGroup.get("filter")
+ .valueChanges.pipe(
+ startWith(""),
+ withLatestFrom(this.producers$),
+ map(([val, producers]) =>
+ !val ? producers : producers.filter((x) =>
+ x.ei_producer_id.toLowerCase().includes(val))))
+ );
+
this.ui.darkModeState.subscribe((isDark) => {
this.darkMode = isDark;
});
}
- toggleListInstances(eiJob: EIJob): void {
- const info = this.getEIJobInfo(eiJob);
- info.isExpanded.next(!info.isExpanded.getValue());
- }
-
getEIJobInfo(eiJob: EIJob): EIJobInfo {
let info: EIJobInfo = this.eiJobInfo.get(eiJob.ei_job_data);
if (!info) {
}
getEITypeId(eiJob: EIJob): string {
- if (eiJob.ei_type_identity){
+ if (eiJob.ei_type_identity) {
return eiJob.ei_type_identity;
}
return '< No type >';
}
getTargetUri(eiJob: EIJob): string {
- if (eiJob.target_uri){
+ if (eiJob.target_uri) {
return eiJob.target_uri;
}
return '< No target URI >';
}
getEIProducerId(eiProducer: EIProducer): string {
- if (eiProducer.ei_producer_id){
+ if (eiProducer.ei_producer_id) {
return eiProducer.ei_producer_id;
}
return '< No id>';
}
getEIProducerTypes(eiProducer: EIProducer): string[] {
- if (eiProducer.ei_producer_types){
+ if (eiProducer.ei_producer_types) {
return eiProducer.ei_producer_types;
}
return ['< No types >'];
}
getEIProducerStatus(eiProducer: EIProducer): string {
- if (eiProducer.status){
+ if (eiProducer.status) {
return eiProducer.status;
}
return '< No status >';
}
+
+ refreshTables() {
+ this.eiJobsDataSource.loadTable();
+ this.eiProducersDataSource.loadTable();
+ }
}