From 0928d64e1e51d77aaad63658d03ae01e88ad023f Mon Sep 17 00:00:00 2001 From: natsoni Date: Fri, 27 Sep 2024 18:51:08 +0200 Subject: [PATCH] Fix timeline tooltip on mobile --- ...cceleration-timeline-tooltip.component.html | 11 +++++------ .../acceleration-timeline-tooltip.component.ts | 14 +++++++++++++- .../acceleration-timeline.component.html | 15 ++++++--------- .../acceleration-timeline.component.ts | 18 +++++++++++++----- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.html b/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.html index 0f436f9ac..a3dd87b19 100644 --- a/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.html +++ b/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.html @@ -1,11 +1,11 @@
- +
@@ -52,8 +52,7 @@ class="pool-logo" [style.opacity]="accelerationInfo?.minedByPoolUniqueId && pool !== accelerationInfo?.minedByPoolUniqueId ? '0.3' : '1'" [src]="'/resources/mining-pools/' + accelerationInfo.poolsData[pool].slug + '.svg'" - onError="this.src = '/resources/mining-pools/default.svg'" - [alt]="'Logo of ' + pool.name + ' mining pool'"> + onError="this.src = '/resources/mining-pools/default.svg'">
diff --git a/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.ts b/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.ts index b4b3405fc..7cb9b8bc0 100644 --- a/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.ts +++ b/frontend/src/app/components/acceleration-timeline/acceleration-timeline-tooltip.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, ViewChild, Input, OnChanges } from '@angular/core'; +import { Component, ElementRef, ViewChild, Input, OnChanges, HostListener } from '@angular/core'; @Component({ selector: 'app-acceleration-timeline-tooltip', @@ -10,6 +10,7 @@ export class AccelerationTimelineTooltipComponent implements OnChanges { @Input() cursorPosition: { x: number, y: number }; tooltipPosition: any = null; + yScroll = window.scrollY; @ViewChild('tooltip') tooltipElement: ElementRef; @@ -21,6 +22,9 @@ export class AccelerationTimelineTooltipComponent implements OnChanges { let y = changes.cursorPosition.currentValue.y + 20; if (this.tooltipElement) { const elementBounds = this.tooltipElement.nativeElement.getBoundingClientRect(); + if (this.accelerationInfo?.status !== 'seen') { + elementBounds.width = 370; // ugly hack to handle varying width due to pools logo loading + } if ((x + elementBounds.width) > (window.innerWidth - 10)) { x = Math.max(0, window.innerWidth - elementBounds.width - 10); } @@ -35,4 +39,12 @@ export class AccelerationTimelineTooltipComponent implements OnChanges { hasPoolsData(): boolean { return Object.keys(this.accelerationInfo.poolsData).length > 0; } + + @HostListener('window:scroll', ['$event']) + onWindowScroll(): void { + if (this.tooltipPosition) { + this.tooltipPosition.y = this.tooltipPosition.y - (window.scrollY - this.yScroll); + } + this.yScroll = window.scrollY; + } } diff --git a/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.html b/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.html index ba0d44884..935a4ce90 100644 --- a/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.html +++ b/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.html @@ -58,8 +58,8 @@
-
-
+
+
First seen
@@ -80,8 +80,8 @@ } @else {
} -
-
+
+
@if (!tx.status.confirmed) {
} @@ -113,11 +113,8 @@ } @else {
} -
-
+
+
@if (tx.status.confirmed) {
Mined
diff --git a/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.ts b/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.ts index 16fd24c7f..b79a7f20f 100644 --- a/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.ts +++ b/frontend/src/app/components/acceleration-timeline/acceleration-timeline.component.ts @@ -74,6 +74,7 @@ export class AccelerationTimelineComponent implements OnInit, OnChanges { } onHover(event, status: string): void { + this.tooltipPosition = { x: event.clientX, y: event.clientY }; if (status === 'seen') { this.hoverInfo = { status, @@ -102,12 +103,19 @@ export class AccelerationTimelineComponent implements OnInit, OnChanges { } } - onBlur(event): void { - this.hoverInfo = null; - } - @HostListener('pointermove', ['$event']) onPointerMove(event) { - this.tooltipPosition = { x: event.clientX, y: event.clientY }; + if (event.target.id === 'step') { + this.tooltipPosition = { x: event.clientX, y: event.clientY }; + } else { + this.hoverInfo = null; + } + } + + @HostListener('document:click', ['$event']) + clickAway(event) { + if (event.target.id !== 'step') { + this.hoverInfo = null; + } } }
Status