clarify game end reason in user profile history
This commit is contained in:
@@ -64,93 +64,102 @@ export default async function Profile({ params }: { params: { name: string } })
|
|||||||
<div>
|
<div>
|
||||||
<h2 className="mb-1 text-lg font-bold">Recent games</h2>
|
<h2 className="mb-1 text-lg font-bold">Recent games</h2>
|
||||||
<ul className="bg-base-300 flex h-[60vh] flex-col gap-1 overflow-y-scroll rounded-lg">
|
<ul className="bg-base-300 flex h-[60vh] flex-col gap-1 overflow-y-scroll rounded-lg">
|
||||||
{data.recentGames.map((game) => (
|
{data.recentGames.map((game) => {
|
||||||
<li
|
let endReason = game.endReason as string;
|
||||||
key={game.id}
|
if (endReason === "repetition") {
|
||||||
className="border-base-100 flex flex-wrap items-center justify-between gap-8 border-b-2 p-3"
|
endReason = "threefold repetition";
|
||||||
>
|
} else if (endReason === "insufficient") {
|
||||||
<div className="flex w-72 justify-between">
|
endReason = "insufficient material";
|
||||||
<div className="flex flex-col">
|
}
|
||||||
<span className="flex items-center gap-1 text-sm">
|
|
||||||
White
|
|
||||||
{game.winner === "white" && (
|
|
||||||
<span className="badge badge-xs badge-success">winner</span>
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
<a
|
|
||||||
className={
|
|
||||||
"font-bold" +
|
|
||||||
(typeof game.white?.id === "number"
|
|
||||||
? " text-primary link-hover"
|
|
||||||
: " cursor-default")
|
|
||||||
}
|
|
||||||
href={
|
|
||||||
typeof game.white?.id === "number" && game.white?.id !== data.id
|
|
||||||
? `/user/${game.white?.name}`
|
|
||||||
: undefined
|
|
||||||
}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
{game.white?.name}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col items-end">
|
|
||||||
<span className="flex items-center gap-1 text-sm">
|
|
||||||
{game.winner === "black" && (
|
|
||||||
<span className="badge badge-xs badge-success">winner</span>
|
|
||||||
)}
|
|
||||||
Black
|
|
||||||
</span>
|
|
||||||
<a
|
|
||||||
className={
|
|
||||||
"font-bold" +
|
|
||||||
(typeof game.black?.id === "number"
|
|
||||||
? " text-primary link-hover"
|
|
||||||
: " cursor-default")
|
|
||||||
}
|
|
||||||
href={
|
|
||||||
typeof game.black?.id === "number" && game.black?.id !== data.id
|
|
||||||
? `/user/${game.black?.name}`
|
|
||||||
: undefined
|
|
||||||
}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
{game.black?.name}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="flex-grow text-end text-xs">{game.endReason}</div>
|
return (
|
||||||
|
<li
|
||||||
<div className="flex flex-grow flex-col text-end">
|
key={game.id}
|
||||||
<span className="text-xs">
|
className="border-base-100 flex flex-wrap items-center justify-between gap-8 border-b-2 p-3"
|
||||||
Started
|
|
||||||
<span className="font-bold">
|
|
||||||
{" "}
|
|
||||||
{new Date(game.startedAt as number).toLocaleString()}
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
<span className="text-xs">
|
|
||||||
Ended
|
|
||||||
<span className="font-bold">
|
|
||||||
{" "}
|
|
||||||
{new Date(game.endedAt as number).toLocaleString()}
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a
|
|
||||||
className="btn btn-ghost flex-grow"
|
|
||||||
href={`/archive/${game.id}`}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
>
|
||||||
Review game
|
<div className="flex w-72 justify-between">
|
||||||
</a>
|
<div className="flex flex-col">
|
||||||
</li>
|
<span className="flex items-center gap-1 text-sm">
|
||||||
))}
|
White
|
||||||
|
{game.winner === "white" && (
|
||||||
|
<span className="badge badge-xs badge-success">winner</span>
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
className={
|
||||||
|
"font-bold" +
|
||||||
|
(typeof game.white?.id === "number"
|
||||||
|
? " text-primary link-hover"
|
||||||
|
: " cursor-default")
|
||||||
|
}
|
||||||
|
href={
|
||||||
|
typeof game.white?.id === "number" && game.white?.id !== data.id
|
||||||
|
? `/user/${game.white?.name}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
{game.white?.name}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col items-end">
|
||||||
|
<span className="flex items-center gap-1 text-sm">
|
||||||
|
{game.winner === "black" && (
|
||||||
|
<span className="badge badge-xs badge-success">winner</span>
|
||||||
|
)}
|
||||||
|
Black
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
className={
|
||||||
|
"font-bold" +
|
||||||
|
(typeof game.black?.id === "number"
|
||||||
|
? " text-primary link-hover"
|
||||||
|
: " cursor-default")
|
||||||
|
}
|
||||||
|
href={
|
||||||
|
typeof game.black?.id === "number" && game.black?.id !== data.id
|
||||||
|
? `/user/${game.black?.name}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
{game.black?.name}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex-grow text-end text-xs">{endReason}</div>
|
||||||
|
|
||||||
|
<div className="flex flex-grow flex-col text-end">
|
||||||
|
<span className="text-xs">
|
||||||
|
Started
|
||||||
|
<span className="font-bold">
|
||||||
|
{" "}
|
||||||
|
{new Date(game.startedAt as number).toLocaleString()}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span className="text-xs">
|
||||||
|
Ended
|
||||||
|
<span className="font-bold">
|
||||||
|
{" "}
|
||||||
|
{new Date(game.endedAt as number).toLocaleString()}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a
|
||||||
|
className="btn btn-ghost flex-grow"
|
||||||
|
href={`/archive/${game.id}`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Review game
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
})}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user