Files
mempool/frontend/src/app/components/acceleration/pending-stats/pending-stats.component.ts

42 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-12-07 08:26:32 +00:00
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { Observable, of } from 'rxjs';
import { switchMap } from 'rxjs/operators';
import { ApiService } from '../../../services/api.service';
2023-12-07 11:12:20 +00:00
import { Acceleration } from '../../../interfaces/node-api.interface';
2023-12-07 08:26:32 +00:00
@Component({
selector: 'app-pending-stats',
templateUrl: './pending-stats.component.html',
styleUrls: ['./pending-stats.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class PendingStatsComponent implements OnInit {
2023-12-07 11:12:20 +00:00
@Input() accelerations$: Observable<Acceleration[]>;
2023-12-07 08:26:32 +00:00
public accelerationStats$: Observable<any>;
constructor(
private apiService: ApiService,
) { }
ngOnInit(): void {
2023-12-07 11:12:20 +00:00
this.accelerationStats$ = (this.accelerations$ || this.apiService.getAccelerations$()).pipe(
2023-12-07 08:26:32 +00:00
switchMap(accelerations => {
let totalAccelerations = 0;
let totalFeeDelta = 0;
let totalVsize = 0;
for (const acceleration of accelerations) {
totalAccelerations++;
totalFeeDelta += acceleration.feeDelta || 0;
totalVsize += acceleration.effectiveVsize || 0;
}
return of({
count: totalAccelerations,
totalFeeDelta,
avgFeeDelta: totalAccelerations ? totalFeeDelta / totalAccelerations : 0,
totalVsize,
});
})
);
}
}