Skip to content

Commit f0b308d

Browse files
committed
fix taskTracker, adjust reducer spacing
1 parent d05c6ac commit f0b308d

File tree

24 files changed

+149
-73
lines changed

24 files changed

+149
-73
lines changed

lib/components/App.js

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ var App = (function (_super) {
3636
}
3737
App.prototype.render = function () {
3838
var store = this.props.store;
39-
console.log(store);
4039
return (React.createElement("section", {className: 'cr', key: 'main', style: { height: height }}, React.createElement(index_1.AppMenu, __assign({}, store)), React.createElement(Routes_1.Routes, __assign({}, store)), React.createElement(index_1.Alert, __assign({}, store))));
4140
};
4241
App = __decorate([

lib/reducers/alert/index.js

+17-16
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,31 @@ function alertReducer(alert, action) {
3030
});
3131
case _types_1.TEST_RESULT:
3232
var result = action.payload.result;
33-
if (result.pass && result.change > 0) {
34-
statusBarAlert.style.color = '#73C990';
35-
return setAlert({
36-
message: result.msg,
37-
duration: result.duration || 1500,
38-
});
33+
switch (true) {
34+
case result.pass && result.change > 0:
35+
statusBarAlert.style.color = '#73C990';
36+
return setAlert({
37+
message: result.msg,
38+
duration: result.duration || 1500,
39+
});
40+
case result.pass === false && result.change < 1:
41+
statusBarAlert.style.color = '#FF4081';
42+
return setAlert({
43+
message: result.msg,
44+
action: 'fail',
45+
duration: result.duration || 2500,
46+
});
47+
default:
48+
statusBarAlert.style.color = '#9DA5B4';
3949
}
40-
else if (result.pass === false && result.change < 1) {
41-
statusBarAlert.style.color = '#FF4081';
42-
return setAlert({
43-
message: result.msg,
44-
action: 'fail',
45-
duration: result.duration || 2500,
46-
});
47-
}
48-
statusBarAlert.style.color = '#9DA5B4';
4950
return setAlert({
5051
message: result.msg,
5152
action: 'note',
5253
duration: result.duration || 2500,
5354
});
5455
case _types_1.COMPLETE_PAGE:
5556
return setAlert({
56-
message: "Page " + (action.payload.pagePosition.page + 1) + " Complete",
57+
message: "Page " + (action.payload.pagePosition + 1) + " Complete",
5758
});
5859
case _types_1.COMPLETE_TUTORIAL:
5960
return setAlert({

lib/reducers/editor-actions/index.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,25 @@ function handleEditorActions(actions) {
1010
}, Promise.resolve());
1111
}
1212
}
13-
var currentTaskPosition = 0;
13+
var taskTracker = 0;
1414
function editorActionsReducer(editorActions, action) {
1515
if (editorActions === void 0) { editorActions = []; }
1616
var actions = null;
1717
switch (action.type) {
1818
case _types_1.TESTS_LOAD:
19+
taskTracker = 0;
1920
actions = store_1.default.getState().tasks.map(function (task) { return task.actions || []; });
2021
handleEditorActions(actions);
2122
return actions;
2223
case _types_1.TEST_RESULT:
2324
actions = action.payload.actions || [];
2425
var nextTaskPosition = action.payload.result.taskPosition;
25-
var times = nextTaskPosition - currentTaskPosition;
26+
var times = nextTaskPosition - taskTracker;
2627
if (times > 0) {
2728
for (var i = 0; i < times; i++) {
2829
handleEditorActions(actions);
2930
}
30-
currentTaskPosition = nextTaskPosition;
31+
taskTracker = nextTaskPosition;
3132
}
3233
return actions;
3334
default:

lib/reducers/test-run/test-result.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@ var store_1 = require('../../store');
33
var actions_1 = require('../../actions');
44
function handleResult(result) {
55
store_1.default.dispatch(actions_1.testComplete());
6-
if (result.completed) {
7-
store_1.default.dispatch(actions_1.testResult(result));
8-
store_1.default.dispatch(actions_1.completePage());
9-
}
10-
else if (!result.pass) {
11-
store_1.default.dispatch(actions_1.testResult(result));
12-
}
13-
else if (result.pass) {
14-
result.msg = "Task " + result.taskPosition + " Complete";
15-
store_1.default.dispatch(actions_1.testResult(result));
6+
switch (true) {
7+
case result.completed:
8+
store_1.default.dispatch(actions_1.testResult(result));
9+
store_1.default.dispatch(actions_1.completePage());
10+
break;
11+
case !result.pass:
12+
store_1.default.dispatch(actions_1.testResult(result));
13+
break;
14+
case result.pass:
15+
result.msg = "Task " + result.taskPosition + " Complete";
16+
store_1.default.dispatch(actions_1.testResult(result));
17+
break;
1618
}
1719
}
1820
exports.handleResult = handleResult;

lib/store/index.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
"use strict";
22
var redux_1 = require('redux');
33
var reducers_1 = require('../reducers');
4-
var initialState = {};
5-
var store = redux_1.createStore(reducers_1.default, initialState);
4+
var createLogger = require('redux-logger');
5+
var dev = false;
6+
var store = null;
7+
if (dev) {
8+
var logger = createLogger();
9+
store = redux_1.createStore(reducers_1.default, redux_1.applyMiddleware(logger));
10+
}
11+
else {
12+
var initialState = {};
13+
store = redux_1.createStore(reducers_1.default, initialState);
14+
}
615
Object.defineProperty(exports, "__esModule", { value: true });
716
exports.default = store;

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"react-dom": "15.0.2",
4646
"react-redux": "4.4.5",
4747
"react-tap-event-plugin": "1.0.0",
48-
"redux": "3.5.2"
48+
"redux": "3.5.2",
49+
"redux-logger": "2.6.1"
4950
},
5051
"scripts": {
5152
"test": "ava src/**/*.spec.js",

src/components/App.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ window.onresize = function() {
1414
export class App extends React.Component<{store?: CR.State}, {}> {
1515
render(): React.ReactElement<{}> {
1616
const store = this.props.store;
17-
console.log(store);
1817
return (
1918
<section
2019
className='cr'

src/reducers/alert/index.ts

+28-18
Original file line numberDiff line numberDiff line change
@@ -26,49 +26,59 @@ export default function alertReducer(
2626
): CR.Alert {
2727
let statusBarAlert = <HTMLElement>document.getElementsByClassName('cr-alert-replay')[0];
2828
switch (action.type) {
29+
2930
case ALERT_REPLAY:
3031
return setAlert(current);
32+
3133
case ALERT_TOGGLE:
3234
return action.payload.alert || _alert;
35+
3336
case TUTORIAL_UPDATE:
3437
return setAlert({
3538
message: `run \`npm install --save-dev ${action.payload.name}\``,
3639
action: 'note',
3740
duration: 4000,
3841
});
42+
3943
case TEST_RESULT:
40-
let result = action.payload.result;
41-
if (result.pass && result.change > 0) {
42-
// Pass
43-
statusBarAlert.style.color = '#73C990';
44-
return setAlert({
45-
message: result.msg,
46-
duration: result.duration || 1500,
47-
});
48-
} else if (result.pass === false && result.change < 1) {
44+
const result = action.payload.result;
45+
46+
switch (true) {
47+
// pass
48+
case result.pass && result.change > 0:
49+
statusBarAlert.style.color = '#73C990';
50+
return setAlert({
51+
message: result.msg,
52+
duration: result.duration || 1500,
53+
});
4954
// Fail
50-
statusBarAlert.style.color = '#FF4081';
51-
return setAlert({
52-
message: result.msg,
53-
action: 'fail',
54-
duration: result.duration || 2500,
55-
});
55+
case result.pass === false && result.change < 1:
56+
statusBarAlert.style.color = '#FF4081';
57+
return setAlert({
58+
message: result.msg,
59+
action: 'fail',
60+
duration: result.duration || 2500,
61+
});
62+
// Alert
63+
default:
64+
statusBarAlert.style.color = '#9DA5B4';
5665
}
57-
// Alert
58-
statusBarAlert.style.color = '#9DA5B4';
5966
return setAlert({
6067
message: result.msg,
6168
action: 'note',
6269
duration: result.duration || 2500,
6370
});
71+
6472
case COMPLETE_PAGE:
6573
return setAlert({
66-
message: `Page ${action.payload.pagePosition.page + 1} Complete`,
74+
message: `Page ${action.payload.pagePosition + 1} Complete`,
6775
});
76+
6877
case COMPLETE_TUTORIAL:
6978
return setAlert({
7079
message: 'Tutorial Complete',
7180
});
81+
7282
default:
7383
return alert;
7484
}

src/reducers/checks/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ export default function checksReducer(
1818
checks = _checks, action: Action
1919
): CR.Checks {
2020
switch (action.type) {
21+
2122
case SETUP_VERIFY:
2223
return setupVerify();
24+
2325
default:
2426
return checks;
2527
}

src/reducers/editor-actions/index.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,31 @@ function handleEditorActions(actions: string[][]): void {
1313
}
1414

1515
// trigger actions only once, moving fowards
16-
let currentTaskPosition = 0;
16+
let taskTracker = 0;
1717

1818
export default function editorActionsReducer(
1919
editorActions = [], action: Action
2020
): string[][] {
2121
let actions: string[][] = null;
2222
switch (action.type) {
23+
2324
case TESTS_LOAD:
25+
taskTracker = 0;
2426
actions = store.getState().tasks.map(task => task.actions || []);
2527
handleEditorActions(actions); // run first action
2628
return actions;
2729

2830
case TEST_RESULT:
2931
actions = action.payload.actions || [];
30-
const nextTaskPosition: number = action.payload.result.taskPosition;
31-
const times: number = nextTaskPosition - currentTaskPosition;
32+
const nextTaskPosition = action.payload.result.taskPosition;
33+
const times: number = nextTaskPosition - taskTracker;
34+
3235
if (times > 0) {
3336
// run actions for each task position passed
3437
for (let i = 0; i < times; i++) {
3538
handleEditorActions(actions); // run first action
3639
}
37-
currentTaskPosition = nextTaskPosition;
40+
taskTracker = nextTaskPosition;
3841
}
3942
return actions;
4043

src/reducers/hint-position/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,19 @@ export default function hintPositionReducer(
66
hintPosition = 0, action: Action
77
): number {
88
switch (action.type) {
9+
910
case PAGE_SET:
1011
return 0;
12+
1113
case TEST_RESULT:
1214
if (action.payload.result.change !== 0) {
1315
return 0;
1416
}
1517
return hintPosition;
18+
1619
case HINT_POSITION_SET:
1720
return action.payload.hintPosition;
21+
1822
default:
1923
return hintPosition;
2024
}

src/reducers/package-json/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ export default function packageJsonReducer(
88
pj = null, action: Action
99
): PackageJson {
1010
switch (action.type) {
11+
1112
case PACKAGE_SET:
1213
const dir = store.getState().dir;
1314
const pathToPackageJson = join(dir, 'package.json');
1415
if (fileExists(pathToPackageJson)) {
1516
return JSON.parse(readFileSync(pathToPackageJson, 'utf8'));
1617
}
1718
return null;
19+
1820
default:
1921
return pj;
2022
}

src/reducers/page-position/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ export default function pagePositionReducer(
77
pagePosition = 0, action: Action
88
): CR.PagePosition {
99
switch (action.type) {
10+
1011
case PAGE_POSITION_LOAD:
1112
const pages = store.getState().progress.pages;
1213
const firstFail = pages.indexOf(x => !x);
1314
return firstFail > 0 ? firstFail : pages.length - 1;
15+
1416
case PAGE_SET:
1517
case PAGE_POSITION_SET:
1618
return action.payload.pagePosition;
19+
1720
default:
1821
return pagePosition;
1922
}

src/reducers/page/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default function pageReducer(
1212
p = _page, action: Action
1313
): CR.Page {
1414
switch (action.type) {
15+
1516
case PAGE_SET:
1617
const pagePosition: CR.PagePosition = action.payload.pagePosition;
1718
const {title, description, onPageComplete, completed} = store.getState().tutorial.pages[pagePosition];
@@ -23,8 +24,10 @@ export default function pageReducer(
2324
onPageComplete,
2425
completed: completed || false
2526
};
27+
2628
case COMPLETE_PAGE:
2729
return Object.assign({}, p, { completed: true });
30+
2831
default:
2932
return p;
3033
}

src/reducers/progress/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default function progressReducer(
1313
progress = _progress, action: Action
1414
): CR.Progress {
1515
switch (action.type) {
16+
1617
case PROGRESS_LOAD:
1718
// load saved progress
1819
const saved = loadProgressFromLocalStorage();
@@ -22,15 +23,18 @@ export default function progressReducer(
2223
completed: false,
2324
pages: store.getState().tutorial.pages.map(() => false)
2425
};
26+
2527
case COMPLETE_PAGE:
2628
const pagePosition = action.payload.pagePosition;
2729
progress.pages[pagePosition] = true;
2830
saveToLocalStorage(progress);
2931
return progress;
32+
3033
case COMPLETE_TUTORIAL:
3134
progress.completed = true;
3235
saveToLocalStorage(progress);
3336
return progress;
37+
3438
default:
3539
return progress;
3640
}

src/reducers/route/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ export default function routeReducer(
77
route = _route, action: Action
88
): string {
99
switch (action.type) {
10+
1011
case ROUTE_SET:
1112
return action.payload.route;
13+
1214
default:
1315
return route;
1416
}

src/reducers/task-position/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ export default function taskPositionReducer(
44
taskPosition = 0, action: Action
55
): number {
66
switch (action.type) {
7+
78
case PAGE_SET:
89
return 0;
10+
911
case TEST_RESULT:
1012
return action.payload.result.taskPosition;
13+
1114
default:
1215
return taskPosition;
1316
}

0 commit comments

Comments
 (0)