symbolFormatters.ts 935 B

123456789101112131415161718192021222324252627282930
  1. import { scaledUnits } from './valueFormats';
  2. export function currency(symbol: string) {
  3. const units = ['', 'K', 'M', 'B', 'T'];
  4. const scaler = scaledUnits(1000, units);
  5. return (size: number, decimals: number, scaledDecimals: number) => {
  6. if (size === null) {
  7. return '';
  8. }
  9. const scaled = scaler(size, decimals, scaledDecimals);
  10. return symbol + scaled;
  11. };
  12. }
  13. export function binarySIPrefix(unit: string, offset = 0) {
  14. const prefixes = ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'].slice(offset);
  15. const units = prefixes.map(p => {
  16. return ' ' + p + unit;
  17. });
  18. return scaledUnits(1024, units);
  19. }
  20. export function decimalSIPrefix(unit: string, offset = 0) {
  21. let prefixes = ['n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
  22. prefixes = prefixes.slice(3 + (offset || 0));
  23. const units = prefixes.map(p => {
  24. return ' ' + p + unit;
  25. });
  26. return scaledUnits(1000, units);
  27. }