Refactored duels table
This commit is contained in:
@@ -1,6 +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 { getDuelsModeStats, getModeTitle } from "@/lib/hypixel/duels/duels"
|
import { getBestDuelsMode, getDuelsModeStats, getModeTitle } from "@/lib/hypixel/duels/duels"
|
||||||
import { NonNullStats } from "@/lib/schema/player"
|
import { NonNullStats } from "@/lib/schema/player"
|
||||||
|
|
||||||
export default function DuelsStatTable({ stats }: { stats: NonNullStats["Duels"] }) {
|
export default function DuelsStatTable({ stats }: { stats: NonNullStats["Duels"] }) {
|
||||||
@@ -8,37 +8,37 @@ export default function DuelsStatTable({ stats }: { stats: NonNullStats["Duels"]
|
|||||||
<Table>
|
<Table>
|
||||||
<DuelsTableHeader />
|
<DuelsTableHeader />
|
||||||
<TableBody>
|
<TableBody>
|
||||||
<Bedwars1v1Stats stats={stats} />
|
<DuelsStat modeId="bedwars_two_one_duels" stats={stats} />
|
||||||
<Bedwars1v1RushStats stats={stats} />
|
<DuelsStat modeId="bedwars_two_one_duels_rush" stats={stats} />
|
||||||
<UHC1v1Stats stats={stats} />
|
<DuelsStat modeId="uhc_duel" stats={stats} />
|
||||||
<UHC2v2Stats stats={stats} />
|
<DuelsStat modeId="uhc_doubles" stats={stats} />
|
||||||
<UHC4v4Stats stats={stats} />
|
<DuelsStat modeId="uhc_four" stats={stats} />
|
||||||
<UHCMeetupStats stats={stats} />
|
<DuelsStat modeId="uhc_meetup" stats={stats} />
|
||||||
<OP1v1Stats stats={stats} />
|
<DuelsStat modeId="op_duel" stats={stats} />
|
||||||
<OP2v2Stats stats={stats} />
|
<DuelsStat modeId="op_doubles" stats={stats} />
|
||||||
<SkyWars1v1Stats stats={stats} />
|
<DuelsStat modeId="sw_duel" stats={stats} />
|
||||||
<SkyWars2v2Stats stats={stats} />
|
<DuelsStat modeId="sw_doubles" stats={stats} />
|
||||||
<Bow1v1Stats stats={stats} />
|
<DuelsStat modeId="bow_duel" stats={stats} />
|
||||||
<Blitz1v1Stats stats={stats} />
|
<DuelsStat modeId="blitz_duel" stats={stats} />
|
||||||
<MegaWalls1v1Stats stats={stats} />
|
<DuelsStat modeId="mw_duel" stats={stats} />
|
||||||
<MegaWalls2v2Stats stats={stats} />
|
<DuelsStat modeId="mw_doubles" stats={stats} />
|
||||||
<Sumo1v1Stats stats={stats} />
|
<DuelsStat modeId="sumo_duel" stats={stats} />
|
||||||
<BowSpleef1v1Stats stats={stats} />
|
<DuelsStat modeId="bowspleef_duel" stats={stats} />
|
||||||
<ParkourFFAStats stats={stats} />
|
<DuelsStat modeId="parkour_eight" stats={stats} />
|
||||||
<Boxing1v1Stats stats={stats} />
|
<DuelsStat modeId="boxing_duel" stats={stats} />
|
||||||
<Classic1v1Stats stats={stats} />
|
<DuelsStat modeId="classic_duel" stats={stats} />
|
||||||
<Classic2v2Stats stats={stats} />
|
<DuelsStat modeId="classic_doubles" stats={stats} />
|
||||||
<Potion1v1Stats stats={stats} />
|
<DuelsStat modeId="potion_duel" stats={stats} />
|
||||||
<Combo1v1Stats stats={stats} />
|
<DuelsStat modeId="combo_duel" stats={stats} />
|
||||||
<Quake1v1Stats stats={stats} />
|
<DuelsStat modeId="quake_duel" stats={stats} />
|
||||||
<Spleef1v1Stats stats={stats} />
|
<DuelsStat modeId="spleef_duel" stats={stats} />
|
||||||
<Bridge1v1Stats stats={stats} />
|
<DuelsStat modeId="bridge_duel" stats={stats} />
|
||||||
<Bridge2v2Stats stats={stats} />
|
<DuelsStat modeId="bridge_doubles" stats={stats} />
|
||||||
<Bridge3v3Stats stats={stats} />
|
<DuelsStat modeId="bridge_threes" stats={stats} />
|
||||||
<Bridge4v4Stats stats={stats} />
|
<DuelsStat modeId="bridge_four" stats={stats} />
|
||||||
<Bridge2v2v2v2Stats stats={stats} />
|
<DuelsStat modeId="bridge_2v2v2v2" stats={stats} />
|
||||||
<Bridge3v3v3v3Stats stats={stats} />
|
<DuelsStat modeId="bridge_3v3v3v3" stats={stats} />
|
||||||
<DuelArenaStats stats={stats} />
|
<DuelsStat modeId="duel_arena" stats={stats} />
|
||||||
</TableBody>
|
</TableBody>
|
||||||
</Table>
|
</Table>
|
||||||
)
|
)
|
||||||
@@ -72,529 +72,25 @@ function DuelsTableHeader() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function Bedwars1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
function DuelsStat(
|
||||||
|
{ modeId, stats }: { modeId: Parameters<typeof getModeTitle>[0], stats: NonNullStats["Duels"] }
|
||||||
|
) {
|
||||||
if (!stats) return null
|
if (!stats) return null
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bedwars_two_one_duels", stats)
|
const modeStats = getDuelsModeStats(modeId, stats)
|
||||||
const title = getModeTitle("bedwars_two_one_duels")
|
const title = getModeTitle(modeId)
|
||||||
|
const bestMode = getBestDuelsMode(stats) === modeId
|
||||||
|
const divisionLabel = "I"
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell>{title}</TableCell>
|
<TableCell className={bestMode ? "font-bold text-mc-light-purple" : undefined}>{title}</TableCell>
|
||||||
<TableCell>I</TableCell>
|
<TableCell>{divisionLabel}</TableCell>
|
||||||
{modeStats.map((v, i) => {
|
{modeStats.map((v, i) => (
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
<TableCell className={bestMode ? "font-bold text-mc-light-purple" : undefined} key={i}>
|
||||||
})}
|
{typeof v === "number" ? formatNumber(v) : v}
|
||||||
</TableRow>
|
</TableCell>
|
||||||
)
|
))}
|
||||||
}
|
|
||||||
|
|
||||||
function Bedwars1v1RushStats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bedwars_two_one_duels_rush", stats)
|
|
||||||
const title = getModeTitle("bedwars_two_one_duels_rush")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function UHC1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("uhc_duel", stats)
|
|
||||||
const title = getModeTitle("uhc_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function UHC2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("uhc_doubles", stats)
|
|
||||||
const title = getModeTitle("uhc_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function UHC4v4Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("uhc_four", stats)
|
|
||||||
const title = getModeTitle("uhc_four")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function UHCMeetupStats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("uhc_meetup", stats)
|
|
||||||
const title = getModeTitle("uhc_meetup")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function OP1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("op_duel", stats)
|
|
||||||
const title = getModeTitle("op_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function OP2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("op_doubles", stats)
|
|
||||||
const title = getModeTitle("op_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function SkyWars1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("sw_duel", stats)
|
|
||||||
const title = getModeTitle("sw_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function SkyWars2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("sw_doubles", stats)
|
|
||||||
const title = getModeTitle("sw_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function MegaWalls1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("mw_duel", stats)
|
|
||||||
const title = getModeTitle("mw_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function MegaWalls2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("mw_doubles", stats)
|
|
||||||
const title = getModeTitle("mw_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bow1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bow_duel", stats)
|
|
||||||
const title = getModeTitle("bow_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Blitz1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("blitz_duel", stats)
|
|
||||||
const title = getModeTitle("blitz_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Sumo1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("sumo_duel", stats)
|
|
||||||
const title = getModeTitle("sumo_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function BowSpleef1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bowspleef_duel", stats)
|
|
||||||
const title = getModeTitle("bowspleef_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function ParkourFFAStats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("parkour_eight", stats)
|
|
||||||
const title = getModeTitle("parkour_eight")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Boxing1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("boxing_duel", stats)
|
|
||||||
const title = getModeTitle("boxing_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Classic1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("classic_duel", stats)
|
|
||||||
const title = getModeTitle("classic_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Classic2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("classic_doubles", stats)
|
|
||||||
const title = getModeTitle("classic_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Potion1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("potion_duel", stats)
|
|
||||||
const title = getModeTitle("potion_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Combo1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("combo_duel", stats)
|
|
||||||
const title = getModeTitle("combo_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_duel", stats)
|
|
||||||
const title = getModeTitle("bridge_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_doubles", stats)
|
|
||||||
const title = getModeTitle("bridge_doubles")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge3v3Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_threes", stats)
|
|
||||||
const title = getModeTitle("bridge_threes")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge4v4Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_four", stats)
|
|
||||||
const title = getModeTitle("bridge_four")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge2v2v2v2Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_2v2v2v2", stats)
|
|
||||||
const title = getModeTitle("bridge_2v2v2v2")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Bridge3v3v3v3Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("bridge_3v3v3v3", stats)
|
|
||||||
const title = getModeTitle("bridge_3v3v3v3")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function DuelArenaStats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("duel_arena", stats)
|
|
||||||
const title = getModeTitle("duel_arena")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Quake1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("quake_duel", stats)
|
|
||||||
const title = getModeTitle("quake_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Spleef1v1Stats({ stats }: { stats: NonNullStats["Duels"] }) {
|
|
||||||
if (!stats) return null
|
|
||||||
|
|
||||||
const modeStats = getDuelsModeStats("spleef_duel", stats)
|
|
||||||
const title = getModeTitle("spleef_duel")
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>{title}</TableCell>
|
|
||||||
<TableCell>I</TableCell>
|
|
||||||
{modeStats.map((v, i) => {
|
|
||||||
return <TableCell key={i}>{typeof v === "number" ? formatNumber(v) : v}</TableCell>
|
|
||||||
})}
|
|
||||||
</TableRow>
|
</TableRow>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,27 +46,19 @@ export function getMostPlayed(stats: NonNullable<NonNullStats["Duels"]>) {
|
|||||||
|
|
||||||
type Mode = typeof MODES[number]["id"]
|
type Mode = typeof MODES[number]["id"]
|
||||||
|
|
||||||
// export function getBestMode(stats: NonNullable<NonNullStats["Duels"]>) {
|
export function getBestDuelsMode(stats: NonNullable<NonNullStats["Duels"]>) {
|
||||||
// const { wins_bedwars: solo } = getBedwarsModeStats("solo", stats, true)
|
let best: typeof MODES[number] | null = null
|
||||||
// const { wins_bedwars: doubles } = getBedwarsModeStats("doubles", stats, true)
|
let mostPlays = 0
|
||||||
// const { wins_bedwars: threes } = getBedwarsModeStats("3s", stats, true)
|
for (const mode of MODES) {
|
||||||
// const { wins_bedwars: fours } = getBedwarsModeStats("4s", stats, true)
|
const [, , , wins, losses] = getDuelsModeStats(mode.id, stats)
|
||||||
//
|
const plays = (wins as number || 0) + (losses as number || 0)
|
||||||
// const max = Math.max(solo, doubles, threes, fours)
|
if (plays > mostPlays) {
|
||||||
//
|
mostPlays = plays
|
||||||
// switch (max) {
|
best = mode
|
||||||
// case solo:
|
}
|
||||||
// return "solo"
|
}
|
||||||
// case doubles:
|
return best === null ? null : best.id
|
||||||
// return "doubles"
|
}
|
||||||
// case threes:
|
|
||||||
// return "3s"
|
|
||||||
// case fours:
|
|
||||||
// return "4s"
|
|
||||||
// default:
|
|
||||||
// return null
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
export function getDuelsModeStats(mode: Mode, stats: NonNullable<NonNullStats["Duels"]>) {
|
export function getDuelsModeStats(mode: Mode, stats: NonNullable<NonNullStats["Duels"]>) {
|
||||||
return duelsModeStats(mode, stats)
|
return duelsModeStats(mode, stats)
|
||||||
|
|||||||
Reference in New Issue
Block a user