2024-04-14 18:26:13 +02:00
|
|
|
import {getScores, Player} from "./serverCalls.tsx";
|
2024-04-13 23:07:08 +02:00
|
|
|
import {useEffect, useState} from "react";
|
|
|
|
import DataTable from "./components/DataTable.tsx";
|
|
|
|
|
2024-04-14 18:26:13 +02:00
|
|
|
function numberSorter(a: number, b: number) {
|
|
|
|
return b - a;
|
|
|
|
}
|
|
|
|
|
2024-04-13 23:07:08 +02:00
|
|
|
export default function Scoreboard({}: {}) {
|
2024-04-14 18:26:13 +02:00
|
|
|
const [players, setPlayers] = useState<Player[]>([]);
|
2024-04-13 23:07:08 +02:00
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const refresh = () => {
|
|
|
|
getScores().then(value => {
|
2024-04-14 18:26:13 +02:00
|
|
|
if (value.successResult)
|
|
|
|
setPlayers(value.successResult);
|
2024-04-13 23:07:08 +02:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const timer = setInterval(refresh, 5000);
|
|
|
|
return () => clearInterval(timer);
|
|
|
|
}, [players]);
|
|
|
|
|
2024-04-14 12:57:45 +02:00
|
|
|
return <DataTable
|
|
|
|
data={players}
|
|
|
|
columns={[
|
|
|
|
{field: 'name'},
|
2024-04-14 18:26:13 +02:00
|
|
|
{
|
|
|
|
field: 'kills',
|
|
|
|
visualize: p => p.scores.kills.toString(),
|
|
|
|
sorter: (a, b) => numberSorter(a.scores.kills, b.scores.kills)
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'deaths',
|
|
|
|
visualize: p => p.scores.deaths.toString(),
|
|
|
|
sorter: (a, b) => numberSorter(a.scores.deaths, b.scores.deaths)
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'ratio',
|
|
|
|
visualize: p => p.scores.ratio.toString(),
|
|
|
|
sorter: (a, b) => numberSorter(a.scores.ratio, b.scores.ratio)
|
|
|
|
}
|
2024-04-14 12:57:45 +02:00
|
|
|
]}/>
|
2024-04-13 23:07:08 +02:00
|
|
|
}
|