@@ -17,38 +17,61 @@ document.addEventListener('DOMContentLoaded', () => {
1717 contents . forEach ( content => content . classList . add ( 'hidden' ) ) ;
1818 } ;
1919
20- // Initial state: Highlight the first card and show the first schedule
21- if ( cards . length > 0 && contents . length > 0 ) {
22- selectedCard = cards [ 0 ] ;
23- const firstContentId = selectedCard . getAttribute ( 'data-schedule' ) ;
20+ const highlight = ( card ) => {
21+ const div = card . querySelector ( '.card-grid' ) ;
22+ div . classList . add ( 'pycon-bg-lime' ) ;
23+ div . style . backgroundColor = '#CDFF89' ;
24+ } ;
25+
26+ const setInitialState = ( ) => {
27+ if ( ! cards . length || ! contents . length ) return ;
28+ resetCardBackgrounds ( ) ;
29+ hideAllSchedules ( ) ;
30+
31+ // Always show FIRST card + its content
32+ const firstCard = cards [ 0 ] ;
33+ const firstContentId = firstCard . getAttribute ( 'data-schedule' ) ;
34+
35+ highlight ( firstCard ) ;
36+ document . getElementById ( firstContentId ) ?. classList . remove ( 'hidden' ) ;
37+ selectedCard = firstCard ;
38+ } ;
39+
40+ // Initial load
41+ setInitialState ( ) ;
2442
25- // Highlight the first card
26- const firstHighlightDiv = selectedCard . querySelector ( '.card-grid' ) ;
27- firstHighlightDiv . classList . add ( 'bg:pycon-bg-lime' ) ;
28- firstHighlightDiv . style . backgroundColor = '#CDFF89' ;
43+ // If coming back via back/forward cache, reload once to reset UI to first card
44+ window . addEventListener ( 'pageshow' , ( evt ) => {
45+ const nav = performance . getEntriesByType ( 'navigation' ) [ 0 ] ;
46+ const isBFCache = evt . persisted || ( nav && nav . type === 'back_forward' ) ;
2947
30- // Show the first schedule
31- document . getElementById ( firstContentId ) . classList . remove ( 'hidden' ) ;
32- }
48+ if ( isBFCache && ! sessionStorage . getItem ( 'reloadedOnce' ) ) {
49+ sessionStorage . setItem ( 'reloadedOnce' , '1' ) ;
50+ window . location . reload ( ) ;
51+ } else if ( ! isBFCache ) {
52+ // Normal load after hard reload; clear the flag
53+ sessionStorage . removeItem ( 'reloadedOnce' ) ;
54+ }
55+ } ) ;
3356
34- // Add event listeners to all cards
57+ // Click handlers
3558 cards . forEach ( card => {
3659 const highlightDiv = card . querySelector ( '.card-grid' ) ;
3760
3861 card . addEventListener ( 'click' , ( ) => {
39- // Reset previous selection
40- resetCardBackgrounds ( ) ;
41- hideAllSchedules ( ) ;
62+ const scheduleId = card . getAttribute ( 'data-schedule' ) ;
4263
43- // Highlight the clicked card
44- highlightDiv . classList . add ( 'pycon-bg-lime' ) ;
45- highlightDiv . style . backgroundColor = '#CDFF89' ; // Lime background
64+ // Redirect-only card
65+ if ( scheduleId === '4' ) {
66+ window . location . href = `${ baseUrl } program/dev-sprint` ;
67+ return ;
68+ }
4669
47- // Show the corresponding schedule
48- const scheduleId = card . getAttribute ( 'data-schedule' ) ;
49- document . getElementById ( scheduleId ) . classList . remove ( 'hidden' ) ;
70+ resetCardBackgrounds ( ) ;
71+ hideAllSchedules ( ) ;
5072
51- // Update the selected card
73+ highlight ( card ) ;
74+ document . getElementById ( scheduleId ) ?. classList . remove ( 'hidden' ) ;
5275 selectedCard = card ;
5376 } ) ;
5477
@@ -66,4 +89,3 @@ document.addEventListener('DOMContentLoaded', () => {
6689 } ) ;
6790 } ) ;
6891} ) ;
69-
0 commit comments