diff --git a/backend/src/api/mining/mining.ts b/backend/src/api/mining/mining.ts index 8f698dfb6..edcb5b2e5 100644 --- a/backend/src/api/mining/mining.ts +++ b/backend/src/api/mining/mining.ts @@ -100,7 +100,7 @@ class Mining { rank: rank++, emptyBlocks: emptyBlocksCount.length > 0 ? emptyBlocksCount[0]['count'] : 0, slug: poolInfo.slug, - avgMatchRate: Math.round(100 * poolInfo.avgMatchRate) / 100, + avgMatchRate: poolInfo.avgMatchRate !== null ? Math.round(100 * poolInfo.avgMatchRate) / 100 : null, }; poolsStats.push(poolStat); }); diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index 44bbf0ac2..6b258c173 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -16,7 +16,7 @@ export interface PoolInfo { link: string; blockCount: number; slug: string; - avgMatchRate: number; + avgMatchRate: number | null; } export interface PoolStats extends PoolInfo { diff --git a/frontend/src/app/components/pool-ranking/pool-ranking.component.html b/frontend/src/app/components/pool-ranking/pool-ranking.component.html index 48f2407e8..1d82867d8 100644 --- a/frontend/src/app/components/pool-ranking/pool-ranking.component.html +++ b/frontend/src/app/components/pool-ranking/pool-ranking.component.html @@ -92,6 +92,8 @@ Pool Hashrate Blocks + Avg Health Empty blocks @@ -105,6 +107,18 @@ {{ pool.lastEstimatedHashrate }} {{ miningStats.miningUnits.hashrateUnit }} {{ pool['blockText'] }} + + {{ pool.avgMatchRate }}% + + Unknown + + {{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%) diff --git a/frontend/src/app/components/pool-ranking/pool-ranking.component.ts b/frontend/src/app/components/pool-ranking/pool-ranking.component.ts index 214318bd5..135267b60 100644 --- a/frontend/src/app/components/pool-ranking/pool-ranking.component.ts +++ b/frontend/src/app/components/pool-ranking/pool-ranking.component.ts @@ -26,6 +26,8 @@ export class PoolRankingComponent implements OnInit { miningWindowPreference: string; radioGroupForm: UntypedFormGroup; + auditAvailable = false; + indexingAvailable = false; isLoading = true; chartOptions: EChartsOption = {}; chartInitOptions = { @@ -60,6 +62,10 @@ export class PoolRankingComponent implements OnInit { this.radioGroupForm = this.formBuilder.group({ dateSpan: this.miningWindowPreference }); this.radioGroupForm.controls.dateSpan.setValue(this.miningWindowPreference); + this.indexingAvailable = (this.stateService.env.BASE_MODULE === 'mempool' && + this.stateService.env.MINING_DASHBOARD === true); + this.auditAvailable = this.indexingAvailable && this.stateService.env.AUDIT; + this.route .fragment .subscribe((fragment) => { diff --git a/frontend/src/app/interfaces/node-api.interface.ts b/frontend/src/app/interfaces/node-api.interface.ts index c11cb5828..8fa30a723 100644 --- a/frontend/src/app/interfaces/node-api.interface.ts +++ b/frontend/src/app/interfaces/node-api.interface.ts @@ -73,6 +73,7 @@ export interface SinglePoolStats { emptyBlockRatio: string; logo: string; slug: string; + avgMatchRate: number; } export interface PoolsStats { blockCount: number;