Files
app/src/admin/utils/dashboardHelpers.ts
BOHA c5f986adc1 fix(audit): correct + unify entity_type label map to match server values
Audit Log + dashboard feed used legacy keys (invoices_invoice, offers_quotation, trips, vehicles) that never matched the server's entity_type (invoice, quotation, trip, vehicle, ...) and omitted all warehouse_* entities, so many audit rows showed raw English. Single source of truth in lib/entityTypeLabels.ts, keyed to the actual EntityType values, with Czech labels for every type the server writes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 02:19:10 +02:00

100 lines
2.5 KiB
TypeScript

export const LEAVE_TYPE_LABELS: Record<string, string> = {
vacation: "Dovolená",
sick: "Nemoc",
unpaid: "Neplacené volno",
};
export const STATUS_DOT_CLASS: Record<string, string> = {
in: "dash-status-in",
away: "dash-status-away",
out: "dash-status-out",
leave: "dash-status-leave",
};
export const STATUS_LABELS: Record<string, string> = {
in: "Přítomen",
away: "Přestávka",
out: "Nepřihlášen",
leave: "Nepřítomen",
};
// Re-exported from the single source of truth so the dashboard activity feed
// and the Audit Log page can't drift apart. See ../lib/entityTypeLabels.
export { ENTITY_TYPE_LABELS } from "../lib/entityTypeLabels";
export const ACTION_LABELS: Record<string, string> = {
create: "Vytvořil",
update: "Upravil",
delete: "Smazal",
login: "Přihlášení",
};
export function getCzechDate(): string {
const now = new Date();
const days = [
"Neděle",
"Pondělí",
"Úterý",
"Středa",
"Čtvrtek",
"Pátek",
"Sobota",
];
const months = [
"ledna",
"února",
"března",
"dubna",
"května",
"června",
"července",
"srpna",
"září",
"října",
"listopadu",
"prosince",
];
const day = days[now.getDay()];
const oneJan = new Date(now.getFullYear(), 0, 1);
const week = Math.ceil(
((now.getTime() - oneJan.getTime()) / 86400000 + oneJan.getDay() + 1) / 7,
);
return `${day}, ${now.getDate()}. ${months[now.getMonth()]} ${now.getFullYear()} · Týden ${week}`;
}
export function getActivityIconClass(action: string): string {
const map: Record<string, string> = {
create: "success",
update: "info",
delete: "danger",
login: "accent",
};
return map[action] || "muted";
}
export function formatActivityTime(dateString: string): string {
const date = new Date(dateString);
const now = new Date();
const diff = now.getTime() - date.getTime();
if (diff < 60000) return "Právě teď";
if (diff < 3600000) return `${Math.floor(diff / 60000)} min`;
if (date.toDateString() === now.toDateString()) {
return date.toLocaleTimeString("cs-CZ", {
hour: "2-digit",
minute: "2-digit",
});
}
return date.toLocaleDateString("cs-CZ", { day: "2-digit", month: "2-digit" });
}
export function formatSessionDate(dateString: string): string {
const date = new Date(dateString);
return date.toLocaleDateString("cs-CZ", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour: "2-digit",
minute: "2-digit",
});
}