From a91a8d2a4bfc1cdc35d4ee370afee770060a523a Mon Sep 17 00:00:00 2001 From: Mononaut Date: Sun, 2 Apr 2023 07:40:05 +0900 Subject: [PATCH 1/2] Key modifiers to open tx in new tab from visualization --- .../block-overview-graph.component.ts | 10 ++++++---- frontend/src/app/components/block/block.component.ts | 10 +++++++--- .../mempool-block-overview.component.ts | 10 +++++++--- 3 files changed, 20 insertions(+), 10 deletions(-) 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 b77792aee..3f82d63eb 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 @@ -23,7 +23,7 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On @Input() unavailable: boolean = false; @Input() auditHighlighting: boolean = false; @Input() blockConversion: Price; - @Output() txClickEvent = new EventEmitter(); + @Output() txClickEvent = new EventEmitter<{ tx: TransactionStripped, keyModifier: boolean}>(); @Output() txHoverEvent = new EventEmitter(); @Output() readyEvent = new EventEmitter(); @@ -326,7 +326,9 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On if (event.target === this.canvas.nativeElement && event.pointerType === 'touch') { this.setPreviewTx(event.offsetX, event.offsetY, true); } else if (event.target === this.canvas.nativeElement) { - this.onTxClick(event.offsetX, event.offsetY); + const keyMod = event.shiftKey || event.ctrlKey || event.metaKey; + const middleClick = event.which === 2 || event.button === 1; + this.onTxClick(event.offsetX, event.offsetY, keyMod || middleClick); } } @@ -409,12 +411,12 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On } } - onTxClick(cssX: number, cssY: number) { + onTxClick(cssX: number, cssY: number, keyModifier: boolean = false) { const x = cssX * window.devicePixelRatio; const y = cssY * window.devicePixelRatio; const selected = this.scene.getTxAt({ x, y }); if (selected && selected.txid) { - this.txClickEvent.emit(selected); + this.txClickEvent.emit({ tx: selected, keyModifier }); } } diff --git a/frontend/src/app/components/block/block.component.ts b/frontend/src/app/components/block/block.component.ts index f5a0c93b0..a11be9ad2 100644 --- a/frontend/src/app/components/block/block.component.ts +++ b/frontend/src/app/components/block/block.component.ts @@ -612,9 +612,13 @@ export class BlockComponent implements OnInit, OnDestroy { }); } - onTxClick(event: TransactionStripped): void { - const url = new RelativeUrlPipe(this.stateService).transform(`/tx/${event.txid}`); - this.router.navigate([url]); + onTxClick(event: { tx: TransactionStripped, keyModifier: boolean }): void { + const url = new RelativeUrlPipe(this.stateService).transform(`/tx/${event.tx.txid}`); + if (!event.keyModifier) { + this.router.navigate([url]); + } else { + window.open(url, '_blank'); + } } onTxHover(txid: string): void { diff --git a/frontend/src/app/components/mempool-block-overview/mempool-block-overview.component.ts b/frontend/src/app/components/mempool-block-overview/mempool-block-overview.component.ts index 7a39e3536..ed9f4ef75 100644 --- a/frontend/src/app/components/mempool-block-overview/mempool-block-overview.component.ts +++ b/frontend/src/app/components/mempool-block-overview/mempool-block-overview.component.ts @@ -107,8 +107,12 @@ export class MempoolBlockOverviewComponent implements OnInit, OnDestroy, OnChang this.isLoading$.next(false); } - onTxClick(event: TransactionStripped): void { - const url = new RelativeUrlPipe(this.stateService).transform(`/tx/${event.txid}`); - this.router.navigate([url]); + onTxClick(event: { tx: TransactionStripped, keyModifier: boolean }): void { + const url = new RelativeUrlPipe(this.stateService).transform(`/tx/${event.tx.txid}`); + if (!event.keyModifier) { + this.router.navigate([url]); + } else { + window.open(url, '_blank'); + } } } From 38e4832b6a430133c96ab5bb4f035951051630a6 Mon Sep 17 00:00:00 2001 From: softsimon Date: Mon, 3 Apr 2023 20:02:39 +0900 Subject: [PATCH 2/2] Restoring missing tx index attribute for cypress --- .../transactions-list/transactions-list.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/components/transactions-list/transactions-list.component.html b/frontend/src/app/components/transactions-list/transactions-list.component.html index adadf0a1c..71eeb4aa1 100644 --- a/frontend/src/app/components/transactions-list/transactions-list.component.html +++ b/frontend/src/app/components/transactions-list/transactions-list.component.html @@ -13,7 +13,7 @@ -
+
{{ errorUnblinded }}