Ordina la rosa e la squadra per cognome

Sposta dividiNome in crapp-data.ts per riordinare la rosa di fallback per
cognome; la query a giocatori_squadra ora ordina per cognome, nome invece
che per id.
This commit is contained in:
2026-09-02 10:59:28 +02:00
parent 64771fffc6
commit d3b117e470
4 changed files with 34 additions and 33 deletions
+29 -21
View File
@@ -82,27 +82,35 @@ function inizialiDa(nome: string) {
.toUpperCase(); .toUpperCase();
} }
export const giocatori: Giocatore[] = rosaCSI.map((r, i) => ({ export function dividiNome(completo: string): { nome: string; cognome: string } {
id: `g${i + 1}`, const spazio = completo.indexOf(" ");
nome: r.nome, if (spazio < 0) return { nome: completo, cognome: "" };
numero: r.numero ?? 0, return { nome: completo.slice(0, spazio), cognome: completo.slice(spazio + 1) };
ruolo: r.ruolo, }
nascita: r.nascita,
iniziali: inizialiDa(r.nome), export const giocatori: Giocatore[] = rosaCSI
presenze: 0, .map((r, i) => ({
totaliEventi: 0, id: `g${i + 1}`,
streak: 0, nome: r.nome,
serieAllenamenti: 0, numero: r.numero ?? 0,
seriePartite: 0, ruolo: r.ruolo,
serieConferme: 0, nascita: r.nascita,
mvp: 0, iniziali: inizialiDa(r.nome),
mediaVoto: 0, presenze: 0,
infortuni: 0, totaliEventi: 0,
ritardi: 0, streak: 0,
palloni: 0, serieAllenamenti: 0,
cacche: 0, seriePartite: 0,
cacchePartita: 0, serieConferme: 0,
})); mvp: 0,
mediaVoto: 0,
infortuni: 0,
ritardi: 0,
palloni: 0,
cacche: 0,
cacchePartita: 0,
}))
.sort((a, b) => dividiNome(a.nome).cognome.localeCompare(dividiNome(b.nome).cognome, "it"));
export type RigaClassifica = { export type RigaClassifica = {
pos: number; pos: number;
+3 -9
View File
@@ -1,6 +1,6 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { supabaseNuoveTabelle } from "@/integrations/supabase/client-nuove-tabelle"; import { supabaseNuoveTabelle } from "@/integrations/supabase/client-nuove-tabelle";
import { giocatori } from "./crapp-data"; import { dividiNome, giocatori } from "./crapp-data";
/** /**
* Anagrafica operativa della squadra (`giocatori_squadra`, migration M1). È la source of * Anagrafica operativa della squadra (`giocatori_squadra`, migration M1). È la source of
@@ -31,13 +31,6 @@ type RigaGiocatoreSquadra = {
export const SQUADRA_KEY = ["giocatori-squadra"] as const; export const SQUADRA_KEY = ["giocatori-squadra"] as const;
/** "Carlo Di Castelnuovo" -> nome "Carlo", cognome "Di Castelnuovo". */
export function dividiNome(completo: string): { nome: string; cognome: string } {
const spazio = completo.indexOf(" ");
if (spazio < 0) return { nome: completo, cognome: "" };
return { nome: completo.slice(0, spazio), cognome: completo.slice(spazio + 1) };
}
/** Rosa di riserva quando il database non risponde o non è ancora popolato. */ /** Rosa di riserva quando il database non risponde o non è ancora popolato. */
export function rosaFallback(): GiocatoreSquadra[] { export function rosaFallback(): GiocatoreSquadra[] {
return giocatori.map((g) => ({ return giocatori.map((g) => ({
@@ -78,7 +71,8 @@ async function fetchSquadra(): Promise<GiocatoreSquadra[]> {
const { data, error } = await supabaseNuoveTabelle const { data, error } = await supabaseNuoveTabelle
.from("giocatori_squadra") .from("giocatori_squadra")
.select("id, nome, cognome, numero, ruolo, auth_user_id, attivo, email") .select("id, nome, cognome, numero, ruolo, auth_user_id, attivo, email")
.order("id"); .order("cognome")
.order("nome");
if (error) throw error; if (error) throw error;
const righe = (data ?? []) as RigaGiocatoreSquadra[]; const righe = (data ?? []) as RigaGiocatoreSquadra[];
return righe.map((r) => ({ return righe.map((r) => ({
+1 -2
View File
@@ -1,7 +1,6 @@
/** Check dell'anagrafica squadra: `bun test/unit/giocatori-squadra.test.ts`. */ /** Check dell'anagrafica squadra: `bun test/unit/giocatori-squadra.test.ts`. */
import assert from "node:assert/strict"; import assert from "node:assert/strict";
import { import {
dividiNome,
nomeCompleto, nomeCompleto,
numeroGiaUsato, numeroGiaUsato,
prossimoIdGiocatore, prossimoIdGiocatore,
@@ -11,7 +10,7 @@ import {
validaDatiSquadra, validaDatiSquadra,
type GiocatoreSquadra, type GiocatoreSquadra,
} from "@/lib/giocatori-squadra"; } from "@/lib/giocatori-squadra";
import { giocatori } from "@/lib/crapp-data"; import { dividiNome, giocatori } from "@/lib/crapp-data";
const riga = (parziale: Partial<GiocatoreSquadra> = {}): GiocatoreSquadra => ({ const riga = (parziale: Partial<GiocatoreSquadra> = {}): GiocatoreSquadra => ({
id: "g1", id: "g1",
+1 -1
View File
@@ -10,13 +10,13 @@ import {
type Profilo, type Profilo,
} from "@/lib/profili-core"; } from "@/lib/profili-core";
import { import {
dividiNome,
numeroGiaUsato, numeroGiaUsato,
rosaFallback, rosaFallback,
slotDi, slotDi,
validaDatiSquadra, validaDatiSquadra,
type GiocatoreSquadra, type GiocatoreSquadra,
} from "@/lib/giocatori-squadra"; } from "@/lib/giocatori-squadra";
import { dividiNome } from "@/lib/crapp-data";
const vuoto: Profilo = { const vuoto: Profilo = {
giocatoreId: "g1", giocatoreId: "g1",