"use client"; import { useState } from "react"; type Player = { id: string; name: string; position: string }; type StatRow = { playerId: string; goals: number; assists: number; yellowCards: number; redCards: number; minutesPlayed: number; cleanSheet: boolean; }; export default function StatsForm({ match }: { match: any }) { const allPlayers: Player[] = [ ...match.homeTeam.players, ...match.awayTeam.players, ]; const initStats = (): Record => { const map: Record = {}; for (const p of allPlayers) { const existing = match.playerStats.find((s: any) => s.playerId === p.id); map[p.id] = existing ?? { playerId: p.id, goals: 0, assists: 0, yellowCards: 0, redCards: 0, minutesPlayed: 0, cleanSheet: false, }; } return map; }; const [stats, setStats] = useState>(initStats); const [loading, setLoading] = useState(false); const [saved, setSaved] = useState(false); function update(playerId: string, field: keyof StatRow, value: any) { setStats((prev) => ({ ...prev, [playerId]: { ...prev[playerId], [field]: value } })); } async function handleSave() { setLoading(true); const payload = Object.values(stats).filter((s) => s.minutesPlayed > 0); await fetch(`/api/matches/${match.id}/stats`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); setSaved(true); setLoading(false); setTimeout(() => setSaved(false), 3000); } const renderTeam = (players: Player[], teamName: string) => (

{teamName}

{players.map((p) => { const s = stats[p.id]; if (!s) return null; return ( {(["minutesPlayed", "goals", "assists", "yellowCards", "redCards"] as const).map((field) => ( ))} ); })}
بازیکن دقیقه گل پاس گل زرد قرمز کلین‌شیت
{p.name}
{p.position}
update(p.id, field, parseInt(e.target.value) || 0)} className="w-14 border rounded-lg px-2 py-1 text-center focus:outline-none focus:ring-2 focus:ring-green-400" /> update(p.id, "cleanSheet", e.target.checked)} className="w-4 h-4 accent-green-600" />
); return (
{match.homeTeam.name} vs {match.awayTeam.name}
{renderTeam(match.homeTeam.players, match.homeTeam.name)} {renderTeam(match.awayTeam.players, match.awayTeam.name)}
{saved && ✓ ذخیره شد}
); }