From f3efd38b28aa3fb6caa75be25d3a2048c0360826 Mon Sep 17 00:00:00 2001 From: Nursoltan Saipolda Date: Thu, 10 Mar 2022 17:12:14 +0800 Subject: [PATCH] fix 1328 --- src/components/ChallengeEditor/index.js | 25 ++++++++++++++++++++++--- src/components/PhaseInput/index.js | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 0d174e47..be561754 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -813,10 +813,28 @@ class ChallengeEditor extends Component { } onUpdatePhaseDate (phase, index) { + const { phases } = this.state.challenge let newChallenge = _.cloneDeep(this.state.challenge) newChallenge.phases[index]['duration'] = phase.duration - newChallenge.phases[index]['scheduledStartDate'] = phase.scheduledStartDate - newChallenge.phases[index]['scheduledEndDate'] = phase.scheduledEndDate + newChallenge.phases[index]['scheduledStartDate'] = phase.startDate + newChallenge.phases[index]['scheduledEndDate'] = phase.endDate + + let lastDate = phase.endDate + for (let phaseIndex = index + 1; phaseIndex < phases.length; phaseIndex++) { + if (moment(phases[phaseIndex]['scheduledStartDate']).isBefore(lastDate)) { + lastDate = moment(lastDate).add('1', 'hour').format('MM/DD/YYYY HH:mm') + newChallenge.phases[phaseIndex]['scheduledStartDate'] = lastDate + + if (moment(phases[phaseIndex]['scheduledEndDate']).isBefore(lastDate)) { + lastDate = moment(lastDate).add('1', 'hour').format('MM/DD/YYYY HH:mm') + newChallenge.phases[phaseIndex]['scheduledEndDate'] = lastDate + } + + newChallenge.phases[phaseIndex]['duration'] = + moment(newChallenge.phases[phaseIndex]['scheduledEndDate']).diff(newChallenge.phases[phaseIndex]['scheduledStartDate'], 'hours') + } + } + this.setState({ challenge: newChallenge }) } @@ -1594,7 +1612,8 @@ class ChallengeEditor extends Component { phase={phase} phaseIndex={uuidv4()} readOnly={false} - isActive={this.isPhaseEditable(index)} + // isActive={this.isPhaseEditable(index)} + isActive onUpdatePhase={(item) => { if ((item.startDate && !moment(item.startDate).isSame(phase.scheduledStartDate)) || (item.endDate && !moment(item.endDate).isSame(phase.scheduledEndDate)) diff --git a/src/components/PhaseInput/index.js b/src/components/PhaseInput/index.js index ad985f79..d006747b 100644 --- a/src/components/PhaseInput/index.js +++ b/src/components/PhaseInput/index.js @@ -25,7 +25,7 @@ const PhaseInput = ({ onUpdatePhase, phase, readOnly, phaseIndex, isActive }) => setEndDate(phase.scheduledEndDate) setDuration(moment(phase.scheduledEndDate).diff(phase.scheduledStartDate, 'hours')) } - }, []) + }, [phase]) useEffect(() => { if (!readOnly) {