N'affiche plus de podium quand tout le monde est encore à 0
Build and deploy / deploy (push) Successful in 37s
Build and deploy / deploy (push) Successful in 37s
Le classement "compétition" fait partager le rang 1 à tous les ex-aequo — sans score, tout le groupe se retrouvait sur la 1ère marche du podium. Le podium ne s'affiche plus tant que le meneur n'a pas dépassé 0, sur /leaderboard, /icare et /corne. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -113,8 +113,12 @@ export function CorneView({
|
||||
// (même leçon qu'Icare : une mise à jour Realtime pendant une partie ne
|
||||
// doit jamais pouvoir perturber le jeu en cours).
|
||||
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
||||
const podiumProfiles = ranked.filter((p) => p.rank <= 3);
|
||||
const rest = ranked.filter((p) => p.rank > 3);
|
||||
// Tant que personne n'a marqué, tout le monde est à égalité à 0 et
|
||||
// partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
|
||||
// départager, sinon tout le groupe se retrouverait sur la 1ère marche.
|
||||
const hasScores = (ranked[0]?.best_score ?? 0) > 0;
|
||||
const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
|
||||
const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
|
||||
|
||||
return (
|
||||
<div className="mx-auto flex w-full max-w-2xl flex-col items-center gap-4 px-4 py-8">
|
||||
|
||||
@@ -122,8 +122,12 @@ export function IcareView({
|
||||
// score d'un autre joueur qui change) redimensionnait le canvas et cassait
|
||||
// la partie en cours.
|
||||
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
||||
const podiumProfiles = ranked.filter((p) => p.rank <= 3);
|
||||
const rest = ranked.filter((p) => p.rank > 3);
|
||||
// Tant que personne n'a marqué, tout le monde est à égalité à 0 et
|
||||
// partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
|
||||
// départager, sinon tout le groupe se retrouverait sur la 1ère marche.
|
||||
const hasScores = (ranked[0]?.best_score ?? 0) > 0;
|
||||
const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
|
||||
const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
|
||||
|
||||
return (
|
||||
<div className="relative flex flex-1 flex-col bg-ink">
|
||||
|
||||
@@ -86,7 +86,12 @@ export function LeaderboardView({
|
||||
}, []);
|
||||
|
||||
const ranked = useMemo(() => computeRanks(profiles), [profiles]);
|
||||
const rest = ranked.filter((p) => p.rank > 3);
|
||||
// Tant que personne n'a de gloires, tout le monde est à égalité à 0 et
|
||||
// partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
|
||||
// départager, sinon tout le groupe se retrouverait sur la 1ère marche.
|
||||
const hasScores = (ranked[0]?.points ?? 0) > 0;
|
||||
const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
|
||||
const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
|
||||
|
||||
if (profiles.length === 0) {
|
||||
return <p className="text-sm text-marble/60">Personne n'est encore inscrit.</p>;
|
||||
@@ -95,7 +100,7 @@ export function LeaderboardView({
|
||||
return (
|
||||
<div>
|
||||
<Podium
|
||||
profiles={ranked.filter((p) => p.rank <= 3)}
|
||||
profiles={podiumProfiles}
|
||||
renderValue={(member) => member.points}
|
||||
valueLabel="gloires"
|
||||
isJudge={isJudge}
|
||||
|
||||
Reference in New Issue
Block a user