| const Formatter = Intl.NumberFormat("en", { notation: "compact" }); | |
| export function numberWithCommas(input) { | |
| return input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); | |
| } | |
| export function nFormatter(input) { | |
| return Formatter.format(input); | |
| } | |
| export function dollarFormat(input) { | |
| return new Intl.NumberFormat("en-us", { | |
| style: "currency", | |
| currency: "USD", | |
| }).format(input); | |
| } | |
| export function toPercentString(input = null, decimals = 0) { | |
| if (isNaN(input) || input === null) return ""; | |
| const percentage = Math.round(input * 100); | |
| return ( | |
| (decimals > 0 ? percentage.toFixed(decimals) : percentage.toString()) + "%" | |
| ); | |
| } | |
| export function humanFileSize(bytes, si = false, dp = 1) { | |
| const thresh = si ? 1000 : 1024; | |
| if (Math.abs(bytes) < thresh) { | |
| return bytes + " B"; | |
| } | |
| const units = si | |
| ? ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] | |
| : ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]; | |
| let u = -1; | |
| const r = 10 ** dp; | |
| do { | |
| bytes /= thresh; | |
| ++u; | |
| } while ( | |
| Math.round(Math.abs(bytes) * r) / r >= thresh && | |
| u < units.length - 1 | |
| ); | |
| return bytes.toFixed(dp) + " " + units[u]; | |
| } | |
| export function milliToHms(milli = 0) { | |
| const d = parseFloat(milli) / 1_000.0; | |
| var h = Math.floor(d / 3600); | |
| var m = Math.floor((d % 3600) / 60); | |
| var s = parseFloat((d % 3600.0) % 60); | |
| var hDisplay = h >= 1 ? h + "h " : ""; | |
| var mDisplay = m >= 1 ? m + "m " : ""; | |
| var sDisplay = s >= 0.01 ? s.toFixed(2) + "s" : ""; | |
| return hDisplay + mDisplay + sDisplay; | |
| } | |