@@ -46,6 +46,7 @@ import {
4646import { useSearchParams } from "react-router-dom" ;
4747import OfferingInfo from "./OfferingInfo" ;
4848import { Checkbox } from "@/components/ui/checkbox" ;
49+ import { CourseModel } from "@/models/models" ;
4950
5051type FormContextType = UseFormReturn < z . infer < typeof TimetableFormSchema > > ;
5152export const FormContext = createContext < FormContextType | null > ( null ) ;
@@ -134,6 +135,12 @@ const TimetableBuilder = () => {
134135 ...filters ,
135136 } ) ;
136137
138+ const { data : allCoursesData } = useGetCoursesQuery ( {
139+ limit : 10000 ,
140+ } ) as {
141+ data : CourseModel [ ] ;
142+ } ;
143+
137144 const { data : offeringData } = useGetOfferingsQuery ( { } ) as {
138145 data : Offering [ ] ;
139146 } ;
@@ -169,7 +176,7 @@ const TimetableBuilder = () => {
169176 timetableEventsData ?. courseEvents &&
170177 ! loadedCourses &&
171178 timetableEventsData ?. courseEvents &&
172- coursesData &&
179+ allCoursesData &&
173180 ! loadedRestrictions &&
174181 restrictionsData
175182 ) {
@@ -181,10 +188,10 @@ const TimetableBuilder = () => {
181188 form . setValue ( "offeringIds" , existingOfferingIds ) ;
182189 setLoadedOfferingIds ( true ) ;
183190
184- const existingCourseIds = existingOfferingIds . map (
191+ const existingCourseIds = [ ... new Set ( existingOfferingIds . map (
185192 ( offeringId ) => offeringIdToCourseIdMap [ offeringId ] ,
186- ) ;
187- const existingCourses = coursesData . filter ( ( course ) =>
193+ ) ) ] ;
194+ const existingCourses = allCoursesData . filter ( ( course : CourseModel ) =>
188195 existingCourseIds . includes ( course . id ) ,
189196 ) ;
190197 form . setValue ( "courses" , existingCourses ) ;
@@ -218,15 +225,7 @@ const TimetableBuilder = () => {
218225 form . setValue ( "restrictions" , parsedRestrictions ) ;
219226 setLoadedRestrictions ( true ) ;
220227 }
221- } , [
222- timetableEventsData ,
223- coursesData ,
224- restrictionsData ,
225- loadedCourses ,
226- loadedOfferingIds ,
227- loadedRestrictions ,
228- form ,
229- ] ) ;
228+ } , [ timetableEventsData , coursesData , restrictionsData , loadedCourses , loadedOfferingIds , loadedRestrictions , form , allCoursesData , offeringIdToCourseIdMap ] ) ;
230229
231230 const { data : timetablesData } = useGetTimetablesQuery ( ) as {
232231 data : Timetable [ ] ;
@@ -279,7 +278,7 @@ const TimetableBuilder = () => {
279278 setFilters ( values ) ;
280279 console . log ( "Apply filters" , values ) ;
281280 } ;
282-
281+
283282 return (
284283 < >
285284 < div className = "w-full" >
0 commit comments