Files
CRAPP/src/components/crapp/PromemoriaPalloni.tsx
T
davideandClaude Sonnet 5 0a04025fe9 Rimuove i dati dummy della classifica e usa i risultati CSI reali
La classifica e lo storico partite mostravano dati inventati (squadre e
risultati finti) come base, poi sovrascritti dai dati CSI quando
disponibili. Ora classifica, ultimi risultati, storico match e obiettivi
di squadra legati alle vittorie usano solo dati reali (CSI o scout live),
con stati vuoti quando i dati CSI non sono ancora disponibili.

Include anche la correzione di tutti gli errori di formattazione
prettier segnalati da `npm run lint` sul resto del codice sorgente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 13:38:33 +02:00

58 lines
1.9 KiB
TypeScript

import { AlertCircle } from "lucide-react";
import { formatData } from "@/lib/crapp-data";
import { eventiPalloni, eventoPrecedente, eventoSuccessivo, oggiISO } from "@/lib/palloni-core";
import { useTurniPalloni } from "@/lib/palloni";
import { useEventi } from "@/lib/eventi";
import { useGiocatoreCorrente } from "@/lib/user-store";
/** Avvisi per chi è di turno: prendere i palloni oggi, o riportarli oggi. */
export function PromemoriaPalloni() {
const io = useGiocatoreCorrente();
const { turni } = useTurniPalloni();
const { eventi } = useEventi();
if (!io) return null;
const lista = eventiPalloni(eventi);
const oggi = oggiISO();
const messaggi: string[] = [];
for (const evento of lista) {
if (evento.data !== oggi) continue;
if (turni[evento.id] === io.id) {
const dopo = eventoSuccessivo(eventi, evento.id);
messaggi.push(
`Oggi tocca a te prendere i palloni a fine ${evento.tipo === "partita" ? "partita" : "allenamento"}` +
(dopo ? ` e riportarli il ${formatData(dopo.data)}.` : "."),
);
}
const prima = eventoPrecedente(eventi, evento.id);
if (prima && turni[prima.id] === io.id) {
messaggi.push("Ricordati di portare i palloni con te oggi: li hai presi tu la volta scorsa.");
}
}
if (messaggi.length === 0) {
const prossimo = lista.find((e) => e.data >= oggi && turni[e.id] === io.id);
if (!prossimo) return null;
messaggi.push(
`Sei incaricato dei palloni per ${prossimo.titolo} (${formatData(prossimo.data)}).`,
);
}
return (
<div className="mx-5 mt-4 rounded-3xl bg-accent-grad p-4 text-accent-foreground shadow-pop">
<p className="flex items-center gap-2 font-display text-lg uppercase leading-none">
<AlertCircle className="h-5 w-5" /> Turno palloni
</p>
{messaggi.map((m) => (
<p key={m} className="mt-2 text-xs leading-snug opacity-90">
{m}
</p>
))}
</div>
);
}