Skip to content

Commit 3ca1f7b

Browse files
authored
Merge pull request #535 from cornell-dti/aq/final-cleanup
Final cleanup
2 parents c2cf2fa + c538a02 commit 3ca1f7b

25 files changed

+457
-65100
lines changed

client/src/modules/Admin/Components/AddAdminModal.tsx

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@ type ModalProps = {
2121
/**
2222
* Add Admin Component
2323
*
24-
* Modal that will pop up with a form to take in admin details (name, netid,
24+
* Modal that will pop up with a form to take in admin details (name, netid,
2525
* and role). Submitting the form will give admin privilege to the user with
26-
* the given netid.
26+
* the given netid.
2727
*/
2828

29-
const AddAdminModal = ({ open, setOpen, onSuccess, token, mode, initialValues }: ModalProps) => {
29+
const AddAdminModal = ({
30+
open,
31+
setOpen,
32+
onSuccess,
33+
token,
34+
mode,
35+
initialValues
36+
}: ModalProps) => {
3037
const [name, setName] = useState(initialValues?.name || '');
3138
const [netId, setNetId] = useState(initialValues?.netId || '');
3239
const [role, setRole] = useState<string | ''>(initialValues?.role || '');
@@ -54,7 +61,11 @@ const AddAdminModal = ({ open, setOpen, onSuccess, token, mode, initialValues }:
5461
setError('');
5562
};
5663

57-
const addAdminByNetId = async (_netId: string, _role: string, _name: string) => {
64+
const addAdminByNetId = async (
65+
_netId: string,
66+
_role: string,
67+
_name: string
68+
) => {
5869
const [_firstName, ...rest] = _name.trim().split(' ');
5970
const _lastName = rest.join(' ');
6071

@@ -132,7 +143,9 @@ const AddAdminModal = ({ open, setOpen, onSuccess, token, mode, initialValues }:
132143
value={role}
133144
onChange={(e) => setRole(e.target.value as Role)}
134145
>
135-
<option value="" disabled>Select Role</option>
146+
<option value="" disabled>
147+
Select Role
148+
</option>
136149
<option value="Designer">Designer</option>
137150
<option value="TPM">TPM</option>
138151
<option value="PM">PM</option>
@@ -149,7 +162,13 @@ const AddAdminModal = ({ open, setOpen, onSuccess, token, mode, initialValues }:
149162
onClick={handleSubmit}
150163
disabled={!valid || loading}
151164
>
152-
{loading ? (mode === 'add' ? 'Adding...' : 'Saving...') : (mode === 'add' ? 'Add Admin' : 'Save Changes')}
165+
{loading
166+
? mode === 'add'
167+
? 'Adding...'
168+
: 'Saving...'
169+
: mode === 'add'
170+
? 'Add Admin'
171+
: 'Save Changes'}
153172
</button>
154173
</div>
155174
</div>

client/src/modules/Admin/Components/Admin.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { useAuthMandatoryLogin } from '../../../auth/auth_utils';
99
import axios from 'axios';
1010
import Loading from '../../Globals/Loading';
1111
import Navbar from '../../Globals/Navbar';
12-
import Stats from './Stats';
1312

1413
export const Admin = () => {
1514
const { isLoggedIn, token, isAuthenticating } =

client/src/modules/Admin/Components/AdminUser.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import React, { useState, useRef, useEffect } from 'react';
22
import DeleteAdminModal from './DeleteAdminModal';
33
import AddAdminModal from './AddAdminModal';
44
import styles from '../Styles/AdminUser.module.css';
5-
import axios from 'axios';
65

76
type Role = 'Designer' | 'TPM' | 'PM' | 'PMM' | 'Developer';
87

@@ -46,26 +45,40 @@ const AdminUser = ({ user, token, removeHandler, refreshAdmins }: Props) => {
4645
};
4746
}, []);
4847

49-
5048
return (
5149
<div className={styles.adminRow}>
5250
<div className={styles.nameCol}>
53-
<div className={styles.fullName}>{user.firstName} {user.lastName}</div>
51+
<div className={styles.fullName}>
52+
{user.firstName} {user.lastName}
53+
</div>
5454
<div className={styles.netId}>{user.netId}</div>
5555
</div>
5656

5757
<div className={styles.roleCol}>
58-
<span className={`${styles.roleBadge} ${styles[user.role?.toLowerCase() ?? 'default']}`}>
58+
<span
59+
className={`${styles.roleBadge} ${styles[user.role?.toLowerCase() ?? 'default']}`}
60+
>
5961
{user.role?.trim() ? user.role : 'No Role'}
6062
</span>
6163
</div>
6264

6365
<div className={styles.dateCol}>
64-
{user.date ? new Date(user.date).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }) : ''}
66+
{user.date
67+
? new Date(user.date).toLocaleDateString('en-US', {
68+
year: 'numeric',
69+
month: 'short',
70+
day: 'numeric'
71+
})
72+
: ''}
6573
</div>
6674

6775
<div className={styles.actionCol} ref={menuRef}>
68-
<button className={styles.menuButton} onClick={() => setMenuOpen((prev) => !prev)}></button>
76+
<button
77+
className={styles.menuButton}
78+
onClick={() => setMenuOpen((prev) => !prev)}
79+
>
80+
81+
</button>
6982

7083
{menuOpen && (
7184
<div className={styles.dropdownMenu}>
@@ -89,7 +102,6 @@ const AdminUser = ({ user, token, removeHandler, refreshAdmins }: Props) => {
89102
</div>
90103
</div>
91104
)}
92-
93105
</div>
94106
<DeleteAdminModal
95107
isOpen={deleteModalOpen}
@@ -118,5 +130,4 @@ const AdminUser = ({ user, token, removeHandler, refreshAdmins }: Props) => {
118130
);
119131
};
120132

121-
122133
export default AdminUser;

client/src/modules/Admin/Components/AdminUsers.tsx

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ type Props = {
1414

1515
const ManageAdmins = ({ token }: Props) => {
1616
const [admins, setAdmins] = useState<Student[]>([]);
17-
const [netId, setNetId] = useState<string>('');
1817
const [isModalOpen, setIsModalOpen] = useState(false);
1918
const [searchQuery, setSearchQuery] = useState('');
2019
const [filterOpen, setFilterOpen] = useState(false);
@@ -32,8 +31,6 @@ const ManageAdmins = ({ token }: Props) => {
3231
addedBefore !== '' ||
3332
sortOption !== 'date-latest';
3433

35-
36-
3734
/**
3835
* Fetch all admins when the page loads
3936
*/
@@ -76,7 +73,10 @@ const ManageAdmins = ({ token }: Props) => {
7673
<div className={styles.adminPage}>
7774
<div className={styles.adminHeader}>
7875
<h1>Manage Administrators</h1>
79-
<button className={styles.addAdminButtonTop} onClick={() => setIsModalOpen(true)}>
76+
<button
77+
className={styles.addAdminButtonTop}
78+
onClick={() => setIsModalOpen(true)}
79+
>
8080
<span></span> Add Admin
8181
</button>
8282
</div>
@@ -194,49 +194,60 @@ const ManageAdmins = ({ token }: Props) => {
194194
>
195195
Apply
196196
</button>
197-
198197
</div>
199198
</div>
200199
)}
201200
</div>
202201
</div>
203202
<div className={styles.sortWrapper}>
204-
<button className={styles.sortButton} onClick={() => setSortOpen(!sortOpen)}>
203+
<button
204+
className={styles.sortButton}
205+
onClick={() => setSortOpen(!sortOpen)}
206+
>
205207
Sort
206208
</button>
207209

208210
{sortOpen && (
209211
<div className={styles.sortDropdown}>
210212
<div
211213
className={`${styles.sortItem} ${sortOption === 'name' ? styles.selectedSort : ''}`}
212-
onClick={() => { setSortOption('name'); setSortOpen(false); }}
214+
onClick={() => {
215+
setSortOption('name');
216+
setSortOpen(false);
217+
}}
213218
>
214219
Name (Alphabetical)
215220
</div>
216221
<div
217222
className={`${styles.sortItem} ${sortOption === 'role' ? styles.selectedSort : ''}`}
218-
onClick={() => { setSortOption('role'); setSortOpen(false); }}
223+
onClick={() => {
224+
setSortOption('role');
225+
setSortOpen(false);
226+
}}
219227
>
220228
Role (Alphabetical)
221229
</div>
222230
<div
223231
className={`${styles.sortItem} ${sortOption === 'date-latest' ? styles.selectedSort : ''}`}
224-
onClick={() => { setSortOption('date-latest'); setSortOpen(false); }}
232+
onClick={() => {
233+
setSortOption('date-latest');
234+
setSortOpen(false);
235+
}}
225236
>
226237
Date Added: Latest
227238
</div>
228239
<div
229240
className={`${styles.sortItem} ${sortOption === 'date-earliest' ? styles.selectedSort : ''}`}
230-
onClick={() => { setSortOption('date-earliest'); setSortOpen(false); }}
241+
onClick={() => {
242+
setSortOption('date-earliest');
243+
setSortOpen(false);
244+
}}
231245
>
232246
Date Added: Earliest
233247
</div>
234248
</div>
235249
)}
236-
237250
</div>
238-
239-
240251
</div>
241252
</div>
242253
<div className={styles.tableHeader}>
@@ -248,30 +259,40 @@ const ManageAdmins = ({ token }: Props) => {
248259

249260
<div className={styles.adminList}>
250261
{admins
251-
.filter(admin => {
262+
.filter((admin) => {
252263
if (selectedRole && admin.role !== selectedRole) return false;
253264
if (admin.date) {
254265
const adminDate = new Date(admin.date);
255266

256-
if (addedAfter && adminDate < new Date(addedAfter)) return false;
257-
if (addedBefore && adminDate > new Date(addedBefore)) return false;
267+
if (addedAfter && adminDate < new Date(addedAfter))
268+
return false;
269+
if (addedBefore && adminDate > new Date(addedBefore))
270+
return false;
258271
}
259272
return true;
260273
})
261-
.filter(admin =>
274+
.filter((admin) =>
262275
`${admin.firstName} ${admin.lastName} ${admin.netId}`
263276
.toLowerCase()
264277
.includes(searchQuery.toLowerCase())
265278
)
266279
.sort((a, b) => {
267280
if (sortOption === 'name') {
268-
return `${a.firstName} ${a.lastName}`.localeCompare(`${b.firstName} ${b.lastName}`);
281+
return `${a.firstName} ${a.lastName}`.localeCompare(
282+
`${b.firstName} ${b.lastName}`
283+
);
269284
} else if (sortOption === 'role') {
270285
return (a.role || '').localeCompare(b.role || '');
271286
} else if (sortOption === 'date-latest') {
272-
return new Date(b.date || 0).getTime() - new Date(a.date || 0).getTime();
287+
return (
288+
new Date(b.date || 0).getTime() -
289+
new Date(a.date || 0).getTime()
290+
);
273291
} else if (sortOption === 'date-earliest') {
274-
return new Date(a.date || 0).getTime() - new Date(b.date || 0).getTime();
292+
return (
293+
new Date(a.date || 0).getTime() -
294+
new Date(b.date || 0).getTime()
295+
);
275296
}
276297
return 0;
277298
})
@@ -283,7 +304,7 @@ const ManageAdmins = ({ token }: Props) => {
283304
lastName: admin.lastName,
284305
netId: admin.netId,
285306
role: admin.role as Role,
286-
date: admin.date ? new Date(admin.date) : undefined,
307+
date: admin.date ? new Date(admin.date) : undefined
287308
}}
288309
token={token}
289310
removeHandler={removeAdmin}
@@ -292,7 +313,6 @@ const ManageAdmins = ({ token }: Props) => {
292313
))}
293314
</div>
294315
</div>
295-
296316
</div>
297317
);
298318
};

client/src/modules/Admin/Components/DeleteAdminModal.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,19 @@ const DeleteAdminModal = ({ isOpen, onClose, onConfirm }: Props) => {
1313
return (
1414
<div className={styles.overlay}>
1515
<div className={styles.modal}>
16-
<button className={styles.closeButton} onClick={onClose}>×</button>
16+
<button className={styles.closeButton} onClick={onClose}>
17+
×
18+
</button>
1719
<h2>Delete this admin?</h2>
1820
<p>You are about to delete this person.</p>
1921
<p>Once deleted, it cannot be undone.</p>
2022
<div className={styles.buttons}>
21-
<button className={styles.cancelButton} onClick={onClose}>Cancel</button>
22-
<button className={styles.confirmButton} onClick={onConfirm}>Confirm</button>
23+
<button className={styles.cancelButton} onClick={onClose}>
24+
Cancel
25+
</button>
26+
<button className={styles.confirmButton} onClick={onConfirm}>
27+
Confirm
28+
</button>
2329
</div>
2430
</div>
2531
</div>

0 commit comments

Comments
 (0)