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

Commit3607afb

Browse files
committed
check setup before loading tutorials
1 parent46fa72e commit3607afb

37 files changed

+680
-270
lines changed

‎lib/actions/tutorials.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function loadTutorials() {
1010
if(window.coderoad.dir){
1111
varpackageJson=loadRootPackageJson();
1212
if(!packageJson){
13-
window.coderoad.package=null;
13+
window.coderoad.setup.hasPackageJson=null;
1414
varmessage='No package.json file available. Try running "npm init --y" in terminal';
1515
console.log(message);
1616
_base_1.store.dispatch(Action.toggleAlert({message:message,action:'tip',duration:6000}));

‎lib/atom/editor.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,7 @@ exports.closeAllPanels = closeAllPanels;
8686
functionquit(){
8787
}
8888
exports.quit=quit;
89+
functionopenFolder(){
90+
atom.open();
91+
}
92+
exports.openFolder=openFolder;

‎lib/atom/main.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ var editor_1 = require('./editor');
66
varMain=(function(){
77
functionMain(){
88
window.coderoad={
9-
dir:null
9+
dir:null,
10+
setup:{}
1011
};
1112
polyfills_1.default();
1213
editor_1.setAtomGlobals();

‎lib/components/_components.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ var account_1 = require('./account/account');
1313
exports.Account=account_1.default;
1414
varprogress_1=require('./progress/progress');
1515
exports.Progress=progress_1.default;
16-
varprojects_1=require('./projects/projects');
17-
exports.Projects=projects_1.default;
16+
varstart_1=require('./start/start');
17+
exports.Start=start_1.Start;
1818
varmarkdown_1=require('./markdown/markdown');
1919
exports.MarkdownText=markdown_1.default;
2020
varalert_1=require('./alert/alert');

‎lib/components/app/router.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var default_1 = (function (_super) {
1919
case'progress':
2020
returnReact.createElement(_components_1.Progress,{progress:state.progress,position:state.position});
2121
case'projects':
22-
returnReact.createElement(_components_1.Projects,{tutorials:state.tutorials});
22+
returnReact.createElement(_components_1.Start,{tutorials:state.tutorials});
2323
default:
2424
throw'Error: Route not found.';
2525
}

‎lib/components/projects/projects.js

Lines changed: 7 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,10 @@
11
'use strict';
2-
var__extends=(this&&this.__extends)||function(d,b){
3-
for(varpinb)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-
varc=arguments.length,r=c<3 ?target :desc===null ?desc=Object.getOwnPropertyDescriptor(target,key) :desc,d;
9-
if(typeofReflect==="object"&&typeofReflect.decorate==="function")r=Reflect.decorate(decorators,target,key,desc);
10-
elsefor(vari=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-
returnc>3&&r&&Object.defineProperty(target,key,r),r;
12-
};
13-
var__metadata=(this&&this.__metadata)||function(k,v){
14-
if(typeofReflect==="object"&&typeofReflect.metadata==="function")returnReflect.metadata(k,v);
15-
};
162
varReact=require('react');
17-
varreact_redux_1=require('react-redux');
18-
varAction=require('../../actions/actions');
193
varmaterial_ui_1=require('material-ui');
20-
varProjects=(function(_super){
21-
__extends(Projects,_super);
22-
functionProjects(){
23-
_super.apply(this,arguments);
24-
}
25-
Projects.prototype.load=function(){
26-
this.props.loadTutorials();
27-
};
28-
Projects.prototype.trim=function(name){
29-
if(name.match(/^coderoad-tutorial-/)){
30-
returnname.slice(18);
31-
}
32-
if(name.match(/^coderoad-/)){
33-
returnname.slice(9);
34-
}
35-
returnname;
36-
};
37-
Projects.prototype.render=function(){
38-
var_this=this;
39-
return(React.createElement(material_ui_1.Paper,{className:'cr-projects'},React.createElement("div",{className:'cr-projects-header'},React.createElement("span",{className:'title'},"CodeRoad"),React.createElement("p",{className:'tagline'},"Tutorials in the Editor"),React.createElement("div",{className:'cr-tutorials'},React.createElement(material_ui_1.List,{subheader:'Tutorials'},window.coderoad.dir ?null :React.createElement(material_ui_1.ListItem,{key:'open',primaryText:'Create an Atom Project',secondaryText:'File > Open > any older'}),this.props.tutorials.length>0 ?
40-
this.props.tutorials.map(function(tutorial,index){
41-
return(React.createElement(material_ui_1.ListItem,{key:index,primaryText:_this.trim(tutorial),onClick:_this.props.selectProject.bind(_this,tutorial)}));
42-
}) :React.createElement(material_ui_1.ListItem,{key:'demo',primaryText:'Try a Demo',secondaryText:'npm i -s coderoad-functional-school'})),React.createElement("br",null),React.createElement(material_ui_1.RaisedButton,{label:'Load Tutorials',secondary:true,onClick:this.load.bind(this)})),React.createElement("p",{className:'notes'},"Beta"))));
43-
};
44-
Projects=__decorate([
45-
react_redux_1.connect(null,function(dispatch){
46-
return{
47-
selectProject:function(name){
48-
Action.loadTutorial(name);
49-
dispatch(Action.setRoute('progress'));
50-
},
51-
toggleAlert:function(item){
52-
dispatch(Action.toggleAlert(item));
53-
},
54-
loadTutorials:function(){
55-
dispatch(Action.loadTutorials());
56-
}
57-
};
58-
}),
59-
__metadata('design:paramtypes',[])
60-
],Projects);
61-
returnProjects;
62-
}(React.Component));
63-
Object.defineProperty(exports,"__esModule",{value:true});
64-
exports.default=Projects;
65-
;
4+
varsetup_1=require('./setup');
5+
vartutorials_1=require('./tutorials');
6+
exports.Project=function(_a){
7+
vartutorials=_a.tutorials;
8+
return(React.createElement(material_ui_1.Paper,{className:'cr-projects'},React.createElement("div",{className:'cr-projects-header'},React.createElement("span",{className:'title'},"CodeRoad"),React.createElement("p",{className:'tagline'},"Tutorials in the Editor"),window.coderoad.dir&&window.coderoad.setup.hasPackageJson&&tutorials.length>0 ?
9+
React.createElement(tutorials_1.default,{tutorials:tutorials}) :React.createElement(setup_1.SetupGuide,null),React.createElement("p",{className:'notes'},"Beta"))));
10+
};

‎lib/components/projects/setup.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"use strict";
2+
var_this=this;
3+
varReact=require('react');
4+
varmaterial_ui_1=require('material-ui');
5+
var_components_1=require('../_components');
6+
varstart_1=require('../../services/start');
7+
vareditor_1=require('../../atom/editor');
8+
exports.SetupGuide=function(){
9+
varwarnings=[];
10+
if(!window.coderoad.dir){
11+
warnings.push({
12+
key:'noProject',
13+
title:'Create an Atom Project',
14+
click:editor_1.openFolder,
15+
text:'File > Open > a workspace folder'
16+
});
17+
}
18+
if(!window.coderoad.setup.hasPackageJson){
19+
warnings.push({
20+
key:'noPackageJson',
21+
title:'Create a `package.json` file',
22+
click:start_1.createPackageJson,
23+
text:'`npm init`'
24+
});
25+
}
26+
if(_this.props.tutorials.length<1){
27+
warnings.push({
28+
key:'noTutorial',
29+
title:'Install a Tutorial',
30+
click:null,
31+
text:'`npm i --save coderoad-functional-school`'
32+
});
33+
}
34+
return(React.createElement("div",{className:'setup'},React.createElement(material_ui_1.List,{subheader:'Setup'},warnings.map(function(w){returnReact.createElement(material_ui_1.ListItem,{key:w.key,primaryText:w.title,onClick:w.click},React.createElement(_components_1.MarkdownText,{text:w.text}));}))));
35+
};

‎lib/components/projects/start.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+
varsetup_1=require('./setup');
5+
vartutorials_1=require('./tutorials');
6+
exports.Project=function(_a){
7+
vartutorials=_a.tutorials;
8+
return(React.createElement(material_ui_1.Paper,{className:'cr-projects'},React.createElement("div",{className:'cr-projects-header'},React.createElement("span",{className:'title'},"CodeRoad"),React.createElement("p",{className:'tagline'},"Tutorials in the Editor"),window.coderoad.dir&&window.coderoad.setup.hasPackageJson&&tutorials.length>0 ?
9+
React.createElement(tutorials_1.default,{tutorials:tutorials}) :React.createElement(setup_1.SetupGuide,null),React.createElement("p",{className:'notes'},"Beta"))));
10+
};

‎lib/components/projects/tutorials.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"use strict";
2+
var__extends=(this&&this.__extends)||function(d,b){
3+
for(varpinb)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+
varc=arguments.length,r=c<3 ?target :desc===null ?desc=Object.getOwnPropertyDescriptor(target,key) :desc,d;
9+
if(typeofReflect==="object"&&typeofReflect.decorate==="function")r=Reflect.decorate(decorators,target,key,desc);
10+
elsefor(vari=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+
returnc>3&&r&&Object.defineProperty(target,key,r),r;
12+
};
13+
var__metadata=(this&&this.__metadata)||function(k,v){
14+
if(typeofReflect==="object"&&typeofReflect.metadata==="function")returnReflect.metadata(k,v);
15+
};
16+
varReact=require('react');
17+
varmaterial_ui_1=require('material-ui');
18+
varreact_redux_1=require('react-redux');
19+
varAction=require('../../actions/actions');
20+
vardefault_1=(function(_super){
21+
__extends(default_1,_super);
22+
functiondefault_1(){
23+
_super.apply(this,arguments);
24+
}
25+
default_1.prototype.trim=function(name){
26+
if(name.match(/^coderoad-tutorial-/)){
27+
returnname.slice(18);
28+
}
29+
if(name.match(/^coderoad-/)){
30+
returnname.slice(9);
31+
}
32+
returnname;
33+
};
34+
default_1.prototype.render=function(){
35+
var_this=this;
36+
var_a=this.props,loadTutorials=_a.loadTutorials,selectProject=_a.selectProject,toggleAlert=_a.toggleAlert;
37+
return(React.createElement("div",{className:'cr-tutorials'},React.createElement(material_ui_1.List,{subheader:'Tutorials'},this.props.tutorials.map(function(tutorial,index){
38+
return(React.createElement(material_ui_1.ListItem,{key:index,primaryText:_this.trim(tutorial),onClick:selectProject.bind(_this,tutorial)}));
39+
})),React.createElement("br",null),React.createElement(material_ui_1.RaisedButton,{label:'Load Tutorials',secondary:true,onTouchTap:loadTutorials})));
40+
};
41+
default_1=__decorate([
42+
react_redux_1.connect(null,function(dispatch){
43+
return{
44+
selectProject:function(name){
45+
Action.loadTutorial(name);
46+
dispatch(Action.setRoute('progress'));
47+
},
48+
toggleAlert:function(item){
49+
dispatch(Action.toggleAlert(item));
50+
},
51+
loadTutorials:function(){
52+
dispatch(Action.loadTutorials());
53+
}
54+
};
55+
}),
56+
__metadata('design:paramtypes',[])
57+
],default_1);
58+
returndefault_1;
59+
}(React.Component));
60+
Object.defineProperty(exports,"__esModule",{value:true});
61+
exports.default=default_1;

‎lib/components/start/setup.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"use strict";
2+
varReact=require('react');
3+
varmaterial_ui_1=require('material-ui');
4+
var_components_1=require('../_components');
5+
varstart_1=require('../../services/start');
6+
vareditor_1=require('../../atom/editor');
7+
exports.SetupGuide=function(_a){
8+
vartutorials=_a.tutorials;
9+
varwarnings=[];
10+
if(!window.coderoad.dir){
11+
warnings.push({
12+
key:'noProject',
13+
title:'Create an Atom Project',
14+
click:editor_1.openFolder,
15+
text:'File > Open > a workspace folder'
16+
});
17+
}
18+
if(!window.coderoad.setup.hasPackageJson){
19+
warnings.push({
20+
key:'noPackageJson',
21+
title:'Create a `package.json` file',
22+
click:start_1.createPackageJson,
23+
text:'`npm init`'
24+
});
25+
}
26+
if(tutorials.length<1){
27+
warnings.push({
28+
key:'noTutorial',
29+
title:'Install a Tutorial',
30+
click:null,
31+
text:'`npm i --save coderoad-functional-school`'
32+
});
33+
}
34+
return(React.createElement("div",{className:'setup'},React.createElement(material_ui_1.List,{subheader:'Setup'},warnings.map(function(w){returnReact.createElement(material_ui_1.ListItem,{key:w.key,primaryText:w.title,onClick:w.click},React.createElement(_components_1.MarkdownText,{text:w.text}));}))));
35+
};

‎lib/components/start/start.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+
varsetup_1=require('./setup');
5+
vartutorials_1=require('./tutorials');
6+
exports.Start=function(_a){
7+
vartutorials=_a.tutorials;
8+
return(React.createElement(material_ui_1.Paper,{className:'cr-projects'},React.createElement("div",{className:'cr-projects-header'},React.createElement("span",{className:'title'},"CodeRoad"),React.createElement("p",{className:'tagline'},"Tutorials in the Editor"),window.coderoad.dir&&window.coderoad.setup.hasPackageJson&&tutorials.length>0 ?
9+
React.createElement(tutorials_1.default,{tutorials:tutorials}) :React.createElement(setup_1.SetupGuide,{tutorials:tutorials}),React.createElement("p",{className:'notes'},"Beta"))));
10+
};

‎lib/components/start/tutorials.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"use strict";
2+
var__extends=(this&&this.__extends)||function(d,b){
3+
for(varpinb)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+
varc=arguments.length,r=c<3 ?target :desc===null ?desc=Object.getOwnPropertyDescriptor(target,key) :desc,d;
9+
if(typeofReflect==="object"&&typeofReflect.decorate==="function")r=Reflect.decorate(decorators,target,key,desc);
10+
elsefor(vari=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+
returnc>3&&r&&Object.defineProperty(target,key,r),r;
12+
};
13+
var__metadata=(this&&this.__metadata)||function(k,v){
14+
if(typeofReflect==="object"&&typeofReflect.metadata==="function")returnReflect.metadata(k,v);
15+
};
16+
varReact=require('react');
17+
varmaterial_ui_1=require('material-ui');
18+
varreact_redux_1=require('react-redux');
19+
varAction=require('../../actions/actions');
20+
vardefault_1=(function(_super){
21+
__extends(default_1,_super);
22+
functiondefault_1(){
23+
_super.apply(this,arguments);
24+
}
25+
default_1.prototype.trim=function(name){
26+
if(name.match(/^coderoad-tutorial-/)){
27+
returnname.slice(18);
28+
}
29+
if(name.match(/^coderoad-/)){
30+
returnname.slice(9);
31+
}
32+
returnname;
33+
};
34+
default_1.prototype.render=function(){
35+
var_this=this;
36+
var_a=this.props,tutorials=_a.tutorials,loadTutorials=_a.loadTutorials,selectProject=_a.selectProject,toggleAlert=_a.toggleAlert;
37+
return(React.createElement("div",{className:'cr-tutorials'},React.createElement(material_ui_1.List,{subheader:'Tutorials'},tutorials.map(function(tutorial,index){
38+
return(React.createElement(material_ui_1.ListItem,{key:index,primaryText:_this.trim(tutorial),onClick:selectProject.bind(_this,tutorial)}));
39+
})),React.createElement("br",null),React.createElement(material_ui_1.RaisedButton,{label:'Load Tutorials',secondary:true,onTouchTap:loadTutorials})));
40+
};
41+
default_1=__decorate([
42+
react_redux_1.connect(null,function(dispatch){
43+
return{
44+
selectProject:function(name){
45+
Action.loadTutorial(name);
46+
dispatch(Action.setRoute('progress'));
47+
},
48+
toggleAlert:function(item){
49+
dispatch(Action.toggleAlert(item));
50+
},
51+
loadTutorials:function(){
52+
dispatch(Action.loadTutorials());
53+
}
54+
};
55+
}),
56+
__metadata('design:paramtypes',[])
57+
],default_1);
58+
returndefault_1;
59+
}(React.Component));
60+
Object.defineProperty(exports,"__esModule",{value:true});
61+
exports.default=default_1;

‎lib/reducers/editor-actions/actions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,7 @@ function editorActions(actionString) {
100100
});
101101
}
102102
exports.editorActions=editorActions;
103+
functionopenFolder(){
104+
atom.open();
105+
}
106+
exports.openFolder=openFolder;

‎lib/services/setGlobals.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function loadRunnerDep(config) {
2626
runnerRoot=treeDep;
2727
}
2828
else{
29-
varmessage="Error loading test runner. Post an issue.";
29+
varmessage='Error loading test runner. Post an issue.';
3030
console.log(message);
3131
throwmessage;
3232
}

‎lib/services/start.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"use strict";
2+
varexists_1=require('./exists');
3+
varpath=require('path');
4+
vareditor_1=require('../atom/editor');
5+
varpackageData="{\n\"name\": \"demo\",\n\"dependencies\": {\n \"coderoad-functional-school\": \"^0.1.9\"\n }\n}";
6+
functioncreatePackageJson(){
7+
varpackagePath=path.join(window.coderoad.dir,'package.json');
8+
returnnewPromise(function(resolve,reject){
9+
editor_1.open(packagePath);
10+
setTimeout(function(){
11+
resolve();
12+
});
13+
}).then(function(){
14+
editor_1.set(packageData);
15+
window.coderoad.setup.hasPackageJson=true;
16+
});
17+
}
18+
exports.createPackageJson=createPackageJson;
19+
functioncheckSetup(){
20+
varpackagePath=path.join(window.coderoad.dir,'package.json');
21+
if(exists_1.fileExists(packagePath)){
22+
window.coderoad.setup.hasPackageJson=true;
23+
}
24+
}

‎src/actions/tutorials.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export function loadTutorials(): CR.Action {
1010
if(window.coderoad.dir){
1111
letpackageJson:PackageJson=loadRootPackageJson();
1212
if(!packageJson){
13-
window.coderoad.package=null;
13+
window.coderoad.setup.hasPackageJson=null;
1414
letmessage='No package.json file available. Try running "npm init --y" in terminal';
1515
console.log(message);
1616
store.dispatch(Action.toggleAlert({ message,action:'tip',duration:6000}));

‎src/atom/editor.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,7 @@ export function closeAllPanels() {
9898
exportfunctionquit(){
9999
// TODO: quit without destroying ALL subscriptions
100100
}
101+
102+
exportfunctionopenFolder(){
103+
atom.open();
104+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp