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