@@ -17,6 +17,9 @@ import { PrimaryButton } from 'topcoder-react-ui-kit';
17
17
import { Link } from 'topcoder-react-utils' ;
18
18
import { COMPETITION_TRACKS } from 'utils/tc' ;
19
19
import { phaseEndDate } from 'utils/challenge-listing/helper' ;
20
+ import {
21
+ getTimeLeft ,
22
+ } from 'utils/challenge-detail/helper' ;
20
23
21
24
import LeftArrow from 'assets/images/arrow-prev.svg' ;
22
25
@@ -112,6 +115,10 @@ export default function ChallengeHeader(props) {
112
115
registrationEnded = ! regPhase . isOpen ;
113
116
}
114
117
118
+ const currentPhases = challenge . phases
119
+ . filter ( p => p . name !== 'Registration' && p . isOpen )
120
+ . sort ( ( a , b ) => moment ( a . scheduledEndDate ) . diff ( b . scheduledEndDate ) ) [ 0 ] ;
121
+
115
122
const trackLower = track ? track . replace ( ' ' , '-' ) . toLowerCase ( ) : 'design' ;
116
123
117
124
const eventNames = ( events || [ ] ) . map ( ( event => ( event . eventName || '' ) . toUpperCase ( ) ) ) ;
@@ -137,11 +144,16 @@ export default function ChallengeHeader(props) {
137
144
if ( hasRegistered && openPhases [ 0 ] && openPhases [ 0 ] . name === 'Registration' ) {
138
145
nextPhase = openPhases [ 1 ] || { } ;
139
146
}
140
- const nextDeadline = nextPhase && nextPhase . name ;
141
147
142
148
const deadlineEnd = moment ( nextPhase && phaseEndDate ( nextPhase ) ) ;
143
149
const currentTime = moment ( ) ;
144
150
151
+ const timeDiff = getTimeLeft ( currentPhases , 'to go' ) ;
152
+
153
+ if ( ! timeDiff . late ) {
154
+ timeDiff . text = timeDiff . text . replace ( 'to go' , '' ) ;
155
+ }
156
+
145
157
let timeLeft = deadlineEnd . isAfter ( currentTime )
146
158
? deadlineEnd . diff ( currentTime ) : 0 ;
147
159
@@ -228,19 +240,6 @@ export default function ChallengeHeader(props) {
228
240
229
241
let nextDeadlineMsg ;
230
242
switch ( ( status || '' ) . toLowerCase ( ) ) {
231
- case 'active' :
232
- nextDeadlineMsg = (
233
- < div styleName = "next-deadline" >
234
- Next Deadline:
235
- { ' ' }
236
- {
237
- < span styleName = "deadline-highlighted" >
238
- { nextDeadline || '-' }
239
- </ span >
240
- }
241
- </ div >
242
- ) ;
243
- break ;
244
243
case 'completed' :
245
244
nextDeadlineMsg = (
246
245
< div styleName = "completed" >
@@ -249,15 +248,15 @@ export default function ChallengeHeader(props) {
249
248
) ;
250
249
break ;
251
250
default :
252
- nextDeadlineMsg = (
253
- < div >
254
- Status:
255
- ‌
256
- < span styleName = "deadline-highlighted" >
257
- { _ . upperFirst ( _ . lowerCase ( status ) ) }
258
- </ span >
259
- </ div >
260
- ) ;
251
+ // nextDeadlineMsg = (
252
+ // <div>
253
+ // Status:
254
+ // ‌
255
+ // <span styleName="deadline-highlighted">
256
+ // {_.upperFirst(_.lowerCase(status))}
257
+ // </span>
258
+ // </div>
259
+ // );
261
260
break ;
262
261
}
263
262
@@ -446,9 +445,9 @@ export default function ChallengeHeader(props) {
446
445
( status || '' ) . toLowerCase ( ) === 'active'
447
446
&& (
448
447
< div styleName = "current-phase" >
449
- Current Deadline Ends:{ ' ' }
448
+ { currentPhases && ` ${ currentPhases . name } Ends: ` }
450
449
< span styleName = "deadline-highlighted" >
451
- { timeLeft }
450
+ { timeDiff . text }
452
451
</ span >
453
452
</ div >
454
453
)
@@ -532,7 +531,6 @@ ChallengeHeader.propTypes = {
532
531
timelineTemplateId : PT . string ,
533
532
reliabilityBonus : PT . any ,
534
533
userDetails : PT . any ,
535
- currentPhases : PT . any ,
536
534
numOfRegistrants : PT . any ,
537
535
numOfCheckpointSubmissions : PT . any ,
538
536
numOfSubmissions : PT . any ,
0 commit comments