servicepoint-tanks/tank-frontend/src/Scoreboard.tsx

45 lines
1.3 KiB
TypeScript
Raw Normal View History

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";
function numberSorter(a: number, b: number) {
return b - a;
}
2024-04-13 23:07:08 +02:00
export default function Scoreboard({}: {}) {
const [players, setPlayers] = useState<Player[]>([]);
2024-04-13 23:07:08 +02:00
useEffect(() => {
const refresh = () => {
getScores().then(value => {
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'},
{
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
}