You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rappli/src/util.tsx

62 lines
1.4 KiB
TypeScript

import Big from "big.js";
import { fromUnixTime, intlFormat } from "date-fns";
export const sleep = (timeout: number) =>
new Promise((res) => setTimeout(res, timeout));
export const parseOptionalFloat = (text: string) => {
const result = parseFloat(text);
if (Number.isNaN(result)) return undefined;
return result;
};
// Source: https://stackoverflow.com/a/34591063
export const roundToStep = (value: number, step = 1.0) => {
const inv = new Big(1.0).div(step);
return inv.mul(value).round().div(inv).toNumber();
};
export const getDisplayDateFromUnix = function (unix: number) {
return intlFormat(
fromUnixTime(unix),
{
day: "2-digit",
month: "2-digit",
year: "numeric",
},
{
locale: "de-CH",
}
);
};
export const resetInput =
(defaultValue: any, eventName = "input") =>
(evt: FocusEvent) => {
const el = evt.target as HTMLInputElement | null;
if (!el) {
return;
}
if (el.value !== "") {
return;
}
el.value = defaultValue;
const event = new Event(eventName, { bubbles: true });
el.dispatchEvent(event);
};
// https://dev.to/codebubb/how-to-shuffle-an-array-in-javascript-2ikj
export const shuffle = (list: any[]) => {
for (let i = list.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = list[i];
list[i] = list[j];
list[j] = temp;
}
return list;
};