mirror of
https://github.com/mempool/mempool.git
synced 2026-08-13 12:33:11 +02:00
97 lines
No EOL
5.5 KiB
HTML
97 lines
No EOL
5.5 KiB
HTML
<app-indexing-progress *ngIf="!widget" [showNetworkHashrate]="false" [showPoolsHashrate]="false"></app-indexing-progress>
|
|
|
|
<div [class.full-container]="!widget">
|
|
<div *ngIf="!widget" class="card-header mb-0 mb-md-4">
|
|
<div class="d-flex d-md-block align-items-baseline">
|
|
<span i18n="mining.block-fee-rates">Block Fee Rates</span>
|
|
<button class="btn p-0 ps-2" style="margin: 0 0 4px 0px" (click)="onSaveChart()">
|
|
<fa-icon [icon]="['fas', 'download']" [fixedWidth]="true"></fa-icon>
|
|
</button>
|
|
</div>
|
|
|
|
<form [formGroup]="radioGroupForm" class="formRadioGroup" *ngIf="(statsObservable$ | async) as stats">
|
|
<div class="btn-group" role="group" name="radioBasic">
|
|
<ng-container *ngIf="stats.blockCount >= 144">
|
|
<input type="radio" class="btn-check" id="feerates-24h" [value]="'24h'" fragment="24h" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-24h">24h</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 432">
|
|
<input type="radio" class="btn-check" id="feerates-3d" [value]="'3d'" fragment="3d" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-3d">3D</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 1008">
|
|
<input type="radio" class="btn-check" id="feerates-1w" [value]="'1w'" fragment="1w" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-1w">1W</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 4320">
|
|
<input type="radio" class="btn-check" id="feerates-1m" [value]="'1m'" fragment="1m" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-1m">1M</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 12960">
|
|
<input type="radio" class="btn-check" id="feerates-3m" [value]="'3m'" fragment="3m" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-3m">3M</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 25920">
|
|
<input type="radio" class="btn-check" id="feerates-6m" [value]="'6m'" fragment="6m" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-6m">6M</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 52560">
|
|
<input type="radio" class="btn-check" id="feerates-1y" [value]="'1y'" fragment="1y" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-1y">1Y</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 105120">
|
|
<input type="radio" class="btn-check" id="feerates-2y" [value]="'2y'" fragment="2y" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-2y">2Y</label>
|
|
</ng-container>
|
|
<ng-container *ngIf="stats.blockCount >= 157680">
|
|
<input type="radio" class="btn-check" id="feerates-3y" [value]="'3y'" fragment="3y" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-3y">3Y</label>
|
|
</ng-container>
|
|
<input type="radio" class="btn-check" id="feerates-all" [value]="'all'" fragment="all" [routerLink]="['/graphs/mining/block-fee-rates' | relativeUrl]" formControlName="dateSpan">
|
|
<label class="btn btn-primary btn-sm" for="feerates-all">ALL</label>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<div *ngIf="widget">
|
|
<div class="block-fee-rates">
|
|
<div class="item" *ngIf="(hrStatsObservable$ | async) as stats; else loadingHrStats">
|
|
<h5 class="card-title" i18n="mining.avg-block-fee-24h">Avg Block Fee (24h)</h5>
|
|
<p class="card-text">
|
|
<app-fee-rate [fee]="stats.avgMedianRate"></app-fee-rate>
|
|
</p>
|
|
</div>
|
|
<div class="item" *ngIf="(statsObservable$ | async) as stats; else loadingStats">
|
|
<h5 class="card-title" i18n="mining.avg-block-fee-1m">Avg Block Fee (1m)</h5>
|
|
<p class="card-text">
|
|
<app-fee-rate [fee]="stats.avgMedianRate"></app-fee-rate>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div [class.chart]="!widget" [class.chart-widget]="widget" *browserOnly echarts [initOpts]="chartInitOptions" [options]="chartOptions"
|
|
(chartInit)="onChartInit($event)" [style]="{opacity: isLoading ? 0.5 : 1}">
|
|
</div>
|
|
<div class="text-center loadingGraphs" *ngIf="!stateService.isBrowser || isLoading">
|
|
<div class="spinner-border text-light"></div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<ng-template #loadingHrStats>
|
|
<div class="item">
|
|
<h5 class="card-title" i18n="mining.avg-block-fee-24h">Avg Block Fee (24h)</h5>
|
|
<p class="card-text">
|
|
<span class="skeleton-loader skeleton-loader-big"></span>
|
|
</p>
|
|
</div>
|
|
</ng-template>
|
|
<ng-template #loadingStats>
|
|
<div class="item">
|
|
<h5 class="card-title" i18n="mining.avg-block-fee-1m">Avg Block Fee (1m)</h5>
|
|
<p class="card-text">
|
|
<span class="skeleton-loader skeleton-loader-big"></span>
|
|
</p>
|
|
</div>
|
|
</ng-template> |