Skip to content

Commit 213b6dc

Browse files
committed
load tutorial versions
1 parent cf9f3c9 commit 213b6dc

File tree

8 files changed

+108
-11
lines changed

8 files changed

+108
-11
lines changed

lib/components/start/tutorials.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var default_1 = (function (_super) {
4141
var _this = this;
4242
var _a = this.props, tutorials = _a.tutorials, loadTutorials = _a.loadTutorials, selectProject = _a.selectProject, toggleAlert = _a.toggleAlert;
4343
return (React.createElement("div", {className: 'cr-tutorials'}, React.createElement(table_1.default, null, React.createElement(table_header_1.default, {displaySelectAll: false, adjustForCheckbox: false}, React.createElement(table_row_1.default, null, React.createElement(table_header_column_1.default, null, "Tutorial"), React.createElement(table_header_column_1.default, null, "Version"))), React.createElement(table_body_1.default, {displayRowCheckbox: false}, tutorials.map(function (tutorial, index) {
44-
return (React.createElement(table_row_1.default, null, React.createElement(table_row_column_1.default, null, React.createElement(flat_button_1.default, {label: _this.trim(tutorial), primary: true, onTouchTap: selectProject.bind(_this, tutorial)})), React.createElement(table_row_column_1.default, null, "v1.0.0"), "/>"));
44+
return (React.createElement(table_row_1.default, null, React.createElement(table_row_column_1.default, null, React.createElement(flat_button_1.default, {label: _this.trim(tutorial.name), primary: true, onTouchTap: selectProject.bind(_this, tutorial)})), React.createElement(table_row_column_1.default, null, tutorial.version), "/>"));
4545
}))), React.createElement("br", null), React.createElement(flat_button_1.default, {label: 'Check for Tutorials', secondary: true, onTouchTap: loadTutorials})));
4646
};
4747
default_1 = __decorate([

lib/reducers/hint/hint.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
var Type = require('../../actions/actionTypes');
3+
var defaultHint = {
4+
position: 0
5+
};
6+
function hintReducer(hint, action) {
7+
if (hint === void 0) { hint = defaultHint; }
8+
switch (action.type) {
9+
case Type.SET_PAGE:
10+
return {
11+
position: 0
12+
};
13+
case Type.TEST_RESULT:
14+
if (action.payload.result.change !== 0) {
15+
return {
16+
position: 0
17+
};
18+
}
19+
return hint;
20+
case Type.SET_HINT_POSITION:
21+
return {
22+
position: action.payload.hintPosition
23+
};
24+
default:
25+
return hint;
26+
}
27+
}
28+
Object.defineProperty(exports, "__esModule", { value: true });
29+
exports.default = hintReducer;

lib/reducers/task/task.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
var Type = require('../../actions/actionTypes');
3+
var defaultTaskPosition = {
4+
position: 0,
5+
change: false
6+
};
7+
function taskPositionReducer(taskPos, action) {
8+
if (taskPos === void 0) { taskPos = defaultTaskPosition; }
9+
switch (action.type) {
10+
case Type.SET_PAGE:
11+
return {
12+
position: 0,
13+
change: false
14+
};
15+
case Type.TEST_RESULT:
16+
var _a = action.payload.result, taskPosition = _a.taskPosition, change = _a.change;
17+
return {
18+
position: taskPosition,
19+
change: change
20+
};
21+
default:
22+
return taskPos;
23+
}
24+
}
25+
Object.defineProperty(exports, "__esModule", { value: true });
26+
exports.default = taskPositionReducer;

lib/services/setup/tutorials.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,24 @@ function _isTutorial(name) {
4141
}
4242
function searchForTutorials(deps) {
4343
if (!!deps && Object.keys(deps).length > 0) {
44-
return Object.keys(deps).filter(function (name) { return _isTutorial(name); });
44+
return Object.keys(deps)
45+
.filter(function (name) { return _isTutorial(name); })
46+
.map(function (name) {
47+
var pathToTutorialPackageJson = path.join(window.coderoad.dir, 'node_modules', name, 'package.json');
48+
if (!exists_1.fileExists(pathToTutorialPackageJson)) {
49+
console.log("Error with " + name + ": no package.json file found. " + tutorialError);
50+
return {
51+
name: name,
52+
version: 'NOT INSTALLED'
53+
};
54+
}
55+
var packageJson = JSON.parse(fs.readFileSync(pathToTutorialPackageJson, 'utf8'));
56+
return {
57+
name: name,
58+
version: packageJson.version,
59+
latest: true
60+
};
61+
});
4562
}
4663
else {
4764
return [];

src/components/start/tutorials.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import * as Action from '../../actions/actions';
2525
};
2626
})
2727
export default class extends React.Component<{
28-
tutorials: string[], loadTutorials?: () => void,
28+
tutorials: CR.Tutorial[], loadTutorials?: () => void,
2929
selectProject?: (name: string) => void, toggleAlert?: (item: CR.Alert) => void
3030
}, {}> {
3131
trim(name: string): string {
@@ -52,13 +52,13 @@ export default class extends React.Component<{
5252
</TableHeader>
5353
<TableBody displayRowCheckbox={false}>
5454

55-
{tutorials.map((tutorial: string, index) => {
55+
{tutorials.map((tutorial: CR.Tutorial, index) => {
5656
return (
5757
<TableRow>
5858
<TableRowColumn>
59-
<FlatButton label={this.trim(tutorial)} primary={true} onTouchTap={selectProject.bind(this, tutorial)} />
59+
<FlatButton label={this.trim(tutorial.name)} primary={true} onTouchTap={selectProject.bind(this, tutorial)} />
6060
</TableRowColumn>
61-
<TableRowColumn>v1.0.0</TableRowColumn>
61+
<TableRowColumn>{tutorial.version}</TableRowColumn>
6262
/>
6363
</TableRow>
6464
);

src/reducers/tutorials/tutorials.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as Type from '../../actions/actionTypes';
22

3-
4-
export default function tutorialsReducer(tutorials = [], action: CR.Action): string[] {
3+
export default function tutorialsReducer(tutorials = [], action: CR.Action): CR.Tutorial[] {
54
switch (action.type) {
65
case Type.LOAD_TUTORIALS:
76
return action.payload.tutorials;

src/services/setup/tutorials.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,29 @@ function _isTutorial(name: string): boolean {
5454
return true;
5555
}
5656

57-
export function searchForTutorials(deps: Object): string[] {
57+
export function searchForTutorials(deps: Object): CR.Tutorial[] {
5858
if (!!deps && Object.keys(deps).length > 0) {
59-
return Object.keys(deps).filter((name) => _isTutorial(name));
59+
return Object.keys(deps)
60+
.filter((name: string) => _isTutorial(name))
61+
.map(function(name: string) {
62+
63+
const pathToTutorialPackageJson = path.join(window.coderoad.dir, 'node_modules', name, 'package.json');
64+
if (!fileExists(pathToTutorialPackageJson)) {
65+
console.log(`Error with ${name}: no package.json file found. ${tutorialError}`);
66+
return {
67+
name,
68+
version: 'NOT INSTALLED'
69+
};
70+
}
71+
72+
let packageJson = JSON.parse(fs.readFileSync(pathToTutorialPackageJson, 'utf8'));
73+
74+
return {
75+
name,
76+
version: packageJson.version,
77+
latest: true
78+
};
79+
});
6080
} else {
6181
return [];
6282
}

src/typings/cr/cr.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ declare namespace CR {
3737
hintPosition: number;
3838
editorActions: string[];
3939
alert: Alert;
40-
tutorials: string[];
40+
tutorials: Tutorial[];
4141
runTests: boolean;
4242
log: Log;
4343
warning: SetupWarning;
@@ -93,6 +93,12 @@ declare namespace CR {
9393
meta?;
9494
}
9595

96+
interface Tutorial {
97+
name: string;
98+
version: string;
99+
latest?: boolean;
100+
}
101+
96102
interface Log {
97103
open: boolean;
98104
message: string;

0 commit comments

Comments
 (0)