@@ -5,12 +5,7 @@ import SelectField from 'material-ui/SelectField';
55import MenuItem from 'material-ui/MenuItem' ;
66import { Card , CardHeader } from 'material-ui/Card'
77import RaisedButton from 'material-ui/RaisedButton' ;
8- import { tutorialConfigSave } from '../../actions' ;
9- // name: '',
10- // repo: '',
11- // language: '',
12- // runner: '',
13- // runnerOptions: {}
8+ import { tutorialConfigSave , routeSet } from '../../actions' ;
149
1510const styles = {
1611 margin : '10px' ,
@@ -20,12 +15,14 @@ const styles = {
2015
2116@connect ( null , dispatch => {
2217 return {
23- save : ( config : Tutorial . ConfigSet ) => dispatch ( tutorialConfigSave ( config ) )
18+ save : ( config : Tutorial . ConfigSet ) => dispatch ( tutorialConfigSave ( config ) ) ,
19+ routeToInfo : ( ) => dispatch ( routeSet ( 'tutorialInfo' ) )
2420 } ;
2521} )
2622export default class TutorialConfig extends React . Component < {
2723 tutorialConfig : Tutorial . ConfigSet ,
28- save ?: ( config : Tutorial . ConfigSet ) => any ;
24+ save ?: ( config : Tutorial . ConfigSet ) => any ,
25+ routeToInfo ?: ( ) => any
2926} , {
3027 name : string , repo : string , language : string ,
3128 runner : string , runnerOptions ?: Object
@@ -40,12 +37,16 @@ export default class TutorialConfig extends React.Component <{
4037 runnerOptions : { }
4138 } ;
4239 }
43- handleChange ( value , event ) {
40+ handleText ( prop , event ) {
41+ this . handleChange ( prop , event . target . value ) ;
42+ }
43+ handleSelect ( prop , event , index , value ) {
44+ this . handleChange ( prop , value ) ;
45+ }
46+ handleChange ( prop , val ) {
4447 const obj = { } ;
45- obj [ value ] = event . target . value ;
46- this . setState (
47- Object . assign ( { } , this . state , obj )
48- ) ;
48+ obj [ prop ] = val ;
49+ this . setState ( Object . assign ( { } , this . state , obj ) ) ;
4950 }
5051 save ( ) {
5152 this . props . save ( this . state ) ;
@@ -59,28 +60,49 @@ export default class TutorialConfig extends React.Component <{
5960 < TextField
6061 floatingLabelText = 'Tutorial Package Name'
6162 value = { this . state . name }
62- onChange = { this . handleChange . bind ( this , 'name' , event ) }
63+ onChange = { this . handleText . bind ( this , 'name' ) }
6364 />
6465 < br />
6566 < SelectField
6667 floatingLabelText = 'Language'
6768 value = { this . state . language }
68- onChange = { this . handleChange . bind ( this , 'language' , event ) }
69+ onChange = { this . handleSelect . bind ( this , 'language' ) }
6970 >
70- < MenuItem value = { 'JS' } primaryText = 'JS' />
71- < MenuItem value = { 'Python' } primaryText = 'Python' />
71+ < MenuItem
72+ key = { 1 }
73+ value = { 'JS' }
74+ primaryText = 'JS'
75+ />
76+ < MenuItem
77+ key = { 2 }
78+ value = { 'Python' }
79+ primaryText = 'Python'
80+ />
7281 </ SelectField >
7382 < br />
7483 < SelectField
7584 floatingLabelText = 'Test Runner'
7685 value = { this . state . runner }
77- onChange = { this . handleChange . bind ( this , 'runner' , event ) }
86+ onChange = { this . handleSelect . bind ( this , 'runner' ) }
7887 >
79- < MenuItem value = { 'mocha-coderoad' } primaryText = 'Mocha-CodeRoad' />
88+ < MenuItem
89+ key = { 1 }
90+ value = { 'mocha-coderoad' }
91+ primaryText = 'Mocha-CodeRoad'
92+ />
8093 </ SelectField >
8194 < br />
8295 < br />
83- < RaisedButton label = 'Save' primary = { true } onTouchTap = { this . save . bind ( this ) } />
96+ < RaisedButton
97+ label = 'Save'
98+ primary = { true }
99+ onTouchTap = { this . save . bind ( this ) }
100+ />
101+ < RaisedButton
102+ label = 'Continue'
103+ secondary = { true }
104+ onTouchTap = { this . props . routeToInfo . bind ( this ) }
105+ />
84106 </ Card >
85107 ) ;
86108 }
0 commit comments