Added repaired weapons bar

This commit is contained in:
2025-09-18 23:23:38 +02:00
parent 0e08c1ab1d
commit 4a388c35a8
5 changed files with 82 additions and 3 deletions

View File

@@ -0,0 +1,60 @@
"use client"
import { formatNumber } from "@/lib/formatters"
import { getWarlordsWeaponsRepaired } from "@/lib/hypixel/warlords/general"
import { NonNullStats } from "@/lib/schema/player"
import { cn } from "@/lib/utils"
import { useEffect, useState } from "react"
import { Tooltip } from "react-tooltip"
export function WarlordsWeaponsBar({ stats }: { stats: NonNullable<NonNullStats["Warlords"]> }) {
const [pos, setPos] = useState({ x: 0, y: 0 })
useEffect(() => {
const controller = new AbortController()
window.addEventListener("mousemove", (e) => {
if (!(e.target instanceof HTMLDivElement)) return
if (e.target.dataset.id !== "warlords-weapons-bar") return
setPos({ x: e.clientX, y: e.clientY - 10 })
}, { signal: controller.signal })
return () => {
controller.abort()
}
})
const repaired = getWarlordsWeaponsRepaired(stats)
return (
<>
<p>
<span className="font-bold">{"Total Weapons Repaired: "}</span>
<span>{formatNumber(stats.repaired)}</span>
</p>
<div className="flex overflow-hidden mt-2 mb-4 rounded-md">
{repaired.map(({ repaired, num }) => {
const percent = num / stats.repaired
if (percent === 0) return null
return (
<div
data-id="warlords-weapons-bar"
data-tooltip-id="warlords-weapons-bar"
data-tooltip-content={`${formatNumber(num)} ${repaired.name} Weapons`}
key={repaired.id}
className={cn("h-5", `bg-mc-${repaired.color}`)}
style={{
width: `${percent * 100}%`
}}
>
</div>
)
})}
</div>
<Tooltip id="warlords-weapons-bar" position={pos} />
</>
)
}

View File

@@ -4,6 +4,7 @@ import { devide } from "@/lib/hypixel/general"
import { getWarlordsLosses, getWarlordsMostPlayedClass } from "@/lib/hypixel/warlords/general"
import { NonNullStats } from "@/lib/schema/player"
import GeneralStats from "../GeneralStats"
import { WarlordsWeaponsBar } from "./client"
import WarlordsGeneralStats from "./stats"
export default function WarlordsStats({ stats }: { stats: NonNullStats["Warlords"] }) {
@@ -39,6 +40,9 @@ export default function WarlordsStats({ stats }: { stats: NonNullStats["Warlords
>
<Separator className="my-4" />
<WarlordsGeneralStats stats={stats} />
<Separator className="my-4" />
<WarlordsWeaponsBar stats={stats} />
<Separator className="my-4" />
</GeneralStats>
)
}