Skip to content

Commit c67119b

Browse files
committed
add ability to select the semester
1 parent cfd23ab commit c67119b

File tree

2 files changed

+62
-8
lines changed

2 files changed

+62
-8
lines changed

src/common/types/roomRequest.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,34 @@ export const eventThemeOptions = [
1313
"Spirituality"
1414
] as [string, ...string[]];
1515

16+
17+
export function getPreviousSemesters() {
18+
const currentDate = new Date();
19+
const currentYear = currentDate.getFullYear();
20+
const currentMonth = currentDate.getMonth() + 1;
21+
22+
let semesters = [];
23+
let currentSemester = '';
24+
25+
if (currentMonth >= 1 && currentMonth <= 5) {
26+
currentSemester = 'Spring';
27+
} else if (currentMonth >= 6 && currentMonth <= 12) {
28+
currentSemester = 'Fall';
29+
}
30+
31+
if (currentSemester === 'Spring') {
32+
semesters.push({ value: `fa${(currentYear - 1).toString().slice(-2)}`, label: `Fall ${currentYear - 1}` });
33+
semesters.push({ value: `sp${(currentYear - 1).toString().slice(-2)}`, label: `Spring ${currentYear - 1}` });
34+
semesters.push({ value: `fa${(currentYear - 2).toString().slice(-2)}`, label: `Fall ${currentYear - 2}` });
35+
} else if (currentSemester === 'Fall') {
36+
semesters.push({ value: `sp${currentYear.toString().slice(-2)}`, label: `Spring ${currentYear}` });
37+
semesters.push({ value: `fa${(currentYear - 1).toString().slice(-2)}`, label: `Fall ${currentYear - 1}` });
38+
semesters.push({ value: `sp${(currentYear - 1).toString().slice(-2)}`, label: `Spring ${currentYear - 1}` });
39+
}
40+
41+
return semesters.reverse();
42+
}
43+
1644
export function getSemesters() {
1745
const currentDate = new Date();
1846
const currentYear = currentDate.getFullYear();

src/ui/pages/roomRequest/RoomRequestLanding.page.tsx

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
1-
import React, { useState } from 'react';
2-
import { Container, Title, Tabs } from '@mantine/core';
1+
import React, { useEffect, useState } from 'react';
2+
import { Container, Title, Tabs, Select, Loader } from '@mantine/core';
33
import { AuthGuard } from '@ui/components/AuthGuard';
44
import { AppRoles } from '@common/roles';
55
import { useApi } from '@ui/util/api';
66
import ExistingRoomRequests from './ExistingRoomRequests';
77
import NewRoomRequest from './NewRoomRequest';
88
import {
9+
getPreviousSemesters,
10+
getSemesters,
911
RoomRequestFormValues,
1012
RoomRequestGetAllResponse,
1113
RoomRequestPostResponse,
1214
} from '@common/types/roomRequest';
1315

1416
export const ManageRoomRequestsPage: React.FC = () => {
1517
const api = useApi('core');
16-
const [semester, setSemester] = useState<string>('sp25');
17-
18+
const [semester, setSemester] = useState<string | null>(null); // TODO: Create a selector for this
19+
const [isLoading, setIsLoading] = useState(false);
20+
const nextSemesters = getSemesters();
21+
const semesterOptions = [...getPreviousSemesters(), ...nextSemesters];
1822
const createRoomRequest = async (
1923
payload: RoomRequestFormValues
2024
): Promise<RoomRequestPostResponse> => {
@@ -27,6 +31,9 @@ export const ManageRoomRequestsPage: React.FC = () => {
2731
return response.data;
2832
};
2933

34+
useEffect(() => {
35+
setSemester(nextSemesters[0].value);
36+
}, []);
3037
return (
3138
<AuthGuard
3239
resourceDef={{
@@ -43,10 +50,29 @@ export const ManageRoomRequestsPage: React.FC = () => {
4350
<Tabs.Tab value="new_requests">New Request</Tabs.Tab>
4451
</Tabs.List>
4552

46-
<Tabs.Panel value="existing_requests">
47-
<br />
48-
<ExistingRoomRequests getRoomRequests={getRoomRequests} semester={semester} />
49-
</Tabs.Panel>
53+
<Select
54+
label="Select Semester"
55+
placeholder="Select semester to view room requests"
56+
searchable
57+
value={semester}
58+
onChange={(val) => {
59+
setIsLoading(true);
60+
setSemester(val);
61+
setIsLoading(false);
62+
}}
63+
data={semesterOptions}
64+
/>
65+
66+
{isLoading ? (
67+
<Loader size={16} />
68+
) : (
69+
<Tabs.Panel value="existing_requests">
70+
<br />
71+
{semester && (
72+
<ExistingRoomRequests getRoomRequests={getRoomRequests} semester={semester} />
73+
)}
74+
</Tabs.Panel>
75+
)}
5076

5177
<Tabs.Panel value="new_requests">
5278
<br />

0 commit comments

Comments
 (0)