Merge pull request #39 from Bouncey/fix/completiongModal
All challenge views use CompletionModalpull/18188/head
parent
bb6b3869ed
commit
71e7026212
|
@ -9,6 +9,7 @@ import ChallengeTitle from '../components/Challenge-Title';
|
||||||
import ChallengeDescription from '../components/Challenge-Description';
|
import ChallengeDescription from '../components/Challenge-Description';
|
||||||
import TestSuite from '../components/Test-Suite';
|
import TestSuite from '../components/Test-Suite';
|
||||||
import Output from '../components/Output';
|
import Output from '../components/Output';
|
||||||
|
import CompletionModal from '../components/CompletionModal';
|
||||||
import {
|
import {
|
||||||
executeChallenge,
|
executeChallenge,
|
||||||
challengeTestsSelector,
|
challengeTestsSelector,
|
||||||
|
@ -77,11 +78,11 @@ export class BackEnd extends PureComponent {
|
||||||
const {
|
const {
|
||||||
initTests,
|
initTests,
|
||||||
updateChallengeMeta,
|
updateChallengeMeta,
|
||||||
data: { challengeNode: { fields: { tests } } },
|
data: { challengeNode: { fields: { tests }, challengeType } },
|
||||||
pathContext: { challengeMeta }
|
pathContext: { challengeMeta }
|
||||||
} = this.props;
|
} = this.props;
|
||||||
initTests(tests);
|
initTests(tests);
|
||||||
updateChallengeMeta(challengeMeta);
|
updateChallengeMeta({ ...challengeMeta, challengeType });
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
|
@ -89,12 +90,14 @@ export class BackEnd extends PureComponent {
|
||||||
const {
|
const {
|
||||||
initTests,
|
initTests,
|
||||||
updateChallengeMeta,
|
updateChallengeMeta,
|
||||||
data: { challengeNode: { title: currentTitle, fields: { tests } } },
|
data: {
|
||||||
|
challengeNode: { title: currentTitle, fields: { tests }, challengeType }
|
||||||
|
},
|
||||||
pathContext: { challengeMeta }
|
pathContext: { challengeMeta }
|
||||||
} = this.props;
|
} = this.props;
|
||||||
if (prevTitle !== currentTitle) {
|
if (prevTitle !== currentTitle) {
|
||||||
initTests(tests);
|
initTests(tests);
|
||||||
updateChallengeMeta(challengeMeta);
|
updateChallengeMeta({ ...challengeMeta, challengeType });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +110,7 @@ export class BackEnd extends PureComponent {
|
||||||
executeChallenge
|
executeChallenge
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
// TODO: Should be tied to user.isSigned
|
// TODO: Should be tied to user.isSignedIn
|
||||||
const buttonCopy = submitting
|
const buttonCopy = submitting
|
||||||
? 'Submit and go to my next challenge'
|
? 'Submit and go to my next challenge'
|
||||||
: "I've completed this challenge";
|
: "I've completed this challenge";
|
||||||
|
@ -141,6 +144,7 @@ export class BackEnd extends PureComponent {
|
||||||
<TestSuite tests={tests} />
|
<TestSuite tests={tests} />
|
||||||
</Row>
|
</Row>
|
||||||
</Col>
|
</Col>
|
||||||
|
<CompletionModal />
|
||||||
</Row>
|
</Row>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,8 @@ import {
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
isFrontEnd: PropTypes.bool,
|
isFrontEnd: PropTypes.bool,
|
||||||
isSubmitting: PropTypes.bool
|
isSubmitting: PropTypes.bool,
|
||||||
|
openModal: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
const frontEndFields = ['solution'];
|
const frontEndFields = ['solution'];
|
||||||
|
@ -35,6 +36,7 @@ const options = {
|
||||||
|
|
||||||
export class ProjectForm extends PureComponent {
|
export class ProjectForm extends PureComponent {
|
||||||
handleSubmit = values => {
|
handleSubmit = values => {
|
||||||
|
this.props.openModal('completion');
|
||||||
console.log(values);
|
console.log(values);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import Helmet from 'react-helmet';
|
||||||
import { ChallengeNode } from '../../../redux/propTypes';
|
import { ChallengeNode } from '../../../redux/propTypes';
|
||||||
import SidePanel from './Side-Panel';
|
import SidePanel from './Side-Panel';
|
||||||
import ToolPanel from './Tool-Panel';
|
import ToolPanel from './Tool-Panel';
|
||||||
|
import CompletionModal from '../components/CompletionModal';
|
||||||
import HelpModal from '../components/HelpModal';
|
import HelpModal from '../components/HelpModal';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { updateChallengeMeta, createFiles } from '../redux';
|
import { updateChallengeMeta, createFiles } from '../redux';
|
||||||
|
@ -76,6 +77,7 @@ export class Project extends PureComponent {
|
||||||
title={blockNameTitle}
|
title={blockNameTitle}
|
||||||
/>
|
/>
|
||||||
<ToolPanel challengeType={challengeType} />
|
<ToolPanel challengeType={challengeType} />
|
||||||
|
<CompletionModal />
|
||||||
<HelpModal />
|
<HelpModal />
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
|
|
|
@ -14,23 +14,34 @@ import ProjectForm from './ProjectForm';
|
||||||
const mapStateToProps = () => ({});
|
const mapStateToProps = () => ({});
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch =>
|
const mapDispatchToProps = dispatch =>
|
||||||
bindActionCreators({ openHelpModal: () => openModal('help') }, dispatch);
|
bindActionCreators(
|
||||||
|
{
|
||||||
|
openHelpModal: () => openModal('help'),
|
||||||
|
openCompletionModal: () => openModal('completion')
|
||||||
|
},
|
||||||
|
dispatch
|
||||||
|
);
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
challengeType: PropTypes.number,
|
challengeType: PropTypes.number,
|
||||||
guideUrl: PropTypes.string,
|
guideUrl: PropTypes.string,
|
||||||
|
openCompletionModal: PropTypes.func.isRequired,
|
||||||
openHelpModal: PropTypes.func.isRequired
|
openHelpModal: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
export class ToolPanel extends PureComponent {
|
export class ToolPanel extends PureComponent {
|
||||||
render() {
|
render() {
|
||||||
const { guideUrl, challengeType, openHelpModal } = this.props;
|
const {
|
||||||
console.log(this.props);
|
guideUrl,
|
||||||
|
challengeType,
|
||||||
|
openHelpModal,
|
||||||
|
openCompletionModal
|
||||||
|
} = this.props;
|
||||||
|
|
||||||
const isFrontEnd = challengeType === frontEndProject;
|
const isFrontEnd = challengeType === frontEndProject;
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<ProjectForm isFrontEnd={isFrontEnd} />
|
<ProjectForm isFrontEnd={isFrontEnd} openModal={openCompletionModal} />
|
||||||
<ButtonSpacer />
|
<ButtonSpacer />
|
||||||
{guideUrl && (
|
{guideUrl && (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
|
|
Loading…
Reference in New Issue