'use client'; import Link from 'next/link'; import { formatMinutes, countryCodeToFlag } from '@/lib/steam'; interface Segment { startMin: number; endMin: number; } interface TimelinePlayer { steamid: string; name: string; avatarUrl: string; country?: string | null; totalMinutes: number; segments: Segment[]; } export default function PlayerTimelineChart({ players, windowMinutes, windowStartLabel, windowEndLabel, loading, }: { players: TimelinePlayer[]; windowMinutes: number; windowStartLabel: string; windowEndLabel: string; loading: boolean; }) { if (loading) { return
loading players…
; } if (players.length === 0) { return
No players recorded during this window.
; } return (
{/* time axis */}
{windowStartLabel} {windowEndLabel}
{players.map((p, i) => (
{i + 1} {/* eslint-disable-next-line @next/next/no-img-element */} {p.country !== undefined && ( {countryCodeToFlag(p.country)} )} {p.name}
{p.segments.map((seg, i) => { const left = (seg.startMin / windowMinutes) * 100; const width = Math.max(0.6, ((seg.endMin - seg.startMin) / windowMinutes) * 100); return (
); })}
{formatMinutes(p.totalMinutes)}
))}
); }