@@ -6,7 +6,7 @@ import { useAllUsers } from '../../../hooks/users.hooks';
66import LoadingIndicator from '../../../components/LoadingIndicator' ;
77import ErrorPage from '../../ErrorPage' ;
88import { userToAutocompleteOption } from '../../../utils/teams.utils' ;
9- import { useEffect , useState } from 'react' ;
9+ import { useEffect , useMemo , useState } from 'react' ;
1010import CheckBoxIcon from '@mui/icons-material/CheckBox' ;
1111import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank' ;
1212import { 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 } /> ;
0 commit comments