Show all difficulty adjustment in a table - Need pagination
This commit is contained in:
parent
7270b1ccac
commit
9fa7e58d82
@ -232,7 +232,7 @@ class BlocksRepository {
|
|||||||
|
|
||||||
const connection = await DB.pool.getConnection();
|
const connection = await DB.pool.getConnection();
|
||||||
|
|
||||||
let query = `SELECT MIN(blockTimestamp) as timestamp, difficulty
|
let query = `SELECT MIN(blockTimestamp) as timestamp, difficulty, height
|
||||||
FROM blocks`;
|
FROM blocks`;
|
||||||
|
|
||||||
if (interval) {
|
if (interval) {
|
||||||
|
@ -5,4 +5,23 @@
|
|||||||
<div class="spinner-border text-light"></div>
|
<div class="spinner-border text-light"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<table class="table table-borderless table-sm text-center">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th i18n="mining.rank">Block</th>
|
||||||
|
<th i18n="block.timestamp">Timestamp</th>
|
||||||
|
<th i18n="mining.difficulty">Difficulty</th>
|
||||||
|
<th i18n="mining.change">Change</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody *ngIf="(difficultyObservable$ | async) as diffChange">
|
||||||
|
<tr *ngFor="let change of diffChange">
|
||||||
|
<td><a [routerLink]="['/block' | relativeUrl, change[2]]">{{ change[2] }}</a></td>
|
||||||
|
<td>‎{{ change[0] | date:'yyyy-MM-dd HH:mm' }}</td>
|
||||||
|
<td>{{ formatNumber(change[1], locale, '1.2-2') }}</td>
|
||||||
|
<td [style]="change[3] >= 0 ? 'color: #42B747' : 'color: #B74242'">{{ formatNumber(change[3], locale, '1.2-2') }}%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';
|
||||||
import { EChartsOption } from 'echarts';
|
import { EChartsOption } from 'echarts';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { map, tap } from 'rxjs/operators';
|
import { map, share, tap } from 'rxjs/operators';
|
||||||
import { ApiService } from 'src/app/services/api.service';
|
import { ApiService } from 'src/app/services/api.service';
|
||||||
import { SeoService } from 'src/app/services/seo.service';
|
import { SeoService } from 'src/app/services/seo.service';
|
||||||
|
import { formatNumber } from "@angular/common";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-difficulty-chart',
|
selector: 'app-difficulty-chart',
|
||||||
@ -26,8 +27,10 @@ export class DifficultyChartComponent implements OnInit {
|
|||||||
|
|
||||||
difficultyObservable$: Observable<any>;
|
difficultyObservable$: Observable<any>;
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
|
formatNumber = formatNumber;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
@Inject(LOCALE_ID) public locale: string,
|
||||||
private seoService: SeoService,
|
private seoService: SeoService,
|
||||||
private apiService: ApiService,
|
private apiService: ApiService,
|
||||||
) {
|
) {
|
||||||
@ -38,12 +41,25 @@ export class DifficultyChartComponent implements OnInit {
|
|||||||
this.difficultyObservable$ = this.apiService.getHistoricalDifficulty$(undefined)
|
this.difficultyObservable$ = this.apiService.getHistoricalDifficulty$(undefined)
|
||||||
.pipe(
|
.pipe(
|
||||||
map(data => {
|
map(data => {
|
||||||
return data.map(val => [val.timestamp, val.difficulty])
|
let formatted = [];
|
||||||
|
for (let i = 0; i < data.length - 1; ++i) {
|
||||||
|
const change = (data[i].difficulty / data[i + 1].difficulty - 1) * 100;
|
||||||
|
formatted.push([
|
||||||
|
data[i].timestamp,
|
||||||
|
data[i].difficulty,
|
||||||
|
data[i].height,
|
||||||
|
formatNumber(change, this.locale, '1.2-2'),
|
||||||
|
change,
|
||||||
|
formatNumber(data[i].difficulty, this.locale, '1.2-2'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
return formatted;
|
||||||
}),
|
}),
|
||||||
tap(data => {
|
tap(data => {
|
||||||
this.prepareChartOptions(data);
|
this.prepareChartOptions(data);
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
})
|
}),
|
||||||
|
share()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table class="table table-borderless text-center pools-table" [alwaysCallback]="true" infiniteScroll [infiniteScrollDistance]="1.5" [infiniteScrollUpDistance]="1.5" [infiniteScrollThrottle]="50">
|
<table class="table table-borderless text-center pools-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="d-none d-md-block" i18n="mining.rank">Rank</th>
|
<th class="d-none d-md-block" i18n="mining.rank">Rank</th>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user