Skip to content

Commit 27ad6ee

Browse files
committed
fix editor action issues
1 parent 193bc7f commit 27ad6ee

File tree

22 files changed

+76
-81
lines changed

22 files changed

+76
-81
lines changed

lib/components/Page/ProgressBar/index.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ var style = {
77
margin: '0px',
88
};
99
var ProgressBar = function (_a) {
10-
var taskPosition = _a.taskPosition, taskLength = _a.taskLength, completed = _a.completed;
11-
var progress = (taskPosition / taskLength) * 100;
10+
var taskProgress = _a.taskProgress, completed = _a.completed;
1211
if (completed) {
1312
return null;
1413
}
15-
return (React.createElement(LinearProgress_1.default, {mode: 'determinate', value: progress, style: style}));
14+
return (React.createElement(LinearProgress_1.default, {mode: 'determinate', value: taskProgress, style: style}));
1615
};
1716
Object.defineProperty(exports, "__esModule", { value: true });
1817
exports.default = ProgressBar;

lib/components/Page/Tasks/index.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,10 @@ var Tasks = (function (_super) {
2121
Tasks.prototype.componentDidUpdate = function () {
2222
ReactDOM.findDOMNode(this.refs.listEnd).scrollIntoView();
2323
};
24-
Tasks.prototype.visibleTasks = function (tasks, taskPosition) {
25-
return tasks.slice(0, taskPosition + 1);
26-
};
2724
Tasks.prototype.render = function () {
2825
var _a = this.props, tasks = _a.tasks, taskPosition = _a.taskPosition, testRun = _a.testRun, completed = _a.completed, page = _a.page;
29-
var visTasks = this.visibleTasks(tasks, taskPosition);
3026
var backgroundColor = completed ? colors_1.lightGreen200 : 'white';
31-
return (React.createElement("div", null, React.createElement(Card_1.Card, {style: { backgroundColor: backgroundColor, margin: margin }}, React.createElement(List_1.List, null, React.createElement(Subheader_1.default, null, "Tasks"), visTasks.map(function (task, index) { return (React.createElement(Task_1.default, {key: index, index: index, task: task, taskPosition: taskPosition, testRun: testRun})); }))), React.createElement(TasksComplete_1.default, {page: page, completed: completed}), React.createElement("div", {ref: 'listEnd'})));
27+
return (React.createElement("div", null, React.createElement(Card_1.Card, {style: { backgroundColor: backgroundColor, margin: margin }}, React.createElement(List_1.List, null, React.createElement(Subheader_1.default, null, "Tasks"), tasks.map(function (task, index) { return (React.createElement(Task_1.default, {key: index, index: index, task: task, taskPosition: taskPosition, testRun: testRun})); }))), React.createElement(TasksComplete_1.default, {page: page, completed: completed}), React.createElement("div", {ref: 'listEnd'})));
3228
};
3329
return Tasks;
3430
}(React.Component));

