Files
hypixel-stats/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
2025-09-13 21:02:51 +02:00

85 lines
3.3 KiB
TypeScript

import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { formatNumber, formatSecondsToTime } from "@/lib/formatters"
import { getAllBlitzKitStats, getBlitzKitLevel, getBlitzKitName, getBlitzMostPlayedKit } from "@/lib/hypixel/blitz/general"
import { romanize } from "@/lib/hypixel/general"
import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
export function BlitzModeStatsTable({ stats }: { stats: NonNullable<NonNullStats["Blitz"]> }) {
return (
<Table>
<TableHeader>
<TableRow>
<TableHead>Mode</TableHead>
<TableHead>Kills</TableHead>
<TableHead>Wins</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell>Solo Normal</TableCell>
<TableCell>{formatNumber(stats.kills_solo_normal)}</TableCell>
<TableCell>{formatNumber(stats.wins_solo_normal)}</TableCell>
</TableRow>
<TableRow>
<TableCell>Teams Normal</TableCell>
<TableCell>{formatNumber(stats.kills_teams_normal)}</TableCell>
<TableCell>{formatNumber(stats.wins_teams_normal)}</TableCell>
</TableRow>
</TableBody>
</Table>
)
}
export function BlitzKitStatsTableHeader() {
const headerElements = [
"Kit",
"Exp",
"Prestige",
"Kills",
"Wins",
"Losses",
"WL",
"Time Played"
]
return (
<TableHeader>
<TableRow>
{headerElements.map((v, i) => <TableHead key={i} className="font-bold">{v}</TableHead>)}
</TableRow>
</TableHeader>
)
}
export function BlitzKitStatsTable({ stats }: { stats: NonNullable<NonNullStats["Blitz"]> }) {
const kitStats = getAllBlitzKitStats(stats)
return (
<Table>
<BlitzKitStatsTableHeader />
<TableBody>
{kitStats.map((r, i) => {
const { id, nums } = r
const kitName = getBlitzKitName(id)
const kitLevel = getBlitzKitLevel(id, stats)
const mostPlayed = getBlitzMostPlayedKit(stats)?.id
return (
<TableRow className={cn(mostPlayed === id && "text-mc-light-purple font-bold")} key={i}>
<TableCell className={cn(kitLevel === 10 && "text-mc-dark-red")}>{`${kitName} ${romanize(kitLevel)}`}</TableCell>
{nums.map((v, j) => {
if (j === nums.length - 1) {
return <TableCell key={j}>{formatSecondsToTime(v)}</TableCell>
}
if (j === 1) {
return <TableCell key={j}>{v === 0 ? "-" : romanize(v)}</TableCell>
}
return <TableCell key={j}>{formatNumber(v)}</TableCell>
})}
</TableRow>
)
})}
</TableBody>
</Table>
)
}