Skip to content

Commit 18ed81e

Browse files
committed
handle existing package.json issue
1 parent f7b34a8 commit 18ed81e

File tree

18 files changed

+82
-66
lines changed

18 files changed

+82
-66
lines changed

lib/components/Page/PageContent/index.js

-13
This file was deleted.

lib/components/Page/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var React = require('react');
3-
var PageContent_1 = require('./PageContent');
3+
var index_1 = require('../index');
44
var Tasks_1 = require('./Tasks');
55
var Hints_1 = require('./Hints');
66
var PageToolbar_1 = require('./PageToolbar');
@@ -13,7 +13,7 @@ var Page = function (_a) {
1313
var page = _a.page, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, tasks = _a.tasks, testRun = _a.testRun;
1414
var task = taskPosition <= tasks.length ? tasks[taskPosition] : null;
1515
var completed = page.completed;
16-
return (React.createElement("section", {style: styles, className: 'cr-page'}, React.createElement(PageContent_1.default, {page: page}), React.createElement(Tasks_1.default, {tasks: tasks, taskPosition: taskPosition, testRun: testRun, completed: completed, page: page}), React.createElement(PageToolbar_1.default, {tasks: tasks, taskPosition: taskPosition}, React.createElement(Hints_1.default, {task: task, hintPosition: hintPosition}), React.createElement(ProgressBar_1.default, {taskLength: tasks.length, taskPosition: taskPosition, completed: completed}))));
16+
return (React.createElement("section", {style: styles, className: 'cr-page'}, React.createElement(index_1.ContentCard, {title: page.title, content: page.description}), React.createElement(Tasks_1.default, {tasks: tasks, taskPosition: taskPosition, testRun: testRun, completed: completed, page: page}), React.createElement(PageToolbar_1.default, {tasks: tasks, taskPosition: taskPosition}, React.createElement(Hints_1.default, {task: task, hintPosition: hintPosition}), React.createElement(ProgressBar_1.default, {taskLength: tasks.length, taskPosition: taskPosition, completed: completed}))));
1717
};
1818
Object.defineProperty(exports, "__esModule", { value: true });
1919
exports.default = Page;