lib/components/Page/index.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@ var Page = (function (_super) {
3131
_super.apply(this, arguments);
3232
}
3333
Page.prototype.render = function () {
34-
var _a = this.props, page = _a.page, tasks = _a.tasks, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, testRun = _a.testRun, progress = _a.progress, pagePosition = _a.pagePosition;
35-
var task = taskPosition <= tasks.length ? tasks[taskPosition] : null;
36-
var completed = progress.pages[pagePosition];
37-
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}))));
34+
var _a = this.props, page = _a.page, tasks = _a.tasks, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, testRun = _a.testRun, progress = _a.progress, pagePosition = _a.pagePosition, completed = _a.completed, task = _a.task, visibleTasks = _a.visibleTasks, taskProgress = _a.taskProgress;
35+
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.slice(0, taskPosition + 1), 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, {taskProgress: taskProgress, completed: completed}))));
3836
};
3937
Page = __decorate([
4038
react_redux_1.connect(function (state) { return ({
@@ -45,6 +43,9 @@ var Page = (function (_super) {
4543
taskPosition: state.taskPosition,
4644
hintPosition: state.hintPosition,
4745
pagePosition: state.pagePosition,
46+
completed: selectors_1.pageCompletedSelector(state),
47+
task: selectors_1.taskSelector(state),
48+
taskProgress: selectors_1.taskProgressSelector(state),
4849
}); }),
4950
__metadata('design:paramtypes', [])
5051
], Page);

lib/modules/page/task-actions/index.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ function taskActionsReducer(t, action) {
2121
handle_actions_1.default(actions);
2222
return actions;
2323
case 'TEST_RESULT':
24-
var _b = action.payload, taskActions = _b.taskActions, result = _b.result;
25-
var nextTaskPosition = result.taskPosition;
24+
actions = action.payload.taskActions || [];
25+
var nextTaskPosition = action.payload.result.taskPosition;
2626
var times = nextTaskPosition - taskPositionTracker;
2727
if (times > 0) {
2828
for (var i = 0; i < times; i++) {
2929
handle_actions_1.default(actions);
3030
}
3131
taskPositionTracker = nextTaskPosition;
3232
}
33-
return taskActions;
33+
return actions;
3434
default:
3535
return t;
3636
}

lib/modules/tests/test-run/parse-loaders.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ function parseLoaders(data, fileType, tutorial, dir) {
2828
}
2929
var pathToFile = null;
3030
if (loader[2]) {
31-
var tutorialDir = tutorial.packageJson.config.dir || 'tutorial';
32-
pathToFile = path_1.normalize(path_1.join(tutorialDir, fileToLoad));
31+
pathToFile = path_1.normalize(path_1.join(tutorial.config.dir, fileToLoad));
3332
}
3433
else {
3534
pathToFile = path_1.normalize(path_1.join(dir, fileToLoad));

lib/modules/tutorial/reducer.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
"use strict";
22
var path_1 = require('path');
3-
var config_1 = require('./utils/config');
43
var types_1 = require('./types');
4+
var config_1 = require('./utils/config');
55
var config_paths_1 = require('./utils/config-paths');
66
var _tutorial = {
77
name: null,
88
info: null,
99
pages: [],
1010
packageJson: null,
11+
config: null,
1112
};
1213
function tutorialReducer(t, action) {
1314
if (t === void 0) { t = _tutorial; }

lib/selectors.js

+10
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,14 @@
22
var reselect_1 = require('reselect');
33
exports.pageSelector = function (state) { return state.tutorial.pages[state.pagePosition]; };
44
exports.tasksSelector = reselect_1.createSelector(exports.pageSelector, function (page) { return page.tasks; });
5+
exports.taskPositionSelector = function (state) { return state.taskPosition; };
6+
exports.pageCompletedSelector = function (state) { return state.progress.pages[state.pagePosition]; };
7+
exports.taskSelector = function (state) { return reselect_1.createSelector(exports.tasksSelector, function (tasks) {
8+
return (tasks.length <= tasks.length ? exports.tasksSelector(state)[state.taskPosition] : null);
9+
}); };
10+
exports.visibleTasksSelector = function (state) { return reselect_1.createSelector(exports.tasksSelector, function (tasks) {
11+
console.log(tasks);
12+
return tasks.slice(0, state.taskPosition + 1);
13+
}); };
14+
exports.taskProgressSelector = function (state) { return reselect_1.createSelector(exports.tasksSelector, function (tasks) { return (state.taskPosition / tasks.length) * 100; }); };
515
exports.configSelector = function (state) { return state.packageJson.config; };

lib/store.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var redux_thunk_1 = require('redux-thunk');
77
var middlewares = [redux_thunk_1.default];
88
var throttleTestRun = redux_throttle_actions_1.default(['TEST_RUN'], 800);
99
middlewares.push(throttleTestRun);
10-
var devMode = true;
10+
var devMode = false;
1111
if (devMode) {
1212
var logger = createLogger();
1313
middlewares.push(logger);

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"react-tap-event-plugin": "1.0.0",
4242
"redux": "3.5.2",
4343
"redux-logger": "2.6.1",
44-
"redux-throttle-actions": "1.0.1",
44+
"redux-throttle-actions": "1.1.0",
4545
"redux-thunk": "2.1.0",
4646
"reselect": "^2.5.1"
4747
},

src/components/Page/ProgressBar/index.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@ const style = {
88
};
99

1010
const ProgressBar: React.StatelessComponent<{
11-
taskPosition: number, taskLength: number, completed: boolean
12-
}> = ({taskPosition, taskLength, completed}) => {
13-
const progress: number = (taskPosition / taskLength) * 100;
11+
taskProgress: number, completed: boolean
12+
}> = ({taskProgress, completed}) => {
1413
if (completed) {
1514
return null;
1615
}
1716
return (
1817
<LinearProgress
1918
mode='determinate'
20-
value={progress}
19+
value={taskProgress}
2120
style={style}
2221
/>
2322
);

src/components/Page/Tasks/index.tsx

+1-5
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,16 @@ export default class Tasks extends React.Component<{
2020
componentDidUpdate() {
2121
ReactDOM.findDOMNode<HTMLElement>(this.refs.listEnd).scrollIntoView();
2222
}
23-
visibleTasks(tasks: CR.Task[], taskPosition: number): CR.Task[] {
24-
return tasks.slice(0, taskPosition + 1);
25-
}
2623
render() {
2724
const {tasks, taskPosition, testRun, completed, page} = this.props;
28-
const visTasks = this.visibleTasks(tasks, taskPosition);
2925
const backgroundColor = completed ? lightGreen200 : 'white';
3026
return (
3127
<div>
3228
<Card style={{backgroundColor, margin}}>
3329
<List>
3430
<Subheader>Tasks</Subheader>
3531

36-
{visTasks.map((task: CR.Task, index: number) => (
32+
{tasks.map((task: CR.Task, index: number) => (
3733
<Task
3834
key={index}
3935
index={index}

src/components/Page/index.tsx

+13-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import Tasks from './Tasks';
77
import Hints from './Hints';
88
import PageToolbar from './PageToolbar';
99
import ProgressBar from './ProgressBar';
10-
import {pageSelector, tasksSelector} from '../../selectors';
10+
import {
11+
pageSelector, tasksSelector, pageCompletedSelector, taskSelector,
12+
taskProgressSelector
13+
} from '../../selectors';
1114

1215
const styles = {
1316
width: '100%',
@@ -22,16 +25,18 @@ const styles = {
2225
taskPosition: state.taskPosition,
2326
hintPosition: state.hintPosition,
2427
pagePosition: state.pagePosition,
28+
completed: pageCompletedSelector(state),
29+
task: taskSelector(state),
30+
taskProgress: taskProgressSelector(state),
2531
}))
2632
export default class Page extends React.Component<{
2733
page?: CR.Page, tasks?: CR.Task[], taskPosition?: number,
28-
hintPosition?: number, testRun?: boolean,
29-
progress?: CR.Progress, pagePosition?: number
34+
hintPosition?: number, testRun?: boolean, task?: CR.Task
35+
progress?: CR.Progress, pagePosition?: number, completed?: boolean,
36+
taskProgress?: number
3037
}, {}> {
3138
render() {
32-
const {page, tasks, taskPosition, hintPosition, testRun, progress, pagePosition} = this.props;
33-
const task = taskPosition <= tasks.length ? tasks[taskPosition] : null;
34-
const completed = progress.pages[pagePosition];
39+
const {page, tasks, taskPosition, hintPosition, testRun, progress,pagePosition, completed, task, visibleTasks, taskProgress} = this.props;
3540
return (
3641
<section style={styles} className='cr-page'>
3742
<ContentCard
@@ -40,7 +45,7 @@ export default class Page extends React.Component<{
4045
/>
4146

4247
<Tasks
43-
tasks={tasks}
48+
tasks={tasks.slice(0, taskPosition + 1)}
4449
taskPosition={taskPosition}
4550
testRun={testRun}
4651
completed={completed}
@@ -56,8 +61,7 @@ export default class Page extends React.Component<{
5661
hintPosition={hintPosition}
5762
/>
5863
<ProgressBar
59-
taskLength={tasks.length}
60-
taskPosition={taskPosition}
64+
taskProgress={taskProgress}
6165
completed={completed}
6266
/>
6367
</PageToolbar>

src/modules/package-json/actions.ts

Whitespace-only changes.

src/modules/package-json/index.ts

-1
This file was deleted.

src/modules/package-json/reducer.ts

-13
This file was deleted.

src/modules/package-json/types.ts

Whitespace-only changes.

src/modules/package-json/utils/packageJson.ts

-13
This file was deleted.

src/modules/page/task-actions/handle-action-string.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default function handleActionString(
2121

2222
case Type.OPEN:
2323
const obj = getOptions(params[0]);
24-
const file = obj.param;
24+
const file: string = obj.param;
2525
const options = obj.options;
2626
if (params.length === 1) {
2727
store.dispatch(editorOpen(file, options));

src/modules/page/task-actions/index.ts

+4-9
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,17 @@ export default function taskActionsReducer(
3131
return actions;
3232

3333
case 'TEST_RESULT':
34-
const {taskActions, result} = action.payload;
35-
// task position from test result
36-
const nextTaskPosition = result.taskPosition;
37-
// calculate task position difference
34+
actions = action.payload.taskActions || [];
35+
const nextTaskPosition = action.payload.result.taskPosition;
3836
const times: number = nextTaskPosition - taskPositionTracker;
39-
//
4037
if (times > 0) {
4138
// run actions for each task position passed
4239
for (let i = 0; i < times; i++) {
43-
// run action
44-
handleTaskActions(actions);
40+
handleTaskActions(actions); // run first action
4541
}
46-
// set current task position
4742
taskPositionTracker = nextTaskPosition;
4843
}
49-
return taskActions;
44+
return actions;
5045

5146
default:
5247
return t;

src/modules/tutorial/reducer.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import {join} from 'path';
2-
import {tutorialConfig} from './utils/config';
32
import {TUTORIAL_SET} from './types';
3+
import {tutorialConfig} from './utils/config';
44
import configPaths from './utils/config-paths';
55

66
const _tutorial: CR.Tutorial = {
77
name: null,
88
info: null,
99
pages: [],
1010
packageJson: null,
11+
config: null,
1112
};
1213

1314
export default function tutorialReducer(

src/selectors.ts

+26
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,30 @@ export const tasksSelector = createSelector(
77
page => page.tasks
88
);
99

10+
export const taskPositionSelector = state => state.taskPosition;
11+
12+
export const pageCompletedSelector = state => state.progress.pages[state.pagePosition];
13+
14+
export const taskSelector = state => createSelector(
15+
tasksSelector,
16+
tasks => {
17+
return (
18+
tasks.length <= tasks.length ? tasksSelector(state)[state.taskPosition] : null
19+
);
20+
}
21+
);
22+
23+
export const visibleTasksSelector = state => createSelector(
24+
tasksSelector,
25+
tasks => {
26+
console.log(tasks);
27+
return tasks.slice(0, state.taskPosition + 1);
28+
}
29+
);
30+
31+
export const taskProgressSelector = state => createSelector(
32+
tasksSelector,
33+
tasks => (state.taskPosition / tasks.length) * 100
34+
);
35+
1036
export const configSelector = state => state.packageJson.config;

tsconfig.json

-5
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@
3131
"src/modules/hints/index.ts",
3232
"src/modules/hints/reducer.ts",
3333
"src/modules/hints/types.ts",
34-
"src/modules/package-json/actions.ts",
35-
"src/modules/package-json/index.ts",
36-
"src/modules/package-json/reducer.ts",
37-
"src/modules/package-json/types.ts",
38-
"src/modules/package-json/utils/packageJson.ts",
3934
"src/modules/page/actions.ts",
4035
"src/modules/page/index.ts",
4136
"src/modules/page/page-position/index.ts",

0 commit comments

Comments
 (0)