From 3dfa0d6dcb750c8821b08860ea2a136ca8a1ae57 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Tue, 17 Jan 2023 15:01:07 +0600 Subject: [PATCH 1/3] feat: set scheduled start date for submission phase --- .circleci/config.yml | 2 +- package-lock.json | 68 +++++++------------------ package.json | 3 ++ src/components/ChallengeEditor/index.js | 8 ++- 4 files changed, 29 insertions(+), 52 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c6d89147..17959662 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -152,7 +152,7 @@ workflows: context : org-global filters: &filters-dev branches: - only: ['develop'] + only: ['develop', 'PLAT-2111'] # Production builds are exectuted only on tagged commits to the # master branch. diff --git a/package-lock.json b/package-lock.json index 65c76e8a..61b9bb51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3459,14 +3459,12 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "optional": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -3480,8 +3478,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "to-regex-range": { "version": "5.0.1", @@ -6443,8 +6440,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -6462,13 +6458,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6481,18 +6475,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -6595,8 +6586,7 @@ }, "inherits": { "version": "2.0.4", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -6606,7 +6596,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6619,20 +6608,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.5", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.9.0", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6649,7 +6635,6 @@ "mkdirp": { "version": "0.5.3", "bundled": true, - "optional": true, "requires": { "minimist": "^1.2.5" } @@ -6705,8 +6690,7 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "npm-packlist": { "version": "1.4.8", @@ -6731,8 +6715,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -6742,7 +6725,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6811,8 +6793,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -6842,7 +6823,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6860,7 +6840,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6899,13 +6878,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.1.1", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -10747,8 +10724,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "optional": true + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" }, "pify": { "version": "2.3.0", @@ -17574,8 +17550,8 @@ } }, "tc-auth-lib": { - "version": "github:topcoder-platform/tc-auth-lib#68fdc22464810c51b703a33e529cdbd6d09437de", - "from": "github:topcoder-platform/tc-auth-lib#1.0.4", + "version": "git+ssh://git@github.com/topcoder-platform/tc-auth-lib.git#68fdc22464810c51b703a33e529cdbd6d09437de", + "from": "tc-auth-lib@topcoder-platform/tc-auth-lib#1.0.4", "requires": { "lodash": "^4.17.19" }, @@ -18371,8 +18347,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "optional": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "binary-extensions": { "version": "1.13.1", @@ -18384,7 +18359,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -18514,7 +18488,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -18550,7 +18523,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -18644,8 +18616,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "optional": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-glob": { "version": "4.0.1", @@ -18660,7 +18631,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "optional": true, "requires": { "kind-of": "^3.0.2" } diff --git a/package.json b/package.json index 02e50216..390f28ae 100644 --- a/package.json +++ b/package.json @@ -175,5 +175,8 @@ }, "devDependencies": { "standard": "^12.0.1" + }, + "volta": { + "node": "10.15.3" } } diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 4f28557c..35da93de 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -853,13 +853,16 @@ class ChallengeEditor extends Component { } onUpdatePhaseDate (phase, index) { + console.log('onUpdatePhase', phase, index) const { phases } = this.state.challenge let newChallenge = _.cloneDeep(this.state.challenge) + if (phase.isBlur && newChallenge.phases[index]['name'] === 'Submission') { newChallenge.phases[index]['duration'] = _.max([ newChallenge.phases[index - 1]['duration'], phase.duration ]) + newChallenge.phases[index]['scheduledStartDate'] = moment(phase.startDate).toISOString() newChallenge.phases[index]['scheduledEndDate'] = moment(newChallenge.phases[index]['scheduledStartDate']) .add(newChallenge.phases[index]['duration'], 'hours') @@ -872,8 +875,9 @@ class ChallengeEditor extends Component { for (let phaseIndex = index + 1; phaseIndex < phases.length; ++phaseIndex) { if (newChallenge.phases[phaseIndex]['name'] === 'Submission') { - newChallenge.phases[phaseIndex]['scheduledStartDate'] = - newChallenge.phases[phaseIndex - 1]['scheduledStartDate'] + console.log('Setting submission phase scheduled start date', moment(phase.startDate).toISOString()) + newChallenge.phases[index]['scheduledStartDate'] = moment(phase.startDate).toISOString() + newChallenge.phases[phaseIndex]['duration'] = _.max([ newChallenge.phases[phaseIndex - 1]['duration'], newChallenge.phases[phaseIndex]['duration'] From 3e2816d3f44e00b68c59f4d2da84e4b793c8459d Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Tue, 17 Jan 2023 15:28:14 +0600 Subject: [PATCH 2/3] debug: add logs --- src/components/ChallengeEditor/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 35da93de..201ffab3 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -894,6 +894,8 @@ class ChallengeEditor extends Component { if (!_.isEqual(newChallenge.phases[index], phases[index])) { this.setState({ isPhaseChange: true }) } + console.log('Setting new state', newChallenge) + console.log('isPhaseChange', this.state.isPhaseChange) this.setState({ challenge: newChallenge }) setTimeout(() => { @@ -941,12 +943,14 @@ class ChallengeEditor extends Component { if (this.state.challenge.id) { challenge.attachmentIds = _.map(attachments, item => item.id) } + console.log('Phase Data', challenge.phases) challenge.phases = challenge.phases.map((p) => pick([ 'duration', 'phaseId', 'scheduledStartDate', 'scheduledEndDate' ], p)) + console.log('Picked', challenge.phases) if (challenge.terms && challenge.terms.length === 0) delete challenge.terms delete challenge.attachments delete challenge.reviewType From b9977dd580ca005d792b9c36cf60699a88395e20 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Tue, 17 Jan 2023 16:07:52 +0600 Subject: [PATCH 3/3] debug: add logs --- src/components/ChallengeEditor/index.js | 8 ++++++-- src/util/date.js | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 201ffab3..b69abb99 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -950,12 +950,16 @@ class ChallengeEditor extends Component { 'scheduledStartDate', 'scheduledEndDate' ], p)) - console.log('Picked', challenge.phases) + if (challenge.terms && challenge.terms.length === 0) delete challenge.terms delete challenge.attachments delete challenge.reviewType if (!isPhaseChange) delete challenge.phases - return _.cloneDeep(challenge) + + const cloned = _.cloneDeep(challenge) + console.log('CLONED', cloned) + + return cloned } goToEdit (challengeID) { diff --git a/src/util/date.js b/src/util/date.js index 32e2733c..915c3a98 100644 --- a/src/util/date.js +++ b/src/util/date.js @@ -116,7 +116,8 @@ export const updateChallengePhaseBeforeSendRequest = (challengeDetail) => { // challengeDetailTmp.submissionEndDate = moment(challengeDetail.phases[1].scheduledEndDate) challengeDetailTmp.phases = challengeDetailTmp.phases.map((p) => ({ duration: p.duration * hourToSecond, - phaseId: p.phaseId + phaseId: p.phaseId, + scheduledStartDate: p.scheduledStartDate })) return challengeDetailTmp }