39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
// https://medium.com/@thunderroid/angular-short-number-suffix-pipe-1k-2m-3b-dded4af82fb4
|
|
|
|
@Pipe({
|
|
name: 'amountShortener'
|
|
})
|
|
export class AmountShortenerPipe implements PipeTransform {
|
|
transform(number: number, args?: any): any {
|
|
if (isNaN(number)) return null; // will only work value is a number
|
|
if (number === null) return null;
|
|
if (number === 0) return null;
|
|
let abs = Math.abs(number);
|
|
const rounder = Math.pow(10, 1);
|
|
const isNegative = number < 0; // will also work for Negetive numbers
|
|
let key = '';
|
|
|
|
const powers = [
|
|
{ key: 'E', value: 10e18 },
|
|
{ key: 'P', value: 10e15 },
|
|
{ key: 'T', value: 10e12 },
|
|
{ key: 'B', value: 10e9 },
|
|
{ key: 'M', value: 10e6 },
|
|
{ key: 'K', value: 1000 }
|
|
];
|
|
|
|
for (let i = 0; i < powers.length; i++) {
|
|
let reduced = abs / powers[i].value;
|
|
reduced = Math.round(reduced * rounder) / rounder;
|
|
if (reduced >= 1) {
|
|
abs = reduced;
|
|
key = powers[i].key;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return (isNegative ? '-' : '') + abs + key;
|
|
}
|
|
} |