Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7d8d086

Browse files
committed
hintPosition in redux state
1 parentd570f39 commit7d8d086

File tree

33 files changed

+284
-174
lines changed

33 files changed

+284
-174
lines changed

‎lib/actions/actionTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ exports.SET_PROGRESS = 'SET_PROGRESS';
99
exports.PAGE_COMPLETE='PAGE_COMPLETE';
1010
exports.CHAPTER_COMPLETE='CHAPTER_COMPLETE';
1111
exports.PROJECT_COMPLETE='PROJECT_COMPLETE';
12-
exports.SET_TASK_POSITION='SET_TASK_POSITION';
1312
exports.EDITOR_ACTIONS='EDITOR_ACTIONS';
1413
exports.SHOW_HINT='SHOW_HINT';
1514
exports.SHOW_SOLUTION='SHOW_SOLUTION';
15+
exports.SET_HINT_POSITION='SET_HINT_POSITION';
1616
exports.RUN_TESTS='RUN_TESTS';
1717
exports.TEST_COMPLETE='TEST_COMPLETE';
1818
exports.TEST_RESULT='TEST_RESULT';

‎lib/actions/actions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ exports.showHint = task_actions_1.showHint;
4646
exports.runTests=task_actions_1.runTests;
4747
exports.testComplete=task_actions_1.testComplete;
4848
exports.testResult=task_actions_1.testResult;
49+
exports.setHintPosition=task_actions_1.setHintPosition;
4950
vartutorials_1=require('./tutorials');
5051
exports.loadTutorials=tutorials_1.loadTutorials;
5152
varalert_1=require('./alert');

‎lib/actions/task-actions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@ function testComplete() {
1818
return{type:Type.TEST_COMPLETE};
1919
}
2020
exports.testComplete=testComplete;
21+
functionsetHintPosition(hintPosition){
22+
return{type:Type.SET_HINT_POSITION,payload:{hintPosition:hintPosition}};
23+
}
24+
exports.setHintPosition=setHintPosition;

‎lib/components/account/account.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ var default_1 = (function (_super) {
1111
_super.apply(this,arguments);
1212
}
1313
default_1.prototype.render=function(){
14-
return(React.createElement("section",{className:'cr-account'},
15-
React.createElement("h3",null,"Account")
16-
));
14+
return(React.createElement("section",{className:'cr-account'},React.createElement("h3",null,"Account")));
1715
};
1816
returndefault_1;
1917
}(React.Component));

