Files
fnx_web/svelte/src/util/Formatting.ts

91 lines
2.8 KiB
TypeScript

export const formatNumber = (amt: number, precision: number) => {
if (precision < 3) { precision = 3; }
if (amt >= 1e6) {
return (amt / 1e6).toPrecision(precision) + "M";
} else if (amt >= 1e3) {
return (amt / 1e3).toPrecision(precision) + "k";
}
return amt.toPrecision(precision)
}
export const formatThousands = (amt: number) => {
return amt.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}
export const formatDataVolume = (amt: number, precision: number) => {
if (amt === undefined) {
return ""
}
if (precision < 3) { precision = 3; }
if (amt >= 1e18 - 1e15) {
return (amt / 1e18).toPrecision(precision) + " EB";
} else if (amt >= 1e15 - 1e12) {
return (amt / 1e15).toPrecision(precision) + " PB";
} else if (amt >= 1e12 - 1e9) {
return (amt / 1e12).toPrecision(precision) + " TB";
} else if (amt >= 1e9 - 1e6) {
return (amt / 1e9).toPrecision(precision) + " GB";
} else if (amt >= 1e6 - 1e3) {
return (amt / 1e6).toPrecision(precision) + " MB";
} else if (amt >= 1e3 - 1) {
return (amt / 1e3).toPrecision(precision) + " kB";
}
return amt.toPrecision(precision) + " B"
}
export const formatDataVolumeBits = (amt: number, precision: number) => {
amt = amt * 8
if (precision < 3) { precision = 3; }
if (amt >= 1e18 - 1e15) {
return (amt / 1e18).toPrecision(precision) + " Eb";
} else if (amt >= 1e15 - 1e12) {
return (amt / 1e15).toPrecision(precision) + " Pb";
} else if (amt >= 1e12 - 1e9) {
return (amt / 1e12).toPrecision(precision) + " Tb";
} else if (amt >= 1e9 - 1e6) {
return (amt / 1e9).toPrecision(precision) + " Gb";
} else if (amt >= 1e6 - 1e3) {
return (amt / 1e6).toPrecision(precision) + " Mb";
} else if (amt >= 1e3 - 1) {
return (amt / 1e3).toPrecision(precision) + " kb";
}
return amt + " b"
}
const second = 1000
const minute = second * 60
const hour = minute * 60
const day = hour * 24
export const formatDuration = (ms: number, decimals: number) => {
let res = ""
if (ms >= day) { res += Math.floor(ms / day) + "d " }
if (ms >= hour) { res += Math.floor((ms % day) / hour) + "h " }
if (ms >= minute) { res += Math.floor((ms % hour) / minute) + "m " }
return res + ((ms % minute) / second).toFixed(decimals) + "s"
}
export const formatDate = (
date: Date | string,
hours: boolean = true,
minutes: boolean = true,
seconds: boolean = true,
) => {
if (!(date instanceof Date)) {
date = new Date(date)
}
let dateStr = date.getFullYear()
+ "-" + ("00" + (date.getMonth() + 1)).slice(-2)
+ "-" + ("00" + date.getDate()).slice(-2)
if (hours) { dateStr += " " + ("00" + date.getHours()).slice(-2) }
if (minutes) { dateStr += ":" + ("00" + date.getMinutes()).slice(-2) }
if (seconds) { dateStr += ":" + ("00" + date.getSeconds()).slice(-2) }
return dateStr
}
export const formatEuros = (amt: number, precision: number) => {
return "€ " + (amt / 1000000).toFixed(precision)
}