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

Commit263ac61

Browse files
committed
attach hints to bottom
1 parent49d5e4b commit263ac61

File tree

16 files changed

+157
-26
lines changed

16 files changed

+157
-26
lines changed

‎lib/components/page/page.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var tasks_1 = require('./tasks/tasks');
1313
varhints_1=require('./hints/hints');
1414
varpage_complete_1=require('./complete/page-complete');
1515
vartoolbar_1=require('./toolbar/toolbar');
16+
varprogress_bar_1=require('./progress-bar');
1617
varpageStyle={
1718
height:'100%',
1819
width:'100%'
@@ -29,7 +30,7 @@ var Page = (function (_super) {
2930
var_a=this.props,page=_a.page,taskPosition=_a.taskPosition,hintPosition=_a.hintPosition,tasks=_a.tasks,testRun=_a.testRun;
3031
varcurrentTask=taskPosition<=tasks.length ?tasks[taskPosition] :null;
3132
varallComplete=taskPosition>=tasks.length;
32-
return(React.createElement(Paper_1.default,{style:pageStyle,zDepth:1,className:'cr-page',ref:'page'},React.createElement(content_1.PageContent,{page:page}),React.createElement(Divider_1.default,null),React.createElement(tasks_1.Tasks,{tasks:tasks,taskPosition:taskPosition,testRun:testRun}),React.createElement("div",{className:'listEnd',ref:'listEnd'}),React.createElement(hints_1.Hints,{task:currentTask,hintPosition:hintPosition}),React.createElement(page_complete_1.PageCompleteMessage,{page:page}),React.createElement(toolbar_1.PageToolbar,{tasks:tasks,taskPosition:taskPosition})));
33+
return(React.createElement(Paper_1.default,{style:pageStyle,zDepth:1,className:'cr-page',ref:'page'},React.createElement(content_1.PageContent,{page:page}),React.createElement(Divider_1.default,null),React.createElement(tasks_1.Tasks,{tasks:tasks,taskPosition:taskPosition,testRun:testRun}),React.createElement("div",{className:'listEnd',ref:'listEnd'}),React.createElement(page_complete_1.PageCompleteMessage,{page:page}),React.createElement(hints_1.Hints,{task:currentTask,hintPosition:hintPosition}),React.createElement(toolbar_1.PageToolbar,{tasks:tasks,taskPosition:taskPosition},React.createElement(progress_bar_1.ProgressBar,{taskPosition:taskPosition,taskCount:tasks.length}))));
3334
};
3435
returnPage;
3536
}(React.Component));

