@@ -388,9 +388,9 @@ <h3 class="modal-title">Delete Session?</h3>
388388 // Sessions Page Logic
389389 // ==========================================
390390
391- let currentPage = 1 ;
391+ window . currentPage = 1 ;
392392 const itemsPerPage = 10 ;
393- let filteredSessions = [ ] ;
393+ window . filteredSessions = [ ] ;
394394 let tempSessionItems = [ ] ;
395395 let viewingSessionId = null ;
396396 let deletingSessionId = null ;
@@ -477,6 +477,7 @@ <h3 class="modal-title">Delete Session?</h3>
477477
478478 // Filter and sort sessions
479479 function filterSessions ( ) {
480+ window . currentPage = 1 ;
480481 let sessions = [ ...FretLogData . getSessions ( ) ] ;
481482
482483 // Add current session if valid
@@ -520,7 +521,7 @@ <h3 class="modal-title">Delete Session?</h3>
520521
521522 sessions . sort ( ( a , b ) => new Date ( b . endTime || b . date ) - new Date ( a . endTime || a . date ) ) ;
522523
523- filteredSessions = sessions ;
524+ window . filteredSessions = sessions ;
524525 renderSessions ( ) ;
525526 }
526527
@@ -530,7 +531,7 @@ <h3 class="modal-title">Delete Session?</h3>
530531 const emptyState = document . getElementById ( 'no-sessions' ) ;
531532 const pagination = document . getElementById ( 'pagination' ) ;
532533
533- if ( filteredSessions . length === 0 ) {
534+ if ( window . filteredSessions . length === 0 ) {
534535 container . classList . add ( 'hidden' ) ;
535536 emptyState . classList . remove ( 'hidden' ) ;
536537 pagination . classList . add ( 'hidden' ) ;
@@ -540,10 +541,10 @@ <h3 class="modal-title">Delete Session?</h3>
540541 container . classList . remove ( 'hidden' ) ;
541542 emptyState . classList . add ( 'hidden' ) ;
542543
543- const totalPages = Math . ceil ( filteredSessions . length / itemsPerPage ) ;
544- const start = ( currentPage - 1 ) * itemsPerPage ;
544+ const totalPages = Math . ceil ( window . filteredSessions . length / itemsPerPage ) ;
545+ const start = ( window . currentPage - 1 ) * itemsPerPage ;
545546 const end = start + itemsPerPage ;
546- const paginated = filteredSessions . slice ( start , end ) ;
547+ const paginated = window . filteredSessions . slice ( start , end ) ;
547548
548549 const instruments = FretLogData . getInstruments ( ) ;
549550
@@ -611,11 +612,11 @@ <h3 class="modal-title">Delete Session?</h3>
611612 </div>` ;
612613 } ) . join ( '' ) ;
613614
614- if ( filteredSessions . length > itemsPerPage ) {
615+ if ( window . filteredSessions . length > itemsPerPage ) {
615616 pagination . classList . remove ( 'hidden' ) ;
616- document . getElementById ( 'pagination-info' ) . textContent = `Showing ${ start + 1 } -${ Math . min ( end , filteredSessions . length ) } of ${ filteredSessions . length } ` ;
617- document . getElementById ( 'prev-page' ) . disabled = currentPage === 1 ;
618- document . getElementById ( 'next-page' ) . disabled = currentPage === totalPages ;
617+ document . getElementById ( 'pagination-info' ) . textContent = `Showing ${ start + 1 } -${ Math . min ( end , window . filteredSessions . length ) } of ${ window . filteredSessions . length } ` ;
618+ document . getElementById ( 'prev-page' ) . disabled = window . currentPage === 1 ;
619+ document . getElementById ( 'next-page' ) . disabled = window . currentPage === totalPages ;
619620 } else {
620621 pagination . classList . add ( 'hidden' ) ;
621622 }
@@ -746,6 +747,9 @@ <h3 class="modal-title">Delete Session?</h3>
746747 const existingIds = new Set ( tempSessionItems . map ( i => i . libraryItemId || i . library_item_id ) ) ;
747748 items = items . filter ( i => ! existingIds . has ( i . id ) ) ;
748749
750+ // Sort items alphabetically
751+ items . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
752+
749753 document . getElementById ( 'item-select' ) . innerHTML = items . length ?
750754 '<option value="">Select...</option>' + items . map ( i => `<option value="${ i . id } ">${ i . name } </option>` ) . join ( '' ) :
751755 '<option value="">No items</option>' ;
@@ -809,6 +813,24 @@ <h3 class="modal-title">Delete Session?</h3>
809813 await initPromise ;
810814 await render ( ) ;
811815
816+ // Pagination listeners
817+ document . getElementById ( 'prev-page' ) . addEventListener ( 'click' , ( ) => {
818+ if ( window . currentPage > 1 ) {
819+ window . currentPage -- ;
820+ renderSessions ( ) ;
821+ window . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
822+ }
823+ } ) ;
824+
825+ document . getElementById ( 'next-page' ) . addEventListener ( 'click' , ( ) => {
826+ const totalPages = Math . ceil ( window . filteredSessions . length / itemsPerPage ) ;
827+ if ( window . currentPage < totalPages ) {
828+ window . currentPage ++ ;
829+ renderSessions ( ) ;
830+ window . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
831+ }
832+ } ) ;
833+
812834 flatpickr ( '#filter-date-start' , { altInput : true , altFormat : 'M j, Y' , onChange : filterSessions } ) ;
813835 flatpickr ( '#filter-date-end' , { altInput : true , altFormat : 'M j, Y' , onChange : filterSessions } ) ;
814836 flatpickr ( '#session-date' , { altInput : true , altFormat : 'M j, Y' } ) ;
0 commit comments