@@ -224,6 +224,21 @@ <h2>Generated Routine</h2>
224224 let selectedCourses = [ ] ;
225225 let sortAscending = true ;
226226
227+ // Helper: Normalize day names (convert abbreviated to full names)
228+ function normalizeDay ( dayStr ) {
229+ const mapping = {
230+ "Mon" : "Monday" ,
231+ "Tue" : "Tuesday" ,
232+ "Wed" : "Wednesday" ,
233+ "Thu" : "Thursday" ,
234+ "Fri" : "Friday" ,
235+ "Sat" : "Saturday" ,
236+ "Sun" : "Sunday"
237+ } ;
238+ const key = dayStr . trim ( ) ;
239+ return mapping [ key ] || key ;
240+ }
241+
227242 // Load any persisted data from localStorage
228243 function loadDataFromLocalStorage ( ) {
229244 const storedCourses = localStorage . getItem ( 'courses' ) ;
@@ -345,6 +360,9 @@ <h2>Generated Routine</h2>
345360 // Skip row if missing title, no free seats or if class is for freshmen.
346361 if ( ! title || free === 0 || / f r e s h m a n / i. test ( title ) ) return ;
347362 const key = title + '|' + r [ idx [ 'Section' ] ] ;
363+ // Normalize day and add room as meeting property
364+ const dayNormalized = normalizeDay ( r [ idx [ 'Day' ] ] ) ;
365+
348366 if ( ! courses [ key ] ) {
349367 courses [ key ] = {
350368 code : r [ idx [ 'Course Code' ] ] ,
@@ -353,25 +371,20 @@ <h2>Generated Routine</h2>
353371 faculty : r [ idx [ 'Faculty' ] ] ,
354372 type : r [ idx [ 'Type' ] ] , // theory or lab
355373 section : r [ idx [ 'Section' ] ] ,
356- meetings : [ ] ,
357- room : r [ idx [ 'Room' ] ] ,
358374 free,
359- status : status // pick status from uploaded file
375+ status : status , // pick status from uploaded file
376+ meetings : [ ] // meetings will contain day, start, end, and room
360377 } ;
361378 depts . add ( courses [ key ] . dept ) ;
362- } else {
363- // If room value differs, append it
364- const currentRoom = courses [ key ] . room ;
365- const newRoom = r [ idx [ 'Room' ] ] ;
366- if ( ! currentRoom . includes ( newRoom ) ) {
367- courses [ key ] . room += ", " + newRoom ;
368- }
369379 }
380+ // Create a meeting with day, time and room details.
370381 const meeting = {
371- day : r [ idx [ 'Day' ] ] ,
382+ day : dayNormalized ,
372383 start : r [ idx [ 'Start Time' ] ] ,
373- end : r [ idx [ 'End Time' ] ]
384+ end : r [ idx [ 'End Time' ] ] ,
385+ room : r [ idx [ 'Room' ] ]
374386 } ;
387+ // Add meeting if not already present.
375388 if ( ! courses [ key ] . meetings . some ( m => m . day === meeting . day && m . start === meeting . start && m . end === meeting . end ) ) {
376389 courses [ key ] . meetings . push ( meeting ) ;
377390 }
@@ -427,14 +440,16 @@ <h2>Generated Routine</h2>
427440 const disabled = alreadySelected || info . status . toLowerCase ( ) === "reserved" ? 'disabled' : '' ;
428441 const days = info . meetings . map ( m => m . day ) . join ( ', ' ) ;
429442 const times = info . meetings . map ( m => `${ m . start } -${ m . end } ` ) . join ( '; ' ) ;
443+ // Compute unique room list from meetings
444+ const rooms = [ ...new Set ( info . meetings . map ( m => m . room ) ) ] . join ( ', ' ) ;
430445 const div = document . createElement ( 'div' ) ;
431446 div . className = 'section-item' ;
432447 div . innerHTML = `
433448 <div>
434449 <strong>${ info . code } - ${ title } (${ info . section } )</strong>
435450 <div class="details">
436451 ${ days } ${ times } <br>
437- Room: ${ info . room } <br>
452+ Room: ${ rooms } <br>
438453 Dept: ${ info . dept } <br>
439454 Free Seats: ${ info . free } <br>
440455 Type: ${ info . type } <br>
@@ -542,7 +557,7 @@ <h2>Generated Routine</h2>
542557 code : course . code ,
543558 sec : course . section ,
544559 title : course . title ,
545- room : course . room ,
560+ room : m . room ,
546561 assigned : conflict ? '' : ( num > course . free ? 'Over cap' : num ) ,
547562 status : conflict ? 'Time conflict' : ''
548563 } ) ;
@@ -614,6 +629,8 @@ <h2>Generated Routine</h2>
614629 if ( ! course ) return ;
615630 const days = course . meetings . map ( m => m . day ) . join ( ', ' ) ;
616631 const times = course . meetings . map ( m => `${ m . start } -${ m . end } ` ) . join ( '; ' ) ;
632+ // Compute unique room list from meetings
633+ const rooms = [ ...new Set ( course . meetings . map ( m => m . room ) ) ] . join ( ', ' ) ;
617634 const row = document . createElement ( 'tr' ) ;
618635 row . id = `sel-${ i } ` ;
619636 row . innerHTML = `
@@ -622,7 +639,7 @@ <h2>Generated Routine</h2>
622639 <td>${ course . section } </td>
623640 <td>${ days } </td>
624641 <td>${ times } </td>
625- <td>${ course . room } </td>
642+ <td>${ rooms } </td>
626643 <td>
627644 <input type="number" id="num-${ i } " min="1" max="${ course . free } " placeholder="Fill student number"
628645 onblur="validateInput(this, ${ course . free } ); updateTotalCount();" onchange="updateTotalCount();">
0 commit comments