- connect(): BehaviorSubject<EIProducer[]> {
- return this.producerSubject;
- }
-
- disconnect(): void {
- this.producerSubject.complete();
- this.loadingSubject.complete();
- }
-
- getProducers(): Observable<EIProducer[]> {
- return this.eiSvc.getEIProducers()
- .pipe(tap(console.log));
+ this.eiSvc.getProducerIds().pipe(
+ mergeMap(prodIds =>
+ forkJoin(prodIds.map(id => {
+ return forkJoin([
+ of(id),
+ this.eiSvc.getProducer(id),
+ this.eiSvc.getProducerStatus(id)
+ ])
+ })
+ )),
+ finalize(() => this.loadingSubject.next(false))
+ ).subscribe(result => {
+ this.producers = result.map(producer => {
+ let eiProducer = <EIProducer>{};
+ eiProducer.ei_producer_id = producer[0];
+ eiProducer.ei_producer_types = producer[1].supported_ei_types;
+ eiProducer.status = producer[2].operational_state.toString();
+ return eiProducer;
+ });
+ this.producersSubject.next(this.producers);
+ });
+ this.rowCount = this.producers.length;