Add previous adjustment retarget. (#655)
* Add previous adjustment retarget. * Fix green color. Add + symbol to difficulty change. * Add previousRetarget to websocket. * Add previous retarget.
This commit is contained in:
		
							parent
							
								
									f6a889298c
								
							
						
					
					
						commit
						cd8e308870
					
				@ -215,8 +215,8 @@
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item">
 | 
			
		||||
            <h5 class="card-title" i18n="difficulty-box.estimate">Estimate</h5>
 | 
			
		||||
            <div class="card-text" [ngStyle]="{'color': epochData.colorAdjustments}">{{ epochData.change | number: '1.2-2' }} <span class="symbol">%</span></div>
 | 
			
		||||
            <div class="symbol" i18n="difficulty-box.mins-per-block">~{{ epochData.timeAvg }} mins per block</div>
 | 
			
		||||
            <div class="card-text" [ngStyle]="{'color': epochData.colorAdjustments}">{{epochData.change > 0 ? '+' : ''}}{{ epochData.change | number: '1.2-2' }} <span class="symbol">%</span></div>
 | 
			
		||||
            <div class="symbol"><span i18n="difficulty-box.previous">Previous</span>: {{epochData.previousRetarget > 0 ? '+' : ''}}{{ epochData.previousRetarget | number: '1.2-2' }} %</div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item">
 | 
			
		||||
            <h5 class="card-title" i18n="difficulty-box.current-period">Current Period</h5>
 | 
			
		||||
 | 
			
		||||
@ -19,8 +19,6 @@ interface MempoolBlocksData {
 | 
			
		||||
 | 
			
		||||
interface EpochProgress {
 | 
			
		||||
  base: string;
 | 
			
		||||
  green: string;
 | 
			
		||||
  red: string;
 | 
			
		||||
  change: number;
 | 
			
		||||
  progress: string;
 | 
			
		||||
  remainingBlocks: number;
 | 
			
		||||
@ -28,6 +26,7 @@ interface EpochProgress {
 | 
			
		||||
  colorAdjustments: string;
 | 
			
		||||
  timeAvg: string;
 | 
			
		||||
  remainingTime: number;
 | 
			
		||||
  previousRetarget: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface MempoolInfoData {
 | 
			
		||||
@ -118,9 +117,10 @@ export class DashboardComponent implements OnInit {
 | 
			
		||||
      .pipe(
 | 
			
		||||
        switchMap(() => combineLatest([
 | 
			
		||||
          this.stateService.blocks$.pipe(map(([block]) => block)),
 | 
			
		||||
          this.stateService.lastDifficultyAdjustment$
 | 
			
		||||
          this.stateService.lastDifficultyAdjustment$,
 | 
			
		||||
          this.stateService.previousRetarget$
 | 
			
		||||
        ])),
 | 
			
		||||
        map(([block, DATime]) => {
 | 
			
		||||
        map(([block, DATime, previousRetarget]) => {
 | 
			
		||||
          const now = new Date().getTime() / 1000;
 | 
			
		||||
          const diff = now - DATime;
 | 
			
		||||
          const blocksInEpoch = block.height % 2016;
 | 
			
		||||
@ -131,15 +131,11 @@ export class DashboardComponent implements OnInit {
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          let base = 0;
 | 
			
		||||
          let green = 0;
 | 
			
		||||
          let red = 0;
 | 
			
		||||
 | 
			
		||||
          if (blocksInEpoch >= estimatedBlocks) {
 | 
			
		||||
            base = estimatedBlocks / 2016 * 100;
 | 
			
		||||
            green = (blocksInEpoch - estimatedBlocks) / 2016 * 100;
 | 
			
		||||
          } else {
 | 
			
		||||
            base = blocksInEpoch / 2016 * 100;
 | 
			
		||||
            red = Math.min((estimatedBlocks - blocksInEpoch) / 2016 * 100, 100 - base);
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          let colorAdjustments = '#dc3545';
 | 
			
		||||
@ -162,8 +158,6 @@ export class DashboardComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
          return {
 | 
			
		||||
            base: base + '%',
 | 
			
		||||
            green: green + '%',
 | 
			
		||||
            red: red + '%',
 | 
			
		||||
            change: difficultyChange,
 | 
			
		||||
            progress: base.toFixed(2),
 | 
			
		||||
            remainingBlocks,
 | 
			
		||||
@ -171,11 +165,13 @@ export class DashboardComponent implements OnInit {
 | 
			
		||||
            colorAdjustments,
 | 
			
		||||
            blocksInEpoch,
 | 
			
		||||
            newDifficultyHeight: block.height + remainingBlocks,
 | 
			
		||||
            remainingTime: remainingBlocsMilliseconds + nowMilliseconds
 | 
			
		||||
            remainingTime: remainingBlocsMilliseconds + nowMilliseconds,
 | 
			
		||||
            previousRetarget
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    this.mempoolBlocksData$ = this.stateService.mempoolBlocks$
 | 
			
		||||
      .pipe(
 | 
			
		||||
        map((mempoolBlocks) => {
 | 
			
		||||
 | 
			
		||||
@ -25,3 +25,12 @@ export interface CpfpInfo {
 | 
			
		||||
  ancestors: Ancestor[];
 | 
			
		||||
  bestDescendant: BestDescendant | null;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface DifficultyAdjustment {
 | 
			
		||||
  difficultyChange: number;
 | 
			
		||||
  estimatedRetargetDate: number;
 | 
			
		||||
  previousRetarget: number;
 | 
			
		||||
  progressPercent: number;
 | 
			
		||||
  remainingBlocks: number;
 | 
			
		||||
  remainingTime: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
import { Injectable } from '@angular/core';
 | 
			
		||||
import { HttpClient, HttpParams } from '@angular/common/http';
 | 
			
		||||
import { CpfpInfo, OptimizedMempoolStats } from '../interfaces/node-api.interface';
 | 
			
		||||
import { CpfpInfo, OptimizedMempoolStats, DifficultyAdjustment } from '../interfaces/node-api.interface';
 | 
			
		||||
import { Observable } from 'rxjs';
 | 
			
		||||
import { StateService } from './state.service';
 | 
			
		||||
import { WebsocketResponse } from '../interfaces/websocket.interface';
 | 
			
		||||
@ -92,4 +92,8 @@ export class ApiService {
 | 
			
		||||
  getCpfpinfo$(txid: string): Observable<CpfpInfo> {
 | 
			
		||||
    return this.httpClient.get<CpfpInfo>(this.apiBaseUrl + this.apiBasePath + '/api/v1/cpfp/' + txid);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getDifficultyAdjustment$(): Observable<DifficultyAdjustment> {
 | 
			
		||||
    return this.httpClient.get<DifficultyAdjustment>(this.apiBaseUrl + this.apiBasePath + '/api/v1/difficulty-adjustment');
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -71,6 +71,7 @@ export class StateService {
 | 
			
		||||
  isLoadingWebSocket$ = new ReplaySubject<boolean>(1);
 | 
			
		||||
  vbytesPerSecond$ = new ReplaySubject<number>(1);
 | 
			
		||||
  lastDifficultyAdjustment$ = new ReplaySubject<number>(1);
 | 
			
		||||
  previousRetarget$ = new ReplaySubject<number>(1);
 | 
			
		||||
  backendInfo$ = new ReplaySubject<IBackendInfo>(1);
 | 
			
		||||
  loadingIndicators$ = new ReplaySubject<ILoadingIndicators>(1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ export class WebsocketService {
 | 
			
		||||
      this.network = this.stateService.network === 'bisq' && !this.stateService.env.BISQ_SEPARATE_BACKEND ? '' : this.stateService.network;
 | 
			
		||||
      this.websocketSubject = webSocket<WebsocketResponse>(this.webSocketUrl.replace('{network}', this.network ? '/' + this.network : ''));
 | 
			
		||||
 | 
			
		||||
      const theInitData = this.transferState.get(initData, null);
 | 
			
		||||
      const theInitData = this.transferState.get<any>(initData, null);
 | 
			
		||||
      if (theInitData) {
 | 
			
		||||
        this.handleResponse(theInitData.body);
 | 
			
		||||
        this.startSubscription(false, true);
 | 
			
		||||
@ -290,6 +290,10 @@ export class WebsocketService {
 | 
			
		||||
      this.stateService.lastDifficultyAdjustment$.next(response.lastDifficultyAdjustment);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (response.previousRetarget !== undefined) {
 | 
			
		||||
      this.stateService.previousRetarget$.next(response.previousRetarget);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (response['git-commit']) {
 | 
			
		||||
      this.stateService.backendInfo$.next(response['git-commit']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user