generated from muhtadeetaron/nextjs-template
33 lines
975 B
TypeScript
33 lines
975 B
TypeScript
export interface BoardData {
|
|
id: string;
|
|
name: string;
|
|
points: number;
|
|
}
|
|
|
|
export const getTopThree = (boardData: BoardData[]) => {
|
|
if (!boardData || boardData.length === 0) return [];
|
|
return boardData
|
|
.slice()
|
|
.sort((a, b) => b.points - a.points)
|
|
.slice(0, 3)
|
|
.map((player, index) => ({
|
|
...player,
|
|
rank: index + 1,
|
|
height: index === 0 ? 250 : index === 1 ? 200 : 170,
|
|
}));
|
|
};
|
|
|
|
export const getLeaderboard = (boardData: BoardData[]) => {
|
|
return boardData.slice().sort((a, b) => b.points - a.points);
|
|
};
|
|
|
|
export const getUserData = (boardData: BoardData[], name: string) => {
|
|
if (!boardData || !Array.isArray(boardData)) return [];
|
|
const sortedData = boardData
|
|
.filter((player) => player?.name && player?.points !== undefined)
|
|
.sort((a, b) => b.points - a.points);
|
|
|
|
const result = sortedData.find((player) => player.name === name);
|
|
return result ? [{ ...result, rank: sortedData.indexOf(result) + 1 }] : [];
|
|
};
|