Skip to content

Commit 9c64b39

Browse files
committed
create tutorial package.json
1 parent 34422a5 commit 9c64b39

File tree

4 files changed

+69
-25
lines changed

4 files changed

+69
-25
lines changed

lib/components/TutorialConfig/index.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,35 @@ var TutorialConfig = (function (_super) {
4545
TutorialConfig.prototype.handleChange = function (prop, val) {
4646
var obj = {};
4747
obj[prop] = val;
48-
this.setState(Object.assign({}, this.state, obj));
48+
var target = null;
49+
switch (prop) {
50+
case 'name':
51+
this.setState(Object.assign({}, this.state, obj));
52+
break;
53+
case 'language':
54+
case 'runner':
55+
var config = Object.assign({}, this.state.config, obj);
56+
this.setState(Object.assign({}, this.state, { config: config }));
57+
return;
58+
case 'repo':
59+
var repo = {
60+
repository: {
61+
type: 'git',
62+
url: prop
63+
},
64+
bugs: {
65+
url: prop + '/issues'
66+
}
67+
};
68+
this.setState(Object.assign({}, this.state, repo));
69+
return;
70+
}
4971
};
5072
TutorialConfig.prototype.save = function () {
5173
this.props.save(this.state);
5274
};
5375
TutorialConfig.prototype.render = function () {
54-
return (React.createElement(Card_1.Card, {style: styles}, React.createElement(Card_1.CardHeader, {title: 'Tutorial Configuration'}), React.createElement(TextField_1.default, {floatingLabelText: 'Tutorial Package Name', defaultValue: this.state.name, onChange: this.handleText.bind(this, 'name')}), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Language', value: this.state.language, onChange: this.handleSelect.bind(this, 'language')}, languageItems_1.default()), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Test Runner', value: this.state.runner, onChange: this.handleSelect.bind(this, 'runner')}, runnerItems_1.default(this.state.language)), React.createElement("br", null), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Save', primary: true, onTouchTap: this.save.bind(this)}), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Continue', secondary: true, onTouchTap: this.props.routeToInfo.bind(this)})));
76+
return (React.createElement(Card_1.Card, {style: styles}, React.createElement(Card_1.CardHeader, {title: 'Tutorial Configuration'}), React.createElement(TextField_1.default, {floatingLabelText: 'Tutorial Package Name', defaultValue: this.state.name, onChange: this.handleText.bind(this, 'name')}), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Language', value: this.state.config.language, onChange: this.handleSelect.bind(this, 'language')}, languageItems_1.default()), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Test Runner', value: this.state.config.runner, onChange: this.handleSelect.bind(this, 'runner')}, runnerItems_1.default(this.state.config.language)), React.createElement("br", null), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Save', primary: true, onTouchTap: this.save.bind(this)}), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Continue', secondary: true, onTouchTap: this.props.routeToInfo.bind(this)})));
5577
};
5678
TutorialConfig = __decorate([
5779
react_redux_1.connect(null, function (dispatch) {

lib/modules/tutorial-config/reducer.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,23 @@ var types_1 = require('./types');
33
var packageJson_1 = require('./utils/packageJson');
44
var _config = {
55
name: 'coderoad-',
6-
repo: '',
7-
language: 'JS',
8-
runner: 'mocha-coderoad',
9-
runnerOptions: {}
6+
config: {
7+
language: 'JS',
8+
runner: 'mocha-coderoad',
9+
runnerOptions: {}
10+
}
1011
};
1112
var defaultPJ = {};
1213
function tutorialConfig(c, action) {
1314
if (c === void 0) { c = _config; }
1415
switch (action.type) {
1516
case types_1.TUTORIAL_CONFIG_SAVE:
16-
var pj = packageJson_1.readPackageJson(action.payload.dir);
17-
var content = {};
18-
if (pj) {
19-
content = Object.assign({}, pj, action.payload.config);
20-
console.log(content);
21-
}
22-
else {
23-
content = action.payload.config;
24-
}
25-
packageJson_1.writePackageJson(action.payload.dir, content);
17+
var _a = action.payload, config = _a.config, dir = _a.dir;
18+
var pj = packageJson_1.readPackageJson(dir);
19+
var content = !!pj
20+
? Object.assign({}, pj, config)
21+
: config;
22+
packageJson_1.writePackageJson(dir, content);
2623
return action.payload.config;
2724
default:
2825
return c;

src/components/TutorialConfig/index.tsx

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,34 @@ export default class TutorialConfig extends React.Component <{
4343
handleSelect(prop, event, index, value) {
4444
this.handleChange(prop, value);
4545
}
46-
handleChange(prop, val) {
46+
handleChange(prop: string, val: any) {
4747
const obj = {};
4848
obj[prop] = val;
49-
this.setState(Object.assign({}, this.state, obj));
49+
let target = null;
50+
switch (prop) {
51+
// base
52+
case 'name':
53+
this.setState(Object.assign({}, this.state, obj));
54+
break;
55+
// config
56+
case 'language':
57+
case 'runner':
58+
const config = Object.assign({}, this.state.config, obj);
59+
this.setState(Object.assign({}, this.state, { config }));
60+
return;
61+
case 'repo':
62+
const repo = {
63+
repository: {
64+
type: 'git',
65+
url: prop
66+
},
67+
bugs: {
68+
url: prop + '/issues'
69+
}
70+
};
71+
this.setState(Object.assign({}, this.state, repo));
72+
return;
73+
}
5074
}
5175
save() {
5276
this.props.save(this.state);
@@ -65,18 +89,18 @@ export default class TutorialConfig extends React.Component <{
6589
<br />
6690
<SelectField
6791
floatingLabelText='Language'
68-
value={this.state.language}
92+
value={this.state.config.language}
6993
onChange={this.handleSelect.bind(this, 'language')}
7094
>
7195
{languageItems()}
7296
</SelectField>
7397
<br />
7498
<SelectField
7599
floatingLabelText='Test Runner'
76-
value={this.state.runner}
100+
value={this.state.config.runner}
77101
onChange={this.handleSelect.bind(this, 'runner')}
78102
>
79-
{runnerItems(this.state.language)}
103+
{runnerItems(this.state.config.language)}
80104
</SelectField>
81105
<br />
82106
<RaisedButton

src/modules/tutorial-config/reducer.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import {readPackageJson, writePackageJson} from './utils/packageJson';
33

44
const _config: Tutorial.ConfigSet = {
55
name: 'coderoad-',
6-
repo: '',
7-
language: 'JS',
8-
runner: 'mocha-coderoad',
9-
runnerOptions: {}
6+
config: {
7+
language: 'JS',
8+
runner: 'mocha-coderoad',
9+
runnerOptions: {}
10+
}
1011
};
1112

1213
const defaultPJ = {};

0 commit comments

Comments
 (0)