From df1ed56ae0cf07379defbee3d1c285546afdc61b Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Sun, 24 Jan 2021 22:05:27 +0200 Subject: [PATCH 1/3] Add a field to set the legacy.useSchedulingAPI property on a challenge --- .../ChallengeEditor/ChallengeView/index.js | 2 + .../UseSchedulingAPIField.module.scss | 84 +++++++++++++++++++ .../UseSchedulingAPIField/index.js | 39 +++++++++ src/components/ChallengeEditor/index.js | 11 +++ 4 files changed, 136 insertions(+) create mode 100644 src/components/ChallengeEditor/UseSchedulingAPIField/UseSchedulingAPIField.module.scss create mode 100644 src/components/ChallengeEditor/UseSchedulingAPIField/index.js diff --git a/src/components/ChallengeEditor/ChallengeView/index.js b/src/components/ChallengeEditor/ChallengeView/index.js index b8d1d266..b818675f 100644 --- a/src/components/ChallengeEditor/ChallengeView/index.js +++ b/src/components/ChallengeEditor/ChallengeView/index.js @@ -9,6 +9,7 @@ import xss from 'xss' import { PrimaryButton } from '../../Buttons' import Track from '../../Track' import NDAField from '../NDAField' +import UseSchedulingAPIField from '../UseSchedulingAPIField' import CopilotField from '../Copilot-Field' import ChallengeScheduleField from '../ChallengeSchedule-Field' import TextEditorField from '../TextEditor-Field' @@ -184,6 +185,7 @@ const ChallengeView = ({ Groups: {groups} )} + {openAdvanceSettings && } {
{ + const useSchedulingAPI = _.get(challenge, 'legacy.useSchedulingAPI', false) + return ( +
+
+ + +
+
+ ) +} + +UseSchedulingAPIField.defaultProps = { + toggleUseSchedulingAPI: () => {}, + readOnly: false +} + +UseSchedulingAPIField.propTypes = { + challenge: PropTypes.shape().isRequired, + toggleUseSchedulingAPI: PropTypes.func, + readOnly: PropTypes.bool +} + +export default UseSchedulingAPIField diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 9dca0d00..351b6c3b 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -49,6 +49,7 @@ import PhaseInput from '../PhaseInput' import LegacyLinks from '../LegacyLinks' import AssignedMemberField from './AssignedMember-Field' import Tooltip from '../Tooltip' +import UseSchedulingAPIField from './UseSchedulingAPIField' import { getResourceRoleByName } from '../../util/tc' const theme = { @@ -97,6 +98,7 @@ class ChallengeEditor extends Component { this.updateFileTypesMetadata = this.updateFileTypesMetadata.bind(this) this.toggleAdvanceSettings = this.toggleAdvanceSettings.bind(this) this.toggleNdaRequire = this.toggleNdaRequire.bind(this) + this.toggleUseSchedulingAPI = this.toggleUseSchedulingAPI.bind(this) this.removePhase = this.removePhase.bind(this) this.resetPhase = this.resetPhase.bind(this) this.savePhases = this.savePhases.bind(this) @@ -593,6 +595,14 @@ class ChallengeEditor extends Component { this.setState({ challenge: newChallenge }) } + toggleUseSchedulingAPI () { + const { challenge } = this.state + const newChallenge = { ...challenge } + const useSchedulingApi = !_.get(newChallenge, 'legacy.useSchedulingAPI', false) + _.set(newChallenge, 'legacy.useSchedulingAPI', useSchedulingApi) + this.setState({ challenge: newChallenge }) + } + /** * Remove Phase from challenge Phases list * @param index @@ -1395,6 +1405,7 @@ class ChallengeEditor extends Component { {/* remove terms field and use default term */} {false && ()} + )} {!isTask && ( From 4b9cc7ba86a854538b85627b8226871ab50f1531 Mon Sep 17 00:00:00 2001 From: C Dharmateja Date: Fri, 5 Feb 2021 11:05:40 +0000 Subject: [PATCH 2/3] pass project groups to challenge --- src/components/ChallengeEditor/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index b08a5bfa..a5dde3f9 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -837,7 +837,8 @@ class ChallengeEditor extends Component { }, descriptionFormat: 'markdown', timelineTemplateId: defaultTemplate.id, - terms: [{ id: DEFAULT_TERM_UUID, roleId: SUBMITTER_ROLE_UUID }] + terms: [{ id: DEFAULT_TERM_UUID, roleId: SUBMITTER_ROLE_UUID }], + groups: [] // prizeSets: this.getDefaultPrizeSets() } if (isBetaMode() && projectDetail.terms) { @@ -848,6 +849,9 @@ class ChallengeEditor extends Component { .map(term => ({ id: term, roleId: SUBMITTER_ROLE_UUID })) ) } + if (isBetaMode() && projectDetail.groups) { + newChallenge.groups.push(...projectDetail.groups) + } const discussions = this.getDiscussionsConfig(newChallenge) if (discussions) { newChallenge.discussions = discussions From a91f41992c2391c8b0d761a8e3557a942b6f497d Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 10 Feb 2021 22:23:16 +0530 Subject: [PATCH 3/3] fix: git#1066-Saving challenge shows error and won't redirect to previous page --- src/components/ChallengeEditor/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 03a1bc65..a5f7013e 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -964,8 +964,8 @@ class ChallengeEditor extends Component { const reviewer = this.state.draftChallenge.data.reviewer const action = await partiallyUpdateChallengeDetails(challengeId, patchObject) const draftChallenge = { data: action.challengeDetails } - draftChallenge.copilot = copilot - draftChallenge.reviewer = reviewer + draftChallenge.data.copilot = copilot + draftChallenge.data.reviewer = reviewer const { challenge: oldChallenge } = this.state const newChallenge = { ...oldChallenge }