diff --git a/frontend/src/app/components/pool/pool.component.html b/frontend/src/app/components/pool/pool.component.html
index faa0003c4..f98794b68 100644
--- a/frontend/src/app/components/pool/pool.component.html
+++ b/frontend/src/app/components/pool/pool.component.html
@@ -267,7 +267,11 @@
@for (branch of job.merkleBranches; track $index) {
- |
+ @if ($index === 0 && branch) {
+ |
+ } @else {
+ |
+ }
}
@for (_ of [].constructor(Math.max(0, 12 - job.merkleBranches.length)); track $index) {
|
diff --git a/frontend/src/app/components/pool/pool.component.scss b/frontend/src/app/components/pool/pool.component.scss
index 31d12474f..fa94227bd 100644
--- a/frontend/src/app/components/pool/pool.component.scss
+++ b/frontend/src/app/components/pool/pool.component.scss
@@ -220,6 +220,7 @@ div.scrollable {
.merkle {
width: 100px;
+ text-align: center;
}
.empty-branch {
diff --git a/frontend/src/app/components/pool/pool.component.ts b/frontend/src/app/components/pool/pool.component.ts
index 23b795613..4b4b643a2 100644
--- a/frontend/src/app/components/pool/pool.component.ts
+++ b/frontend/src/app/components/pool/pool.component.ts
@@ -361,6 +361,10 @@ export class PoolComponent implements OnInit {
return block.height;
}
+ reverseHash(hash: string) {
+ return hash.match(/../g).reverse().join('');
+ }
+
ngOnDestroy(): void {
this.slugSubscription.unsubscribe();
}
diff --git a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.html b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.html
index 08d7fb0ef..24801cf2c 100644
--- a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.html
+++ b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.html
@@ -7,30 +7,27 @@
- Height |
- Reward |
- Coinbase Tag |
Merkle Branches
|
Pool |
+ Coinbase Tag |
+ Reward |
+ Height |
@for (row of rows; track row.job.pool) {
-
- {{ row.job.height }}
- |
-
-
- |
-
- {{ row.job.tag }}
- |
@for (cell of row.merkleCells; track $index) {
-
+ @if ($index === 0 && cell.hash) {
+
+
+
+ } @else {
+
+ }
|
}
@@ -41,6 +38,15 @@
}
|
+
+ {{ row.job.tag }}
+ |
+
+
+ |
+
+ {{ row.job.height }}
+ |
}
diff --git a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.scss b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.scss
index 6679f2257..3d274ef2a 100644
--- a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.scss
+++ b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.scss
@@ -92,6 +92,36 @@ td {
}
}
}
+
+ .cell-link {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ color: inherit;
+ text-decoration: none;
+ }
+}
+
+@media (max-width: 800px) {
+ .stratum-table {
+ td {
+ &.tag {
+ display: none;
+ }
+ }
+ }
+}
+
+@media (max-width: 650px) {
+ .stratum-table {
+ td {
+ &.reward {
+ display: none;
+ }
+ }
+ }
}
.badge {
diff --git a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.ts b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.ts
index 6f252babe..481447b07 100644
--- a/frontend/src/app/components/stratum/stratum-list/stratum-list.component.ts
+++ b/frontend/src/app/components/stratum/stratum-list/stratum-list.component.ts
@@ -48,14 +48,16 @@ function parseTag(scriptSig: string): string {
return (ascii.match(/\/.*\//)?.[0] || ascii).trim();
}
-function getMerkleBranchIds(merkleBranches: string[], numBranches: number): string[] {
+function getMerkleBranchIds(merkleBranches: string[], numBranches: number, poolId: number): string[] {
let lastHash = '';
const ids: string[] = [];
for (let i = 0; i < numBranches; i++) {
if (merkleBranches[i]) {
lastHash = merkleBranches[i];
+ ids.push(`${i}-${lastHash}`);
+ } else {
+ ids.push(`${i}-${lastHash}-${poolId}`);
}
- ids.push(`${i}-${lastHash}`);
}
return ids;
}
@@ -98,7 +100,7 @@ export class StratumList implements OnInit, OnDestroy {
const numBranches = Math.max(...Object.values(rawJobs).map(job => job.merkleBranches.length));
const jobs: Record = {};
for (const [id, job] of Object.entries(rawJobs)) {
- jobs[id] = { ...job, tag: parseTag(job.scriptsig), merkleBranchIds: getMerkleBranchIds(job.merkleBranches, numBranches) };
+ jobs[id] = { ...job, tag: parseTag(job.scriptsig), merkleBranchIds: getMerkleBranchIds(job.merkleBranches, numBranches, job.pool) };
}
if (Object.keys(jobs).length === 0) {
return [];
@@ -196,6 +198,10 @@ export class StratumList implements OnInit, OnDestroy {
}[type];
}
+ reverseHash(hash: string) {
+ return hash.match(/../g).reverse().join('');
+ }
+
ngOnDestroy(): void {
this.websocketService.stopTrackStratum();
}