finished skywars table

This commit is contained in:
2025-08-24 14:19:24 +02:00
parent ba835830b0
commit 8aeaf27b45
3 changed files with 43 additions and 21 deletions

View File

@@ -88,6 +88,7 @@ export default function SkyWarsStats({ stats }: { stats: NonNullStats["SkyWars"]
<SkyWarsGeneralStats statsChecked={stats} level={level} /> <SkyWarsGeneralStats statsChecked={stats} level={level} />
<Separator className="my-4" /> <Separator className="my-4" />
<SkywarsStatTable stats={stats} /> <SkywarsStatTable stats={stats} />
<Separator className="my-4" />
</CollapsibleContent> </CollapsibleContent>
</Collapsible> </Collapsible>
</CardContent> </CardContent>

View File

@@ -1,5 +1,6 @@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { formatNumber } from "@/lib/formatters" import { formatNumber } from "@/lib/formatters"
import { concatSkywarsStats } from "@/lib/funcs"
import { _SkywarsStats, getBestMode, getSkywarsModeStats } from "@/lib/hypixel/skywars" import { _SkywarsStats, getBestMode, getSkywarsModeStats } from "@/lib/hypixel/skywars"
import { NonNullStats } from "@/lib/schema/player" import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
@@ -16,6 +17,7 @@ export default function SkywarsStatTable({ stats }: { stats: NonNullStats["SkyWa
<Mega stats={stats} /> <Mega stats={stats} />
<MegaDoubles stats={stats} /> <MegaDoubles stats={stats} />
<Ranked stats={stats} /> <Ranked stats={stats} />
<OverallModeStats stats={stats} />
</TableBody> </TableBody>
</Table> </Table>
) )
@@ -141,23 +143,23 @@ function Ranked({ stats }: { stats: NonNullStats["SkyWars"] }) {
) )
} }
// function OverallModeStats({ stats }: { stats: NonNullStats["SkyWars"] }) { function OverallModeStats({ stats }: { stats: NonNullStats["SkyWars"] }) {
// const normal = getSkywarsModeStats("normal", stats as _SkywarsStats, true) const normal = getSkywarsModeStats("normal", stats as _SkywarsStats, true)
// const insane = getSkywarsModeStats("insane", stats as _SkywarsStats, true) const insane = getSkywarsModeStats("insane", stats as _SkywarsStats, true)
// const teams_normal = getSkywarsModeStats("teams_normal", stats as _SkywarsStats, true) const teams_normal = getSkywarsModeStats("teams_normal", stats as _SkywarsStats, true)
// const teams_insane = getSkywarsModeStats("teams_insane", stats as _SkywarsStats, true) const teams_insane = getSkywarsModeStats("teams_insane", stats as _SkywarsStats, true)
// const mega = getSkywarsModeStats("mega", stats as _SkywarsStats, true) const mega = getSkywarsModeStats("mega", stats as _SkywarsStats, true)
// const mega_doubles = getSkywarsModeStats("mega_doubles", stats as _SkywarsStats, true) const mega_doubles = getSkywarsModeStats("mega_doubles", stats as _SkywarsStats, true)
// const ranked = getSkywarsModeStats("ranked", stats as _SkywarsStats, true) const ranked = getSkywarsModeStats("ranked", stats as _SkywarsStats, true)
//
// const combinedStats = concatStatArrays(soloStats, doublesStats, threesStats, foursStats) const combinedStats = concatSkywarsStats(normal, insane, teams_normal, teams_insane, mega, mega_doubles, ranked)
//
// return ( return (
// <TableRow className="font-bold"> <TableRow className="font-bold">
// <TableCell>Core Modes</TableCell> <TableCell>Core Modes</TableCell>
// {combinedStats.map((v, i) => { {combinedStats.map((v, i) => {
// return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell> return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
// })} })}
// </TableRow> </TableRow>
// ) )
// } }

View File

@@ -1,5 +1,25 @@
import { BedwarsModeStats } from "./hypixel/bedwars" import { BedwarsModeStats } from "./hypixel/bedwars"
import { devide } from "./hypixel/general" import { devide } from "./hypixel/general"
import { SkywarsModeStats } from "./hypixel/skywars"
export function concatSkywarsStats(...stats: SkywarsModeStats[]) {
const summed = concatStatsArray<SkywarsModeStats>(["kills", "deaths", "wins", "losses"], ...stats)
const ret = {
...summed,
kd: devide(summed.kills, summed.deaths),
wl: devide(summed.wins, summed.losses)
}
return [
ret.kills,
ret.deaths,
ret.kd,
ret.wins,
ret.losses,
ret.wl
]
}
export function concatBedwarsStats(...stats: BedwarsModeStats[]) { export function concatBedwarsStats(...stats: BedwarsModeStats[]) {
if (stats.length === 0) return [] if (stats.length === 0) return []
@@ -15,7 +35,6 @@ export function concatBedwarsStats(...stats: BedwarsModeStats[]) {
"beds_lost_bedwars" "beds_lost_bedwars"
], ...stats) ], ...stats)
// winstreak special handling (max of provided, ignore -1)
let winstreak = -1 let winstreak = -1
for (const s of stats) { for (const s of stats) {
if (s.winstreak !== -1) winstreak = Math.max(winstreak, s.winstreak) if (s.winstreak !== -1) winstreak = Math.max(winstreak, s.winstreak)