Files
website/app/src/lib/util.js
2025-07-24 06:15:19 +03:00

61 lines
1.3 KiB
JavaScript

import { localizer } from "$lib/locale.js";
// colors defined in static/css/global.css
const colors = ["yellow", "cyan", "green", "pinkish", "red", "blue"];
// randomly select a color
export function color() {
return colors[Math.floor(Math.random() * colors.length)];
}
// play a click sound
export function click() {
let audio = new Audio("/assets/click.wav");
audio.play();
}
// join a given path to the URL
export function urljoin(url, path = null) {
if (null === path || path.length === 0) {
return url;
}
if (url[url.length - 1] != "/") {
url += "/";
}
if (path[0] === "/") {
path = path.slice(1);
}
return url + path;
}
// convert Date() to readable date
export function date(date) {
return new Intl.DateTimeFormat(localizer.browser(), {
month: "2-digit",
year: "2-digit",
day: "2-digit",
}).format(date);
}
// convert timestamp to readable time
export function time_from_ts(ts) {
const date = new Date(ts * 1000);
const zone = date.toString().match(/([A-Z]+[\+-][0-9]+)/)[1];
return (
new Intl.DateTimeFormat(localizer.browser(), {
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
}).format(date) + ` (${zone})`
);
}
// convert timestamp to readable date
export function date_from_ts(ts) {
return date(new Date(ts * 1000));
}