Skip to content

Commit 9b055fe

Browse files
committed
refactor tasks/hints into components
1 parent bc975b1 commit 9b055fe

File tree

15 files changed

+114
-172
lines changed

15 files changed

+114
-172
lines changed

lib/components/checks/checks.js

Lines changed: 0 additions & 69 deletions
This file was deleted.

lib/components/page/hint/hint.js

Lines changed: 0 additions & 49 deletions
This file was deleted.

lib/components/page/hints/buttons.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
"use strict";
2+
var __extends = (this && this.__extends) || function (d, b) {
3+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
4+
function __() { this.constructor = d; }
5+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6+
};
7+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11+
return c > 3 && r && Object.defineProperty(target, key, r), r;
12+
};
13+
var __metadata = (this && this.__metadata) || function (k, v) {
14+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15+
};
16+
var React = require('react');
17+
var react_redux_1 = require('react-redux');
18+
var FlatButton_1 = require('material-ui/FlatButton');
19+
var actions_1 = require('../../../actions/actions');
20+
var HintButton = (function (_super) {
21+
__extends(HintButton, _super);
22+
function HintButton() {
23+
_super.apply(this, arguments);
24+
}
25+
HintButton.prototype.render = function () {
26+
var _a = this.props, hintPosition = _a.hintPosition, hintsLength = _a.hintsLength, label = _a.label, direction = _a.direction, nextHint = _a.nextHint;
27+
return React.createElement(FlatButton_1.default, {label: label, disabled: hintPosition > hintsLength - 2, onTouchTap: nextHint.bind(this, hintPosition + direction)});
28+
};
29+
HintButton = __decorate([
30+
react_redux_1.connect(null, function (dispatch, state) {
31+
return {
32+
setHint: function (position) { return dispatch(actions_1.setHintPosition(position)); }
33+
};
34+
}),
35+
__metadata('design:paramtypes', [])
36+
], HintButton);
37+
return HintButton;
38+
}(React.Component));
39+
exports.HintButton = HintButton;

lib/components/page/hints/hints.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var React = require('react');
3+
var Card_1 = require('material-ui/Card');
4+
var _components_1 = require('../../_components');
5+
var buttons_1 = require('./buttons');
6+
var help_1 = require('material-ui/svg-icons/action/help');
7+
exports.Hints = function (_a) {
8+
var task = _a.task, hintPosition = _a.hintPosition;
9+
var hints = task && task.hints ? task.hints : null;
10+
if (hintPosition < 0 || !hints || !hints.length) {
11+
return null;
12+
}
13+
var hint = hints[hintPosition];
14+
return (React.createElement(Card_1.Card, {className: 'cr-task-hints'}, React.createElement(Card_1.CardHeader, {title: 'Hints', avatar: React.createElement(help_1.default, null), actAsExpander: true, showExpandableButton: true}), React.createElement(Card_1.CardText, {className: 'cr-task-hint', expandable: true}, React.createElement(_components_1.Markdown, null, hint)), React.createElement(Card_1.CardActions, {expandable: true}, React.createElement(buttons_1.HintButton, {label: 'Previous', hintPosition: hintPosition, hintsLength: hints.length, direction: -1}), React.createElement(buttons_1.HintButton, {label: 'Next', hintPosition: hintPosition, hintsLength: hints.length, direction: 1}))));
15+
};

lib/components/page/page.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var ReactDOM = require('react-dom');
99
var Paper_1 = require('material-ui/Paper');
1010
var Divider_1 = require('material-ui/Divider');
1111
var content_1 = require('./content');
12-
var task_1 = require('./task/task');
13-
var hint_1 = require('./hint/hint');
12+
var tasks_1 = require('./tasks/tasks');
13+
var hints_1 = require('./hints/hints');
1414
var page_complete_1 = require('./complete/page-complete');
1515
var toolbar_1 = require('./toolbar/toolbar');
1616
var pageStyle = {
@@ -29,7 +29,7 @@ var default_1 = (function (_super) {
2929
var _a = this.props, page = _a.page, taskPosition = _a.taskPosition, hintPosition = _a.hintPosition, tasks = _a.tasks, runTests = _a.runTests;
3030
var currentTask = taskPosition <= tasks.length ? tasks[taskPosition] : null;
3131
var allComplete = taskPosition >= tasks.length;
32-
return (React.createElement(Paper_1.default, {style: pageStyle, zDepth: 1, className: 'cr-page', ref: 'page'}, React.createElement(content_1.PageContent, {page: page}), React.createElement(Divider_1.default, null), React.createElement(task_1.Tasks, {tasks: tasks, taskPosition: taskPosition, runTests: runTests}), React.createElement("div", {className: 'listEnd', ref: 'listEnd'}), React.createElement(hint_1.default, {task: currentTask, hintPosition: hintPosition}), React.createElement(page_complete_1.PageCompleteMessage, {page: page}), React.createElement(toolbar_1.PageToolbar, {tasks: tasks, taskPosition: taskPosition})));
32+
return (React.createElement(Paper_1.default, {style: pageStyle, zDepth: 1, className: 'cr-page', ref: 'page'}, React.createElement(content_1.PageContent, {page: page}), React.createElement(Divider_1.default, null), React.createElement(tasks_1.Tasks, {tasks: tasks, taskPosition: taskPosition, runTests: runTests}), React.createElement("div", {className: 'listEnd', ref: 'listEnd'}), React.createElement(hints_1.Hints, {task: currentTask, hintPosition: hintPosition}), React.createElement(page_complete_1.PageCompleteMessage, {page: page}), React.createElement(toolbar_1.PageToolbar, {tasks: tasks, taskPosition: taskPosition})));
3333
};
3434
return default_1;
3535
}(React.Component));
File renamed without changes.

