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
|
// (même leçon qu'Icare : une mise à jour Realtime pendant une partie ne
|
||||||
// doit jamais pouvoir perturber le jeu en cours).
|
// doit jamais pouvoir perturber le jeu en cours).
|
||||||
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
||||||
const podiumProfiles = ranked.filter((p) => p.rank <= 3);
|
// Tant que personne n'a marqué, tout le monde est à égalité à 0 et
|
||||||
const rest = ranked.filter((p) => p.rank > 3);
|
// 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 (
|
return (
|
||||||
<div className="mx-auto flex w-full max-w-2xl flex-col items-center gap-4 px-4 py-8">
|
<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
|
// score d'un autre joueur qui change) redimensionnait le canvas et cassait
|
||||||
// la partie en cours.
|
// la partie en cours.
|
||||||
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
|
||||||
const podiumProfiles = ranked.filter((p) => p.rank <= 3);
|
// Tant que personne n'a marqué, tout le monde est à égalité à 0 et
|
||||||
const rest = ranked.filter((p) => p.rank > 3);
|
// 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 (
|
return (
|
||||||
<div className="relative flex flex-1 flex-col bg-ink">
|
<div className="relative flex flex-1 flex-col bg-ink">
|
||||||
|
|||||||
@@ -86,7 +86,12 @@ export function LeaderboardView({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const ranked = useMemo(() => computeRanks(profiles), [profiles]);
|
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) {
|
if (profiles.length === 0) {
|
||||||
return <p className="text-sm text-marble/60">Personne n'est encore inscrit.</p>;
|
return <p className="text-sm text-marble/60">Personne n'est encore inscrit.</p>;
|
||||||
@@ -95,7 +100,7 @@ export function LeaderboardView({
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Podium
|
<Podium
|
||||||
profiles={ranked.filter((p) => p.rank <= 3)}
|
profiles={podiumProfiles}
|
||||||
renderValue={(member) => member.points}
|
renderValue={(member) => member.points}
|
||||||
valueLabel="gloires"
|
valueLabel="gloires"
|
||||||
isJudge={isJudge}
|
isJudge={isJudge}
|
||||||
|
|||||||
Reference in New Issue
Block a user