‎lib/components/page/progress-bar.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
"use strict";
2+
varReact=require('react');
3+
varLinearProgress_1=require('material-ui/LinearProgress');
4+
exports.ProgressBar=function(_a){
5+
vartaskPosition=_a.taskPosition,taskCount=_a.taskCount;
6+
varprogress=(taskPosition/taskCount)*100;
7+
returnReact.createElement(LinearProgress_1.default,{mode:'determinate',value:progress,style:{height:'10px'}});
8+
};
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
"use strict";
22
varReact=require('react');
33
varToolbar_1=require('material-ui/Toolbar');
4-
varprogress_bar_1=require('./progress-bar');
54
varbuttons_1=require('./buttons');
65
exports.PageToolbar=function(_a){
7-
vartasks=_a.tasks,taskPosition=_a.taskPosition;
8-
return(React.createElement("section",{className:'cr-page-toolbar'},React.createElement(progress_bar_1.ProgressBar,{taskPosition:taskPosition,taskCount:tasks.length}),React.createElement(Toolbar_1.Toolbar,null,React.createElement(Toolbar_1.ToolbarGroup,{float:'left'},React.createElement(buttons_1.ToggleLog,null)),React.createElement(Toolbar_1.ToolbarGroup,{float:'right'},taskPosition>=tasks.length ?
6+
vartasks=_a.tasks,taskPosition=_a.taskPosition,children=_a.children;
7+
return(React.createElement("section",{className:'cr-page-toolbar'},children,React.createElement(Toolbar_1.Toolbar,null,React.createElement(Toolbar_1.ToolbarGroup,{float:'left'},React.createElement(buttons_1.ToggleLog,null)),React.createElement(Toolbar_1.ToolbarGroup,{float:'right'},taskPosition>=tasks.length ?
98
React.createElement(buttons_1.Continue,null) :React.createElement(buttons_1.Save,null)))));
109
};

‎lib/reducers/reducer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var task_position_1 = require('./task-position/task-position');
1010
varhint_position_1=require('./hint-position/hint-position');
1111
vartask_tests_1=require('./task-tests/task-tests');
1212
varalert_1=require('./alert/alert');
13-
varrun_tests_1=require('./run-tests/run-tests');
13+
vartest_run_1=require('./test-run/test-run');
1414
vareditor_actions_1=require('./editor-actions/editor-actions');
1515
vartutorials_1=require('./tutorials/tutorials');
1616
varlog_1=require('./log/log');
@@ -20,6 +20,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
2020
exports.default=redux_1.combineReducers({
2121
globals:globals_1.default,tutorialInfo:tutorial_info_1.default,route:route_1.default,progress:progress_1.default,position:position_1.default,
2222
page:page_1.default,tasks:tasks_1.default,taskPosition:task_position_1.default,hintPosition:hint_position_1.default,
23-
taskTests:task_tests_1.default,alert:alert_1.default,testRun:run_tests_1.default,editorActions:editor_actions_1.default,
23+
taskTests:task_tests_1.default,alert:alert_1.default,testRun:test_run_1.default,editorActions:editor_actions_1.default,
2424
tutorials:tutorials_1.default,log:log_1.default,checks:checks_1.default
2525
});
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"use strict";
2+
varpath_1=require('path');
3+
varfs_1=require('fs');
4+
varcomments={
5+
py:'#'
6+
};
7+
functionloaderRegex(fileType){
8+
varcomment='\/{2,3}';
9+
if(comments[fileType]){
10+
comment=comments[fileType];
11+
}
12+
returnnewRegExp("^"+comment+" ?load\\(['\"](.+)['\"](, ?true)?\\)",'m');
13+
}
14+
functionparseLoaders(data,fileType){
15+
vari=-1;
16+
varlines=data.split('\n');
17+
varfilesLoaded=[];
18+
varloaderMatch=loaderRegex(fileType);
19+
while(i<lines.length-1){
20+
i+=1;
21+
varloader=lines[i].match(loaderMatch);
22+
if(loader){
23+
varfileToLoad=loader[1];
24+
if(filesLoaded.indexOf(fileToLoad)>-1){
25+
console.log("\""+fileToLoad+"\" already loaded.");
26+
continue;
27+
}
28+
varpathToFile=null;
29+
if(loader[2]){
30+
pathToFile=path_1.normalize(path_1.join(window.coderoad.tutorialDir,fileToLoad));
31+
}
32+
else{
33+
pathToFile=path_1.normalize(path_1.join(window.coderoad.dir,fileToLoad));
34+
}
35+
try{
36+
lines[i]=fs_1.readFileSync(pathToFile,'utf8');
37+
}
38+
catch(e){
39+
varmessage='File not found: '+pathToFile;
40+
lines[i]=message;
41+
console.log(message);
42+
}
43+
}
44+
}
45+
returnlines.join('\n');
46+
}
47+
Object.defineProperty(exports,"__esModule",{value:true});
48+
exports.default=parseLoaders;

‎lib/reducers/test-run/run.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
vartest_result_1=require('./test-result');
3+
varstore_1=require('../../store/store');
4+
varfs_1=require('fs');
5+
varpath_1=require('path');
6+
varparse_loaders_1=require('./parse-loaders');
7+
functionrunTaskTests(setup){
8+
vartests=store_1.store.getState().taskTests;
9+
if(tests&&tests.length){
10+
varconfig=window.coderoad;
11+
config.taskPosition=store_1.store.getState().taskPosition;
12+
varoutput=parse_loaders_1.default(tests,window.coderoad.suffix);
13+
vartarget=path_1.join(window.coderoad.tutorialDir||window.coderoad.dir,"_tmp."+window.coderoad.suffix);
14+
fs_1.writeFileSync(target,output,'utf8');
15+
window.coderoad.runner(target,config,test_result_1.handleResult);
16+
}
17+
returntrue;
18+
}
19+
exports.runTaskTests=runTaskTests;

‎lib/reducers/test-run/test-result.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
varstore_1=require('../../store/store');
3+
var_actions_1=require('../../actions/_actions');
4+
functionhandleResult(result){
5+
store_1.store.dispatch(_actions_1.testComplete());
6+
if(result.completed){
7+
store_1.store.dispatch(_actions_1.testResult(result));
8+
store_1.store.dispatch(_actions_1.completePage());
9+
}
10+
elseif(!result.pass){
11+
store_1.store.dispatch(_actions_1.testResult(result));
12+
}
13+
elseif(result.pass){
14+
result.msg="Task "+result.taskPosition+" Complete";
15+
store_1.store.dispatch(_actions_1.testResult(result));
16+
}
17+
}
18+
exports.handleResult=handleResult;
19+
;

‎lib/reducers/test-run/test-run.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
var_types_1=require('../../actions/_types');
3+
varrun_1=require('./run');
4+
varpageTimeout=2000;
5+
varprevious=newDate().getTime();
6+
functionrunTestReducer(testRun,action){
7+
if(testRun===void0){testRun=false;}
8+
switch(action.type){
9+
case_types_1.TEST_RUN:
10+
varcurrent=newDate().getTime();
11+
if(current-previous>pageTimeout){
12+
previous=current;
13+
returnrun_1.runTaskTests();
14+
}
15+
returnfalse;
16+
case_types_1.TEST_COMPLETE:
17+
returnfalse;
18+
case_types_1.PAGE_SET:
19+
previous=newDate().getTime();
20+
returnfalse;
21+
default:
22+
returntestRun;
23+
}
24+
}
25+
Object.defineProperty(exports,"__esModule",{value:true});
26+
exports.default=runTestReducer;

‎src/components/page/_page.less

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
@import'tasks/_tasks';
22
@import'chapter/_chapter';
3+
@import'toolbar/_toolbar';
4+
@import'complete/_page-complete';
5+
@import'hints/_hints';
36

47
.cr-page {
58
position:relative;
69
overflow-y:scroll;
7-
&-listEnd {
8-
9-
}
10-
&-onComplete {
11-
margin-bottom:70px;
12-
}
13-
&-toolbar {
14-
position:fixed;
15-
bottom:0;
16-
right:0;
17-
height:60px;
18-
width:400px;
19-
}
2010
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.cr-page-onComplete {
2+
margin-bottom:70px;
3+
}

‎src/components/page/hints/_hints.less

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.cr-task-hints {
2+
position:fixed;
3+
bottom:60px;
4+
right:0;
5+
margin:0;
6+
width:400px;
7+
text-align:center;
8+
}

‎src/components/page/page.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {Tasks} from './tasks/tasks';
77
import{Hints}from'./hints/hints';
88
import{PageCompleteMessage}from'./complete/page-complete';
99
import{PageToolbar}from'./toolbar/toolbar';
10+
import{ProgressBar}from'./progress-bar';
1011

1112
constpageStyle={
1213
height:'100%',
@@ -38,9 +39,11 @@ render() {
3839

3940
<Taskstasks={tasks}taskPosition={taskPosition}testRun={testRun}/>
4041
<divclassName='listEnd'ref='listEnd'></div>
41-
<Hintstask={currentTask}hintPosition={hintPosition}/>
4242
<PageCompleteMessagepage={page}/>
43-
<PageToolbartasks={tasks}taskPosition={taskPosition}/>
43+
<Hintstask={currentTask}hintPosition={hintPosition}/>
44+
<PageToolbartasks={tasks}taskPosition={taskPosition}>
45+
<ProgressBartaskPosition={taskPosition}taskCount={tasks.length}/>
46+
</PageToolbar>
4447
</Paper>
4548
);
4649
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.cr-page-toolbar {
2+
position:fixed;
3+
bottom:0;
4+
right:0;
5+
height:60px;
6+
width:400px;
7+
}

‎src/components/page/toolbar/toolbar.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import*asReactfrom'react';
22
import{Toolbar,ToolbarGroup}from'material-ui/Toolbar';
3-
import{ProgressBar}from'./progress-bar';
43
import{ToggleLog,Save,Continue}from'./buttons';
54

65
exportconstPageToolbar:React.StatelessComponent<{
7-
tasks:CR.Task[],taskPosition:number
8-
}>=({tasks, taskPosition})=>(
6+
tasks:CR.Task[],taskPosition:number,children?:any
7+
}>=({tasks, taskPosition, children})=>(
98
<sectionclassName='cr-page-toolbar'>
10-
<ProgressBartaskPosition={taskPosition}taskCount={tasks.length}/>
9+
10+
{children}
1111

1212
<Toolbar>
1313
<ToolbarGroupfloat='left'>

‎tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@
114114
"src/components/page/hints/buttons.tsx",
115115
"src/components/page/hints/hints.tsx",
116116
"src/components/page/page.tsx",
117+
"src/components/page/progress-bar.tsx",
117118
"src/components/page/tasks/tasks.tsx",
118119
"src/components/page/toolbar/buttons.tsx",
119-
"src/components/page/toolbar/progress-bar.tsx",
120120
"src/components/page/toolbar/toolbar.tsx",
121121
"src/components/progress/progress.tsx",
122122
"src/components/render.tsx",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp