mempool/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.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>