2023-02-13 16:57:39 -08:00
|
|
|
<div class="blocks-container blockchain-blocks-container" [class.time-ltr]="timeLtr"
|
|
|
|
[style.left]="static ? (offset || 0) + 'px' : null"
|
|
|
|
*ngIf="(loadingBlocks$ | async) === false; else loadingBlocksTemplate">
|
2022-12-27 11:33:08 -06:00
|
|
|
<div *ngFor="let block of blocks; let i = index; trackBy: trackByBlocksFn">
|
|
|
|
<ng-container *ngIf="block && !block.loading && !block.placeholder; else placeholderBlock">
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-offset-' + offset + '-index-' + i"
|
|
|
|
class="text-center bitcoin-block mined-block blockchain-blocks-offset-{{ offset }}-index-{{ i }}"
|
|
|
|
id="bitcoin-block-{{ block.height }}" [ngStyle]="blockStyles[i]"
|
|
|
|
[class.blink-bg]="(specialBlocks[block.height] !== undefined)">
|
2022-12-27 05:28:57 -06:00
|
|
|
<a draggable="false" [routerLink]="['/block/' | relativeUrl, block.id]" [state]="{ data: { block: block } }"
|
|
|
|
class="blockLink" [ngClass]="{'disabled': (this.stateService.blockScrolling$ | async)}"> </a>
|
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + i + '-height'" class="block-height">
|
2023-02-13 16:57:39 -08:00
|
|
|
<a [routerLink]="['/block/' | relativeUrl, block.id]" [state]="{ data: { block: block } }">{{ block.height
|
|
|
|
}}</a>
|
2020-07-20 11:03:53 +07:00
|
|
|
</div>
|
2022-12-27 05:28:57 -06:00
|
|
|
<div class="block-body">
|
2023-02-21 18:09:41 +09:00
|
|
|
<div *ngIf="block?.extras; else emptyfees" [attr.data-cy]="'bitcoin-block-offset=' + offset + '-index-' + i + '-fees'" class="fees">
|
2023-02-13 16:57:39 -08:00
|
|
|
~{{ block?.extras?.medianFee | number:feeRounding }} <ng-container
|
|
|
|
i18n="shared.sat-vbyte|sat/vB">sat/vB</ng-container>
|
2022-12-27 05:28:57 -06:00
|
|
|
</div>
|
2023-02-21 18:09:41 +09:00
|
|
|
<ng-template #emptyfees>
|
|
|
|
<div [attr.data-cy]="'bitcoin-block-offset=' + offset + '-index-' + i + '-fees'" class="fees">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</ng-template>
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-fee-span'" class="fee-span"
|
2023-02-21 18:09:41 +09:00
|
|
|
*ngIf="block?.extras?.feeRange; else emptyfeespan">
|
2023-02-13 16:57:39 -08:00
|
|
|
{{ block?.extras?.feeRange?.[1] | number:feeRounding }} - {{
|
|
|
|
block?.extras?.feeRange[block?.extras?.feeRange?.length - 1] | number:feeRounding }} <ng-container
|
|
|
|
i18n="shared.sat-vbyte|sat/vB">sat/vB</ng-container>
|
2022-12-27 11:33:08 -06:00
|
|
|
</div>
|
2023-02-21 18:09:41 +09:00
|
|
|
<ng-template #emptyfeespan>
|
|
|
|
<div [attr.data-cy]="'bitcoin-block-offset=' + offset + '-index-' + i + '-fees'" class="fee-span">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</ng-template>
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-total-fees'" *ngIf="showMiningInfo"
|
|
|
|
class="block-size">
|
2022-12-27 05:28:57 -06:00
|
|
|
<app-amount [satoshis]="block.extras?.totalFees ?? 0" digitsInfo="1.2-3" [noFiat]="true"></app-amount>
|
|
|
|
</div>
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + 'block-size'" *ngIf="!showMiningInfo"
|
|
|
|
class="block-size" [innerHTML]="'‎' + (block.size | bytes: 2)"></div>
|
2022-12-27 05:28:57 -06:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + i + '-transactions'" class="transaction-count">
|
2023-02-13 16:57:39 -08:00
|
|
|
<ng-container
|
|
|
|
*ngTemplateOutlet="block.tx_count === 1 ? transactionsSingular : transactionsPlural; context: {$implicit: block.tx_count | number}"></ng-container>
|
|
|
|
<ng-template #transactionsSingular let-i i18n="shared.transaction-count.singular">{{ i }}
|
|
|
|
transaction</ng-template>
|
|
|
|
<ng-template #transactionsPlural let-i i18n="shared.transaction-count.plural">{{ i }}
|
|
|
|
transactions</ng-template>
|
2022-12-27 05:28:57 -06:00
|
|
|
</div>
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-time'" class="time-difference">
|
|
|
|
<app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since></div>
|
2022-02-22 11:16:18 +09:00
|
|
|
</div>
|
2022-12-27 05:28:57 -06:00
|
|
|
<div class="animated" [class]="showMiningInfo ? 'show' : 'hide'" *ngIf="block.extras?.pool != undefined">
|
2023-02-13 16:57:39 -08:00
|
|
|
<a [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-pool'" class="badge badge-primary"
|
|
|
|
[routerLink]="[('/mining/pool/' + block.extras.pool.slug) | relativeUrl]">
|
2022-12-27 05:28:57 -06:00
|
|
|
{{ block.extras.pool.name}}</a>
|
2020-12-06 23:44:08 +07:00
|
|
|
</div>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
2022-12-27 05:28:57 -06:00
|
|
|
</ng-container>
|
2022-12-27 11:33:08 -06:00
|
|
|
<ng-template #placeholderBlock>
|
|
|
|
<ng-container *ngIf="block && block.placeholder; else loadingBlock">
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i"
|
|
|
|
class="text-center bitcoin-block mined-block placeholder-block blockchain-blocks-{{ i }}"
|
|
|
|
id="bitcoin-block-{{ block.height }}" [ngStyle]="blockStyles[i]">
|
|
|
|
|
2022-12-27 05:28:57 -06:00
|
|
|
</div>
|
2022-12-27 11:33:08 -06:00
|
|
|
</ng-container>
|
|
|
|
</ng-template>
|
|
|
|
<ng-template #loadingBlock>
|
|
|
|
<ng-container *ngIf="block && block.loading">
|
|
|
|
<div class="flashing">
|
2023-02-13 16:57:39 -08:00
|
|
|
<div class="text-center bitcoin-block mined-block" id="bitcoin-block-{{ block.height }}"
|
|
|
|
[ngStyle]="blockStyles[i]"></div>
|
2022-12-27 05:28:57 -06:00
|
|
|
</div>
|
2022-12-27 11:33:08 -06:00
|
|
|
</ng-container>
|
2022-12-27 05:28:57 -06:00
|
|
|
</ng-template>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
2023-02-13 16:57:39 -08:00
|
|
|
<div [hidden]="!arrowVisible" id="arrow-up" [style.transition]="arrowTransition"
|
|
|
|
[ngStyle]="{'left': arrowLeftPx + 'px' }"></div>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
2021-07-10 10:04:15 -03:00
|
|
|
|
2021-11-12 20:24:15 +04:00
|
|
|
<ng-template #loadingBlocksTemplate>
|
2022-09-29 22:45:40 +00:00
|
|
|
<div class="blocks-container" [class.time-ltr]="timeLtr">
|
2021-08-06 08:09:47 -03:00
|
|
|
<div class="flashing">
|
2023-02-13 16:57:39 -08:00
|
|
|
<div *ngFor="let block of emptyBlocks; let i = index; trackBy: trackByBlocksFn">
|
|
|
|
<div class="text-center bitcoin-block mined-block" id="bitcoin-block-{{ block.height }}"
|
|
|
|
[ngStyle]="emptyBlockStyles[i]"></div>
|
2021-08-06 08:09:47 -03:00
|
|
|
</div>
|
2021-07-10 10:04:15 -03:00
|
|
|
</div>
|
|
|
|
</div>
|
2021-08-06 08:09:47 -03:00
|
|
|
</ng-template>
|