Skip to content

Commit

Permalink
Merge pull request #251 from Senyoret1/BigN
Browse files Browse the repository at this point in the history
Use bignumber.js
  • Loading branch information
gz-c authored Oct 24, 2018
2 parents 05496d4 + baff98f commit 1bc70cc
Show file tree
Hide file tree
Showing 10 changed files with 101 additions and 132 deletions.
112 changes: 31 additions & 81 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
"moment": "^2.21.0",
"rxjs": "^5.5.2",
"zone.js": "^0.8.14",
"snyk": "^1.85.0"
"snyk": "^1.85.0",
"bignumber.js": "^7.2.1"
},
"devDependencies": {
"@angular/cli": "^6.0.0",
Expand Down
42 changes: 22 additions & 20 deletions src/app/app.datatypes.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { BigNumber } from 'bignumber.js';

/**
* Elementary Types
*/
Expand All @@ -17,17 +19,17 @@ export class Blockchain {

export class Input {
owner: string;
coins: number;
coins: BigNumber;
uxid: string;
hours: number;
calculatedHours: number;
hours: BigNumber;
calculatedHours: BigNumber;
}

export class Output {
address: string;
coins: number;
coins: BigNumber;
hash: string;
hours: number;
hours: BigNumber;
}

export class Transaction {
Expand All @@ -37,11 +39,11 @@ export class Transaction {
outputs: Output[];
status: boolean;
timestamp: number;
balance: number;
initialBalance: number;
finalBalance: number;
balance: BigNumber;
initialBalance: BigNumber;
finalBalance: BigNumber;
length: number;
fee: number;
fee: BigNumber;
}

export class RichlistEntry {
Expand Down Expand Up @@ -110,15 +112,15 @@ export function parseGenericBlock(block: GenericBlockResponse): Block {
export function parseGenericTransaction(raw: GenericTransactionResponse, address: string = null): Transaction {
let balance = null;
if (address) {
balance = 0;
balance = new BigNumber('0');
for (const input of raw.inputs) {
if (input.owner.toLowerCase() === address.toLowerCase()) {
balance -= parseFloat(input.coins);
balance = balance.minus(input.coins);
}
}
for (const output of raw.outputs) {
if (output.dst.toLowerCase() === address.toLowerCase()) {
balance += parseFloat(output.coins);
balance = balance.plus(output.coins);
}
}
}
Expand All @@ -134,7 +136,7 @@ export function parseGenericTransaction(raw: GenericTransactionResponse, address
initialBalance: null,
finalBalance: null,
length: raw.length,
fee: raw.fee,
fee: new BigNumber(raw.fee),
};

if (raw.status) {
Expand All @@ -153,19 +155,19 @@ export function parseGenericTransaction(raw: GenericTransactionResponse, address
function parseGenericTransactionInput(raw: GenericTransactionInputResponse): Input {
return {
owner: raw.owner,
coins: parseFloat(raw.coins),
coins: new BigNumber(raw.coins),
uxid: raw.uxid,
hours: raw.hours,
calculatedHours: raw.calculated_hours,
hours: new BigNumber(raw.hours),
calculatedHours: new BigNumber(raw.calculated_hours),
};
}

function parseGenericTransactionOutput(raw: GenericTransactionOutputResponse): Output {
return {
address: raw.dst,
coins: parseFloat(raw.coins),
coins: new BigNumber(raw.coins),
hash: raw.uxid,
hours: raw.hours,
hours: new BigNumber(raw.hours),
};
}

Expand Down Expand Up @@ -241,8 +243,8 @@ export class GetUxoutResponse {
export function parseGetUxout(raw: GetUxoutResponse): Output {
return {
address: raw.owner_address,
coins: raw.coins / 1000000,
hours: raw.hours,
coins: new BigNumber(raw.coins).dividedBy(1000000),
hours: new BigNumber(raw.hours),
hash: raw.uxid,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
<div class="-row">
<div class="-float-left">{{ 'txBoxes.transactionID' | translate }}<span class="-xs-sm-only">:</span></div><br class="-xs-sm-only"/>
<div class="-address"><a [routerLink]="'/app/transaction/' + transaction.id">{{ transaction.id }}</a><app-copy-button [text]="transaction.id"></app-copy-button></div>
<ng-container *ngIf="transaction.balance || transaction.balance === 0">
<ng-container *ngIf="transaction.balance">
<br class="-xs-sm-only" />
<div class="-label" [ngClass]="{'-red' : transaction.balance < 0, '-green' : transaction.balance >= 0}">
{{ (transaction.balance<0?"":"+")+(transaction.balance | number:'1.0-6') }} {{ 'general.coinIdentifier' | translate }} <ng-container *ngIf="!transaction.status">({{ 'txBoxes.pending' | translate }})</ng-container>
<div class="-label" [ngClass]="{'-red' : transaction.balance.isLessThan(0), '-green' : transaction.balance.isGreaterThanOrEqualTo(0)}">
{{ (transaction.balance<0?"":"+")+(transaction.balance.decimalPlaces(6).toString() | number:'1.0-6') }} {{ 'general.coinIdentifier' | translate }} <ng-container *ngIf="!transaction.status">({{ 'txBoxes.pending' | translate }})</ng-container>
</div>
</ng-container>
</div>
Expand All @@ -30,9 +30,9 @@
<div class="-header -xs-only">{{ 'txBoxes.inputs' | translate }}</div>
<div class="-body" *ngFor="let input of inputsToShow">
<a class="-link" [routerLink]="'/app/address/' + input.owner">{{ input.owner }}</a><app-copy-button [text]="input.owner"></app-copy-button>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.coins' | translate }}:&nbsp;</div><div> {{ input.coins | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.iniialHours' | translate }}:&nbsp;</div><div> {{ input.hours | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.calculatedHours' | translate }}:&nbsp;</div><div> {{ input.calculatedHours | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.coins' | translate }}:&nbsp;</div><div> {{ input.coins.decimalPlaces(6).toString() | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.iniialHours' | translate }}:&nbsp;</div><div> {{ input.hours.decimalPlaces(0).toString() | number:'1.0-0' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.calculatedHours' | translate }}:&nbsp;</div><div> {{ input.calculatedHours.decimalPlaces(0).toString() | number:'1.0-0' }}</div></div>
</div>
<div class="-body" *ngIf="showMoreInputs !== showMoreStatus.DontShowMore">
<a class="-link" (click)="startShowingAllInputs()">{{ showMoreInputs === showMoreStatus.ShowMore ? ('txBoxes.loadAll' | translate:{ total: totalInputs }) : ('txBoxes.loading' | translate) }}</a>
Expand All @@ -42,8 +42,8 @@
<div class="-header -xs-only">{{ 'txBoxes.outputs' | translate }}</div>
<div class="-body" *ngFor="let output of outputsToShow">
<a class="-link" [routerLink]="'/app/address/' + output.address">{{ output.address }}</a><app-copy-button [text]="output.address"></app-copy-button>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.coins' | translate }}:&nbsp;</div><div> {{ output.coins | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.hours' | translate }}:&nbsp;</div><div> {{ output.hours | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.coins' | translate }}:&nbsp;</div><div> {{ output.coins.decimalPlaces(6).toString() | number:'1.0-6' }}</div></div>
<div class="-balance"><div class="-transparent -float-left">{{ 'general.hours' | translate }}:&nbsp;</div><div> {{ output.hours.decimalPlaces(0).toString() | number:'1.0-0' }}</div></div>
</div>
<div class="-body" *ngIf="showMoreOutputs !== showMoreStatus.DontShowMore">
<a class="-link" (click)="startShowingAllOutputs()">{{ showMoreOutputs === showMoreStatus.ShowMore ? ('txBoxes.loadAll' | translate:{ total: totalOutputs }) : ('txBoxes.loading' | translate) }}</a>
Expand All @@ -56,17 +56,17 @@
<div class="-balance-variation">
<div class="fee-box">
<div class="-transparent -float-left">{{ 'txBoxes.fee' | translate }}:&nbsp;</div>
<div>{{ transaction.fee | number:'1.0-0' }}</div>
<div>{{ transaction.fee.decimalPlaces(0).toString() | number:'1.0-0' }}</div>
</div>
<ng-container *ngIf="transaction.initialBalance || transaction.initialBalance === 0">
<ng-container *ngIf="transaction.initialBalance">
<div>
<div class="-transparent -float-left">{{ 'txBoxes.initialBalance' | translate }}:&nbsp;</div>
<div>{{ transaction.initialBalance | number:'1.0-6' }}</div>
<div>{{ transaction.initialBalance.decimalPlaces(6).toString() | number:'1.0-6' }}</div>
</div>
<span class="separator -not-xs">&#xf105;</span>
<div>
<div class="-transparent -float-left">{{ 'txBoxes.finalBalance' | translate }}:&nbsp;</div>
<div>{{ transaction.finalBalance | number:'1.0-6' }}</div>
<div>{{ transaction.finalBalance.decimalPlaces(6).toString() | number:'1.0-6' }}</div>
</div>
</ng-container>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ <h2 class="-xs-only">{{ 'addressDetail.title' | translate }}</h2>
<span>{{ 'general.address' | translate }}</span><br class="-xs-only" /> <span>{{ address ? address : loadingMsg }}</span>
</div>
<div class="-row -tx-number"><span>{{ 'addressDetail.txsNumber' | translate }}</span><br class="-xs-only" /><div> {{ transactions ? transactions.length : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.totalReceived' | translate }}</span><br class="-xs-only" /><div> {{ transactions ? ((totalReceived | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.totalSent' | translate }}</span><br class="-xs-only" /><div> {{ transactions ? ((totalSent | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.currentBalance' | translate }}</span><br class="-xs-only" /><div> {{ transactions ? ((balance | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.hoursBalance' | translate }}</span><br class="-xs-only" /><div> {{ transactions ? ((hoursBalance | number:'1.0-6')) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.totalReceived' | translate }}</span><br class="-xs-only" /><div> {{ transactions && totalReceived ? ((totalReceived.decimalPlaces(6).toString() | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.totalSent' | translate }}</span><br class="-xs-only" /><div> {{ transactions && totalSent ? ((totalSent.decimalPlaces(6).toString() | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.currentBalance' | translate }}</span><br class="-xs-only" /><div> {{ transactions && balance ? ((balance.decimalPlaces(6).toString() | number:'1.0-6') + ' ' + ('general.coinIdentifier' | translate)) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.hoursBalance' | translate }}</span><br class="-xs-only" /><div> {{ transactions && hoursBalance ? ((hoursBalance.decimalPlaces(0).toString() | number:'1.0-0')) : loadingMsg }} </div></div>
<div class="-row"><span>{{ 'addressDetail.tools' | translate }}</span><br class="-xs-only" /><div> <a [routerLink]="'/app/unspent/' + address" class="-link" *ngIf="address">{{ 'addressDetail.unspentOutputs' | translate }}</a> <span *ngIf="!address">{{ loadingMsg }}</span> </div></div>
</div>
</div>
Expand Down
Loading

0 comments on commit 1bc70cc

Please sign in to comment.