From a6623a539e2c58560368488d7fd295b131782f70 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Mon, 10 Jul 2023 21:11:25 -0400 Subject: [PATCH] correct hashrate suffix --- src/app/app.module.ts | 4 ++- .../dashboard/dashboard.component.html | 4 +-- .../dashboard/dashboard.component.ts | 5 +++- src/app/components/splash/splash.component.ts | 3 +- .../worker-group/worker-group.component.ts | 3 +- src/app/components/worker/worker.component.ts | 3 +- src/app/pipes/hash-suffix.pipe.spec.ts | 8 +++++ src/app/pipes/hash-suffix.pipe.ts | 30 +++++++++++++++++++ 8 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 src/app/pipes/hash-suffix.pipe.spec.ts create mode 100644 src/app/pipes/hash-suffix.pipe.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d9b4091..1c8fa59 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -17,6 +17,7 @@ import { WorkerComponent } from './components/worker/worker.component'; import { AppLayoutModule } from './layout/app.layout.module'; import { DateAgoPipe } from './pipes/date-ago.pipe'; import { NumberSuffixPipe } from './pipes/number-suffix.pipe'; +import { HashSuffixPipe } from './pipes/hash-suffix.pipe'; @@ -29,7 +30,8 @@ import { NumberSuffixPipe } from './pipes/number-suffix.pipe'; NumberSuffixPipe, DateAgoPipe, WorkerGroupComponent, - BackgroundParticlesComponent + BackgroundParticlesComponent, + HashSuffixPipe ], imports: [ CommonModule, diff --git a/src/app/components/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html index 303889b..362f519 100644 --- a/src/app/components/dashboard/dashboard.component.html +++ b/src/app/components/dashboard/dashboard.component.html @@ -31,7 +31,7 @@ {{getSessionCount(worker.name, clientInfo.workers)}} Sessions - {{getTotalHashRate(worker.name, clientInfo.workers)}} GH/s + {{getTotalHashRate(worker.name, clientInfo.workers) | hashSuffix}} {{getBestDifficulty(worker.name, clientInfo.workers) | numberSuffix}} @@ -47,7 +47,7 @@ {{worker.sessionId}} - {{worker.hashRate}} GH/s + {{worker.hashRate | hashSuffix}} {{worker.bestDifficulty | numberSuffix}} {{worker.startTime | dateAgo}} diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts index 2261b33..495b2f3 100644 --- a/src/app/components/dashboard/dashboard.component.ts +++ b/src/app/components/dashboard/dashboard.component.ts @@ -2,6 +2,7 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { map, Observable, shareReplay } from 'rxjs'; +import { HashSuffixPipe } from '../../pipes/hash-suffix.pipe'; import { ClientService } from '../../services/client.service'; @Component({ @@ -18,6 +19,8 @@ export class DashboardComponent { public chartOptions: any; + + constructor(private clientService: ClientService, private route: ActivatedRoute) { this.address = this.route.snapshot.params['address']; this.clientInfo$ = this.clientService.getClientInfo(this.address).pipe( @@ -108,7 +111,7 @@ export class DashboardComponent { y: { ticks: { color: textColorSecondary, - callback: (value: number) => value + ' GH/s', + callback: (value: number) => HashSuffixPipe.transform(value) }, grid: { color: surfaceBorder, diff --git a/src/app/components/splash/splash.component.ts b/src/app/components/splash/splash.component.ts index b390b3e..8dfa50c 100644 --- a/src/app/components/splash/splash.component.ts +++ b/src/app/components/splash/splash.component.ts @@ -2,6 +2,7 @@ import { Component } from '@angular/core'; import { FormControl } from '@angular/forms'; import { map, Observable } from 'rxjs'; +import { HashSuffixPipe } from '../../pipes/hash-suffix.pipe'; import { AppService } from '../../services/app.service'; import { bitcoinAddressValidator } from '../../validators/bitcoin-address.validator'; @@ -75,7 +76,7 @@ export class SplashComponent { y: { ticks: { color: textColorSecondary, - callback: (value: number) => value + ' GH/s', + callback: (value: number) => HashSuffixPipe.transform(value) }, grid: { color: surfaceBorder, diff --git a/src/app/components/worker-group/worker-group.component.ts b/src/app/components/worker-group/worker-group.component.ts index b42587f..a18fa7f 100644 --- a/src/app/components/worker-group/worker-group.component.ts +++ b/src/app/components/worker-group/worker-group.component.ts @@ -2,6 +2,7 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { map, Observable, shareReplay } from 'rxjs'; +import { HashSuffixPipe } from '../../pipes/hash-suffix.pipe'; import { WorkerService } from '../../services/worker.service'; @Component({ @@ -75,7 +76,7 @@ export class WorkerGroupComponent { y: { ticks: { color: textColorSecondary, - callback: (value: number) => value + ' GH/s', + callback: (value: number) => HashSuffixPipe.transform(value) }, grid: { color: surfaceBorder, diff --git a/src/app/components/worker/worker.component.ts b/src/app/components/worker/worker.component.ts index 019a647..13982d3 100644 --- a/src/app/components/worker/worker.component.ts +++ b/src/app/components/worker/worker.component.ts @@ -2,6 +2,7 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { map, Observable, shareReplay } from 'rxjs'; +import { HashSuffixPipe } from '../../pipes/hash-suffix.pipe'; import { WorkerService } from '../../services/worker.service'; @Component({ @@ -75,7 +76,7 @@ export class WorkerComponent { y: { ticks: { color: textColorSecondary, - callback: (value: number) => value + ' GH/s', + callback: (value: number) => HashSuffixPipe.transform(value) }, grid: { color: surfaceBorder, diff --git a/src/app/pipes/hash-suffix.pipe.spec.ts b/src/app/pipes/hash-suffix.pipe.spec.ts new file mode 100644 index 0000000..52cf57f --- /dev/null +++ b/src/app/pipes/hash-suffix.pipe.spec.ts @@ -0,0 +1,8 @@ +import { HashSuffixPipe } from './hash-suffix.pipe'; + +describe('HashSuffixPipe', () => { + it('create an instance', () => { + const pipe = new HashSuffixPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/src/app/pipes/hash-suffix.pipe.ts b/src/app/pipes/hash-suffix.pipe.ts new file mode 100644 index 0000000..ddc81f8 --- /dev/null +++ b/src/app/pipes/hash-suffix.pipe.ts @@ -0,0 +1,30 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'hashSuffix' +}) +export class HashSuffixPipe implements PipeTransform { + + private static _this = new HashSuffixPipe(); + + public static transform(value: number): string { + return this._this.transform(value); + } + + public transform(value: number): string { + + if (value == null || value < 1) { + return '0'; + } + + const suffixes = [' H/s', ' KH/s', ' MH/s', ' GH/s', ' TH/s', ' PH/s', ' EH/s']; + + const power = Math.floor(Math.log10(value) / 3); + const scaledValue = value / Math.pow(1000, power); + const suffix = suffixes[power]; + + return scaledValue.toFixed(1) + suffix; + } + + +}