Display halving countdown with double units

This commit is contained in:
Mononaut
2024-01-27 19:11:43 +00:00
parent 057abbb6c1
commit 87910a6eb7
4 changed files with 126 additions and 1479 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -50,16 +50,12 @@
<h5 class="card-title" i18n="difficulty-box.next-halving">Next Halving</h5>
<div class="card-text" i18n-ngbTooltip="mining.average-fee" [ngbTooltip]="halvingBlocksLeft" [tooltipContext]="{ epochData: epochData }" placement="bottom">
<span>{{ timeUntilHalving | date }}</span>
<div class="symbol" *ngIf="!countdownObject; else countdownValid">
<div class="symbol" *ngIf="blocksUntilHalving === 1; else approxTime">
<app-time kind="until" [time]="epochData.timeAvg + now" [fastRender]="false" [fixedRender]="true" [precision]="1" minUnit="minute"></app-time>
</div>
<ng-template #countdownValid>
<ng-template #approxTime>
<div class="symbol">
<span>In </span>
<span *ngIf="countdownObject.years">{{ countdownObject.years }} years </span>
<span *ngIf="countdownObject.months">{{ countdownObject.months }} months </span>
<span *ngIf="countdownObject.days">{{ countdownObject.days }} days </span>
<span *ngIf="countdownObject.hours">{{ countdownObject.hours }} hours</span>
<app-time kind="until" [time]="timeUntilHalving" [fastRender]="false" [fixedRender]="true" [precision]="0" [numUnits]="2" [units]="['year', 'day', 'hour', 'minute']"></app-time>
</div>
</ng-template>
</div>

View File

@@ -2,7 +2,6 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core
import { combineLatest, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { StateService } from '../../services/state.service';
const countdown = require('./countdown');
interface EpochProgress {
base: string;
@@ -28,7 +27,7 @@ interface EpochProgress {
export class DifficultyMiningComponent implements OnInit {
isLoadingWebSocket$: Observable<boolean>;
difficultyEpoch$: Observable<EpochProgress>;
countdownObject = null;
blocksUntilHalving: number | null = null;
timeUntilHalving = 0;
now = new Date().getTime();
@@ -69,21 +68,9 @@ export class DifficultyMiningComponent implements OnInit {
colorPreviousAdjustments = '#ffffff66';
}
const blocksUntilHalving = 210000 - (maxHeight % 210000);
this.timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 600000);
this.blocksUntilHalving = 210000 - (maxHeight % 210000);
this.timeUntilHalving = new Date().getTime() + (this.blocksUntilHalving * 600000);
this.now = new Date().getTime();
if (blocksUntilHalving - 1 === 0) {
this.countdownObject = null;
} else {
this.countdownObject = countdown(this.timeUntilHalving, new Date().getTime(), countdown.YEARS | countdown.MONTHS);
if (this.countdownObject.years === 0) {
this.countdownObject = countdown(this.timeUntilHalving, new Date().getTime(), countdown.DAYS | countdown.HOURS);
}
if (this.countdownObject.hours === 0) {
this.countdownObject = countdown(this.timeUntilHalving, new Date().getTime(), countdown.MINUTES);
}
}
const data = {
base: `${da.progressPercent.toFixed(2)}%`,
@@ -95,7 +82,7 @@ export class DifficultyMiningComponent implements OnInit {
newDifficultyHeight: da.nextRetargetHeight,
estimatedRetargetDate: da.estimatedRetargetDate,
previousRetarget: da.previousRetarget,
blocksUntilHalving,
blocksUntilHalving: this.blocksUntilHalving,
timeUntilHalving: this.timeUntilHalving,
timeAvg: da.timeAvg,
};