@@ -543,6 +543,13 @@ <h3 class="fw-bold text-dark h3 mt-1 mb-0" id="nco-fallback-date-display">—</h
543543 var nextSessions = events . filter ( function ( e ) {
544544 return Math . abs ( new Date ( e . start . dateTime || e . start . date ) - firstDate ) < 86400000 ;
545545 } ) ;
546+ var seen = { } ;
547+ nextSessions = nextSessions . filter ( function ( e ) {
548+ var key = e . start . dateTime || e . start . date ;
549+ if ( seen [ key ] ) return false ;
550+ seen [ key ] = true ;
551+ return true ;
552+ } ) ;
546553 if ( ! nextSessions . length ) { runFallback ( ) ; return ; }
547554
548555 dateEl . textContent = firstDate . toLocaleDateString ( undefined , {
@@ -559,16 +566,9 @@ <h3 class="fw-bold text-dark h3 mt-1 mb-0" id="nco-fallback-date-display">—</h
559566 return '' ;
560567 }
561568
562- gridEl . innerHTML = '' ;
563- var sessionCount = { emea : 0 , amer : 0 } ;
564-
565- nextSessions . slice ( 0 , 2 ) . forEach ( function ( ev ) {
566- var startHour = new Date ( ev . start . dateTime || ev . start . date ) . getUTCHours ( ) ;
567- var isEMEA = startHour < 12 ;
568- var label = isEMEA ? emeaLabel : amerLabel ;
569- var times = isEMEA ? emeaTimes : amerTimes ;
570- sessionCount [ isEMEA ? 'emea' : 'amer' ] ++ ;
571-
569+ function renderEventRow ( ev , region ) {
570+ var isEMEA = region === 'emea' ;
571+ var label = isEMEA ? emeaLabel : amerLabel ;
572572 var joinLink = extractJoinLink ( ev ) ;
573573 var calEvLink = ev . htmlLink || '' ;
574574
@@ -649,11 +649,11 @@ <h3 class="fw-bold text-dark h3 mt-1 mb-0" id="nco-fallback-date-display">—</h
649649 }
650650 if ( hasActions ) row . appendChild ( actionsWrap ) ;
651651
652- gridEl . appendChild ( row ) ;
653- } ) ;
652+ return row ;
653+ }
654654
655- if ( sessionCount . emea === 0 || sessionCount . amer === 0 ) {
656- var missing = sessionCount . emea === 0 ? 'EMEA/APAC' : 'AMER' ;
655+ function renderMissingRow ( region ) {
656+ var label = region === 'emea' ? 'EMEA/APAC' : 'AMER' ;
657657 var row = document . createElement ( 'div' ) ;
658658 row . className = 'nco-session-row py-3 border-bottom d-flex align-items-center justify-content-between gap-3' ;
659659
@@ -672,7 +672,7 @@ <h3 class="fw-bold text-dark h3 mt-1 mb-0" id="nco-fallback-date-display">—</h
672672 var txtWrap = document . createElement ( 'div' ) ;
673673 var missingDiv = document . createElement ( 'div' ) ;
674674 missingDiv . className = 'text-muted small' ;
675- missingDiv . textContent = missing + ' — details pending' ;
675+ missingDiv . textContent = label + ' — details pending' ;
676676 txtWrap . appendChild ( missingDiv ) ;
677677 leftWrap . appendChild ( txtWrap ) ;
678678 row . appendChild ( leftWrap ) ;
@@ -692,9 +692,29 @@ <h3 class="fw-bold text-dark h3 mt-1 mb-0" id="nco-fallback-date-display">—</h
692692 rightWrap . appendChild ( calCheckBtn ) ;
693693 row . appendChild ( rightWrap ) ;
694694
695- gridEl . appendChild ( row ) ;
695+ return row ;
696696 }
697697
698+ gridEl . innerHTML = '' ;
699+ var emeaEvent = null ;
700+ var amerEvent = null ;
701+ for ( var i = 0 ; i < nextSessions . length ; i ++ ) {
702+ var ev = nextSessions [ i ] ;
703+ var startHour = new Date ( ev . start . dateTime || ev . start . date ) . getUTCHours ( ) ;
704+ if ( startHour < 12 && ! emeaEvent ) {
705+ emeaEvent = ev ;
706+ } else if ( startHour >= 12 && ! amerEvent ) {
707+ amerEvent = ev ;
708+ }
709+ if ( emeaEvent && amerEvent ) break ;
710+ }
711+
712+ if ( emeaEvent ) gridEl . appendChild ( renderEventRow ( emeaEvent , 'emea' ) ) ;
713+ if ( ! emeaEvent ) gridEl . appendChild ( renderMissingRow ( 'emea' ) ) ;
714+
715+ if ( amerEvent ) gridEl . appendChild ( renderEventRow ( amerEvent , 'amer' ) ) ;
716+ if ( ! amerEvent ) gridEl . appendChild ( renderMissingRow ( 'amer' ) ) ;
717+
698718 show ( cardEl ) ;
699719 } )
700720 . catch ( function ( ) { runFallback ( ) ; } ) ;
0 commit comments