Merge pull request #2973 from mempool/mononaut/back-to-tip
Add button to scroll back to tip of blockchain
This commit is contained in:
commit
22cd20bef2
@ -8,12 +8,17 @@
|
|||||||
|
|
||||||
<div *ngIf="countdown > 0" class="warning-label">{{ eventName }} in {{ countdown | number }} block{{ countdown === 1 ? '' : 's' }}!</div>
|
<div *ngIf="countdown > 0" class="warning-label">{{ eventName }} in {{ countdown | number }} block{{ countdown === 1 ? '' : 's' }}!</div>
|
||||||
|
|
||||||
<div id="blockchain-container" [dir]="timeLtr ? 'rtl' : 'ltr'" #blockchainContainer
|
<div class="blockchain-wrapper" [class.time-ltr]="timeLtr" [class.time-rtl]="!timeLtr">
|
||||||
(mousedown)="onMouseDown($event)"
|
<div id="blockchain-container" [dir]="timeLtr ? 'rtl' : 'ltr'" #blockchainContainer
|
||||||
(dragstart)="onDragStart($event)"
|
(mousedown)="onMouseDown($event)"
|
||||||
(scroll)="onScroll($event)"
|
(dragstart)="onDragStart($event)"
|
||||||
>
|
(scroll)="onScroll($event)"
|
||||||
<app-blockchain [pageIndex]="pageIndex" [pages]="pages" [blocksPerPage]="blocksPerPage" [minScrollWidth]="minScrollWidth"></app-blockchain>
|
>
|
||||||
|
<app-blockchain [pageIndex]="pageIndex" [pages]="pages" [blocksPerPage]="blocksPerPage" [minScrollWidth]="minScrollWidth"></app-blockchain>
|
||||||
|
</div>
|
||||||
|
<div class="reset-scroll" [class.hidden]="pageIndex === 0" (click)="resetScroll()">
|
||||||
|
<fa-icon [icon]="['fas', 'circle-left']" [fixedWidth]="true" i18n-title="blocks.return-to-tip" title="Return to tip"></fa-icon>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
|
@ -12,6 +12,43 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.blockchain-wrapper {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.reset-scroll {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
font-size: 50px;
|
||||||
|
z-index: 10;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.8;
|
||||||
|
transition: opacity 500ms;
|
||||||
|
background: radial-gradient(#1d1f31 0%, transparent 50%);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 300ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
cursor: inherit;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: opacity 500ms;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.time-ltr .reset-scroll{
|
||||||
|
right: 10px;
|
||||||
|
transform: translateY(-50%) rotateZ(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.time-rtl .reset-scroll {
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.warning-label {
|
.warning-label {
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -250,6 +250,10 @@ export class StartComponent implements OnInit, OnDestroy {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resetScroll(): void {
|
||||||
|
this.scrollToBlock(this.chainTip);
|
||||||
|
}
|
||||||
|
|
||||||
getPageIndexOf(height: number): number {
|
getPageIndexOf(height: number): number {
|
||||||
const delta = this.chainTip - 8 - height;
|
const delta = this.chainTip - 8 - height;
|
||||||
return Math.max(0, Math.floor(delta / this.blocksPerPage) + 1);
|
return Math.max(0, Math.floor(delta / this.blocksPerPage) + 1);
|
||||||
|
@ -4,7 +4,7 @@ import { NgbCollapseModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstra
|
|||||||
import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
|
import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
|
||||||
import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle,
|
import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle,
|
||||||
faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown,
|
faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown,
|
||||||
faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate } from '@fortawesome/free-solid-svg-icons';
|
faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
||||||
import { MasterPageComponent } from '../components/master-page/master-page.component';
|
import { MasterPageComponent } from '../components/master-page/master-page.component';
|
||||||
import { PreviewTitleComponent } from '../components/master-page-preview/preview-title.component';
|
import { PreviewTitleComponent } from '../components/master-page-preview/preview-title.component';
|
||||||
@ -290,6 +290,7 @@ export class SharedModule {
|
|||||||
library.addIcons(faRedoAlt);
|
library.addIcons(faRedoAlt);
|
||||||
library.addIcons(faArrowAltCircleRight);
|
library.addIcons(faArrowAltCircleRight);
|
||||||
library.addIcons(faArrowsRotate);
|
library.addIcons(faArrowsRotate);
|
||||||
|
library.addIcons(faCircleLeft);
|
||||||
library.addIcons(faExternalLinkAlt);
|
library.addIcons(faExternalLinkAlt);
|
||||||
library.addIcons(faSortUp);
|
library.addIcons(faSortUp);
|
||||||
library.addIcons(faCaretUp);
|
library.addIcons(faCaretUp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user