‎lib/components/app/app.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ var default_1 = (function (_super) {
3030
};
3131
default_1.prototype.render=function(){
3232
varstate=this.props.state;
33-
return(React.createElement("section",{className:'cr'},
34-
React.createElement(_components_1.Menu,{route:state.route,position:state.position}),
35-
React.createElement(_components_1.Router,{state:state}),
36-
React.createElement(_components_1.Alert,{alert:state.alert})));
33+
return(React.createElement("section",{className:'cr'},React.createElement(_components_1.Menu,{route:state.route,position:state.position}),React.createElement(_components_1.Router,{state:state}),React.createElement(_components_1.Alert,{alert:state.alert})));
3734
};
3835
default_1.childContextTypes={
3936
muiTheme:React.PropTypes.object,

‎lib/components/app/router.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var default_1 = (function (_super) {
1414
default_1.prototype.chooseRoute=function(state){
1515
switch(state.route){
1616
case'page':
17-
returnReact.createElement(_components_1.Page,{page:state.page,tasks:state.tasks,taskPosition:state.taskPosition,editorActions:state.editorActions,runTests:state.runTests,log:state.log});
17+
returnReact.createElement(_components_1.Page,{page:state.page,tasks:state.tasks,taskPosition:state.taskPosition,hintPosition:state.hintPosition,editorActions:state.editorActions,runTests:state.runTests,log:state.log});
1818
case'progress':
1919
returnReact.createElement(_components_1.Progress,{progress:state.progress,position:state.position});
2020
case'projects':

‎lib/components/menu/menu.js

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ var default_1 = (function (_super) {
3939
default_1.prototype.menuOptions=function(){
4040
switch(this.props.route){
4141
case'page':
42-
return(React.createElement("div",null,
43-
React.createElement(material_ui_1.MenuItem,{primaryText:'progress',onClick:this.props.routeToProgress}),
44-
React.createElement(material_ui_1.MenuItem,{primaryText:'projects',onClick:this.props.routeToProjects})));
42+
return(React.createElement("div",null,React.createElement(material_ui_1.MenuItem,{primaryText:'progress',onClick:this.props.routeToProgress}),React.createElement(material_ui_1.MenuItem,{primaryText:'projects',onClick:this.props.routeToProjects})));
4543
case'progress':
4644
returnReact.createElement(material_ui_1.MenuItem,{primaryText:'projects',onClick:this.props.routeToProjects});
4745
default:returnnull;
@@ -51,17 +49,7 @@ var default_1 = (function (_super) {
5149
render_1.togglePanel();
5250
};
5351
default_1.prototype.render=function(){
54-
return(React.createElement(material_ui_1.AppBar,{title:'CodeRoad',className:'cr-menu-bar',iconElementLeft:React.createElement(material_ui_1.IconButton,{onClick:this.closePanel},
55-
React.createElement(NavigationClose,null)
56-
),iconElementRight:React.createElement(material_ui_1.IconMenu,{iconButtonElement:React.createElement(material_ui_1.IconButton,null,
57-
React.createElement(MoreVertIcon,null)
58-
),targetOrigin:{horizontal:'right',vertical:'top'},anchorOrigin:{horizontal:'right',vertical:'top'}},
59-
this.menuOptions(),
60-
window.coderoad.issuesPath ?React.createElement(material_ui_1.MenuItem,null,
61-
React.createElement("a",{href:window.coderoad.issuesPath},"post issue")
62-
) :null,
63-
React.createElement(material_ui_1.Divider,null),
64-
React.createElement(material_ui_1.MenuItem,{primaryText:'quit',onClick:this.props.quit}))}));
52+
return(React.createElement(material_ui_1.AppBar,{title:'CodeRoad',className:'cr-menu-bar',iconElementLeft:React.createElement(material_ui_1.IconButton,{onClick:this.closePanel},React.createElement(NavigationClose,null)),iconElementRight:React.createElement(material_ui_1.IconMenu,{iconButtonElement:React.createElement(material_ui_1.IconButton,null,React.createElement(MoreVertIcon,null)),targetOrigin:{horizontal:'right',vertical:'top'},anchorOrigin:{horizontal:'right',vertical:'top'}},this.menuOptions(),window.coderoad.issuesPath ?React.createElement(material_ui_1.MenuItem,null,React.createElement("a",{href:window.coderoad.issuesPath},"post issue")) :null,React.createElement(material_ui_1.Divider,null),React.createElement(material_ui_1.MenuItem,{primaryText:'quit',onClick:this.props.quit}))}));
6553
};
6654
default_1=__decorate([
6755
react_redux_1.connect(null,function(dispatch){

‎lib/components/page/chapter.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,5 @@ var _components_1 = require('../_components');
44
Object.defineProperty(exports,"__esModule",{value:true});
55
exports.default=function(_a){
66
varchapter=_a.chapter;
7-
return(React.createElement("section",{className:'cr-chapter'},
8-
React.createElement(_components_1.MarkdownText,{text:chapter.title})
9-
));
7+
return(React.createElement("section",{className:'cr-chapter'},React.createElement(_components_1.MarkdownText,{text:chapter.title})));
108
};

‎lib/components/page/content.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ var _components_1 = require('../_components');
44
varmaterial_ui_1=require('material-ui');
55
functiondefault_1(_a){
66
varpage=_a.page;
7-
return(React.createElement(material_ui_1.Card,null,
8-
React.createElement(material_ui_1.CardHeader,{title:page.title}),
9-
React.createElement(material_ui_1.CardText,null,
10-
React.createElement(_components_1.MarkdownText,{text:page.description})
11-
)));
7+
return(React.createElement(material_ui_1.Card,null,React.createElement(material_ui_1.CardHeader,{title:page.title}),React.createElement(material_ui_1.CardText,null,React.createElement(_components_1.MarkdownText,{text:page.description}))));
128
}
139
Object.defineProperty(exports,"__esModule",{value:true});
1410
exports.default=default_1;

‎lib/components/page/edit.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
66
exports.default=function(editPath){
77
if(editPath&&window.coderoad.edit){
88
varrepoPath=path.join(window.coderoad.repo,'edit','master',editPath);
9-
returnReact.createElement("a",{href:repoPath},
10-
React.createElement(Edit,{style:{position:'absolute',top:'10px',right:'10px'}})
11-
);
9+
returnReact.createElement("a",{href:repoPath},React.createElement(Edit,{style:{position:'absolute',top:'10px',right:'10px'}}));
1210
}
1311
};

‎lib/components/page/page-complete.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";
2+
varReact=require('react');
3+
varmaterial_ui_1=require('material-ui');
4+
var_components_1=require('../_components');
5+
exports.PageCompleteMessage=function(_a){
6+
varpage=_a.page;
7+
return(React.createElement("div",{className:'cr-task-onComplete-description'},page.completed&&page.onPageComplete ?
8+
React.createElement(material_ui_1.ListItem,{className:'cr-task-onComplete',key:'page-complete'},React.createElement(_components_1.MarkdownText,{text:page.onPageComplete}))
9+
:null));
10+
};

‎lib/components/page/page.js

Lines changed: 36 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -63,109 +63,68 @@ var default_1 = (function (_super) {
6363
__extends(default_1,_super);
6464
functiondefault_1(){
6565
_super.call(this);
66-
this.state={
67-
hintPos:-1,
68-
taskPos:0
69-
};
7066
}
7167
default_1.prototype.componentDidUpdate=function(){
72-
vartaskPosition=this.props.taskPosition;
68+
var_a=this.props,taskPosition=_a.taskPosition,hintPosition=_a.hintPosition;
7369
if(taskPosition>0&&taskPosition<this.props.tasks.length){
74-
ReactDOM.findDOMNode(this.refs['task'+taskPosition]).scrollIntoView();
70+
ReactDOM.findDOMNode(this.refs.listEnd).scrollIntoView();
7571
}
76-
if(this.state.taskPos!==taskPosition){
77-
this.setState({
78-
hintPos:-1,
79-
taskPos:taskPosition
80-
});
81-
}
82-
elseif(this.state.hintPos>-1){
83-
ReactDOM.findDOMNode(this.refs['hint'+this.state.hintPos]).scrollIntoView();
72+
if(hintPosition>-1){
73+
ReactDOM.findDOMNode(this.refs.listEnd).scrollIntoView();
8474
}
8575
elseif(this.props.page.completed&&this.props.page.onPageComplete){
86-
ReactDOM.findDOMNode(this.refs.onPageComplete).scrollIntoView();
76+
ReactDOM.findDOMNode(this.refs.listEnd).scrollIntoView();
8777
}
8878
};
8979
default_1.prototype.displayHint=function(task){
80+
varhintPosition=this.props.hintPosition;
9081
if(task&&task.hints&&task.hints.length){
91-
if(this.state.hintPos<task.hints.length-1){
92-
this.setState({hintPos:this.state.hintPos+=1,taskPos:this.state.taskPos});
82+
if(hintPosition<task.hints.length-1){
83+
this.props.showHint(hintPosition+1);
9384
}
9485
}
9586
else{
96-
this.setState({hintPos:-1,taskPos:this.state.taskPos});
87+
this.props.showHint(-1);
9788
}
9889
};
9990
default_1.prototype.render=function(){
10091
var_this=this;
101-
varpage=this.props.page;
102-
vartaskPosition=this.props.taskPosition;
92+
var_a=this.props,page=_a.page,taskPosition=_a.taskPosition,hintPosition=_a.hintPosition;
10393
vartasks=visibleTasks(this.props.tasks,taskPosition);
10494
varcurrentTask=taskPosition<=tasks.length ?tasks[taskPosition] :null;
10595
varallComplete=taskPosition>=tasks.length;
106-
return(React.createElement(material_ui_2.Paper,{style:style,zDepth:1,className:'cr-page'},
107-
React.createElement(content_1.default,{page:page}),
108-
React.createElement(material_ui_1.Divider,null),
109-
React.createElement(material_ui_1.List,{subheader:'Tasks',className:'cr-tasks',ref:'tasks'},
110-
tasks.map(function(task,index){
111-
varisCurrentTask=index===taskPosition;
112-
varisDisabledTask=index>taskPosition;
113-
varisCompletedTask=index<taskPosition;
114-
varisFinalTask=index>=tasks.length-1;
115-
varhints=hintsShown(task,_this.state.hintPos);
116-
return(React.createElement("div",null,
117-
React.createElement(material_ui_1.ListItem,{ref:'task'+index,className:classnames({
118-
'cr-task':true,
119-
'isCompletedTask':isCompletedTask,
120-
'isCurrentTask':isCurrentTask,
121-
'isDisabledTask':isDisabledTask
122-
})},
123-
React.createElement(TaskCheckbox,{index:index,taskPosition:taskPosition,runTests:_this.props.runTests}),
124-
React.createElement("span",{className:'cr-task-index'},
125-
index+1,
126-
"."),
127-
React.createElement("div",{className:'cr-task-description'},
128-
React.createElement(_components_1.MarkdownText,{text:task.description})
129-
)),
130-
isCurrentTask&&hints ?
131-
hints.map(function(hint,indexHint){
132-
returnReact.createElement(material_ui_1.ListItem,{className:'cr-task-hint',ref:'hint'+indexHint},
133-
React.createElement("div",{class:'cr-task-hint-box'},
134-
React.createElement("span",{className:'cr-task-hint-index'},
135-
indexHint+1,
136-
"."),
137-
React.createElement("div",{className:'cr-task-hint-description'},
138-
React.createElement(_components_1.MarkdownText,{text:hint})
139-
))
140-
);
141-
})
142-
:null,
143-
isFinalTask ?null :React.createElement(material_ui_1.Divider,null)));
144-
}),
145-
page.completed&&!!page.onPageComplete ?React.createElement(material_ui_1.ListItem,{className:'cr-task-onComplete',ref:'onPageComplete'},
146-
React.createElement("div",{className:'cr-task-onComplete-description'},
147-
React.createElement(_components_1.MarkdownText,{text:page.onPageComplete})
148-
)
149-
) :null),
150-
React.createElement("section",{className:'cr-page-toolbar'},
151-
React.createElement(material_ui_2.LinearProgress,{mode:'determinate',value:taskProgress(taskPosition,tasks.length),style:{height:'6px'}}),
152-
React.createElement(material_ui_2.Toolbar,null,
153-
currentTask&&currentTask.hints&&currentTask.hints.length ?
154-
React.createElement(material_ui_2.ToolbarGroup,{float:'left'},this.state.hintPos<=currentTask.hints.length-2 ?
155-
React.createElement(material_ui_2.FlatButton,{className:'cr-task-showHint',icon:React.createElement(InfoOutline,null),onClick:this.displayHint.bind(this,currentTask)})
156-
:React.createElement(material_ui_2.FlatButton,{className:'cr-task-showHint-disabled',icon:React.createElement(Info,null),disabled:true}))
157-
:null,
158-
React.createElement(material_ui_2.ToolbarGroup,{float:'right'},allComplete ?
159-
React.createElement(material_ui_2.RaisedButton,{label:'Continue',primary:true,onClick:this.props.callNextPage})
160-
:
161-
React.createElement(material_ui_2.RaisedButton,{label:'Run',secondary:true,onClick:this.props.callRunTests}))))));
96+
return(React.createElement(material_ui_2.Paper,{style:style,zDepth:1,className:'cr-page'},React.createElement(content_1.default,{page:page}),React.createElement(material_ui_1.Divider,null),React.createElement(material_ui_1.List,{subheader:'Tasks',className:'cr-tasks',ref:'tasks'},tasks.map(function(task,index){
97+
varisCurrentTask=index===taskPosition;
98+
varisDisabledTask=index>taskPosition;
99+
varisCompletedTask=index<taskPosition;
100+
varisFinalTask=index>=tasks.length-1;
101+
varhints=hintsShown(task,hintPosition);
102+
return(React.createElement("div",null,React.createElement(material_ui_1.ListItem,{ref:'task'+index,className:classnames({
103+
'cr-task':true,
104+
'isCompletedTask':isCompletedTask,
105+
'isCurrentTask':isCurrentTask,
106+
'isDisabledTask':isDisabledTask
107+
})},React.createElement(TaskCheckbox,{index:index,taskPosition:taskPosition,runTests:_this.props.runTests}),React.createElement("span",{className:'cr-task-index'},index+1,"."),React.createElement("div",{className:'cr-task-description'},React.createElement(_components_1.MarkdownText,{text:task.description}))),isCurrentTask&&hints ?
108+
hints.map(function(hint,indexHint){
109+
returnReact.createElement(material_ui_1.ListItem,{className:'cr-task-hint',ref:'hint'+indexHint},React.createElement("div",{class:'cr-task-hint-box'},React.createElement("span",{className:'cr-task-hint-index'},indexHint+1,"."),React.createElement("div",{className:'cr-task-hint-description'},React.createElement(_components_1.MarkdownText,{text:hint}))));
110+
})
111+
:null,isFinalTask ?null :React.createElement(material_ui_1.Divider,null)));
112+
}),page.completed&&!!page.onPageComplete ?React.createElement(material_ui_1.ListItem,{className:'cr-task-onComplete',ref:'onPageComplete'},React.createElement("div",{className:'cr-task-onComplete-description'},React.createElement(_components_1.MarkdownText,{text:page.onPageComplete}))) :null,React.createElement("div",{ref:'listEnd'})),React.createElement("section",{className:'cr-page-toolbar'},React.createElement(material_ui_2.LinearProgress,{mode:'determinate',value:taskProgress(taskPosition,tasks.length),style:{height:'6px'}}),React.createElement(material_ui_2.Toolbar,null,currentTask&&currentTask.hints&&currentTask.hints.length ?
113+
React.createElement(material_ui_2.ToolbarGroup,{float:'left'},hintPosition<=currentTask.hints.length-2 ?
114+
React.createElement(material_ui_2.FlatButton,{className:'cr-task-showHint',icon:React.createElement(InfoOutline,null),onClick:this.displayHint.bind(this,currentTask)})
115+
:React.createElement(material_ui_2.FlatButton,{className:'cr-task-showHint-disabled',icon:React.createElement(Info,null),disabled:true}))
116+
:null,React.createElement(material_ui_2.ToolbarGroup,{float:'right'},allComplete ?
117+
React.createElement(material_ui_2.RaisedButton,{label:'Continue',primary:true,onClick:this.props.callNextPage})
118+
:
119+
React.createElement(material_ui_2.RaisedButton,{label:'Run',secondary:true,onClick:this.props.callRunTests}))))));
162120
};
163121
default_1=__decorate([
164122
react_redux_1.connect(null,function(dispatch,state){
165123
return{
166124
callNextPage:function(){returndispatch(Action.nextPage());},
167125
callRunTests:function(){returndispatch(Action.runTests());},
168-
toggleLog:function(){returndispatch(Action.toggleLog());}
126+
toggleLog:function(){returndispatch(Action.toggleLog());},
127+
showHint:function(newHintPos){returndispatch(Action.setHintPosition(newHintPos));}
169128
};
170129
}),
171130
__metadata('design:paramtypes',[])

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp