Skip to content

Commit a61c560

Browse files
committed
#2136 existing meeting data works
1 parent d74fc0d commit a61c560

2 files changed

Lines changed: 42 additions & 29 deletions

File tree

src/frontend/src/pages/CalendarPage/DesignReviewDetailPage/DesignReviewDetailPage.tsx

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useAllUsers } from '../../../hooks/users.hooks';
66
import LoadingIndicator from '../../../components/LoadingIndicator';
77
import ErrorPage from '../../ErrorPage';
88
import { userToAutocompleteOption } from '../../../utils/teams.utils';
9-
import { useEffect, useState } from 'react';
9+
import { useEffect, useMemo, useState } from 'react';
1010
import CheckBoxIcon from '@mui/icons-material/CheckBox';
1111
import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
1212
import { DatePicker, TimePicker } from '@mui/x-date-pickers';
@@ -39,28 +39,46 @@ const DesignReviewDetailPage: React.FC<DesignReviewDetailPageProps> = ({ designR
3939
const [existingMeetingData, setexistingMeetingData] = useState<Map<number, string>>(new Map());
4040
const [dateRange, setDateRange] = useState('');
4141
const designReviewName = `${wbsPipe(designReview.wbsNum)} - ${designReview.wbsName}`;
42-
const conflictingDesignReviews = allDesignReviews
43-
? allDesignReviews.filter(
44-
(currDr) =>
45-
currDr.dateScheduled.toLocaleDateString() === selectedStartDateTime.toLocaleDateString() &&
46-
allDesignReviews.some((designReview) =>
47-
designReview.meetingTimes.some((time) => currDr.meetingTimes.includes(time))
48-
) &&
49-
currDr.designReviewId !== designReview.designReviewId
50-
)
51-
: [];
42+
const [startDateRange, endDateRange] = getDateRange(selectedStartDateTime);
5243

44+
const conflictingDesignReviews = useMemo(
45+
() =>
46+
allDesignReviews
47+
? allDesignReviews.filter(
48+
(currDr) =>
49+
currDr.dateScheduled.toLocaleDateString() === selectedStartDateTime.toLocaleDateString() &&
50+
allDesignReviews.some((designReview) =>
51+
designReview.meetingTimes.some((time) => currDr.meetingTimes.includes(time))
52+
) &&
53+
currDr.designReviewId !== designReview.designReviewId
54+
)
55+
: [],
56+
[allDesignReviews, selectedStartDateTime, designReview]
57+
);
58+
59+
// Ensures the existing meeting data information only shows up on the current date range
60+
const currentWeekDesignReviews = useMemo(() => {
61+
return allDesignReviews
62+
? allDesignReviews.filter((currDr) => {
63+
const drDate = new Date(currDr.dateScheduled).getTime();
64+
const startRange = startDateRange.getTime();
65+
const endRange = endDateRange.getTime();
66+
67+
return drDate >= startRange && drDate <= endRange;
68+
})
69+
: [];
70+
}, [allDesignReviews, startDateRange, endDateRange]);
71+
72+
// Sets the existing meeting data for the icons that get displayed on the calander
5373
useEffect(() => {
54-
if (allDesignReviews) {
74+
if (currentWeekDesignReviews) {
5575
const newExistingMeetingData = new Map<number, string>();
56-
allDesignReviews?.forEach((designReview) =>
57-
designReview.meetingTimes.forEach((meetingTime) =>
58-
newExistingMeetingData.set(meetingTime, designReview.teamType.iconName)
59-
)
76+
currentWeekDesignReviews?.forEach((designReview) =>
77+
designReview.meetingTimes.forEach((meetingTime) => newExistingMeetingData.set(meetingTime, 'build'))
6078
);
6179
setexistingMeetingData(newExistingMeetingData);
6280
}
63-
}, [allDesignReviews]);
81+
}, [currentWeekDesignReviews]);
6482

6583
useEffect(() => {
6684
if (designReview && designReview.confirmedMembers.length > 0) {
@@ -73,8 +91,12 @@ const DesignReviewDetailPage: React.FC<DesignReviewDetailPageProps> = ({ designR
7391
}, [designReview]);
7492

7593
useEffect(() => {
76-
setDateRange(getDateRange(selectedStartDateTime));
77-
}, [selectedStartDateTime]);
94+
setDateRange(
95+
`${(startDateRange.getMonth() + 1).toString()}/${startDateRange.getDate().toString()} - ${(
96+
endDateRange.getMonth() + 1
97+
).toString()}/${endDateRange.getDate().toString()}`
98+
);
99+
}, [startDateRange, endDateRange]);
78100

79101
if (allUsersIsError) return <ErrorPage message={allUsersError?.message} />;
80102
if (allDesignReviewsIsError) return <ErrorPage message={allDesignReviewsError?.message} />;

src/frontend/src/utils/design-review.utils.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,7 @@ export const getDateRange = (selectedDate: Date) => {
8484
const startDate = getStartOfWeek(selectedDate);
8585
const endDate = new Date(startDate);
8686
endDate.setDate(startDate.getDate() + 6);
87-
return `${(startDate.getMonth() + 1).toString()}/${startDate.getDate().toString()} - ${(
88-
endDate.getMonth() + 1
89-
).toString()}/${endDate.getDate().toString()}`;
87+
return [startDate, endDate];
9088
};
9189

9290
export const getHourFromDate = (currentDate: Date) => {
@@ -97,13 +95,6 @@ export const getHourFromDate = (currentDate: Date) => {
9795
return `${hours}${amPm}`;
9896
};
9997

100-
// TODO: We will have to maker a call to the backend to get this data
101-
export const existingMeetingData = new Map<number, string>();
102-
existingMeetingData.set(5, 'warning');
103-
existingMeetingData.set(10, 'build');
104-
existingMeetingData.set(20, 'computer');
105-
existingMeetingData.set(50, 'electrical');
106-
10798
export const isConfirmed = (designReview: DesignReview): boolean => {
10899
return (
109100
designReview.status === DesignReviewStatus.CONFIRMED ||

0 commit comments

Comments
 (0)