Skip to content

Commit ffec588

Browse files
authored
Mission editing slang (#479)
* bug fixes * yarn format
1 parent 2067109 commit ffec588

File tree

5 files changed

+24
-66
lines changed

5 files changed

+24
-66
lines changed

src/components/Application.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ export interface IDispatchProps {
3131
handlePlaygroundExternalSelect: (external: ExternalLibraryName) => void;
3232
}
3333

34-
const assessmentRenderFactory = (cat: string) => (routerProps: RouteComponentProps<any>) => (
35-
<IncubatorContainer assessmentCategory={cat} />
36-
);
37-
3834
const assessmentRegExp = ':assessmentId(-?\\d+)?/:questionId(\\d+)?';
3935

4036
class Application extends React.Component<IApplicationProps, {}> {
@@ -54,10 +50,7 @@ class Application extends React.Component<IApplicationProps, {}> {
5450
<div className="Application__main">
5551
<Switch>
5652
<Route path="/academy" component={toAcademy(this.props)} />
57-
<Route
58-
path={`/incubator/${assessmentRegExp}`}
59-
render={assessmentRenderFactory('Missions')}
60-
/>
53+
<Route path={`/incubator/${assessmentRegExp}`} render={toIncubator} />
6154
<Route path="/playground" component={Playground} />
6255
<Route path="/login" render={toLogin(this.props)} />
6356
<Route exact={true} path="/" render={this.redirectToAcademy} />
@@ -97,6 +90,8 @@ const parsePlayground = (props: IApplicationProps) => {
9790
}
9891
};
9992

93+
const toIncubator = (routerProps: RouteComponentProps<any>) => <IncubatorContainer />;
94+
10095
const parsePrgrm = (props: RouteComponentProps<{}>) => {
10196
const qsParsed = qs.parse(props.location.hash);
10297
// legacy support

src/components/__tests__/__snapshots__/Application.tsx.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ exports[`Application renders correctly 1`] = `
66
<div className=\\"Application__main\\">
77
<Switch>
88
<Route path=\\"/academy\\" component={[Function]} />
9-
<Route path=\\"/incubator/:assessmentId(-?\\\\\\\\d+)?/:questionId(\\\\\\\\d+)?\\" render={[Function]} />
9+
<Route path=\\"/incubator/:assessmentId(-?\\\\\\\\d+)?/:questionId(\\\\\\\\d+)?\\" render={[Function: toIncubator]} />
1010
<Route path=\\"/playground\\" component={[Function: C]} />
1111
<Route path=\\"/login\\" render={[Function]} />
1212
<Route exact={true} path=\\"/\\" render={[Function]} />

src/components/incubator/EditingWorkspace.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ class AssessmentWorkspace extends React.Component<AssessmentWorkspaceProps, ISta
356356
handleReplOutputClear: this.props.handleReplOutputClear,
357357
handleReplValueChange: this.props.handleReplValueChange,
358358
hasChapterSelect: true,
359+
hasEditorAutorunButton: false,
359360
hasSaveButton: true,
360361
hasShareButton: false,
361362
isRunning: this.props.isRunning,

src/components/incubator/index.tsx

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { NonIdealState, Spinner } from '@blueprintjs/core';
21
import * as React from 'react';
32
import { RouteComponentProps } from 'react-router';
43

@@ -10,7 +9,6 @@ import { AssessmentStatuses, IAssessmentOverview } from '../assessment/assessmen
109
import { OwnProps as AssessmentProps } from '../assessment/AssessmentWorkspace';
1110
import ContentDisplay from '../commons/ContentDisplay';
1211
import { EditingOverviewCard } from '../incubator/EditingOverviewCard';
13-
// import { AnyAction } from 'redux';
1412

1513
const DEFAULT_QUESTION_ID: number = 0;
1614

@@ -21,7 +19,6 @@ export interface IAssessmentWorkspaceParams {
2119

2220
export interface IAssessmentProps
2321
extends IDispatchProps,
24-
IOwnProps,
2522
RouteComponentProps<IAssessmentWorkspaceParams>,
2623
IStateProps {}
2724

@@ -30,12 +27,7 @@ export interface IDispatchProps {
3027
handleSubmitAssessment: (id: number) => void;
3128
}
3229

33-
export interface IOwnProps {
34-
assessmentCategory: string;
35-
}
36-
3730
export interface IStateProps {
38-
assessmentOverviews?: IAssessmentOverview[];
3931
isStudent: boolean;
4032
}
4133

@@ -79,40 +71,21 @@ class Assessment extends React.Component<IAssessmentProps, State> {
7971
}
8072
}
8173

82-
// If there is an assessment to render, create a workspace. The assessment
83-
// overviews must still be loaded for this, to send the due date.
84-
// else if (assessmentId !== null && this.props.assessmentOverviews !== undefined) {
85-
// const overview = this.props.assessmentOverviews.filter(a => a.id === assessmentId)[0]
86-
// const assessmentProps: AssessmentProps = {
87-
// assessmentId,
88-
// questionId,
89-
// notAttempted: overview.status === AssessmentStatuses.not_attempted,
90-
// closeDate: overview.closeAt
91-
// }
92-
// return <AssessmentWorkspaceContainer {...assessmentProps} />
93-
// }
94-
95-
// Otherwise, render a list of assessments to the user.
96-
let display: JSX.Element;
97-
if (this.props.assessmentOverviews === undefined) {
98-
display = <NonIdealState description="Fetching assessment..." visual={<Spinner />} />;
99-
} else {
100-
/** Mission editing card */
101-
const missionEditingCard = this.state.editingOverview ? (
102-
<EditingOverviewCard
103-
overview={this.state.editingOverview}
104-
updateEditingOverview={this.updateEditingOverview}
105-
listingPath="/incubator"
106-
/>
107-
) : null;
108-
109-
display = (
110-
<>
111-
<ImportFromFileComponent updateEditingOverview={this.updateEditingOverview} />
112-
{missionEditingCard}
113-
</>
114-
);
115-
}
74+
/** Mission editing card */
75+
const missionEditingCard = this.state.editingOverview ? (
76+
<EditingOverviewCard
77+
overview={this.state.editingOverview}
78+
updateEditingOverview={this.updateEditingOverview}
79+
listingPath="/incubator"
80+
/>
81+
) : null;
82+
83+
const display = (
84+
<>
85+
<ImportFromFileComponent updateEditingOverview={this.updateEditingOverview} />
86+
{missionEditingCard}
87+
</>
88+
);
11689

11790
// Finally, render the ContentDisplay.
11891
return (

src/containers/incubator/index.ts

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,12 @@ import { connect, MapDispatchToProps, MapStateToProps } from 'react-redux';
22
import { withRouter } from 'react-router';
33
import { bindActionCreators, Dispatch } from 'redux';
44

5-
import {
6-
fetchAssessmentOverviews,
7-
submitAssessment,
8-
updateAssessment
9-
} from '../../actions/session';
10-
import { IAssessmentOverview } from '../../components/assessment/assessmentShape';
11-
import Assessment, { IDispatchProps, IOwnProps, IStateProps } from '../../components/incubator';
5+
import { fetchAssessmentOverviews, submitAssessment } from '../../actions/session';
6+
import Assessment, { IDispatchProps, IStateProps } from '../../components/incubator';
127
import { IState, Role } from '../../reducers/states';
138

14-
const mapStateToProps: MapStateToProps<IStateProps, IOwnProps, IState> = (state, props) => {
15-
const categoryFilter = (overview: IAssessmentOverview) =>
16-
overview.category === props.assessmentCategory;
9+
const mapStateToProps: MapStateToProps<IStateProps, {}, IState> = (state, props) => {
1710
const stateProps: IStateProps = {
18-
assessmentOverviews: state.session.assessmentOverviews
19-
? state.session.assessmentOverviews.filter(categoryFilter)
20-
: undefined,
2111
isStudent: state.session.role ? state.session.role === Role.Student : true
2212
};
2313
return stateProps;
@@ -27,8 +17,7 @@ const mapDispatchToProps: MapDispatchToProps<IDispatchProps, {}> = (dispatch: Di
2717
bindActionCreators(
2818
{
2919
handleAssessmentOverviewFetch: fetchAssessmentOverviews,
30-
handleSubmitAssessment: submitAssessment,
31-
newAssessment: updateAssessment
20+
handleSubmitAssessment: submitAssessment
3221
},
3322
dispatch
3423
);

0 commit comments

Comments
 (0)