Finished UHC stats

This commit is contained in:
2025-09-04 23:00:24 +02:00
parent 27a8e89d7b
commit 1ac24b8a30
3 changed files with 106 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { formatNumber } from "@/lib/formatters"
import { getUHCModeName, getUHCModeStats } from "@/lib/hypixel/uhc/general"
import { NonNullStats } from "@/lib/schema/player"
export default function UHCStatTable({ stats }: { stats: NonNullable<NonNullStats["UHC"]> }) {
return (
<Table>
<UHCTableHeader />
<TableBody>
<TableStat modeId="solo" stats={stats} />
<TableStat modeId="teams" stats={stats} />
<TableStat modeId="vanilla_doubles" stats={stats} />
<TableStat modeId="no_diamonds" stats={stats} />
<TableStat modeId="red_vs_blue" stats={stats} />
<TableStat modeId="solo_brawl" stats={stats} />
<TableStat modeId="duo_brawl" stats={stats} />
<TableStat modeId="all_modes" stats={stats} />
</TableBody>
</Table>
)
}
function UHCTableHeader() {
const headerElements = [
"Mode",
"Kills",
"Deaths",
"KD",
"Wins",
"KW",
"Heads Eaten"
]
return (
<TableHeader>
<TableRow>
{headerElements.map((v, i) => {
return <TableHead key={i} className="font-bold">{v}</TableHead>
})}
</TableRow>
</TableHeader>
)
}
function TableStat(
{ modeId, stats }: { modeId: Exclude<Parameters<typeof getUHCModeStats>[0], ""> | "teams" | "all_modes", stats: NonNullable<NonNullStats["UHC"]> }
) {
const modeStats = getUHCModeStats(modeId === "teams" ? "" : modeId, stats)
const modeName = getUHCModeName(modeId === "teams" || modeId === "all_modes" ? "" : modeId)
return (
<TableRow>
<TableCell className={modeId === "all_modes" ? "font-bold" : undefined}>{modeId === "all_modes" ? "Overall" : modeName}</TableCell>
{modeStats.map((v, i) => {
return (
<TableCell key={i}>
{formatNumber(v)}
</TableCell>
)
})}
</TableRow>
)
}

View File

@@ -9,6 +9,7 @@ import { NonNullStats } from "@/lib/schema/player"
import CollapsedStats from "../../_components/CollapsedStats"
import UHCProgress from "./progress"
import UHCGeneralStats from "./stats"
import UHCStatTable from "./table"
export default function UHCStats({ stats }: { stats: NonNullStats["UHC"] }) {
if (!stats) return null
@@ -47,6 +48,8 @@ export default function UHCStats({ stats }: { stats: NonNullStats["UHC"] }) {
<UHCProgress score={stats.score} />
<Separator className="my-4" />
<UHCGeneralStats stats={stats} kills={combined.kills} deaths={combined.deaths} heads={combined.heads} wins={combined.wins} />
<Separator className="my-4" />
<UHCStatTable stats={stats} />
</AccordionContent>
</CardContent>
</Card>