2022-03-14 18:06:54 +01:00
|
|
|
<div [class]="widget === false ? 'full-container' : ''">
|
2022-01-17 15:34:34 +09:00
|
|
|
|
2022-03-07 19:54:17 +01:00
|
|
|
<div *ngIf="widget">
|
|
|
|
<div class="pool-distribution" *ngIf="(miningStatsObservable$ | async) as miningStats; else loadingReward">
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="mining.miners-luck">Pools luck (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
{{ miningStats['minersLuck'] }}%
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="master-page.blocks">Blocks (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
{{ miningStats.blockCount }}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="mining.miners-count">Pools count (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
{{ miningStats.pools.length }}
|
|
|
|
</p>
|
|
|
|
</div>
|
2022-03-05 18:47:21 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2022-03-14 18:06:54 +01:00
|
|
|
<div class="card-header" *ngIf="!widget">
|
|
|
|
<span i18n="mining.mining-pool-share">Mining pools share</span>
|
|
|
|
<form [formGroup]="radioGroupForm" class="formRadioGroup"
|
|
|
|
*ngIf="!widget && (miningStatsObservable$ | async) as miningStats">
|
2022-01-21 11:17:36 +09:00
|
|
|
<div class="btn-group btn-group-toggle" ngbRadioGroup name="radioBasic" formControlName="dateSpan">
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 1">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'24h'" fragment="24h"> 24h
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 3">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'3d'" fragment="3d"> 3D
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 7">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'1w'" fragment="1w"> 1W
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 30">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'1m'" fragment="1m"> 1M
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 90">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'3m'" fragment="3m"> 3M
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 180">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'6m'" fragment="6m"> 6M
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 365">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'1y'" fragment="1y"> 1Y
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 730">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'2y'" fragment="2y"> 2Y
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
2022-01-25 18:33:46 +09:00
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm" *ngIf="miningStats.availableTimespanDay >= 1095">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'3y'" fragment="3y"> 3Y
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
|
|
|
<label ngbButtonLabel class="btn-primary btn-sm">
|
2022-02-16 17:32:12 +09:00
|
|
|
<input ngbButton type="radio" [value]="'all'" fragment="all"> ALL
|
2022-01-06 19:59:33 +09:00
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
2022-03-14 18:06:54 +01:00
|
|
|
<div [class]="!widget ? 'bottom-padding' : 'pb-0'" class="container pb-lg-0">
|
|
|
|
<div [class]="widget ? 'chart-widget' : 'chart'" echarts [initOpts]="chartInitOptions" [options]="chartOptions"
|
|
|
|
(chartInit)="onChartInit($event)"></div>
|
|
|
|
<div class="text-center loadingGraphs" *ngIf="isLoading">
|
|
|
|
<div class="spinner-border text-light"></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<table *ngIf="widget === false" class="table table-borderless text-center pools-table">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th class="d-none d-md-block" i18n="mining.rank">Rank</th>
|
|
|
|
<th class=""></th>
|
|
|
|
<th class="" i18n="mining.pool-name">Pool</th>
|
|
|
|
<th class="" *ngIf="this.poolsWindowPreference === '24h'" i18n="mining.hashrate">Hashrate</th>
|
|
|
|
<th class="" i18n="master-page.blocks">Blocks</th>
|
|
|
|
<th class="d-none d-md-block" i18n="mining.empty-blocks">Empty Blocks</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody *ngIf="(miningStatsObservable$ | async) as miningStats">
|
|
|
|
<tr *ngFor="let pool of miningStats.pools">
|
|
|
|
<td class="d-none d-md-block">{{ pool.rank }}</td>
|
|
|
|
<td class="text-right"><img width="25" height="25" src="{{ pool.logo }}"
|
|
|
|
onError="this.src = './resources/mining-pools/default.svg'"></td>
|
2022-03-25 14:22:22 +09:00
|
|
|
<td class=""><a [routerLink]="[('/mining/pool/' + pool.slug) | relativeUrl]">{{ pool.name }}</a></td>
|
2022-03-14 18:06:54 +01:00
|
|
|
<td class="" *ngIf="this.poolsWindowPreference === '24h' && !isLoading">{{ pool.lastEstimatedHashrate }} {{
|
|
|
|
miningStats.miningUnits.hashrateUnit }}</td>
|
|
|
|
<td class="">{{ pool['blockText'] }}</td>
|
|
|
|
<td class="d-none d-md-block">{{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</td>
|
|
|
|
</tr>
|
|
|
|
<tr style="border-top: 1px solid #555">
|
|
|
|
<td class="d-none d-md-block"></td>
|
|
|
|
<td class="text-right"></td>
|
|
|
|
<td class="" i18n="mining.all-miners"><b>All miners</b></td>
|
|
|
|
<td class="" *ngIf="this.poolsWindowPreference === '24h'"><b>{{ miningStats.lastEstimatedHashrate}} {{
|
|
|
|
miningStats.miningUnits.hashrateUnit }}</b></td>
|
|
|
|
<td class=""><b>{{ miningStats.blockCount }}</b></td>
|
|
|
|
<td class="d-none d-md-block"><b>{{ miningStats.totalEmptyBlock }} ({{ miningStats.totalEmptyBlockRatio
|
|
|
|
}}%)</b></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2022-01-06 19:59:33 +09:00
|
|
|
|
|
|
|
</div>
|
2022-03-07 19:54:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
<ng-template #loadingReward>
|
|
|
|
<div class="pool-distribution">
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="mining.miners-luck">Pools luck (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
<span class="skeleton-loader skeleton-loader-big"></span>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="master-page.blocks">Blocks (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
<span class="skeleton-loader skeleton-loader-big"></span>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<h5 class="card-title" i18n="mining.miners-count">Pools count (1w)</h5>
|
|
|
|
<p class="card-text">
|
|
|
|
<span class="skeleton-loader skeleton-loader-big"></span>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
2022-03-14 18:06:54 +01:00
|
|
|
</ng-template>
|