61 lines
1.3 KiB
JavaScript
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));
|
|
}
|