Skip to content

Commit f8f223e

Browse files
fix issues
1 parent ef7bf8d commit f8f223e

File tree

2 files changed

+34
-20
lines changed

2 files changed

+34
-20
lines changed

src/components/ChallengeEditor/TimelineTemplate-Field/index.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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 {
111110
TimelineTemplateField.defaultProps = {
112111
challengeTimelines: [],
113112
timelineTemplates: [],
114-
readOnly: false
113+
readOnly: false,
114+
currentTemplate: null
115115
}
116116

117117
TimelineTemplateField.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

125126
export default TimelineTemplateField

src/components/ChallengeEditor/index.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ class ChallengeEditor extends Component {
834834
const STD_DEV_TIMELINE_TEMPLATE = _.find(timelineTemplates, { name: 'Standard Development' })
835835
const avlTemplates = this.getAvailableTimelineTemplates()
836836
// chooses first available timeline template or fallback template for the new challenge
837-
const defaultTemplate = avlTemplates && avlTemplates.length > 0 ? avlTemplates[0] : STD_DEV_TIMELINE_TEMPLATE
837+
const defaultTemplate = _.find(avlTemplates || [], t => t.isDefault) || STD_DEV_TIMELINE_TEMPLATE
838838
const isTask = _.find(metadata.challengeTypes, { id: typeId, isTask: true })
839839
const newChallenge = {
840840
status: 'New',
@@ -847,7 +847,7 @@ class ChallengeEditor extends Component {
847847
reviewType: isTask || isDesignChallenge ? REVIEW_TYPES.INTERNAL : REVIEW_TYPES.COMMUNITY
848848
},
849849
descriptionFormat: 'markdown',
850-
timelineTemplateId: defaultTemplate.id,
850+
timelineTemplateId: _.get(this.getCurrentTemplate(), 'id', defaultTemplate.id),
851851
terms: [{ id: DEFAULT_TERM_UUID, roleId: SUBMITTER_ROLE_UUID }],
852852
groups: []
853853
// prizeSets: this.getDefaultPrizeSets()
@@ -1136,8 +1136,9 @@ class ChallengeEditor extends Component {
11361136

11371137
// all timeline template ids available for the challenge type
11381138
const availableTemplateIds = _.filter(challengeTimelines, ct => ct.typeId === challenge.typeId && ct.trackId === challenge.trackId).map(tt => tt.timelineTemplateId)
1139+
const defaultChallengeTimeline = _.find(challengeTimelines, ct => ct.isDefault)
11391140
// filter and return timeline templates that are available for this challenge type
1140-
return _.filter(timelineTemplates, tt => availableTemplateIds.indexOf(tt.id) !== -1)
1141+
return _.map(_.filter(timelineTemplates, tt => availableTemplateIds.indexOf(tt.id) !== -1), tt => tt.id === defaultChallengeTimeline.timelineTemplateId ? { ...tt, isDefault: true } : tt)
11411142
}
11421143

11431144
render () {
@@ -1354,7 +1355,13 @@ class ChallengeEditor extends Component {
13541355
<div className={styles.newFormContainer}>
13551356
<TrackField tracks={metadata.challengeTracks} challenge={challenge} onUpdateOthers={this.onUpdateOthers} />
13561357
<TypeField types={metadata.challengeTypes} onUpdateSelect={this.onUpdateSelect} challenge={challenge} />
1357-
<TimelineTemplateField challengeTimelines={metadata.challengeTimelines} timelineTemplates={metadata.timelineTemplates} challenge={challenge} onUpdateSelect={this.onUpdateSelect} />
1358+
<TimelineTemplateField
1359+
currentTemplate={this.state.currentTemplate}
1360+
challengeTimelines={metadata.challengeTimelines}
1361+
timelineTemplates={metadata.timelineTemplates}
1362+
challenge={challenge}
1363+
onUpdateSelect={this.resetPhase}
1364+
/>
13581365
<ChallengeNameField challenge={challenge} onUpdateInput={this.onUpdateInput} />
13591366
</div>
13601367
{ errorContainer }
@@ -1434,7 +1441,13 @@ class ChallengeEditor extends Component {
14341441
{isBetaMode() && (
14351442
<UseSchedulingAPIField challenge={challenge} toggleUseSchedulingAPI={this.toggleUseSchedulingAPI} />
14361443
)}
1437-
<TimelineTemplateField challengeTimelines={metadata.challengeTimelines} timelineTemplates={metadata.timelineTemplates} challenge={challenge} onUpdateSelect={this.onUpdateSelect} />
1444+
<TimelineTemplateField
1445+
challengeTimelines={metadata.challengeTimelines}
1446+
timelineTemplates={metadata.timelineTemplates}
1447+
challenge={challenge}
1448+
currentTemplate={this.state.currentTemplate}
1449+
onUpdateSelect={this.resetPhase}
1450+
/>
14381451
</React.Fragment>
14391452
)}
14401453
{!isTask && (

0 commit comments

Comments
 (0)