Skip to content

Commit fcc873a

Browse files
committed
setup result reducer & component
1 parent 41ff7b2 commit fcc873a

File tree

17 files changed

+187
-29
lines changed

17 files changed

+187
-29
lines changed

‎lib/actions.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ exports.pageSet = page_position_1.pageSet;
88
var package_json_1 = require('./modules/package-json');
99
exports.pjSave = package_json_1.pjSave;
1010
exports.pjLoad = package_json_1.pjLoad;
11+
var result_1 = require('./modules/result');
12+
exports.testResult = result_1.testResult;
1113
var runner_1 = require('./modules/runner');
1214
exports.runnerSet = runner_1.runnerSet;
1315
exports.runnerRun = runner_1.runnerRun;

‎lib/components/Page/TaskActions/index.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ var index_1 = require('../../index');
2020
var task_object_1 = require('./task-object');
2121
var actions_1 = require('../../../actions');
2222
var styles = {
23+
stepper: {
24+
paddingBottom: '20px',
25+
},
2326
form: {
2427
margin: '10px 15px',
2528
display: 'inline-block',
@@ -64,7 +67,7 @@ var TaskActions = (function (_super) {
6467
var stepIndex = this.state.stepIndex;
6568
var actionList = actions.map(function (a) { return task_object_1.default(a); });
6669
return (React.createElement("section", null,
67-
React.createElement(Stepper_1.Stepper, {activeStep: stepIndex, linear: false, orientation: 'vertical'}, actionList.map(function (a, index) { return (React.createElement(Stepper_1.Step, {key: index},
70+
React.createElement(Stepper_1.Stepper, {activeStep: stepIndex, linear: false, orientation: 'vertical', style: styles.stepper}, actionList.map(function (a, index) { return (React.createElement(Stepper_1.Step, {key: index},
6871
React.createElement(Stepper_1.StepButton, {onClick: function () { return _this.setState({
6972
stepIndex: index, as: _this.state.as }); }}, a.action + (a.singleLine ? ' ' + a.content : '')),
7073
React.createElement(Stepper_1.StepContent, null, a.singleLine ? ''

‎lib/components/Test/Result.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"use strict";
2+
var __extends = (this && this.__extends) || function (d, b) {
3+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
4+
function __() { this.constructor = d; }
5+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6+
};
7+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11+
return c > 3 && r && Object.defineProperty(target, key, r), r;
12+
};
13+
var __metadata = (this && this.__metadata) || function (k, v) {
14+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15+
};
16+
var React = require('react');
17+
var react_redux_1 = require('react-redux');
18+
var Card_1 = require('material-ui/Card');
19+
var styles = {
20+
card: {
21+
margin: '5px',
22+
},
23+
};
24+
var Result = (function (_super) {
25+
__extends(Result, _super);
26+
function Result() {
27+
_super.apply(this, arguments);
28+
}
29+
Result.prototype.render = function () {
30+
var result = this.props.result;
31+
return (React.createElement(Card_1.Card, {style: styles.card, initiallyExpanded: true},
32+
React.createElement(Card_1.CardText, {expandable: true},
33+
React.createElement("p", null, result.msg)
34+
)
35+
));
36+
};
37+
Result = __decorate([
38+
react_redux_1.connect(function (state) { return ({
39+
result: state.result,
40+
}); }),
41+
__metadata('design:paramtypes', [])
42+
], Result);
43+
return Result;
44+
}(React.Component));
45+
Object.defineProperty(exports, "__esModule", { value: true });
46+
exports.default = Result;

‎lib/components/Test/Solution.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ var RaisedButton_1 = require('material-ui/RaisedButton');
2020
var index_1 = require('../index');
2121
var actions_1 = require('../../actions');
2222
var core_coderoad_1 = require('core-coderoad');
23+
var Result_1 = require('./Result');
2324
var styles = {
2425
card: {
2526
margin: '5px',
@@ -52,7 +53,8 @@ var Solution = (function (_super) {
5253
React.createElement("br", null),
5354
React.createElement("div", {style: styles.buttons},
5455
React.createElement(RaisedButton_1.default, {label: 'Run Test', primary: true, onTouchTap: this.runTest.bind(this)})
55-
))));
56+
),
57+
React.createElement(Result_1.default, null))));
5658
};
5759
Solution = __decorate([
5860
react_redux_1.connect(function (state) { return ({

‎lib/modules/result/index.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
"use strict";
2+
var TEST_RESULT = 'TEST_RESULT';
3+
function testResult(result) {
4+
console.log('action', result);
5+
return { type: TEST_RESULT, payload: { result: result } };
6+
}
7+
exports.testResult = testResult;
8+
function reducer(res, action) {
9+
if (res === void 0) { res = {}; }
10+
switch (action.type) {
11+
case TEST_RESULT:
12+
console.log(action.payload.result);
13+
return action.payload.result;
14+
default:
15+
return res;
16+
}
17+
}
18+
exports.reducer = reducer;

‎lib/modules/runner/handleResult.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use strict";
2+
var store_1 = require('../../store');
3+
var actions_1 = require('../../actions');
4+
function handleResult(result) {
5+
console.log('handleResult', result);
6+
return store_1.default.dispatch(actions_1.testResult(result));
7+
}
8+
Object.defineProperty(exports, "__esModule", { value: true });
9+
exports.default = handleResult;

‎lib/modules/runner/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ exports.runnerSet = runnerSet;
1515
function runnerRun(content) {
1616
return function (dispatch, getState) {
1717
var _a = getState(), dir = _a.dir, tutorial = _a.tutorial;
18-
var config = Object.assign({}, dir, tutorial.config);
18+
var config = Object.assign({}, dir, { taskPosition: 0 }, tutorial.config);
1919
dispatch({ type: RUNNER_RUN, payload: { content: content, config: config } });
2020
};
2121
}
@@ -24,6 +24,9 @@ var r = function (content) {
2424
console.log(content);
2525
alert('Runner not yet implemented.');
2626
};
27+
function handleResult(result) {
28+
console.log('handleResult', result);
29+
}
2730
function reducer(runner, action) {
2831
if (runner === void 0) { runner = r; }
2932
switch (action.type) {
@@ -32,7 +35,7 @@ function reducer(runner, action) {
3235
return loadRunner_1.default(dir, name_2);
3336
case RUNNER_RUN:
3437
var _b = action.payload, content = _b.content, config = _b.config;
35-
r(content);
38+
runner(content, config, handleResult);
3639
return runner;
3740
default:
3841
return runner;

‎lib/reducers.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var redux_form_1 = require('redux-form');
44
var page_position_1 = require('./modules/page-position');
55
var setup_1 = require('./modules/setup');
66
var package_json_1 = require('./modules/package-json');
7+
var result_1 = require('./modules/result');
78
var runner_1 = require('./modules/runner');
89
var tutorial_1 = require('./modules/tutorial');
910
var window_1 = require('./modules/window');
@@ -13,7 +14,7 @@ var core_coderoad_1 = require('core-coderoad');
1314
Object.defineProperty(exports, "__esModule", { value: true });
1415
exports.default = redux_1.combineReducers({
1516
alert: core_coderoad_1.alertReducer, checks: setup_1.reducer, editor: core_coderoad_1.editorReducer, dir: core_coderoad_1.dirReducer, form: redux_form_1.reducer,
16-
packageJson: package_json_1.reducer, pagePosition: page_position_1.reducer, route: core_coderoad_1.routeReducer,
17+
packageJson: package_json_1.reducer, pagePosition: page_position_1.reducer, result: result_1.reducer, route: core_coderoad_1.routeReducer,
1718
tutorial: tutorial_1.reducer, updated: updated_1.reducer, validation: validate_tutorial_1.reducer, windowToggle: window_1.reducer,
1819
runner: runner_1.reducer,
1920
});

‎src/actions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export {editorMarkdownOpen, editorTestOpen, editorPjOpen} from './modules/editor-paths';
22
export {pageSet} from './modules/page-position';
33
export {pjSave, pjLoad} from './modules/package-json';
4+
export {testResult} from './modules/result';
45
export {runnerSet, runnerRun} from './modules/runner';
56
export {setupVerify, setupPackage} from './modules/setup';
67
export {

‎src/components/Page/TaskActions/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import SelectField from 'material-ui/SelectField';
1212
import MenuItem from 'material-ui/MenuItem';
1313

1414
const styles = {
15+
stepper: {
16+
paddingBottom: '20px',
17+
},
1518
form: {
1619
margin: '10px 15px',
1720
display: 'inline-block',
@@ -68,6 +71,7 @@ export default class TaskActions extends React.Component<{
6871
activeStep={stepIndex}
6972
linear={false}
7073
orientation='vertical'
74+
style={styles.stepper}
7175
>
7276
{actionList.map((a, index) => (
7377
<Step key={index}>

‎src/components/Test/Result.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as React from 'react';
2+
import {connect} from 'react-redux';
3+
import {Card, CardText, CardTitle} from 'material-ui/Card';
4+
import RaisedButton from 'material-ui/RaisedButton';
5+
6+
const styles = {
7+
card: {
8+
margin: '5px',
9+
},
10+
};
11+
12+
@connect(state => ({
13+
result: state.result,
14+
}))
15+
export default class Result extends React.Component <{
16+
result?: Object
17+
}, {}> {
18+
render() {
19+
const {result} = this.props;
20+
return (
21+
<Card
22+
style={styles.card}
23+
initiallyExpanded={true}
24+
>
25+
<CardText expandable={true}>
26+
<p>{result.msg}</p>
27+
</CardText>
28+
</Card>
29+
);
30+
}
31+
}

‎src/components/Test/Solution.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import RaisedButton from 'material-ui/RaisedButton';
55
import {TextEditor} from '../index';
66
import {runnerRun, runnerSet} from '../../actions';
77
import {languageSuffixSelector} from 'core-coderoad';
8+
import Result from './Result';
89

910
const styles = {
1011
card: {
@@ -68,6 +69,8 @@ ${atom.workspace.getActiveTextEditor().getText()}
6869
onTouchTap={this.runTest.bind(this)}
6970
/>
7071
</div>
72+
73+
<Result />
7174
</CardText>
7275
</Card>
7376
);

‎src/modules/result/index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const TEST_RESULT = 'TEST_RESULT';
2+
3+
export function testResult(result: Object) {
4+
console.log('action', result);
5+
return {type: TEST_RESULT, payload: { result } };
6+
}
7+
8+
export function reducer(res = {}, action: Action) {
9+
switch (action.type) {
10+
11+
case TEST_RESULT:
12+
console.log(action.payload.result);
13+
return action.payload.result;
14+
15+
default:
16+
return res;
17+
}
18+
}

‎src/modules/runner/handleResult.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import store from '../../store';
2+
import {testResult} from '../../actions';
3+
4+
export default function handleResult(result) {
5+
console.log('handleResult', result);
6+
return store.dispatch(testResult(result));
7+
}

‎src/modules/runner/index.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import loadRunner from './loadRunner';
2+
// import handleResult from './handleResult';
3+
import store from '../../store';
4+
import {testResult} from '../../actions';
25

36
const RUNNER_SET = 'RUNNER_SET';
47
const RUNNER_RUN = 'RUNNER_RUN';
@@ -16,7 +19,7 @@ export function runnerSet() {
1619
export function runnerRun(content: string) {
1720
return (dispatch, getState) => {
1821
const {dir, tutorial} = getState();
19-
let config = Object.assign({}, dir, tutorial.config);
22+
let config = Object.assign({}, dir, {taskPosition: 0}, tutorial.config);
2023
dispatch({ type: RUNNER_RUN, payload: { content, config } });
2124
};
2225
}
@@ -27,6 +30,10 @@ const r = (content: string) => {
2730
alert('Runner not yet implemented.');
2831
};
2932

33+
function handleResult(result) {
34+
console.log('handleResult', result);
35+
// return store.dispatch(testResult(result));
36+
}
3037

3138
export function reducer(runner = r, action: Action) {
3239
switch (action.type) {
@@ -38,8 +45,7 @@ export function reducer(runner = r, action: Action) {
3845
case RUNNER_RUN:
3946
let {content, config} = action.payload;
4047
// call runner
41-
r(content);
42-
// runner(content, config, function() {});
48+
runner(content, config, handleResult);
4349
return runner;
4450

4551
default:

‎src/reducers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {reducer as form} from 'redux-form';
55
import {reducer as pagePosition} from './modules/page-position';
66
import {reducer as checks} from './modules/setup';
77
import {reducer as packageJson} from './modules/package-json';
8+
import {reducer as result} from './modules/result';
89
import {reducer as runner} from './modules/runner';
910
import {reducer as tutorial} from './modules/tutorial';
1011
import {reducer as windowToggle} from './modules/window';
@@ -21,7 +22,7 @@ import {
2122

2223
export default combineReducers({
2324
alert, checks, editor, dir, form,
24-
packageJson, pagePosition, route,
25+
packageJson, pagePosition, result, route,
2526
tutorial, updated, validation, windowToggle,
2627
runner,
2728
});

‎tsconfig.json

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
{
2-
"compileOnSave": false,
3-
"buildOnSave": false,
4-
"compilerOptions": {
5-
"target": "ES5",
6-
"module": "commonjs",
7-
"declaration": false,
8-
"noImplicitAny": false,
9-
"removeComments": true,
10-
"noLib": false,
11-
"jsx": "react",
12-
"experimentalDecorators": true,
13-
"emitDecoratorMetadata": true,
14-
"outDir": "lib"
15-
},
16-
"filesGlob": [
2+
"compileOnSave": false,
3+
"buildOnSave": false,
4+
"compilerOptions": {
5+
"target": "ES5",
6+
"module": "commonjs",
7+
"declaration": false,
8+
"noImplicitAny": false,
9+
"removeComments": true,
10+
"noLib": false,
11+
"jsx": "react",
12+
"experimentalDecorators": true,
13+
"emitDecoratorMetadata": true,
14+
"outDir": "lib"
15+
},
16+
"filesGlob": [
1717
"src/typings/**/*.d.ts",
1818
"src/**/*.ts",
1919
"src/**/*.tsx",
2020
"!src/**/*.spec.ts",
2121
"!src/**/*.spec.tsx"
2222
],
23-
"files": [
23+
"files": [
2424
"src/typings/builder.d.ts",
2525
"src/typings/typings.d.ts",
2626
"src/actions.ts",
@@ -43,6 +43,8 @@
4343
"src/modules/page-position/index.ts",
4444
"src/modules/page-position/reducer.ts",
4545
"src/modules/page-position/types.ts",
46+
"src/modules/result/index.ts",
47+
"src/modules/runner/handleResult.ts",
4648
"src/modules/runner/index.ts",
4749
"src/modules/runner/loadRunner.ts",
4850
"src/modules/setup/actions.ts",
@@ -114,15 +116,16 @@
114116
"src/components/Start/index.tsx",
115117
"src/components/Start/Welcome/index.tsx",
116118
"src/components/Test/index.tsx",
119+
"src/components/Test/Result.tsx",
117120
"src/components/Test/Solution.tsx",
118121
"src/components/Test/TestMenu.tsx",
119122
"src/components/TopPanel/TopPanel.tsx",
120123
"src/components/TopPanel/TopRoot.tsx"
121124
],
122-
"exclude": [
125+
"exclude": [
123126
"node_modules"
124127
],
125-
"atom": {
126-
"rewriteTsconfig": true
127-
}
128+
"atom": {
129+
"rewriteTsconfig": true
130+
}
128131
}

0 commit comments

Comments
 (0)