mirror of
https://github.com/mempool/mempool.git
synced 2025-03-30 04:32:06 +02:00
Accelerator dashboard pending widget, fee delta fiat values
This commit is contained in:
parent
2efd474357
commit
5a55ba2d28
@ -10,17 +10,26 @@
|
||||
<div class="item">
|
||||
<h5 class="card-title" i18n="accelerator.fee-delta">Fee delta</h5>
|
||||
<div class="card-text">
|
||||
<div>{{ stats.totalFeeDelta | number }} <span class="symbol" i18n="shared.sat|sat">sat</span></div>
|
||||
<div class="symbol" i18n="accelerator.paid-out-of-band">paid out of band</div>
|
||||
<div>{{ stats.totalFeeDelta / 100_000_000 | amountShortener: 4 }} <span class="symbol" i18n="shared.btc|BTC">BTC</span></div>
|
||||
<span class="fiat">
|
||||
<app-fiat [value]="stats.totalFeeDelta"></app-fiat>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="item" *ngIf="timespan !== 'now'">
|
||||
<h5 class="card-title" i18n="accelerator.success-rate">Success rate</h5>
|
||||
<div class="card-text">
|
||||
<div>{{ stats.successRate.toFixed(2) }} %</div>
|
||||
<div class="symbol" i18n="accelerator.mined-next-block">mined in the next block</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" *ngIf="timespan === 'now'">
|
||||
<h5 class="card-title" i18n="accelerator.total-vsize">Total vsize</h5>
|
||||
<div class="card-text">
|
||||
<div [innerHTML]="'‎' + (stats.totalVsize * 4 | vbytes: 2)"></div>
|
||||
<div class="symbol">{{ (stats.totalVsize / 1_000_000).toFixed(2) }}% <span i18n="accelerator.percent-of-next-block"> of next block</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -40,12 +49,19 @@
|
||||
<div class="skeleton-loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="item" *ngIf="timespan !== 'now'">
|
||||
<h5 class="card-title" i18n="accelerator.success-rate">Success rate</h5>
|
||||
<div class="card-text">
|
||||
<div class="skeleton-loader"></div>
|
||||
<div class="skeleton-loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" *ngIf="timespan === 'now'">
|
||||
<h5 class="card-title" i18n="accelerator.total-vsize">Total vsize</h5>
|
||||
<div class="card-text">
|
||||
<div class="skeleton-loader"></div>
|
||||
<div class="skeleton-loader"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
@ -10,7 +10,7 @@ import { ApiService } from '../../services/api.service';
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class AccelerationStatsComponent implements OnInit {
|
||||
@Input() timespan: '24h' | '1w' = '24h';
|
||||
@Input() timespan: 'now' | '24h' | '1w' = '24h';
|
||||
public accelerationStats$: Observable<any>;
|
||||
|
||||
constructor(
|
||||
@ -18,26 +18,46 @@ export class AccelerationStatsComponent implements OnInit {
|
||||
) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
this.accelerationStats$ = this.apiService.getAccelerationHistory$(this.timespan).pipe(
|
||||
switchMap(accelerations => {
|
||||
let totalFeeDelta = 0;
|
||||
let totalMined = 0;
|
||||
let totalCanceled = 0;
|
||||
for (const acceleration of accelerations) {
|
||||
if (acceleration.status === 'completed' || acceleration.status === 'mined') {
|
||||
totalMined++;
|
||||
totalFeeDelta += acceleration.feeDelta;
|
||||
} else if (acceleration.status === 'failed') {
|
||||
totalCanceled++;
|
||||
if (this.timespan === 'now') {
|
||||
this.accelerationStats$ = this.apiService.getAccelerations$().pipe(
|
||||
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: totalMined,
|
||||
totalFeeDelta,
|
||||
successRate: (totalMined + totalCanceled > 0) ? ((totalMined / (totalMined + totalCanceled)) * 100) : 0.0,
|
||||
});
|
||||
})
|
||||
);
|
||||
return of({
|
||||
count: totalAccelerations,
|
||||
totalFeeDelta,
|
||||
totalVsize,
|
||||
});
|
||||
})
|
||||
);
|
||||
} else {
|
||||
this.accelerationStats$ = this.apiService.getAccelerationHistory$(this.timespan).pipe(
|
||||
switchMap(accelerations => {
|
||||
let totalFeeDelta = 0;
|
||||
let totalMined = 0;
|
||||
let totalCanceled = 0;
|
||||
for (const acceleration of accelerations) {
|
||||
if (acceleration.status === 'completed') {
|
||||
totalMined++;
|
||||
totalFeeDelta += acceleration.feeDelta || 0;
|
||||
} else if (acceleration.status === 'failed') {
|
||||
totalCanceled++;
|
||||
}
|
||||
}
|
||||
return of({
|
||||
count: totalMined,
|
||||
totalFeeDelta,
|
||||
successRate: (totalMined + totalCanceled > 0) ? ((totalMined / (totalMined + totalCanceled)) * 100) : 0.0,
|
||||
});
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -7,13 +7,12 @@
|
||||
<!-- 24h stats -->
|
||||
<div class="col">
|
||||
<div class="main-title">
|
||||
<span [attr.data-cy]="'acceleration-stats'" i18n="accelerator.acceleration-stats">Acceleration stats</span>
|
||||
<span style="font-size: xx-small" i18n="mining.144-blocks">(144 blocks)</span>
|
||||
<span [attr.data-cy]="'pending-accelerations'" i18n="accelerator.pending-accelerations">Pending accelerations</span>
|
||||
</div>
|
||||
<div class="card-wrapper">
|
||||
<div class="card">
|
||||
<div class="card-body more-padding">
|
||||
<app-acceleration-stats timespan="24h"></app-acceleration-stats>
|
||||
<app-acceleration-stats timespan="now"></app-acceleration-stats>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user