merlyn/frontend/src/utils/numbers.js
Timothy Carambat c4eb46ca19
Upload and process documents via UI + document processor in docker image (#65)
* implement dnd uploader
show file upload progress
write files to hotdirector
build simple flaskAPI to process files one off

* move document processor calls to util
build out dockerfile to run both procs at the same time
update UI to check for document processor before upload
* disable pragma update on boot
* dockerfile changes

* add filetype restrictions based on python app support response and show rejected files in the UI

* cleanup

* stub migrations on boot to prevent exit condition

* update CF template for AWS deploy
2023-06-16 16:01:27 -07:00

53 lines
1.3 KiB
JavaScript

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 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;
}