Skip to content

Commit f1705b2

Browse files
committed
outline add action, page, hint methods
1 parent 8a9c83b commit f1705b2

File tree

15 files changed

+277
-31
lines changed

15 files changed

+277
-31
lines changed

lib/modules/tutorial/actions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ function tutorialTaskAdd(pagePosition, taskPosition) {
3131
return { type: types_1.TUTORIAL_TASK_ADD, payload: { pagePosition: pagePosition, taskPosition: taskPosition } };
3232
}
3333
exports.tutorialTaskAdd = tutorialTaskAdd;
34-
function tutorialActionAdd(pagePosition, taskPosition) {
35-
return { type: types_1.TUTORIAL_ACTION_ADD, payload: { pagePosition: pagePosition, taskPosition: taskPosition } };
34+
function tutorialActionAdd(pagePosition, taskPosition, tutorialAction) {
35+
return { type: types_1.TUTORIAL_ACTION_ADD, payload: { pagePosition: pagePosition, taskPosition: taskPosition, tutorialAction: tutorialAction } };
3636
}
3737
exports.tutorialActionAdd = tutorialActionAdd;
3838
function tutorialHintAdd(pagePosition, taskPosition) {

lib/modules/tutorial/reducer.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ var types_1 = require('./types');
33
var coderoad_cli_1 = require('coderoad-cli');
44
var fs_1 = require('fs');
55
var path_1 = require('path');
6-
var pageNew_1 = require('./utils/pageNew');
6+
var taskUpdate_1 = require('./utils/taskUpdate');
7+
var pageGet_1 = require('./utils/pageGet');
8+
var taskGet_1 = require('./utils/taskGet');
79
var _tutorial = {
810
info: {
911
title: '',
1012
description: '',
1113
},
12-
pages: [].concat(pageNew_1.default(0))
14+
pages: [].concat(pageGet_1.default(0))
1315
};
1416
function tutorial(t, action) {
1517
if (t === void 0) { t = _tutorial; }
@@ -29,8 +31,23 @@ function tutorial(t, action) {
2931
var data = JSON.parse(fs_1.readFileSync(path_1.join(action.payload.dir, 'coderoad.json'), 'utf8'));
3032
return data;
3133
case types_1.TUTORIAL_PAGE_ADD:
32-
var pages = t.pages.concat(pageNew_1.default(t.pages.length));
34+
var pages = t.pages.concat(pageGet_1.default(t.pages.length));
3335
return Object.assign({}, t, { pages: pages });
36+
case types_1.TUTORIAL_TASK_ADD:
37+
var pagePosition = action.payload.pagePosition;
38+
var tasks = t.pages[pagePosition].tasks;
39+
tasks.push(taskGet_1.default(pagePosition, tasks.length));
40+
var updatedPage = Object.assign({}, t.pages[pagePosition], { tasks: tasks });
41+
t.pages[pagePosition] = updatedPage;
42+
return Object.assign({}, t);
43+
case types_1.TUTORIAL_ACTION_ADD:
44+
var _b = action.payload, pagePosition = _b.pagePosition, taskPosition = _b.taskPosition, tutorialAction = _b.tutorialAction;
45+
var tut = taskUpdate_1.default(t, pagePosition, taskPosition, 'actions', tutorialAction);
46+
return tut;
47+
case types_1.TUTORIAL_HINT_ADD:
48+
var _c = action.payload, pagePosition = _c.pagePosition, taskPosition = _c.taskPosition;
49+
var tut = taskUpdate_1.default(t, pagePosition, taskPosition, 'hints', '');
50+
return tut;
3451
default:
3552
return t;
3653
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"use strict";
2+
var taskGet_1 = require('./taskGet');
3+
function pageGet(index) {
4+
return {
5+
title: "Page " + (index + 1),
6+
description: "page " + (index + 1) + " description",
7+
tasks: [taskGet_1.default(index, 0)]
8+
};
9+
}
10+
Object.defineProperty(exports, "__esModule", { value: true });
11+
exports.default = pageGet;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var path_1 = require('path');
3+
function twoDigitify(n) {
4+
return n > 9 ? '' + n : '0' + n;
5+
}
6+
function taskGet(pagePosition, taskPosition) {
7+
return {
8+
tests: [].concat(path_1.join(twoDigitify(pagePosition + 1), twoDigitify(taskPosition + 1))),
9+
description: '',
10+
hints: [],
11+
actions: [],
12+
};
13+
}
14+
Object.defineProperty(exports, "__esModule", { value: true });
15+
exports.default = taskGet;

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"coderoad-cli": "0.6.0",
2828
"core-coderoad": "0.1.0",
2929
"highlights": "1.3.1",
30+
"lodash.merge": "4.4.0",
3031
"marked": "0.3.5",
3132
"material-ui": "0.15.0",
3233
"node-file-exists": "1.1.0",

src/modules/tutorial/actions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export function tutorialTaskAdd(pagePosition: number, taskPosition: number) {
3434
return { type: TUTORIAL_TASK_ADD, payload: { pagePosition, taskPosition } };
3535
}
3636

37-
export function tutorialActionAdd(pagePosition: number, taskPosition: number) {
38-
return { type: TUTORIAL_ACTION_ADD, payload: { pagePosition, taskPosition } };
37+
export function tutorialActionAdd(pagePosition: number, taskPosition: number, tutorialAction: Object) {
38+
return { type: TUTORIAL_ACTION_ADD, payload: { pagePosition, taskPosition, tutorialAction } };
3939
}
4040

4141
export function tutorialHintAdd(pagePosition: number, taskPosition: number) {

src/modules/tutorial/reducer.ts

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ import {
55
import {create, build} from 'coderoad-cli';
66
import {readFileSync} from 'fs';
77
import {join} from 'path';
8-
// import taskUpdate from './utils/taskUpdate';
9-
import pageNew from './utils/pageNew';
8+
import taskUpdate from './utils/taskUpdate';
9+
import pageGet from './utils/pageGet';
10+
import taskGet from './utils/taskGet';
11+
import * as merge from 'lodash.merge';
1012

1113
const _tutorial: CR.Tutorial = {
1214
info: {
1315
title: '',
1416
description: '',
1517
},
16-
pages: [].concat(pageNew(0))
18+
pages: [].concat(pageGet(0))
1719
};
1820

1921
export default function tutorial(t = _tutorial, action: Action): CR.Tutorial {
@@ -44,12 +46,31 @@ export default function tutorial(t = _tutorial, action: Action): CR.Tutorial {
4446

4547
case TUTORIAL_PAGE_ADD:
4648
// add a new page template
47-
const pages = t.pages.concat(pageNew(t.pages.length));
49+
const pages = t.pages.concat(pageGet(t.pages.length));
4850
return Object.assign({}, t, {pages});
4951

50-
// case TUTORIAL_ADD_HINT:
51-
// const {pagePosition, taskPosition} = action.payload;
52-
// t.pages[pagePosition].tasks[taskPosition].hints.concat('')
52+
case TUTORIAL_TASK_ADD:
53+
const {pagePosition} = action.payload;
54+
// add task
55+
const tasks = t.pages[pagePosition].tasks;
56+
tasks.push(taskGet(pagePosition, tasks.length));
57+
// TODO: remove mutation, use merge
58+
// update page tasks
59+
const updatedPage = Object.assign({}, t.pages[pagePosition], {tasks});
60+
t.pages[pagePosition] = updatedPage;
61+
// update pages
62+
return Object.assign({}, t);
63+
64+
case TUTORIAL_ACTION_ADD:
65+
const {pagePosition, taskPosition, tutorialAction} = action.payload;
66+
const tut = taskUpdate(t, pagePosition, taskPosition, 'actions', tutorialAction);
67+
return tut;
68+
69+
case TUTORIAL_HINT_ADD:
70+
const {pagePosition, taskPosition} = action.payload;
71+
const tut = taskUpdate(t, pagePosition, taskPosition, 'hints', '');
72+
return tut;
73+
5374

5475
default:
5576
return t;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import taskGet from './taskGet';
2+
3+
export default function pageGet(index: number) {
4+
return {
5+
title: `Page ${index + 1}`,
6+
description: `page ${index + 1} description`,
7+
tasks: [taskGet(index, 0)]
8+
};
9+
}

src/modules/tutorial/utils/pageNew.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {join} from 'path';
2+
3+
function twoDigitify(n: number): string {
4+
return n > 9 ? '' + n : '0' + n;
5+
}
6+
7+
export default function taskGet(
8+
pagePosition: number, taskPosition: number
9+
): CR.Task {
10+
return {
11+
tests: [].concat(
12+
join(twoDigitify(pagePosition + 1), twoDigitify(taskPosition + 1))
13+
),
14+
description: '',
15+
hints: [],
16+
actions: [],
17+
};
18+
}

0 commit comments

Comments
 (0)