Skip to content

Commit d3f666c

Browse files
committed
setup actions
1 parent f5fcfa6 commit d3f666c

File tree

12 files changed

+111
-80
lines changed

12 files changed

+111
-80
lines changed

lib/components/checks/checks.js

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
1616
var React = require('react');
1717
var paper_1 = require('material-ui/lib/paper');
1818
var raised_button_1 = require('material-ui/lib/raised-button');
19-
var dynamic_stepper_1 = require('./dynamic-stepper');
19+
var setup_checker_1 = require('./setup-checker');
2020
var VerticalStep_1 = require('material-ui/lib/Stepper/VerticalStep');
2121
var flat_button_1 = require('material-ui/lib/flat-button');
22+
var setup_actions_1 = require('../../reducers/checks/setup-actions');
2223
var react_redux_1 = require('react-redux');
2324
var store_1 = require('../../store/store');
2425
var Action = require('../../actions/actions');
@@ -27,31 +28,38 @@ var Checks = (function (_super) {
2728
function Checks() {
2829
_super.apply(this, arguments);
2930
}
31+
Checks.prototype.getSystemChecks = function (checks) {
32+
var system = checks.system;
33+
return [system.node, system.npm];
34+
};
35+
Checks.prototype.getSetupChecks = function (checks) {
36+
var setup = checks.setup;
37+
return [setup.dir, setup.packageJson, setup.tutorial];
38+
};
3039
Checks.prototype.render = function () {
31-
var _a = this.props, checks = _a.checks, routeToTutorials = _a.routeToTutorials;
32-
return React.createElement(paper_1.default, {className: 'cr-start'}, React.createElement("div", {className: 'cr-start-header'}, React.createElement("span", {className: 'title'}, "CodeRoad"), React.createElement("p", {className: 'tagline'}, "Tutorials in the Editor"), React.createElement("p", {className: 'version'}, "Beta"), checks.system.passed ? null : React.createElement(dynamic_stepper_1.default, {title: 'Dependency Checks'}, React.createElement(VerticalStep_1.default, {orderStepLabel: '1', stepLabel: 'Node >= 0.10', actions: [
33-
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: function () { return; }}),
34-
React.createElement(flat_button_1.default, {key: 1, label: 'Cancel'})
40+
var _a = this.props, checks = _a.checks, routeToTutorials = _a.routeToTutorials, verify = _a.verify;
41+
return React.createElement(paper_1.default, {className: 'cr-start'}, React.createElement("div", {className: 'cr-start-header'}, React.createElement("p", {className: 'tagline'}, "Setup"), checks.system.passed ? null : React.createElement(setup_checker_1.default, {title: 'Dependency Checks', status: this.getSystemChecks(checks)}, React.createElement(VerticalStep_1.default, {orderStepLabel: '1', stepLabel: 'Node >= 0.10', actions: [
42+
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: verify})
3543
]}, React.createElement("div", null, "Install a newer version of ", React.createElement("a", {href: 'https://nodejs.org'}, "Node"))), React.createElement(VerticalStep_1.default, {orderStepLabel: '2', stepLabel: 'NPM >= 3', actions: [
36-
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: function () { return; }}),
37-
React.createElement(flat_button_1.default, {key: 1, label: 'Cancel'})
38-
]}, React.createElement("div", null, "Update your version of NPM.", React.createElement("br", null), "`> npm update -g npm`"))), checks.setup.passed ? null : React.createElement(dynamic_stepper_1.default, {title: 'Setup Checks'}, React.createElement(VerticalStep_1.default, {orderStepLabel: '1', stepLabel: 'working directory', actions: [
39-
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: function () { return; }}),
40-
React.createElement(flat_button_1.default, {key: 1, label: 'Cancel'})
44+
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: verify})
45+
]}, React.createElement("div", null, "Update your version of NPM.", React.createElement("br", null), "`> npm update -g npm`"))), checks.setup.passed ? null : React.createElement(setup_checker_1.default, {title: 'Setup Checks', status: this.getSetupChecks(checks)}, React.createElement(VerticalStep_1.default, {orderStepLabel: '1', stepLabel: 'working directory', actions: [
46+
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: verify}),
47+
React.createElement(flat_button_1.default, {key: 1, secondary: true, label: 'Do it for me', onTouchTap: setup_actions_1.openDirectory})
4148
]}, React.createElement("div", null, "File -> Open (a new folder)")), React.createElement(VerticalStep_1.default, {orderStepLabel: '2', stepLabel: 'package.json', actions: [
42-
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: function () { return; }}),
43-
React.createElement(flat_button_1.default, {key: 1, label: 'Cancel'})
49+
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: verify}),
50+
React.createElement(flat_button_1.default, {key: 1, secondary: true, label: 'Do it for me', onTouchTap: setup_actions_1.createPackageJson})
4451
]}, React.createElement("div", null, "Create a package.json by running", React.createElement("br", null), "`> npm init -y`")), React.createElement(VerticalStep_1.default, {orderStepLabel: '3', stepLabel: 'install tutorial', actions: [
45-
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: function () { return; }}),
46-
React.createElement(flat_button_1.default, {key: 1, label: 'Cancel'})
52+
React.createElement(raised_button_1.default, {key: 0, primary: true, label: 'Verify', onTouchTap: verify}),
53+
React.createElement(flat_button_1.default, {key: 1, secondary: true, label: 'Do it for me', onTouchTap: setup_actions_1.installTutorial})
4754
]}, React.createElement("div", null, "Install a tutorial using npm. For example:", React.createElement("br", null), "`> npm install coderoad-functional-school --save-dev`"))), checks.passed
4855
? React.createElement(flat_button_1.default, {label: 'Begin', primary: true, onTouchTap: routeToTutorials})
49-
: React.createElement("div", {className: 'setup-guide'}, React.createElement("span", null, "Check the", React.createElement("a", {href: 'https://coderoad.github.io/docs#install'}, " ", React.createElement("strong", null, "Install Guide"))))));
56+
: React.createElement("div", {className: 'setup-guide'}, React.createElement("span", null, "Check the", React.createElement("a", {href: 'https://coderoad.github.io/docs#install'}, " ", React.createElement("strong", null, "Install Guide"))))), React.createElement("p", {className: 'version'}, "Beta"));
5057
};
5158
Checks = __decorate([
5259
react_redux_1.connect(null, function (dispatch) {
5360
return {
54-
routeToTutorials: function () { return store_1.store.dispatch(Action.setRoute('tutorials')); }
61+
routeToTutorials: function () { return store_1.store.dispatch(Action.setRoute('tutorials')); },
62+
verify: function () { return store_1.store.dispatch(Action.verifySetup()); }
5563
};
5664
}),
5765
__metadata('design:paramtypes', [])

lib/components/checks/dynamic-stepper.js renamed to lib/components/checks/setup-checker.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ var __extends = (this && this.__extends) || function (d, b) {
77
var React = require('react');
88
var Stepper_1 = require('material-ui/lib/Stepper/Stepper');
99
var font_icon_1 = require('material-ui/lib/font-icon');
10-
var initState = {
11-
activeStep: -1,
12-
statusSteps: []
13-
};
1410
var styles = {
1511
header: {
1612
textAlign: 'center',
@@ -23,9 +19,13 @@ var styles = {
2319
};
2420
var default_1 = (function (_super) {
2521
__extends(default_1, _super);
26-
function default_1() {
27-
_super.call(this);
28-
this.state = initState;
22+
function default_1(props) {
23+
_super.call(this, props);
24+
var statusSteps = this.props.status;
25+
this.state = {
26+
activeStep: statusSteps.indexOf(false) || -1,
27+
statusSteps: statusSteps
28+
};
2929
}
3030
default_1.prototype.selectStep = function (CurrentStep) {
3131
this.setState({

lib/reducers/checks/checks.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var Type = require('../../actions/actionTypes');
3-
var setup_1 = require('./setup');
3+
var verify_1 = require('./verify');
44
var defaultChecks = {
55
passed: false,
66
system: {
@@ -17,7 +17,7 @@ function checksReducer(checks, action) {
1717
if (checks === void 0) { checks = defaultChecks; }
1818
switch (action.type) {
1919
case Type.VERIFY_SETUP:
20-
return setup_1.default();
20+
return verify_1.default();
2121
default:
2222
return checks;
2323
}

lib/reducers/checks/verify.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"use strict";
2+
var check_system_1 = require('./check-system');
3+
var check_setup_1 = require('./check-setup');
4+
function allTrue(obj) {
5+
return Object.values(obj).every(function (x) { return x === true; });
6+
}
7+
function result(x) {
8+
return x;
9+
}
10+
function verifySetup() {
11+
var checks = {
12+
system: {
13+
node: false,
14+
npm: !!check_system_1.npmVersionThreeOrLater()
15+
},
16+
setup: {
17+
dir: !!check_setup_1.hasDirectory(),
18+
packageJson: !!check_setup_1.hasPackageJson(),
19+
tutorial: !!check_setup_1.hasTutorialDep()
20+
}
21+
};
22+
checks.system.passed = allTrue(checks.system);
23+
checks.setup.passed = allTrue(checks.setup);
24+
checks.passed = checks.system.passed && checks.setup.passed;
25+
return checks;
26+
}
27+
Object.defineProperty(exports, "__esModule", { value: true });
28+
exports.default = verifySetup;

lib/reducers/tutorials/check-tutorials.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ var fs = require('fs');
44
var exists_1 = require('../../services/exists');
55
var tutorialError = 'This is an error with the tutorial itself';
66
function packageJsonExists() {
7-
console.log('packageJsonExists?');
87
var pathToPackageJson = path.join(window.coderoad.dir, 'package.json');
98
return exists_1.fileExists(pathToPackageJson);
109
}
1110
exports.packageJsonExists = packageJsonExists;
1211
function loadRootPackageJson() {
13-
console.log('loadRootPackageJson');
1412
var pathToPackageJson = path.join(window.coderoad.dir, 'package.json');
1513
if (exists_1.fileExists(pathToPackageJson)) {
1614
return JSON.parse(fs.readFileSync(pathToPackageJson, 'utf8'));

src/components/checks/_checks.less

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,3 @@
2121
}
2222
}
2323
}
24-
.cr-setup {
25-
.cr-setup-action {}
26-
.setupGuide {
27-
margin: 0 auto;
28-
padding: 20px;
29-
color: white;
30-
a, a:link, a:visited {
31-
color: white;
32-
}
33-
}
34-
}

src/components/checks/checks.tsx

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,48 @@
11
import * as React from 'react';
22
import Paper from 'material-ui/lib/paper';
33
import RaisedButton from 'material-ui/lib/raised-button';
4-
import DynamicStepper from './dynamic-stepper';
4+
import DynamicStepper from './setup-checker';
55
import Step from 'material-ui/lib/Stepper/VerticalStep';
66
import FlatButton from 'material-ui/lib/flat-button';
77

8+
import {openDirectory, createPackageJson, installTutorial} from '../../reducers/checks/setup-actions';
89
import {connect} from 'react-redux';
910
import {store} from '../../store/store';
1011
import * as Action from '../../actions/actions';
1112

1213
@connect(null, (dispatch) => {
1314
return {
14-
routeToTutorials: () => store.dispatch(Action.setRoute('tutorials'))
15+
routeToTutorials: () => store.dispatch(Action.setRoute('tutorials')),
16+
verify: () => store.dispatch(Action.verifySetup())
1517
};
1618
})
1719
export class Checks extends React.Component<{
18-
checks: CR.Checks, routeToTutorials?: any
20+
checks: CR.Checks, routeToTutorials?: any, verify?: any
1921
}, {}> {
22+
getSystemChecks(checks: CR.Checks) {
23+
const system = checks.system;
24+
return [system.node, system.npm];
25+
}
26+
getSetupChecks(checks: CR.Checks) {
27+
const setup = checks.setup;
28+
return [setup.dir, setup.packageJson, setup.tutorial];
29+
}
2030
render() {
21-
const {checks, routeToTutorials} = this.props;
22-
return <Paper className='cr-start'>
31+
const {checks, routeToTutorials, verify} = this.props;
32+
return <Paper className='cr-start'>
2333
<div className='cr-start-header'>
24-
<span className='title'>CodeRoad</span>
25-
<p className='tagline'>Tutorials in the Editor</p>
26-
<p className='version'>Beta</p>
34+
<p className='tagline'>Setup</p>
2735

2836
{/* System Checks */}
2937

30-
{checks.system.passed ? null : <DynamicStepper title='Dependency Checks'>
38+
{checks.system.passed ? null : <DynamicStepper title='Dependency Checks' status={this.getSystemChecks(checks)}>
3139
<Step orderStepLabel='1'
3240
stepLabel='Node >= 0.10'
3341
actions={[
3442
<RaisedButton key={0} primary={true}
3543
label='Verify'
36-
onTouchTap={function() { return; }}
37-
/>,
38-
<FlatButton key={1} label='Cancel' />
44+
onTouchTap={verify}
45+
/>
3946
]} >
4047
<div>Install a newer version of <a href='https://nodejs.org'>Node</a></div>
4148
</Step>
@@ -44,9 +51,8 @@ export class Checks extends React.Component<{
4451
actions={[
4552
<RaisedButton key={0} primary={true}
4653
label='Verify'
47-
onTouchTap={function() { return; }}
48-
/>,
49-
<FlatButton key={1} label='Cancel' />
54+
onTouchTap={verify}
55+
/>
5056
]} >
5157
<div>
5258
Update your version of NPM.<br />
@@ -57,15 +63,17 @@ export class Checks extends React.Component<{
5763
5864
{/* Setup Checks */}
5965
60-
{checks.setup.passed ? null : <DynamicStepper title='Setup Checks'>
66+
{checks.setup.passed ? null : <DynamicStepper title='Setup Checks'
67+
status={this.getSetupChecks(checks)}>
6168
<Step orderStepLabel='1'
6269
stepLabel='working directory'
6370
actions={[
6471
<RaisedButton key={0} primary={true}
6572
label='Verify'
66-
onTouchTap={function() { return; }}
67-
/>,
68-
<FlatButton key={1} label='Cancel' />
73+
onTouchTap={verify} />,
74+
<FlatButton key={1} secondary={true}
75+
label='Do it for me'
76+
onTouchTap={openDirectory} />
6977
]} >
7078
<div>File -> Open (a new folder)</div>
7179
</Step>
@@ -74,9 +82,10 @@ export class Checks extends React.Component<{
7482
actions={[
7583
<RaisedButton key={0} primary={true}
7684
label='Verify'
77-
onTouchTap={function() { return; }}
78-
/>,
79-
<FlatButton key={1} label='Cancel' />
85+
onTouchTap={verify} />,
86+
<FlatButton key={1} secondary={true}
87+
label='Do it for me'
88+
onTouchTap={createPackageJson} />
8089
]} >
8190
<div>
8291
Create a package.json by running<br />
@@ -87,9 +96,10 @@ export class Checks extends React.Component<{
8796
actions={[
8897
<RaisedButton key={0} primary={true}
8998
label='Verify'
90-
onTouchTap={function() { return; }}
91-
/>,
92-
<FlatButton key={1} label='Cancel' />
99+
onTouchTap={verify} />,
100+
<FlatButton key={1} secondary={true}
101+
label='Do it for me'
102+
onTouchTap={installTutorial} />
93103
]} >
94104
<div>
95105
Install a tutorial using npm. For example:<br />
@@ -108,6 +118,7 @@ export class Checks extends React.Component<{
108118
</div>}
109119

110120
</div>
121+
<p className='version'>Beta</p>
111122
</Paper>;
112123
}
113124
}

src/components/checks/dynamic-stepper.tsx renamed to src/components/checks/setup-checker.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ import * as React from 'react';
22
import Stepper from 'material-ui/lib/Stepper/Stepper';
33
import FontIcon from 'material-ui/lib/font-icon';
44

5-
let initState = {
6-
activeStep: -1,
7-
statusSteps: []
8-
};
9-
105
const styles = {
116
header: {
127
textAlign: 'center',
@@ -19,13 +14,17 @@ const styles = {
1914
};
2015

2116
export default class extends React.Component<{
22-
title?: string, children?: any
17+
status: boolean[], title: string, children?: any
2318
}, {
2419
activeStep: number, statusSteps: boolean[]
2520
}> {
26-
constructor() {
27-
super();
28-
this.state = initState;
21+
constructor(props) {
22+
super(props);
23+
let statusSteps = this.props.status;
24+
this.state = {
25+
activeStep: statusSteps.indexOf(false) || -1,
26+
statusSteps
27+
};
2928
}
3029
selectStep(CurrentStep) {
3130
this.setState({
@@ -51,7 +50,7 @@ export default class extends React.Component<{
5150
statusSteps[activeStep] = true;
5251
this.state = {
5352
activeStep: activeStep + 1,
54-
statusSteps: statusSteps,
53+
statusSteps,
5554
};
5655
}
5756
render() {

src/reducers/checks/checks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Type from '../../actions/actionTypes';
2-
import verifySetup from './setup';
2+
import verifySetup from './verify';
33

44
const defaultChecks = {
55
passed: false,

src/reducers/checks/setup.ts renamed to src/reducers/checks/verify.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function result(x) {
1616
export default function verifySetup(): CR.Checks {
1717
let checks: CR.Checks = {
1818
system: {
19-
node: true,
19+
node: false,
2020
npm: !!npmVersionThreeOrLater()
2121
},
2222
setup: {
@@ -27,7 +27,7 @@ export default function verifySetup(): CR.Checks {
2727
};
2828

2929
checks.system.passed = allTrue(checks.system);
30-
checks.setup.passed = allTrue(checks.system);
30+
checks.setup.passed = allTrue(checks.setup);
3131
checks.passed = checks.system.passed && checks.setup.passed;
3232
return checks;
3333
}

src/reducers/tutorials/check-tutorials.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ import {canUpdateTutorial} from './update-tutorial';
77
let tutorialError = 'This is an error with the tutorial itself';
88

99
export function packageJsonExists(): boolean {
10-
console.log('packageJsonExists?');
1110
const pathToPackageJson = path.join(window.coderoad.dir, 'package.json');
1211
return fileExists(pathToPackageJson);
1312
}
1413

1514
export function loadRootPackageJson(): PackageJson {
16-
console.log('loadRootPackageJson');
1715
const pathToPackageJson = path.join(window.coderoad.dir, 'package.json');
1816
if (fileExists(pathToPackageJson)) {
1917
return JSON.parse(fs.readFileSync(pathToPackageJson, 'utf8'));

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"src/reducers/checks/check-system.ts",
6868
"src/reducers/checks/checks.ts",
6969
"src/reducers/checks/setup-actions.ts",
70-
"src/reducers/checks/setup.ts",
70+
"src/reducers/checks/verify.ts",
7171
"src/reducers/editor-actions/action-helpers.ts",
7272
"src/reducers/editor-actions/actions.ts",
7373
"src/reducers/editor-actions/editor-actions.ts",
@@ -101,7 +101,7 @@
101101
"src/components/alert/alert.tsx",
102102
"src/components/app.tsx",
103103
"src/components/checks/checks.tsx",
104-
"src/components/checks/dynamic-stepper.tsx",
104+
"src/components/checks/setup-checker.tsx",
105105
"src/components/final-page/final-page.tsx",
106106
"src/components/markdown/markdown.tsx",
107107
"src/components/menu/menu.tsx",

0 commit comments

Comments
 (0)