Skip to content

Commit 678fa36

Browse files
authored
Merge pull request #2221 from Northeastern-Electric-Racing/#2137-attendance-tracker-tool
#2137 attendance tracker tool
2 parents 9c260ed + 144f431 commit 678fa36

2 files changed

Lines changed: 80 additions & 1 deletion

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import React, { useState } from 'react';
2+
import PageBlock from '../../layouts/PageBlock';
3+
import { TextField, FormControl, FormLabel, Select, MenuItem, SelectChangeEvent, TableCell, TableRow } from '@mui/material';
4+
import AdminToolTable from './AdminToolTable';
5+
6+
const AdminToolsAttendeeDesignReviewInfo: React.FC = () => {
7+
const [selectedTeam, setSelectedTeam] = useState('');
8+
const [searchQuery, setSearchQuery] = useState('');
9+
10+
// TODO: to be deleted later, this is just stub data for filter options
11+
const teams = ['All', 'Team A', 'Team B', 'Team C'];
12+
13+
// TODO: Stub data for team members, replace with dynamic data here
14+
const teamMembers = [
15+
{ name: 'Batman', reviewsAttended: 2, missedReviews: 4 },
16+
{ name: 'Superman', reviewsAttended: 4, missedReviews: 1 }
17+
];
18+
19+
// TODO: Filtering team members based on search query here
20+
const filteredMembers = teamMembers.filter((member) => member.name.toLowerCase().includes(searchQuery.toLowerCase()));
21+
22+
// TODO: Filtering for teams backend logic comes here
23+
const handleTeamChange = (event: SelectChangeEvent) => {
24+
setSelectedTeam(event.target.value as string);
25+
};
26+
27+
const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {
28+
setSearchQuery(event.target.value);
29+
};
30+
31+
const attendeeRows = filteredMembers.map((member, index) => (
32+
<TableRow key={index}>
33+
<TableCell sx={{ border: '2px solid black' }}>{member.name}</TableCell>
34+
<TableCell sx={{ border: '2px solid black' }}>{member.reviewsAttended}</TableCell>
35+
<TableCell sx={{ border: '2px solid black' }}>{member.missedReviews}</TableCell>
36+
</TableRow>
37+
));
38+
39+
return (
40+
<PageBlock title="Attendee Design Review Information">
41+
<FormControl fullWidth sx={{ marginBottom: 2 }}>
42+
<FormLabel htmlFor="search-by-name">Search by team member name</FormLabel>
43+
<TextField id="search-by-name" variant="outlined" value={searchQuery} onChange={handleSearchChange} fullWidth />
44+
</FormControl>
45+
<FormControl fullWidth sx={{ marginBottom: 2 }}>
46+
<FormLabel id="team-select-label">Team</FormLabel>
47+
<Select
48+
labelId="team-select-label"
49+
id="team-select"
50+
value={selectedTeam}
51+
onChange={handleTeamChange}
52+
displayEmpty
53+
fullWidth
54+
>
55+
{teams.map((team) => (
56+
<MenuItem key={team} value={team}>
57+
{team}
58+
</MenuItem>
59+
))}
60+
{/* TODO: we'll have to change this here as well for backend logic, above is just a stub implementation. */}
61+
</Select>
62+
</FormControl>
63+
<AdminToolTable
64+
columns={[
65+
{ name: 'Team Member Name', width: '33%' },
66+
{ name: 'No. Of Design Reviews Attended', width: '33%' },
67+
{ name: 'Required to come but did not', width: '34%' }
68+
]}
69+
rows={attendeeRows}
70+
/>
71+
</PageBlock>
72+
);
73+
};
74+
75+
export default AdminToolsAttendeeDesignReviewInfo;

src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import AdminToolsUserManagement from './AdminToolsUserManagement';
77
import AdminToolsSlackUpcomingDeadlines from './AdminToolsSlackUpcomingDeadlines';
8+
import AdminToolsAttendeeDesignReviewInfo from './AdminToolsAttendeeDesignReviewInfo';
89
import { useCurrentUser } from '../../hooks/users.hooks';
910
import { isAdmin, isHead } from 'shared';
1011
import PageLayout from '../../components/PageLayout';
@@ -81,7 +82,10 @@ const AdminToolsPage: React.FC = () => {
8182
) : tabIndex === 2 ? (
8283
<AdminToolsFinanceConfig />
8384
) : (
84-
<AdminToolsSlackUpcomingDeadlines />
85+
<>
86+
<AdminToolsSlackUpcomingDeadlines />
87+
<AdminToolsAttendeeDesignReviewInfo />
88+
</>
8589
)}
8690
</PageLayout>
8791
);

0 commit comments

Comments
 (0)