@@ -19,20 +19,20 @@ class TimelineTemplateField extends Component {
1919 }
2020
2121 componentDidMount ( ) {
22- const { challengeTimelines, timelineTemplates, challenge } = this . props
23- this . checkData ( challengeTimelines , timelineTemplates , challenge )
22+ const { challengeTimelines, timelineTemplates, challenge, currentTemplate } = this . props
23+ this . checkData ( challengeTimelines , timelineTemplates , challenge , currentTemplate )
2424 }
2525
2626 componentWillUnmount ( ) {
27- this . props . onUpdateSelect ( this . state . selectedOption . value , false , 'timelineTemplateId' )
27+ this . props . onUpdateSelect ( this . state . selectedOption . value )
2828 }
2929
3030 loadSelectedOption ( validOptions , value ) {
31- // if (!value) return
3231 const { timelineTemplates, challenge } = this . props
3332 const selectedOption = { }
3433 const selectedTemplate = _ . find ( timelineTemplates , t => t . id === ( value ) )
35- // if (!selectedTemplate) return
34+ this . props . onUpdateSelect ( selectedTemplate )
35+
3636 selectedOption . label = selectedTemplate . name
3737 selectedOption . value = selectedTemplate . id
3838 this . setState ( {
@@ -42,16 +42,16 @@ class TimelineTemplateField extends Component {
4242 } )
4343 }
4444
45- checkData ( challengeTimelines , timelineTemplates , challenge ) {
45+ checkData ( challengeTimelines , timelineTemplates , challenge , currentTemplate ) {
4646 const availableTemplates = _ . filter ( challengeTimelines , ct => ct . typeId === challenge . typeId && ct . trackId === challenge . trackId )
4747 const availableTemplateIds = availableTemplates . map ( tt => tt . timelineTemplateId )
4848 const validOptions = _ . filter ( timelineTemplates , t => _ . includes ( availableTemplateIds , t . id ) )
4949 const defaultValue = _ . get ( _ . find ( availableTemplates , t => t . isDefault ) , 'timelineTemplateId' )
50- if ( challenge . timelineTemplateId ) {
51- if ( ! _ . includes ( _ . map ( validOptions , o => o . id ) , challenge . timelineTemplateId ) ) {
50+ if ( currentTemplate && currentTemplate . id ) {
51+ if ( ! _ . includes ( _ . map ( validOptions , o => o . id ) , currentTemplate . id ) ) {
5252 this . loadSelectedOption ( validOptions , defaultValue )
5353 } else {
54- this . loadSelectedOption ( validOptions , challenge . timelineTemplateId )
54+ this . loadSelectedOption ( validOptions , currentTemplate . id )
5555 }
5656 } else if ( defaultValue ) {
5757 return this . loadSelectedOption ( validOptions , defaultValue )
@@ -61,7 +61,7 @@ class TimelineTemplateField extends Component {
6161 getErrorMessage ( ) {
6262 if ( ! this . props . challenge . typeId || ! this . props . challenge . trackId ) {
6363 return 'Please select a work type and format to enable this field'
64- } else if ( this . props . challenge . submitTriggered && ! this . props . challenge . timelineTemplateId ) {
64+ } else if ( this . props . challenge . submitTriggered && ! this . props . currentTemplate ) {
6565 return 'Timeline template is required field'
6666 } else if ( this . state . validOptions . length === 0 ) {
6767 return 'Sorry, there are no available timeline templates for the options you have selected'
@@ -70,10 +70,10 @@ class TimelineTemplateField extends Component {
7070 }
7171
7272 render ( ) {
73- const { challengeTimelines, timelineTemplates, challenge } = this . props
73+ const { challengeTimelines, timelineTemplates, challenge, currentTemplate } = this . props
7474 const hasSelectedTypeAndTrack = ! _ . isEmpty ( challenge . typeId ) && ! _ . isEmpty ( challenge . trackId )
7575 if ( ( hasSelectedTypeAndTrack && this . state . validOptions . length === 0 ) || this . state . matchString !== `${ challenge . typeId } -${ challenge . trackId } -${ this . state . selectedOption . value } ` ) {
76- this . checkData ( challengeTimelines , timelineTemplates , challenge )
76+ this . checkData ( challengeTimelines , timelineTemplates , challenge , currentTemplate )
7777 }
7878 const error = this . getErrorMessage ( )
7979 return (
@@ -90,7 +90,6 @@ class TimelineTemplateField extends Component {
9090 placeholder = 'Timeline Template'
9191 isClearable = { false }
9292 onChange = { ( e ) => {
93- this . props . onUpdateSelect ( e . value , false , 'timelineTemplateId' )
9493 this . loadSelectedOption ( this . state . validOptions , e . value )
9594 } }
9695 isDisabled = { this . state . validOptions . length === 0 || this . props . readOnly }
@@ -111,15 +110,17 @@ class TimelineTemplateField extends Component {
111110TimelineTemplateField . defaultProps = {
112111 challengeTimelines : [ ] ,
113112 timelineTemplates : [ ] ,
114- readOnly : false
113+ readOnly : false ,
114+ currentTemplate : null
115115}
116116
117117TimelineTemplateField . propTypes = {
118118 challengeTimelines : PropTypes . arrayOf ( PropTypes . shape ( ) ) . isRequired ,
119119 timelineTemplates : PropTypes . arrayOf ( PropTypes . shape ( ) ) . isRequired ,
120120 challenge : PropTypes . shape ( ) . isRequired ,
121121 onUpdateSelect : PropTypes . func . isRequired ,
122- readOnly : PropTypes . bool
122+ readOnly : PropTypes . bool ,
123+ currentTemplate : PropTypes . shape ( )
123124}
124125
125126export default TimelineTemplateField
0 commit comments