diff --git a/frontend/src/app/components/block-audit/block-audit.component.html b/frontend/src/app/components/block-audit/block-audit.component.html
index ca28c6707..a3f2e2ada 100644
--- a/frontend/src/app/components/block-audit/block-audit.component.html
+++ b/frontend/src/app/components/block-audit/block-audit.component.html
@@ -41,10 +41,6 @@
-
- Transactions |
- {{ blockAudit.tx_count }} |
-
Size |
|
@@ -61,6 +57,10 @@
+
+ Transactions |
+ {{ blockAudit.tx_count }} |
+
Block health |
{{ blockAudit.matchRate }}% |
@@ -69,18 +69,10 @@
Removed txs |
{{ blockAudit.missingTxs.length }} |
-
- Omitted txs |
- {{ numMissing }} |
-
Added txs |
{{ blockAudit.addedTxs.length }} |
-
- Included txs |
- {{ numUnexpected }} |
-
@@ -108,7 +100,6 @@
|
|
|
- |
@@ -121,7 +112,6 @@
|
|
|
- |
@@ -165,16 +155,16 @@
Projected Block
+ [blockLimit]="stateService.blockVSize" [orientation]="'top'" [flip]="false" [mirrorTxid]="hoverTx"
+ (txClickEvent)="onTxClick($event)" (txHoverEvent)="onTxHover($event)">
Actual Block
+ [blockLimit]="stateService.blockVSize" [orientation]="'top'" [flip]="false" [mirrorTxid]="hoverTx"
+ (txClickEvent)="onTxClick($event)" (txHoverEvent)="onTxHover($event)">
diff --git a/frontend/src/app/components/block-audit/block-audit.component.ts b/frontend/src/app/components/block-audit/block-audit.component.ts
index f8ce8d9bb..ab85b84ff 100644
--- a/frontend/src/app/components/block-audit/block-audit.component.ts
+++ b/frontend/src/app/components/block-audit/block-audit.component.ts
@@ -37,6 +37,7 @@ export class BlockAuditComponent implements OnInit, AfterViewInit, OnDestroy {
isLoading = true;
webGlEnabled = true;
isMobile = window.innerWidth <= 767.98;
+ hoverTx: string;
childChangeSubscription: Subscription;
@@ -117,9 +118,11 @@ export class BlockAuditComponent implements OnInit, AfterViewInit, OnDestroy {
}
}
for (const [index, tx] of blockAudit.transactions.entries()) {
- if (isAdded[tx.txid]) {
+ if (index === 0) {
+ tx.status = null;
+ } else if (isAdded[tx.txid]) {
tx.status = 'added';
- } else if (index === 0 || inTemplate[tx.txid]) {
+ } else if (inTemplate[tx.txid]) {
tx.status = 'found';
} else {
tx.status = 'selected';
@@ -189,4 +192,12 @@ export class BlockAuditComponent implements OnInit, AfterViewInit, OnDestroy {
const url = new RelativeUrlPipe(this.stateService).transform(`/tx/${event.txid}`);
this.router.navigate([url]);
}
+
+ onTxHover(txid: string): void {
+ if (txid && txid.length) {
+ this.hoverTx = txid;
+ } else {
+ this.hoverTx = null;
+ }
+ }
}
diff --git a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts
index 14607f398..751781d19 100644
--- a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts
+++ b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts
@@ -18,7 +18,9 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
@Input() orientation = 'left';
@Input() flip = true;
@Input() disableSpinner = false;
+ @Input() mirrorTxid: string | void;
@Output() txClickEvent = new EventEmitter();
+ @Output() txHoverEvent = new EventEmitter();
@Output() readyEvent = new EventEmitter();
@ViewChild('blockCanvas')
@@ -37,6 +39,7 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
scene: BlockScene;
hoverTx: TxView | void;
selectedTx: TxView | void;
+ mirrorTx: TxView | void;
tooltipPosition: Position;
readyNextFrame = false;
@@ -63,6 +66,9 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
this.scene.setOrientation(this.orientation, this.flip);
}
}
+ if (changes.mirrorTxid) {
+ this.setMirror(this.mirrorTxid);
+ }
}
ngOnDestroy(): void {
@@ -76,6 +82,7 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
this.exit(direction);
this.hoverTx = null;
this.selectedTx = null;
+ this.onTxHover(null);
this.start();
}
@@ -301,6 +308,7 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
}
this.hoverTx = null;
this.selectedTx = null;
+ this.onTxHover(null);
}
}
@@ -352,17 +360,20 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
this.selectedTx = selected;
} else {
this.hoverTx = selected;
+ this.onTxHover(this.hoverTx ? this.hoverTx.txid : null);
}
} else {
if (clicked) {
this.selectedTx = null;
}
this.hoverTx = null;
+ this.onTxHover(null);
}
} else if (clicked) {
if (selected === this.selectedTx) {
this.hoverTx = this.selectedTx;
this.selectedTx = null;
+ this.onTxHover(this.hoverTx ? this.hoverTx.txid : null);
} else {
this.selectedTx = selected;
}
@@ -370,6 +381,18 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
}
}
+ setMirror(txid: string | void) {
+ if (this.mirrorTx) {
+ this.scene.setHover(this.mirrorTx, false);
+ this.start();
+ }
+ if (txid && this.scene.txs[txid]) {
+ this.mirrorTx = this.scene.txs[txid];
+ this.scene.setHover(this.mirrorTx, true);
+ this.start();
+ }
+ }
+
onTxClick(cssX: number, cssY: number) {
const x = cssX * window.devicePixelRatio;
const y = cssY * window.devicePixelRatio;
@@ -378,6 +401,10 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
this.txClickEvent.emit(selected);
}
}
+
+ onTxHover(hoverId: string) {
+ this.txHoverEvent.emit(hoverId);
+ }
}
// WebGL shader attributes
diff --git a/frontend/src/app/components/block-overview-graph/tx-view.ts b/frontend/src/app/components/block-overview-graph/tx-view.ts
index ac2a4655a..f07d96eb0 100644
--- a/frontend/src/app/components/block-overview-graph/tx-view.ts
+++ b/frontend/src/app/components/block-overview-graph/tx-view.ts
@@ -12,8 +12,8 @@ const auditFeeColors = feeColors.map((color) => desaturate(color, 0.3));
const auditColors = {
censored: hexToColor('f344df'),
missing: darken(desaturate(hexToColor('f344df'), 0.3), 0.7),
- added: hexToColor('03E1E5'),
- selected: darken(desaturate(hexToColor('039BE5'), 0.3), 0.7),
+ added: hexToColor('0099ff'),
+ selected: darken(desaturate(hexToColor('0099ff'), 0.3), 0.7),
}
// convert from this class's update format to TxSprite's update format
diff --git a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.html b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.html
index b19b67b06..8c1002025 100644
--- a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.html
+++ b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.html
@@ -37,9 +37,9 @@
match |
removed |
- missing |
+ omitted |
added |
- included |
+ extra |