mempool/frontend/src/app/shared/pipes/amount-shortener.pipe.ts

27 lines
790 B
TypeScript
Raw Normal View History

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'amountShortener'
})
export class AmountShortenerPipe implements PipeTransform {
2022-03-14 20:00:19 +01:00
transform(num: number, ...args: number[]): unknown {
2022-03-25 11:38:36 +09:00
const digits = args[0] || 1;
2022-03-14 20:00:19 +01:00
if (num < 1000) {
2022-03-25 11:38:36 +09:00
return num.toFixed(digits);
}
2022-03-14 20:00:19 +01:00
const lookup = [
{ value: 1, symbol: '' },
{ value: 1e3, symbol: 'k' },
{ value: 1e6, symbol: 'M' },
{ value: 1e9, symbol: 'G' },
{ value: 1e12, symbol: 'T' },
{ value: 1e15, symbol: 'P' },
{ value: 1e18, symbol: 'E' }
];
const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
var item = lookup.slice().reverse().find((item) => num >= item.value);
return item ? (num / item.value).toFixed(digits).replace(rx, '$1') + item.symbol : '0';
}
}