SPB Git

Repository Public

format.ts 1.4 KB 26 lines typescript

1import type { Dict, Locale } from "@/lib/i18n";23const loc = (l: Locale) => (l === "fr" ? "fr-CA" : "en-CA");45export const fmtPct = (v: number, l: Locale, digits = 0) => `${new Intl.NumberFormat(loc(l), { maximumFractionDigits: digits, minimumFractionDigits: digits }).format(v)}${l === "fr" ? " %" : "%"}`;6export const fmtNum = (v: number, l: Locale, digits = 0) => new Intl.NumberFormat(loc(l), { maximumFractionDigits: digits, minimumFractionDigits: digits }).format(v);78export function fmtRate(kbs: number, l: Locale, u: Dict["live"]["units"]): string {9  return kbs >= 1024 ? `${fmtNum(kbs / 1024, l, 1)} ${u.mbs}` : `${fmtNum(kbs, l, kbs < 10 ? 1 : 0)} ${u.kbs}`;10}1112export function fmtUptime(s: number, u: Dict["live"]["units"]): string {13  const d = Math.floor(s / 86400);14  const h = Math.floor((s % 86400) / 3600);15  if (d > 0) return `${d} ${u.d} ${h} ${u.h}`;16  const m = Math.floor((s % 3600) / 60);17  return h > 0 ? `${h} ${u.h} ${m} ${u.min}` : `${m} ${u.min}`;18}1920export function fmtClock(t: number, l: Locale, withDay = false): string {21  return new Intl.DateTimeFormat(loc(l), { hour: "2-digit", minute: "2-digit", hour12: false, ...(withDay ? { weekday: "short" } : {}) }).format(new Date(t));22}2324/** Severity of a utilisation percentage: drives the meter fill, always paired with the printed value. */25export const level = (v: number): "normal" | "warn" | "danger" => (v >= 90 ? "danger" : v >= 75 ? "warn" : "normal");26
Files main
Menu

Theme