Sposto rosa, classifica e storico partite dagli array hardcoded al CMS Strapi

Nuovi moduli src/lib/strapi-client.ts + rosa-base.ts/classifica-csi.ts/
storico-match.ts (hook TanStack Query, cache lunga, nessun polling). L'id
stabile gN diventa il campo `codice` su Strapi, per non rompere le FK verso
pagelle/cacche/mvp/palloni/presenze/azioni scout già chiavate su quella
stringa. isAdmin ora prende il Giocatore invece di un id, così non dipende
più dal roster. Rifattorizzati di conseguenza tutti i punti che importavano
`giocatori`/`classifica`/`storicoMatch` come array sincroni (componenti,
hook, due route server) per usare gli hook o un parametro esplicito.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 15:39:40 +02:00
co-authored by Claude Sonnet 5
parent 3f61b32219
commit 953908388d
36 changed files with 678 additions and 364 deletions
+10 -3
View File
@@ -1,4 +1,4 @@
import { giocatori } from "./crapp-data";
import type { Giocatore } from "./crapp-data";
import { azioniMeta, totaliPerGiocatore, type ScoutMatch } from "./scout-store";
function riga(campi: Array<string | number>) {
@@ -11,9 +11,16 @@ function riga(campi: Array<string | number>) {
}
/** Esporta la scoutizzazione di una partita in CSV (separatore ";" per Excel IT). */
export function csvScoutMatch(match: ScoutMatch): string {
export function csvScoutMatch(giocatori: Giocatore[], match: ScoutMatch): string {
const righe: string[] = [];
righe.push(riga(["Partita", match.casa ? "CRAP Volley" : match.avversario, "vs", match.casa ? match.avversario : "CRAP Volley"]));
righe.push(
riga([
"Partita",
match.casa ? "CRAP Volley" : match.avversario,
"vs",
match.casa ? match.avversario : "CRAP Volley",
]),
);
righe.push(riga(["Data", match.data, "Set", `${match.setNostri}-${match.setLoro}`]));
righe.push("");
righe.push(riga(["Set", "Parziale nostro", "Parziale loro"]));