Added mw modes table

This commit is contained in:
2025-09-07 18:38:17 +02:00
parent aa552a9142
commit e0a54114d0
4 changed files with 142 additions and 2 deletions

View File

@@ -8,6 +8,7 @@ import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
import CollapsedStats from "../../_components/CollapsedStats"
import MegaWallsGeneralStats from "./stats"
import { MegaWallsClassesTable, MegaWallsModesTable } from "./table"
export default function MegaWallsStats({ stats }: { stats: NonNullStats["MegaWalls"] }) {
if (!stats) return null
@@ -59,6 +60,10 @@ export default function MegaWallsStats({ stats }: { stats: NonNullStats["MegaWal
<Separator className="my-4" />
<MegaWallsGeneralStats stats={stats} />
<Separator className="my-4" />
<MegaWallsClassesTable stats={stats} />
<Separator className="my-4" />
<MegaWallsModesTable stats={stats} />
<Separator className="my-4" />
</AccordionContent>
</CardContent>
</Card>

View File

@@ -0,0 +1,93 @@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { formatNumber } from "@/lib/formatters"
import { getMegaWallsModeName, getMegaWallsModeStats } from "@/lib/hypixel/megawalls/general"
import { NonNullStats } from "@/lib/schema/player"
export function MegaWallsModesTable({ stats }: { stats: NonNullable<NonNullStats["MegaWalls"]> }) {
return (
<Table>
<MegaWallsTableHeader />
<TableBody>
<MegaWallsModeStat modeId="standard" stats={stats} />
<MegaWallsModeStat modeId="face_off" stats={stats} />
<MegaWallsModeStat modeId="gvg" stats={stats} />
</TableBody>
</Table>
)
}
export function MegaWallsClassesTable({ stats }: { stats: NonNullable<NonNullStats["MegaWalls"]> }) {
return (
<Table>
<MegaWallsClassTableHeader />
<TableBody>
</TableBody>
</Table>
)
}
function MegaWallsClassTableHeader() {
const headerElements = [
"Class",
"Kills",
"Deaths",
"KD",
"Kills",
"Deaths",
"KD",
"Wins",
"Losses",
"WL",
"Prestige",
"Ender Chest"
]
return (
<TableHeader>
<TableRow>
<TableHead></TableHead>
<TableHead colSpan={3} className="font-bold">Normal</TableHead>
<TableHead colSpan={3} className="font-bold">Finals</TableHead>
</TableRow>
<TableRow>
{headerElements.map((v, i) => <TableHead key={i} className="font-bold">{v}</TableHead>)}
</TableRow>
</TableHeader>
)
}
function MegaWallsTableHeader() {
const headerElements = [
"Mode",
"Kills",
"Deaths",
"KD",
"Wins",
"Losses",
"WL"
]
return (
<TableHeader>
<TableRow>
{headerElements.map((v, i) => <TableHead key={i} className="font-bold">{v}</TableHead>)}
</TableRow>
</TableHeader>
)
}
function MegaWallsModeStat(
{ modeId, stats }: { modeId: Parameters<typeof getMegaWallsModeStats>[0], stats: NonNullable<NonNullStats["MegaWalls"]> }
) {
const modeName = getMegaWallsModeName(modeId)
const modeStat = getMegaWallsModeStats(modeId, stats)
return (
<TableRow>
<TableCell>{modeName}</TableCell>
{modeStat.map((s, i) => {
return <TableCell key={i}>{formatNumber(s)}</TableCell>
})}
</TableRow>
)
}