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'] }} |
+
+ = 99"
+ [class.badge-warning]="pool.avgMatchRate >= 75 && pool.avgMatchRate < 99"
+ [class.badge-danger]="pool.avgMatchRate < 75"
+ *ngIf="pool.avgMatchRate != null; else nullHealth"
+ >{{ 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;