@@ -17,65 +17,67 @@ let previousTime = {
1717 days : null ,
1818 hours : null ,
1919 minutes : null ,
20- seconds : null
20+ seconds : null ,
2121} ;
2222
2323function updateProgressBar ( ) {
2424 const now = Date . now ( ) ;
2525 const totalDuration = TARGET_DATE - START_DATE ;
2626 const elapsed = Math . max ( 0 , now - START_DATE ) ;
27-
27+
2828 let progressPercent = Math . min ( ( elapsed / totalDuration ) * 100 , 100 ) ;
29-
29+
3030 if ( progressPercent < 0 ) progressPercent = 0 ;
3131 if ( progressPercent > 100 ) progressPercent = 100 ;
32-
32+
3333 progressFill . style . width = `${ progressPercent } %` ;
3434 progressMarker . style . left = `${ progressPercent } %` ;
35- percentageElement . textContent = `${ progressPercent . toFixed ( 5 ) } %` ;
36-
35+ percentageElement . textContent = `${ progressPercent . toFixed ( 6 ) } %` ;
36+
3737 const daysElapsed = Math . floor ( elapsed / ( 1000 * 60 * 60 * 24 ) ) ;
3838 const daysRemaining = Math . floor ( ( TARGET_DATE - now ) / ( 1000 * 60 * 60 * 24 ) ) ;
39-
39+
4040 elapsedTimeElement . textContent = `${ Math . max ( 0 , daysElapsed ) } days` ;
4141 remainingTimeElement . textContent = `${ Math . max ( 0 , daysRemaining ) } days` ;
42-
42+
4343 return progressPercent ;
4444}
4545
4646function updateCountdown ( ) {
4747 const now = Date . now ( ) ;
4848 const distance = TARGET_DATE - now ;
49-
49+
5050 if ( distance <= 0 ) {
5151 handleCountdownComplete ( ) ;
5252 return ;
5353 }
54-
54+
5555 const days = Math . floor ( distance / ( 1000 * 60 * 60 * 24 ) ) ;
56- const hours = Math . floor ( ( distance % ( 1000 * 60 * 60 * 24 ) ) / ( 1000 * 60 * 60 ) ) ;
56+ const hours = Math . floor (
57+ ( distance % ( 1000 * 60 * 60 * 24 ) ) / ( 1000 * 60 * 60 )
58+ ) ;
5759 const minutes = Math . floor ( ( distance % ( 1000 * 60 * 60 ) ) / ( 1000 * 60 ) ) ;
5860 const seconds = Math . floor ( ( distance % ( 1000 * 60 ) ) / 1000 ) ;
59-
61+
6062 updateTimeElement ( daysElement , days , previousTime . days ) ;
6163 updateTimeElement ( hoursElement , hours , previousTime . hours ) ;
6264 updateTimeElement ( minutesElement , minutes , previousTime . minutes ) ;
6365 updateTimeElement ( secondsElement , seconds , previousTime . seconds ) ;
64-
66+
6567 previousTime = { days, hours, minutes, seconds } ;
66-
68+
6769 updateProgressBar ( ) ;
6870}
6971
7072function updateTimeElement ( element , newValue , previousValue ) {
7173 const formattedValue = newValue < 10 ? `0${ newValue } ` : `${ newValue } ` ;
72-
74+
7375 if ( element . textContent !== formattedValue && previousValue !== null ) {
7476 element . textContent = formattedValue ;
75- element . classList . add ( ' changed' ) ;
76-
77+ element . classList . add ( " changed" ) ;
78+
7779 setTimeout ( ( ) => {
78- element . classList . remove ( ' changed' ) ;
80+ element . classList . remove ( " changed" ) ;
7981 } , 500 ) ;
8082 } else if ( previousValue === null ) {
8183 element . textContent = formattedValue ;
@@ -87,26 +89,26 @@ function handleCountdownComplete() {
8789 clearInterval ( countdownInterval ) ;
8890 countdownInterval = null ;
8991 }
90-
92+
9193 daysElement . textContent = "00" ;
9294 hoursElement . textContent = "00" ;
9395 minutesElement . textContent = "00" ;
9496 secondsElement . textContent = "00" ;
95-
97+
9698 completedMessage . style . display = "block" ;
97-
99+
98100 progressFill . style . width = "100%" ;
99101 progressMarker . style . left = "100%" ;
100102 percentageElement . textContent = "100%" ;
101103 remainingTimeElement . textContent = "0 days" ;
102-
104+
103105 progressFill . style . animation = "shimmer 1s infinite linear" ;
104106}
105107
106108function initializeCountdown ( ) {
107109 updateProgressBar ( ) ;
108110 updateCountdown ( ) ;
109-
111+
110112 countdownInterval = setInterval ( updateCountdown , 1000 ) ;
111113}
112114
@@ -119,29 +121,29 @@ function handleVisibilityChange() {
119121 } else {
120122 updateProgressBar ( ) ;
121123 updateCountdown ( ) ;
122-
124+
123125 if ( ! countdownInterval ) {
124126 countdownInterval = setInterval ( updateCountdown , 1000 ) ;
125127 }
126128 }
127129}
128130
129- document . addEventListener ( ' DOMContentLoaded' , initializeCountdown ) ;
130- document . addEventListener ( ' visibilitychange' , handleVisibilityChange ) ;
131+ document . addEventListener ( " DOMContentLoaded" , initializeCountdown ) ;
132+ document . addEventListener ( " visibilitychange" , handleVisibilityChange ) ;
131133
132- window . addEventListener ( ' focus' , ( ) => {
133- if ( document . visibilityState === ' visible' ) {
134+ window . addEventListener ( " focus" , ( ) => {
135+ if ( document . visibilityState === " visible" ) {
134136 updateCountdown ( ) ;
135137 updateProgressBar ( ) ;
136138 }
137139} ) ;
138140
139- window . addEventListener ( ' error' , ( event ) => {
140- console . error ( ' Countdown Timer Error:' , event . error ) ;
141-
141+ window . addEventListener ( " error" , ( event ) => {
142+ console . error ( " Countdown Timer Error:" , event . error ) ;
143+
142144 daysElement . textContent = "91" ;
143145 hoursElement . textContent = "00" ;
144146 minutesElement . textContent = "00" ;
145147 secondsElement . textContent = "00" ;
146148 percentageElement . textContent = "0.0%" ;
147- } ) ;
149+ } ) ;
0 commit comments