lib/components/Start/Checks/InstallGuide.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"use strict";
22
var React = require('react');
33
var InstallGuide = function (_a) {
4-
var show = _a.show;
5-
if (!show) {
4+
var checks = _a.checks;
5+
if (!checks || !checks.passed) {
66
return null;
77
}
88
return (React.createElement("div", {className: 'setup-guide'}, "Check the", React.createElement("a", {href: 'https://coderoad.github.io/docs#install'}, " ", React.createElement("strong", null, "Install Guide"))));

lib/components/Start/Checks/SetupChecks.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ var DynamicStepper_1 = require('./DynamicStepper');
88
var StepCheck_1 = require('./StepCheck');
99
var SetupChecks = function (_a) {
1010
var checks = _a.checks;
11-
var setup = checks.setup;
12-
if (setup.passed) {
11+
if (checks.setup.passed) {
1312
return null;
1413
}
15-
var status = [setup.dir, setup.packageJson, setup.tutorial];
16-
return (React.createElement(Card_1.Card, {className: 'cr-check'}, React.createElement(Card_1.CardHeader, {title: 'Setup Checks', subtitle: 'CodeRoad requires a brief setup'}), React.createElement(Card_1.CardText, null, React.createElement(DynamicStepper_1.default, {status: status}, React.createElement(StepCheck_1.default, {label: 'open a directory', completed: checks.setup.dir}, React.createElement("p", null, "File -> Open (a new folder)"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Open Directory', secondary: true, onTouchTap: action_setup_1.openDirectory})), React.createElement(StepCheck_1.default, {label: 'package.json', completed: checks.setup.packageJson}, "Create a package.json by running", React.createElement("br", null), React.createElement("code", null, "> npm init -y`"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Create package.json', secondary: true, onTouchTap: action_setup_1.createPackageJson})), React.createElement(StepCheck_1.default, {label: 'install a tutorial', completed: checks.setup.tutorial}, "Install a tutorial using npm. For example:", React.createElement("br", null), React.createElement("code", null, "> npm install --save-dev coderoad-functional-school"), React.createElement("br", null)))), React.createElement(Card_1.CardActions, null, React.createElement(VerifyButton_1.default, null))));
14+
var _b = checks.setup, dir = _b.dir, packageJson = _b.packageJson, tutorial = _b.tutorial;
15+
var status = [dir, packageJson, tutorial];
16+
return (React.createElement(Card_1.Card, {className: 'cr-check'}, React.createElement(Card_1.CardHeader, {title: 'Setup Checks', subtitle: 'CodeRoad requires a brief setup'}), React.createElement(Card_1.CardText, null, React.createElement(DynamicStepper_1.default, {status: status}, React.createElement(StepCheck_1.default, {label: 'open a directory', completed: dir}, React.createElement("p", null, "File -> Open (a new folder)"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Open Directory', secondary: true, onTouchTap: action_setup_1.openDirectory})), React.createElement(StepCheck_1.default, {label: 'package.json', completed: packageJson}, "Create a package.json by running", React.createElement("br", null), React.createElement("code", null, "> npm init -y`"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Create package.json', secondary: true, onTouchTap: action_setup_1.createPackageJson})), React.createElement(StepCheck_1.default, {label: 'install a tutorial', completed: tutorial}, "Install a tutorial using npm. For example:", React.createElement("br", null), React.createElement("code", null, "> npm install --save-dev coderoad-functional-school"), React.createElement("br", null)))), React.createElement(Card_1.CardActions, null, React.createElement(VerifyButton_1.default, null))));
1717
};
1818
Object.defineProperty(exports, "__esModule", { value: true });
1919
exports.default = SetupChecks;

lib/components/Start/Checks/SystemChecks.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ var DynamicStepper_1 = require('./DynamicStepper');
99
var StepCheck_1 = require('./StepCheck');
1010
var SystemChecks = function (_a) {
1111
var checks = _a.checks;
12-
var system = checks.system;
13-
if (system.passed) {
12+
if (checks.system.passed) {
1413
return null;
1514
}
16-
var status = [system.node, system.npm];
15+
var status = [checks.system.node, checks.system.npm];
1716
return (React.createElement(Card_1.Card, {className: 'cr-check'}, React.createElement(Card_1.CardHeader, {title: 'System Checks', subtitle: 'CodeRoad requires several key dependencies'}), React.createElement(Card_1.CardText, null, React.createElement(DynamicStepper_1.default, {status: status}, React.createElement(StepCheck_1.default, {label: 'Node >= 0.10', completed: checks.system.node}, React.createElement("p", null, "Install a newer version of ", React.createElement("a", {style: { color: colors_1.pink500 }, href: 'https://nodejs.org'}, "NodeJS"))), React.createElement(StepCheck_1.default, {label: 'NPM >= 3', completed: checks.system.npm}, "Update your version of NPM.", React.createElement("br", null), React.createElement("code", null, "> npm update -g npm"), React.createElement("br", null), React.createElement(FlatButton_1.default, {label: 'Update NPM', secondary: true, onTouchTap: action_system_1.updateNpm})))), React.createElement(Card_1.CardActions, null, React.createElement(VerifyButton_1.default, null))));
1817
};
1918
Object.defineProperty(exports, "__esModule", { value: true });

lib/components/Start/Checks/index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ var React = require('react');
33
var SystemChecks_1 = require('./SystemChecks');
44
var SetupChecks_1 = require('./SetupChecks');
55
var InstallGuide_1 = require('./InstallGuide');
6+
var index_1 = require('../../index');
67
var styles = {
78
margin: '10px',
89
padding: '40px 20px',
910
};
1011
var Checks = function (_a) {
1112
var checks = _a.checks;
12-
return (React.createElement("div", {styles: styles}, React.createElement(SystemChecks_1.default, {checks: checks}), React.createElement(SetupChecks_1.default, {checks: checks}), React.createElement(InstallGuide_1.default, {show: checks.passed})));
13+
return (React.createElement("div", {styles: styles}, checks
14+
? React.createElement("div", null, React.createElement(SystemChecks_1.default, {checks: checks}), React.createElement(SetupChecks_1.default, {checks: checks}))
15+
: React.createElement(index_1.ContentCard, {title: 'Error Loading Package.json', content: ''}), React.createElement(InstallGuide_1.default, {checks: checks})));
1316
};
1417
Object.defineProperty(exports, "__esModule", { value: true });
1518
exports.default = Checks;

lib/components/common/ContentCard.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
var React = require('react');
3+
var index_1 = require('../index');
4+
var Card_1 = require('material-ui/Card');
5+
var styles = {
6+
margin: '5px'
7+
};
8+
var ContentCard = function (_a) {
9+
var title = _a.title, content = _a.content;
10+
return (React.createElement(Card_1.Card, {style: styles}, title ? React.createElement(Card_1.CardHeader, {title: title}) : null, React.createElement(Card_1.CardText, null, React.createElement(index_1.Markdown, null, content))));
11+
};
12+
Object.defineProperty(exports, "__esModule", { value: true });
13+
exports.default = ContentCard;

lib/components/index.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ var Start_1 = require('./Start');
1717
exports.Start = Start_1.default;
1818
var Tutorials_1 = require('./Tutorials');
1919
exports.Tutorials = Tutorials_1.default;
20-
var RouteButton_1 = require('./Common/RouteButton');
20+
var RouteButton_1 = require('./common/RouteButton');
2121
exports.RouteButton = RouteButton_1.default;
22+
var ContentCard_1 = require('./common/ContentCard');
23+
exports.ContentCard = ContentCard_1.default;

src/components/Page/PageContent/index.tsx

-19
This file was deleted.

src/components/Page/index.tsx

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as React from 'react';
22
import Divider from 'material-ui/Divider';
33
import {Card} from 'material-ui/Card';
4-
import PageContent from './PageContent';
4+
import {ContentCard} from '../index';
55
import Tasks from './Tasks';
66
import Hints from './Hints';
77
import PageToolbar from './PageToolbar';
@@ -20,7 +20,10 @@ const Page: React.StatelessComponent<{
2020
const completed = page.completed;
2121
return (
2222
<section style={styles} className='cr-page'>
23-
<PageContent page={page} />
23+
<ContentCard
24+
title={page.title}
25+
content={page.description}
26+
/>
2427

2528
<Tasks
2629
tasks={tasks}

src/components/Start/Checks/InstallGuide.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as React from 'react';
22

33
const InstallGuide: React.StatelessComponent<{
4-
show: boolean
5-
}> = ({show}) => {
6-
if (!show) {
4+
checks: CR.Checks
5+
}> = ({checks}) => {
6+
if (!checks || !checks.passed) {
77
return null;
88
}
99
return (

src/components/Start/Checks/SetupChecks.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import StepCheck from './StepCheck';
1010
const SetupChecks: React.StatelessComponent<{
1111
checks: CR.Checks
1212
}> = ({checks}) => {
13-
const setup = checks.setup;
14-
if (setup.passed) {
13+
if (checks.setup.passed) {
1514
return null;
1615
}
17-
const status = [setup.dir, setup.packageJson, setup.tutorial];
16+
const {dir, packageJson, tutorial} = checks.setup;
17+
const status = [dir, packageJson, tutorial];
1818
return (
1919
<Card className='cr-check'>
2020
<CardHeader
@@ -25,7 +25,7 @@ const SetupChecks: React.StatelessComponent<{
2525
<DynamicStepper status={status}>
2626
<StepCheck
2727
label='open a directory'
28-
completed={checks.setup.dir}
28+
completed={dir}
2929
>
3030
<p>File -> Open (a new folder)</p><br />
3131
<FlatButton
@@ -37,7 +37,7 @@ const SetupChecks: React.StatelessComponent<{
3737

3838
<StepCheck
3939
label='package.json'
40-
completed={checks.setup.packageJson}
40+
completed={packageJson}
4141
>
4242
Create a package.json by running<br />
4343
<code>> npm init -y`</code><br />
@@ -50,7 +50,7 @@ const SetupChecks: React.StatelessComponent<{
5050

5151
<StepCheck
5252
label='install a tutorial'
53-
completed={checks.setup.tutorial}
53+
completed={tutorial}
5454
>
5555
Install a tutorial using npm. For example:<br />
5656
<code>> npm install --save-dev coderoad-functional-school</code><br />

src/components/Start/Checks/SystemChecks.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ import StepCheck from './StepCheck';
1111
const SystemChecks: React.StatelessComponent<{
1212
checks: CR.Checks
1313
}> = ({checks}) => {
14-
const system = checks.system;
15-
if (system.passed) {
14+
if (checks.system.passed) {
1615
return null;
1716
}
18-
const status = [system.node, system.npm];
17+
const status = [checks.system.node, checks.system.npm];
1918
return (
2019
<Card className='cr-check'>
2120
<CardHeader

src/components/Start/Checks/index.tsx

+12-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as React from 'react';
22
import SystemChecks from './SystemChecks';
33
import SetupChecks from './SetupChecks';
44
import InstallGuide from './InstallGuide';
5+
import {ContentCard} from '../../index';
56

67
const styles = {
78
margin: '10px',
@@ -12,10 +13,18 @@ const Checks: React.StatelessComponent<{
1213
checks: CR.Checks
1314
}> = ({checks}) => (
1415
<div styles={styles}>
15-
<SystemChecks checks={checks} />
16-
<SetupChecks checks={checks} />
1716

18-
<InstallGuide show={checks.passed} />
17+
{checks
18+
? <div>
19+
<SystemChecks checks={checks} />
20+
<SetupChecks checks={checks} />
21+
</div>
22+
: <ContentCard
23+
title='Error Loading Package.json'
24+
content=''
25+
/>
26+
}
27+
<InstallGuide checks={checks} />
1928
</div>
2029
);
2130
export default Checks;

src/components/common/ContentCard.tsx

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import * as React from 'react';
2+
import {Markdown} from '../index';
3+
import {Card, CardHeader, CardText} from 'material-ui/Card';
4+
5+
const styles = {
6+
margin: '5px'
7+
};
8+
9+
const ContentCard: React.StatelessComponent<{
10+
title: string, content: string
11+
}> = ({title, content}) => (
12+
<Card style={styles}>
13+
{title ? <CardHeader title={title} /> : null}
14+
<CardText>
15+
<Markdown>{content}</Markdown>
16+
</CardText>
17+
</Card>
18+
);
19+
export default ContentCard;

src/components/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ export {default as Progress} from './Progress';
77
export {default as Routes} from './Routes';
88
export {default as Start} from './Start';
99
export {default as Tutorials} from './Tutorials';
10-
export {default as RouteButton} from './Common/RouteButton';
10+
export {default as RouteButton} from './common/RouteButton';
11+
export {default as ContentCard} from './common/ContentCard';

src/reducers/tutorial-list/is-tutorial.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const tutorialError = 'This is an error with the tutorial itself';
88
export function isTutorial(name: string): boolean {
99
const dir = store.getState().dir;
1010
// has package.json
11-
let pathToTutorialPackageJson = join(
11+
const pathToTutorialPackageJson = join(
1212
dir, 'node_modules', name, 'package.json'
1313
);
1414
if (!fileExists(pathToTutorialPackageJson)) {

tsconfig.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,14 @@
125125
"src/components/AppMenu/menuRight.tsx",
126126
"src/components/AppMenu/menuRightRouteOptions.tsx",
127127
"src/components/AppMenu/Quit/index.tsx",
128-
"src/components/Common/RouteButton.tsx",
128+
"src/components/common/ContentCard.tsx",
129+
"src/components/common/RouteButton.tsx",
129130
"src/components/FinalPage/index.tsx",
130131
"src/components/Markdown/index.tsx",
131132
"src/components/Page/EditPage/index.tsx",
132133
"src/components/Page/Hints/HintButton.tsx",
133134
"src/components/Page/Hints/index.tsx",
134135
"src/components/Page/index.tsx",
135-
"src/components/Page/PageContent/index.tsx",
136136
"src/components/Page/PageToolbar/Continue/index.tsx",
137137
"src/components/Page/PageToolbar/index.tsx",
138138
"src/components/Page/PageToolbar/Save/index.tsx",

0 commit comments

Comments
 (0)