furhter bug fixes and updates

This commit is contained in:
jenz
2026-08-22 17:10:27 +02:00
parent 9e8e8378a2
commit 16bb9e14a5
18 changed files with 1070 additions and 256 deletions
@@ -17,6 +17,11 @@ export default async function MapPeriodsPage({
notFound();
}
const totalMinutes = periods.reduce((sum, p) => {
const end = p.map_end_dt ?? new Date().toISOString().slice(0, 19).replace('T', ' ');
return sum + (diffMinutes(p.map_start_dt, end) ?? 0);
}, 0);
return (
<div className="space-y-6">
<Link href="/maps" className="text-sm text-ink-muted hover:text-accent transition-colors">
@@ -26,24 +31,49 @@ export default async function MapPeriodsPage({
<div>
<h1 className="text-2xl text-ink mb-1">{mapName}</h1>
<p className="text-sm text-ink-muted">
Played {periods.length} time{periods.length === 1 ? '' : 's'}.
Played {periods.length} time{periods.length === 1 ? '' : 's'} · {formatMinutes(totalMinutes)} total
</p>
</div>
<div className="panel divide-y divide-base-border">
<div className="grid grid-cols-[1fr_auto_auto] gap-4 px-4 py-2 text-xs text-ink-faint uppercase tracking-wide">
<div>Session</div>
<div className="text-right w-16">Players</div>
<div className="text-right w-20">Duration</div>
</div>
{periods.map((p) => (
<Link
key={p.map_id}
href={`/maps/period/${p.map_id}`}
className="flex items-center justify-between px-4 py-3 hover:bg-base transition-colors"
className="group grid grid-cols-[1fr_auto_auto] gap-4 items-center px-4 py-3 hover:bg-base transition-colors"
>
<div>
<div className="text-ink text-sm">
{new Date(p.map_start_dt.replace(' ', 'T')).toLocaleString()}
<div className="flex items-center gap-2 min-w-0">
<div>
<div className="text-ink text-sm">
{new Date(p.map_start_dt.replace(' ', 'T')).toLocaleString()}
{p.map_end_dt && (
<span className="text-ink-faint">
{' '}
{new Date(p.map_end_dt.replace(' ', 'T')).toLocaleTimeString()}
</span>
)}
</div>
{!p.map_end_dt && <div className="text-xs text-accent">currently running</div>}
</div>
{!p.map_end_dt && <div className="text-xs text-accent">currently running</div>}
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
className="text-ink-faint group-hover:text-accent group-hover:translate-x-0.5 transition-all shrink-0 ml-auto"
>
<path d="M9 6l6 6-6 6" strokeLinecap="round" strokeLinejoin="round" />
</svg>
</div>
<div className="mono text-ink-faint text-sm">
<div className="mono text-ink-muted text-sm text-right w-16">{p.player_count}</div>
<div className="mono text-ink-faint text-sm text-right w-20">
{p.map_end_dt ? formatMinutes(diffMinutes(p.map_start_dt, p.map_end_dt)) : '—'}
</div>
</Link>