Finished blitz general stats and mode stats table
This commit is contained in:
@@ -5,12 +5,14 @@ import { devide } from "@/lib/hypixel/general"
|
|||||||
import { NonNullStats } from "@/lib/schema/player"
|
import { NonNullStats } from "@/lib/schema/player"
|
||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
import GeneralStats from "../GeneralStats"
|
import GeneralStats from "../GeneralStats"
|
||||||
|
import BlitzGeneralStats from "./stats"
|
||||||
|
import { BlitzModeStatsTable } from "./table"
|
||||||
|
|
||||||
export default function BlitzStats({ stats }: { stats: NonNullStats["Blitz"] }) {
|
export default function BlitzStats({ stats }: { stats: NonNullStats["Blitz"] }) {
|
||||||
if (!stats) return null
|
if (!stats) return null
|
||||||
|
|
||||||
const kd = formatNumber(devide(stats.kills, stats.deaths))
|
const kd = formatNumber(devide(stats.kills, stats.deaths))
|
||||||
const wins = stats.wins_solo_normal + stats.wins_team_normal
|
const wins = stats.wins_solo_normal + stats.wins_teams_normal
|
||||||
const mostPlayedKit = getBlitzMostPlayedKit(stats)
|
const mostPlayedKit = getBlitzMostPlayedKit(stats)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -41,6 +43,10 @@ export default function BlitzStats({ stats }: { stats: NonNullStats["Blitz"] })
|
|||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<Separator className="my-4" />
|
<Separator className="my-4" />
|
||||||
|
<BlitzGeneralStats stats={stats} />
|
||||||
|
<Separator className="my-4" />
|
||||||
|
<BlitzModeStatsTable stats={stats} />
|
||||||
|
<Separator className="my-4" />
|
||||||
</GeneralStats>
|
</GeneralStats>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/app/(stats)/player/[ign]/_stats/blitz/stats.tsx
Normal file
36
src/app/(stats)/player/[ign]/_stats/blitz/stats.tsx
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import { formatNumber } from "@/lib/formatters"
|
||||||
|
import { devide } from "@/lib/hypixel/general"
|
||||||
|
import { NonNullStats } from "@/lib/schema/player"
|
||||||
|
import { BasicStat } from "../../_components/Stats"
|
||||||
|
|
||||||
|
export default function BlitzGeneralStats({ stats }: { stats: NonNullable<NonNullStats["Blitz"]> }) {
|
||||||
|
const wins = stats.wins_solo_normal + stats.wins_teams_normal
|
||||||
|
const games = wins + stats.deaths
|
||||||
|
const losses = games - wins
|
||||||
|
|
||||||
|
const kd = devide(stats.kills, stats.deaths)
|
||||||
|
const wl = devide(wins, losses)
|
||||||
|
const kg = devide(stats.kills, games)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex">
|
||||||
|
<div className="flex-1">
|
||||||
|
<BasicStat title="Coins: " value={formatNumber(stats.coins)} className="text-mc-gold" />
|
||||||
|
<BasicStat title="Kills: " value={formatNumber(stats.kills)} />
|
||||||
|
<BasicStat title="Deaths: " value={formatNumber(stats.deaths)} />
|
||||||
|
<BasicStat title="Kill/Death Ratio: " value={formatNumber(kd)} />
|
||||||
|
</div>
|
||||||
|
<div className="flex-1">
|
||||||
|
<BasicStat title="Wins: " value={formatNumber(wins)} />
|
||||||
|
<BasicStat title="Losses: " value={formatNumber(losses)} />
|
||||||
|
<BasicStat title="Win/Loss Ratio: " value={formatNumber(wl)} />
|
||||||
|
<BasicStat title="Kills/Game Ratio: " value={formatNumber(kg)} />
|
||||||
|
</div>
|
||||||
|
<div className="flex-1">
|
||||||
|
<BasicStat title="Games Played: " value={formatNumber(games)} />
|
||||||
|
<BasicStat title="Damage Dealt: " value={formatNumber(stats.damage)} />
|
||||||
|
<BasicStat title="Damage Taken: " value={formatNumber(stats.damage_taken)} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
29
src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
Normal file
29
src/app/(stats)/player/[ign]/_stats/blitz/table.tsx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
||||||
|
import { formatNumber } from "@/lib/formatters"
|
||||||
|
import { NonNullStats } from "@/lib/schema/player"
|
||||||
|
|
||||||
|
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>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -854,7 +854,12 @@ function blitzKitPlayedStats() {
|
|||||||
export const blitzStatsSchema = z.object({
|
export const blitzStatsSchema = z.object({
|
||||||
kills: z.number().default(0),
|
kills: z.number().default(0),
|
||||||
deaths: z.number().default(0),
|
deaths: z.number().default(0),
|
||||||
|
kills_solo_normal: z.number().default(0),
|
||||||
|
kills_teams_normal: z.number().default(0),
|
||||||
wins_solo_normal: z.number().default(0),
|
wins_solo_normal: z.number().default(0),
|
||||||
wins_team_normal: z.number().default(0),
|
wins_teams_normal: z.number().default(0),
|
||||||
|
coins: z.number().default(0),
|
||||||
|
damage: z.number().default(0),
|
||||||
|
damage_taken: z.number().default(0),
|
||||||
...blitzKitPlayedStats()
|
...blitzKitPlayedStats()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user