lib/services/write.js

Whitespace-only changes.

src/components/page/_page.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@import 'task/_task';
1+
@import 'tasks/_tasks';
22
@import 'chapter/_chapter';
33

44
.cr-page {

src/components/page/hint/hint.tsx

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/components/page/hints/buttons.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import * as React from 'react';
2+
import {connect} from 'react-redux';
3+
import FlatButton from 'material-ui/FlatButton';
4+
import {setHintPosition} from '../../../actions/actions';
5+
6+
@connect(null, (dispatch, state) => {
7+
return {
8+
setHint: (position: number) => dispatch(setHintPosition(position))
9+
};
10+
})
11+
export class HintButton extends React.Component<{
12+
hintPosition: number, hintsLength: number, label: string, direction: number,
13+
nextHint?: any
14+
}, {}> {
15+
render() {
16+
const {hintPosition, hintsLength, label, direction, nextHint} = this.props;
17+
return <FlatButton label={label} disabled={hintPosition > hintsLength - 2}
18+
onTouchTap={nextHint.bind(this, hintPosition + direction)} />;
19+
}
20+
}

src/components/page/hints/hints.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as React from 'react';
2+
import {Card, CardActions, CardHeader, CardText} from 'material-ui/Card';
3+
import {Markdown} from '../../_components';
4+
import {HintButton} from './buttons';
5+
import Help from 'material-ui/svg-icons/action/help';
6+
7+
export const Hints: React.StatelessComponent<{
8+
task: CR.Task, hintPosition: number
9+
}> = ({task, hintPosition}) => {
10+
const hints = task && task.hints ? task.hints : null;
11+
if (hintPosition < 0 || !hints || !hints.length) {
12+
return null;
13+
}
14+
const hint = hints[hintPosition];
15+
return (
16+
<Card className='cr-task-hints'>
17+
<CardHeader
18+
title='Hints'
19+
avatar={<Help />}
20+
actAsExpander={true}
21+
showExpandableButton={true} />
22+
<CardText className='cr-task-hint' expandable={true}>
23+
<Markdown>{hint}</Markdown>
24+
</CardText>
25+
<CardActions expandable={true}>
26+
<HintButton label='Previous' hintPosition={hintPosition} hintsLength={hints.length} direction={-1} />
27+
<HintButton label='Next' hintPosition={hintPosition} hintsLength={hints.length} direction={1} />
28+
</CardActions>
29+
</Card>
30+
);
31+
};

src/components/page/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import * as ReactDOM from 'react-dom';
33
import Paper from 'material-ui/Paper';
44
import Divider from 'material-ui/Divider';
55
import {PageContent} from './content';
6-
import {Tasks} from './task/task';
7-
import Hints from './hint/hint';
6+
import {Tasks} from './tasks/tasks';
7+
import {Hints} from './hints/hints';
88
import {PageCompleteMessage} from './complete/page-complete';
99
import {PageToolbar} from './toolbar/toolbar';
1010

tsconfig.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@
107107
"src/components/page/complete/page-complete.tsx",
108108
"src/components/page/content.tsx",
109109
"src/components/page/edit.tsx",
110-
"src/components/page/hint/hint.tsx",
110+
"src/components/page/hints/buttons.tsx",
111+
"src/components/page/hints/hints.tsx",
111112
"src/components/page/page.tsx",
112-
"src/components/page/task/task.tsx",
113+
"src/components/page/tasks/tasks.tsx",
113114
"src/components/page/toolbar/buttons.tsx",
114115
"src/components/page/toolbar/progress-bar.tsx",
115116
"src/components/page/toolbar/toolbar.tsx",

0 commit comments

Comments
 (0)