Skip to content

Commit 4cb98dd

Browse files
committed
route to final page on complete
1 parent 70eb38b commit 4cb98dd

File tree

22 files changed

+74
-28
lines changed

22 files changed

+74
-28
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
2020
### Added
2121
- smoother setup process
2222
- style, ui improvements
23+
24+
## [0.5.3] - in progress
25+
- fix tutorial progress issues

lib/actions/page-actions.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ var package_1 = require('../services/package');
55
var _ = require('lodash');
66
function setPage(selectedPosition) {
77
if (selectedPosition === void 0) { selectedPosition = { chapter: 0, page: 0 }; }
8+
if (selectedPosition.completed) {
9+
return { type: Type.SET_ROUTE, payload: { route: 'final' } };
10+
}
811
var page = package_1.default.getPage(selectedPosition);
912
var tasks = package_1.default.getTasks(selectedPosition);
1013
var taskTests = _.flatten(tasks.map(function (task) { return task.tests || []; }));

lib/components/_components.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ var progress_1 = require('./progress/progress');
1515
exports.Progress = progress_1.default;
1616
var start_1 = require('./start/start');
1717
exports.Start = start_1.Start;
18+
var final_page_1 = require('./final-page/final-page');
19+
exports.FinalPage = final_page_1.FinalPage;
1820
var markdown_1 = require('./markdown/markdown');
1921
exports.MarkdownText = markdown_1.default;
2022
var alert_1 = require('./alert/alert');

lib/components/app/router.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ var default_1 = (function (_super) {
1919
return React.createElement(_components_1.Progress, {progress: state.progress, position: state.position});
2020
case 'projects':
2121
return React.createElement(_components_1.Start, {tutorials: state.tutorials, warning: state.warning});
22+
case 'final':
23+
return React.createElement(_components_1.FinalPage, null);
2224
default:
2325
throw 'Error: Route not found.';
2426
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
"use strict";
2+
var React = require('react');
3+
exports.FinalPage = function () { return (React.createElement("div", null, "Final Page")); };

lib/components/menu/menu.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ var default_1 = (function (_super) {
5353
default_1.prototype.render = function () {
5454
var origin = { horizontal: 'right', vertical: 'top' };
5555
var quit = this.props.quit;
56-
return (React.createElement(material_ui_1.AppBar, {title: 'CodeRoad', className: 'cr-menu-bar', iconElementLeft: React.createElement(material_ui_1.IconButton, {onTouchTap: this.closePanel}, React.createElement(NavigationClose, null)), iconElementRight: React.createElement(material_ui_1.IconMenu, {iconButtonElement: React.createElement(material_ui_1.IconButton, null, React.createElement(MoreVertIcon, null)), targetOrigin: origin, anchorOrigin: origin}, this.menuOptions(), window.coderoad.issuesPath ? React.createElement(material_ui_1.MenuItem, {key: 'issue'}, React.createElement("a", {href: window.coderoad.issuesPath}, "post issue")) : null, React.createElement(material_ui_1.Divider, null), React.createElement(material_ui_1.MenuItem, {primaryText: 'quit', onTouchTap: quit}))}));
56+
return (React.createElement(material_ui_1.AppBar, {title: 'CodeRoad', className: 'cr-menu-bar', iconElementLeft: React.createElement(material_ui_1.IconButton, {onTouchTap: this.closePanel}, React.createElement(NavigationClose, null)), iconElementRight: React.createElement(material_ui_1.IconMenu, {iconButtonElement: React.createElement(material_ui_1.IconButton, null, React.createElement(MoreVertIcon, null)), targetOrigin: origin, anchorOrigin: origin}, this.menuOptions(), window.coderoad.issuesPath ? React.createElement(material_ui_1.MenuItem, {key: 'issue', className: 'link'}, React.createElement("a", {href: window.coderoad.issuesPath}, "post issue")) : null, React.createElement(material_ui_1.Divider, null), React.createElement(material_ui_1.MenuItem, {primaryText: 'quit', onTouchTap: quit}))}));
5757
};
5858
default_1 = __decorate([
5959
react_redux_1.connect(null, function (dispatch) {

lib/components/page/page.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
'use strict';
1+
"use strict";
22
var __extends = (this && this.__extends) || function (d, b) {
33
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
44
function __() { this.constructor = d; }
@@ -28,7 +28,7 @@ var default_1 = (function (_super) {
2828
var _a = this.props, page = _a.page, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, tasks = _a.tasks, runTests = _a.runTests;
2929
var currentTask = taskPosition <= tasks.length ? tasks[taskPosition] : null;
3030
var allComplete = taskPosition >= tasks.length;
31-
return (React.createElement(material_ui_1.Paper, {style: pageStyle, zDepth: 1, className: 'cr-page'}, React.createElement(content_1.default, {page: page}), React.createElement(material_ui_1.Divider, null), React.createElement(task_1.Tasks, {tasks: tasks, taskPosition: taskPosition, runTests: runTests}), React.createElement(hint_1.default, {task: currentTask, hintPosition: hintPosition}), React.createElement(page_complete_1.PageCompleteMessage, {page: page}), React.createElement("div", {ref: 'listEnd'}), React.createElement(toolbar_1.default, {tasks: tasks, taskPosition: taskPosition, hintPosition: hintPosition})));
31+
return (React.createElement(material_ui_1.Paper, {style: pageStyle, zDepth: 1, className: 'cr-page'}, React.createElement(content_1.default, {page: page}), React.createElement(material_ui_1.Divider, null), React.createElement(task_1.Tasks, {tasks: tasks, taskPosition: taskPosition, runTests: runTests}), React.createElement(hint_1.default, {task: currentTask, hintPosition: hintPosition}), React.createElement(page_complete_1.PageCompleteMessage, {page: page}), React.createElement("div", {ref: 'listEnd'}), React.createElement(toolbar_1.default, {tasks: tasks, taskPosition: taskPosition})));
3232
};
3333
return default_1;
3434
}(React.Component));

lib/components/page/toolbar.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,19 @@ var default_1 = (function (_super) {
3030
function default_1() {
3131
_super.apply(this, arguments);
3232
}
33+
default_1.prototype.getButton = function () {
34+
var _a = this.props, callNextPage = _a.callNextPage, showHint = _a.showHint, taskPosition = _a.taskPosition, tasks = _a.tasks;
35+
switch (true) {
36+
case taskPosition >= tasks.length:
37+
return React.createElement(material_ui_1.RaisedButton, {label: 'Continue', primary: true, onTouchTap: callNextPage});
38+
default:
39+
return React.createElement(material_ui_1.RaisedButton, {label: 'Save', secondary: true, onTouchTap: editor_1.save});
40+
}
41+
};
3342
default_1.prototype.render = function () {
34-
var _a = this.props, tasks = _a.tasks, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, callNextPage = _a.callNextPage, showHint = _a.showHint;
35-
var currentTask = taskPosition <= tasks.length ? tasks[taskPosition] : null;
43+
var _a = this.props, tasks = _a.tasks, taskPosition = _a.taskPosition;
3644
var progress = taskProgress(taskPosition, tasks.length);
37-
var allComplete = taskPosition >= tasks.length;
38-
return (React.createElement("section", {className: 'cr-page-toolbar'}, React.createElement(ProgressBar, {progress: progress}), React.createElement(material_ui_1.Toolbar, null, React.createElement(material_ui_1.ToolbarGroup, {float: 'right'}, allComplete ?
39-
React.createElement(material_ui_1.RaisedButton, {label: 'Continue', primary: true, onTouchTap: callNextPage})
40-
:
41-
React.createElement(material_ui_1.RaisedButton, {label: 'Save', secondary: true, onTouchTap: editor_1.save})))));
45+
return (React.createElement("section", {className: 'cr-page-toolbar'}, React.createElement(ProgressBar, {progress: progress}), React.createElement(material_ui_1.Toolbar, null, React.createElement(material_ui_1.ToolbarGroup, {float: 'right'}, this.getButton()))));
4246
};
4347
default_1 = __decorate([
4448
react_redux_1.connect(null, function (dispatch, state) {

lib/services/package.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ var PackageService = (function () {
8484
}
8585
else {
8686
_base_1.store.dispatch(Action.projectComplete());
87-
return { chapter: chapter, page: page };
87+
return { chapter: chapter, page: page, completed: true };
8888
}
8989
};
9090
PackageService.prototype.getProject = function () {

src/actions/page-actions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import Package from '../services/package';
44
const _ = require('lodash');
55

66
export function setPage(selectedPosition: CR.Position = { chapter: 0, page: 0 }): CR.Action {
7+
if (selectedPosition.completed) {
8+
return { type: Type.SET_ROUTE, payload: { route: 'final'} };
9+
}
710
const page: CR.Page = Package.getPage(selectedPosition);
811
const tasks: CR.Task[] = Package.getTasks(selectedPosition);
912
const taskTests: CR.TaskTest[] = _.flatten(tasks.map((task) => task.tests || []));

0 commit comments

Comments
 (0)