Skip to content

Commit ef7bf8d

Browse files
fixes
1 parent 9ee3eca commit ef7bf8d

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

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

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,20 @@ class TimelineTemplateField extends Component {
1919
}
2020

2121
componentDidMount () {
22-
this.checkData()
22+
const { challengeTimelines, timelineTemplates, challenge } = this.props
23+
this.checkData(challengeTimelines, timelineTemplates, challenge)
2324
}
2425

25-
shouldComponentUpdate (nextProps) {
26-
const { onUpdateSelect, challengeTimelines, timelineTemplates, challenge } = nextProps
27-
const hasSelectedTypeAndTrack = !_.isEmpty(challenge.typeId) && !_.isEmpty(challenge.trackId)
28-
if ((hasSelectedTypeAndTrack && this.state.validOptions.length === 0) || this.state.matchString !== `${challenge.typeId}-${challenge.trackId}-${this.state.selectedOption.value}`) {
29-
this.checkData(onUpdateSelect, challengeTimelines, timelineTemplates, challenge)
30-
}
31-
return true
26+
componentWillUnmount () {
27+
this.props.onUpdateSelect(this.state.selectedOption.value, false, 'timelineTemplateId')
3228
}
3329

3430
loadSelectedOption (validOptions, value) {
35-
if (!value) return
31+
// if (!value) return
3632
const { timelineTemplates, challenge } = this.props
3733
const selectedOption = {}
3834
const selectedTemplate = _.find(timelineTemplates, t => t.id === (value))
39-
if (!selectedTemplate) return
35+
// if (!selectedTemplate) return
4036
selectedOption.label = selectedTemplate.name
4137
selectedOption.value = selectedTemplate.id
4238
this.setState({
@@ -46,19 +42,18 @@ class TimelineTemplateField extends Component {
4642
})
4743
}
4844

49-
checkData () {
50-
const { onUpdateSelect, challengeTimelines, timelineTemplates, challenge } = this.props
45+
checkData (challengeTimelines, timelineTemplates, challenge) {
5146
const availableTemplates = _.filter(challengeTimelines, ct => ct.typeId === challenge.typeId && ct.trackId === challenge.trackId)
5247
const availableTemplateIds = availableTemplates.map(tt => tt.timelineTemplateId)
5348
const validOptions = _.filter(timelineTemplates, t => _.includes(availableTemplateIds, t.id))
5449
const defaultValue = _.get(_.find(availableTemplates, t => t.isDefault), 'timelineTemplateId')
5550
if (challenge.timelineTemplateId) {
56-
if (!_.includes(validOptions.map(o => o.id), challenge.timelineTemplateId)) {
57-
onUpdateSelect(defaultValue || '', false, 'timelineTemplateId')
58-
return this.loadSelectedOption(validOptions, defaultValue)
51+
if (!_.includes(_.map(validOptions, o => o.id), challenge.timelineTemplateId)) {
52+
this.loadSelectedOption(validOptions, defaultValue)
53+
} else {
54+
this.loadSelectedOption(validOptions, challenge.timelineTemplateId)
5955
}
6056
} else if (defaultValue) {
61-
onUpdateSelect(defaultValue, false, 'timelineTemplateId')
6257
return this.loadSelectedOption(validOptions, defaultValue)
6358
}
6459
}
@@ -75,6 +70,11 @@ class TimelineTemplateField extends Component {
7570
}
7671

7772
render () {
73+
const { challengeTimelines, timelineTemplates, challenge } = this.props
74+
const hasSelectedTypeAndTrack = !_.isEmpty(challenge.typeId) && !_.isEmpty(challenge.trackId)
75+
if ((hasSelectedTypeAndTrack && this.state.validOptions.length === 0) || this.state.matchString !== `${challenge.typeId}-${challenge.trackId}-${this.state.selectedOption.value}`) {
76+
this.checkData(challengeTimelines, timelineTemplates, challenge)
77+
}
7878
const error = this.getErrorMessage()
7979
return (
8080
<>
@@ -89,7 +89,10 @@ class TimelineTemplateField extends Component {
8989
options={this.state.validOptions.map(type => ({ label: type.name, value: type.id }))}
9090
placeholder='Timeline Template'
9191
isClearable={false}
92-
onChange={(e) => this.props.onUpdateSelect(e.value, false, 'timelineTemplateId')}
92+
onChange={(e) => {
93+
this.props.onUpdateSelect(e.value, false, 'timelineTemplateId')
94+
this.loadSelectedOption(this.state.validOptions, e.value)
95+
}}
9396
isDisabled={this.state.validOptions.length === 0 || this.props.readOnly}
9497
/>
9598
</div>

src/components/ChallengeEditor/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,6 +1434,7 @@ class ChallengeEditor extends Component {
14341434
{isBetaMode() && (
14351435
<UseSchedulingAPIField challenge={challenge} toggleUseSchedulingAPI={this.toggleUseSchedulingAPI} />
14361436
)}
1437+
<TimelineTemplateField challengeTimelines={metadata.challengeTimelines} timelineTemplates={metadata.timelineTemplates} challenge={challenge} onUpdateSelect={this.onUpdateSelect} />
14371438
</React.Fragment>
14381439
)}
14391440
{!isTask && (

0 commit comments

Comments
 (0)