24">
diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts
index 01090f8fe..be6460167 100644
--- a/frontend/src/app/components/transaction/transaction.component.ts
+++ b/frontend/src/app/components/transaction/transaction.component.ts
@@ -49,7 +49,9 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
outputIndex: number;
graphExpanded: boolean = false;
graphWidth: number = 1000;
+ graphHeight: number = 360;
maxInOut: number = 0;
+ tooltipPosition: { x: number, y: number };
@ViewChild('graphContainer')
graphContainer: ElementRef;
@@ -296,7 +298,8 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
}
setupGraph() {
- this.maxInOut = Math.min(250, Math.max(this.tx?.vin?.length || 1, this.tx?.vout?.length || 1));
+ this.maxInOut = Math.min(250, Math.max(this.tx?.vin?.length || 1, this.tx?.vout?.length + 1 || 1));
+ this.graphHeight = Math.min(360, this.maxInOut * 80);
}
expandGraph() {
@@ -309,7 +312,6 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
@HostListener('window:resize', ['$event'])
setGraphSize(): void {
- console.log('resize', this.graphContainer);
if (this.graphContainer) {
this.graphWidth = this.graphContainer.nativeElement.clientWidth - 24;
}
diff --git a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html
new file mode 100644
index 000000000..d98007ae6
--- /dev/null
+++ b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html
@@ -0,0 +1,33 @@
+
diff --git a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.scss b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.scss
new file mode 100644
index 000000000..d0551f2c8
--- /dev/null
+++ b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.scss
@@ -0,0 +1,38 @@
+.bowtie-graph-tooltip {
+ position: absolute;
+ background: rgba(#11131f, 0.95);
+ border-radius: 4px;
+ box-shadow: 1px 1px 10px rgba(0,0,0,0.5);
+ color: #b1b1b1;
+ padding: 10px 15px;
+ text-align: left;
+ pointer-events: none;
+ max-width: 300px;
+
+ p {
+ margin: 0;
+ white-space: nowrap;
+ }
+
+ .address {
+ width: 100%;
+ max-width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: baseline;
+ justify-content: flex-start;
+
+ .first {
+ flex-grow: 0;
+ flex-shrink: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin-right: -2px;
+ }
+
+ .last-four {
+ flex-shrink: 0;
+ flex-grow: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts
new file mode 100644
index 000000000..ab964e89a
--- /dev/null
+++ b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts
@@ -0,0 +1,36 @@
+import { Component, ElementRef, ViewChild, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';
+import { TransactionStripped } from 'src/app/interfaces/websocket.interface';
+
+@Component({
+ selector: 'app-tx-bowtie-graph-tooltip',
+ templateUrl: './tx-bowtie-graph-tooltip.component.html',
+ styleUrls: ['./tx-bowtie-graph-tooltip.component.scss'],
+})
+export class TxBowtieGraphTooltipComponent implements OnChanges {
+ @Input() line: { type: string, value?: number, index?: number, address?: string, rest?: number } | void;
+ @Input() cursorPosition: { x: number, y: number };
+
+ tooltipPosition = { x: 0, y: 0 };
+
+ @ViewChild('tooltip') tooltipElement: ElementRef
;
+
+ constructor() {}
+
+ ngOnChanges(changes): void {
+ if (changes.cursorPosition && changes.cursorPosition.currentValue) {
+ let x = Math.max(10, changes.cursorPosition.currentValue.x - 50);
+ let y = changes.cursorPosition.currentValue.y + 20;
+ if (this.tooltipElement) {
+ const elementBounds = this.tooltipElement.nativeElement.getBoundingClientRect();
+ const parentBounds = this.tooltipElement.nativeElement.offsetParent.getBoundingClientRect();
+ if ((parentBounds.left + x + elementBounds.width) > parentBounds.right) {
+ x = Math.max(0, parentBounds.width - elementBounds.width - 10);
+ }
+ if (y + elementBounds.height > parentBounds.height) {
+ y = y - elementBounds.height - 20;
+ }
+ }
+ this.tooltipPosition = { x, y };
+ }
+ }
+}
diff --git a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.html b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.html
index c4771c58c..03056cd53 100644
--- a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.html
+++ b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.html
@@ -1,44 +1,82 @@
-