diff --git a/vinvoor/src/leaderboard/LeaderboardTableBody.tsx b/vinvoor/src/leaderboard/LeaderboardTableBody.tsx index eaaa2e7..e471ef0 100644 --- a/vinvoor/src/leaderboard/LeaderboardTableBody.tsx +++ b/vinvoor/src/leaderboard/LeaderboardTableBody.tsx @@ -2,6 +2,7 @@ import type { Theme } from "@mui/material/styles"; import type { TableHeadCell } from "../types/general"; import type { LeaderboardItem } from "../types/leaderboard"; import { + Chip, Icon, TableBody, TableCell, @@ -81,12 +82,19 @@ function getPosition(position: number) { } } +function getScanned(checkedIn: boolean) { + if (checkedIn) + return ; +} + function getCell(row: LeaderboardItem, headCell: TableHeadCell) { switch (headCell.id) { case "positionChange": return getPositionChange(row[headCell.id]); case "position": return getPosition(row[headCell.id]); + case "checkedIn": + return getScanned(row[headCell.id]); default: return ( diff --git a/vinvoor/src/types/leaderboard.ts b/vinvoor/src/types/leaderboard.ts index ffb6a06..66527d9 100644 --- a/vinvoor/src/types/leaderboard.ts +++ b/vinvoor/src/types/leaderboard.ts @@ -8,6 +8,7 @@ export interface LeaderboardItemJSON { name: string; total_days: number; position_change: number; + checked_in: boolean; } // Internal @@ -18,6 +19,7 @@ export interface LeaderboardItem { name: string; totalDays: number; positionChange: number; + checkedIn: boolean; } // Converters @@ -27,6 +29,7 @@ export function convertLeaderboardItemJSON(leaderboardItems: LeaderboardItemJSON ...leaderboardItem, totalDays: leaderboardItem.total_days, positionChange: leaderboardItem.position_change, + checkedIn: leaderboardItem.checked_in, })); } @@ -52,9 +55,15 @@ export const leaderboardHeadCells: readonly TableHeadCell[] = [ padding: "normal", }, { - id: "totalDays", - label: "Total Days", + id: "checkedIn", + label: "Checked In", align: "right", padding: "normal", }, + { + id: "totalDays", + label: "Total Days", + align: "left", + padding: "checkbox", + }, ];