91 lines
2.8 KiB
TypeScript
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)
|
|
}
|