Skip to content

Commit eab6f71

Browse files
committed
slide out menu, save button
1 parent c6efd06 commit eab6f71

File tree

17 files changed

+94
-65
lines changed

17 files changed

+94
-65
lines changed

lib/atom/editor.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ function setAtomGlobals() {
1616
}
1717
exports.setAtomGlobals = setAtomGlobals;
1818
var getEditorCount = 0;
19+
function save() {
20+
var editor = findEditor();
21+
editor.save();
22+
}
23+
exports.save = save;
1924
function findEditor() {
2025
var editor = atom.workspace.getActiveTextEditor();
2126
if (!editor) {

lib/components/_components.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use strict";
22
var app_1 = require('./app/app');
33
exports.App = app_1.default;
4-
var router_1 = require('./app/router');
4+
var router_1 = require('./router');
55
exports.Router = router_1.default;
66
var page_1 = require('./page/page');
77
exports.Page = page_1.default;

lib/components/app/app.js

Lines changed: 2 additions & 3 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; }
@@ -18,7 +18,6 @@ var react_redux_1 = require('react-redux');
1818
var _components_1 = require('../_components');
1919
var ThemeManager = require('material-ui/lib/styles/theme-manager');
2020
var theme_1 = require('../theme/theme');
21-
var react_addons_css_transition_group_1 = require('react-addons-css-transition-group');
2221
var default_1 = (function (_super) {
2322
__extends(default_1, _super);
2423
function default_1() {
@@ -31,7 +30,7 @@ var default_1 = (function (_super) {
3130
};
3231
default_1.prototype.render = function () {
3332
var state = this.props.state;
34-
return (React.createElement(react_addons_css_transition_group_1.default, {transitionName: 'example', transitionEnterTimeout: 500, transitionLeaveTimeout: 300}, React.createElement("section", {className: 'cr', key: 'main'}, React.createElement(_components_1.Menu, {route: state.route, position: state.position}), React.createElement(_components_1.Router, {state: state}), React.createElement(_components_1.Alert, {alert: state.alert}))));
33+
return (React.createElement("section", {className: 'cr', key: 'main'}, React.createElement(_components_1.Menu, {route: state.route, position: state.position}), React.createElement(_components_1.Router, {state: state}), React.createElement(_components_1.Alert, {alert: state.alert})));
3534
};
3635
default_1.childContextTypes = {
3736
muiTheme: React.PropTypes.object,

lib/components/page/toolbar.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ var React = require('react');
1717
var react_redux_1 = require('react-redux');
1818
var Action = require('../../actions/actions');
1919
var material_ui_1 = require('material-ui');
20+
var editor_1 = require('../../atom/editor');
2021
var ProgressBar = function (_a) {
2122
var progress = _a.progress;
22-
return React.createElement(material_ui_1.LinearProgress, {mode: 'determinate', value: progress, style: { height: '8px' }});
23+
return React.createElement(material_ui_1.LinearProgress, {mode: 'determinate', value: progress, style: { height: '10px' }});
2324
};
2425
function taskProgress(current, max) {
2526
return (current / max) * 100;
@@ -37,13 +38,13 @@ var default_1 = (function (_super) {
3738
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 ?
3839
React.createElement(material_ui_1.RaisedButton, {label: 'Continue', primary: true, onTouchTap: callNextPage})
3940
:
40-
React.createElement(material_ui_1.RaisedButton, {label: 'Run', secondary: true, onTouchTap: callRunTests})))));
41+
React.createElement(material_ui_1.RaisedButton, {label: 'Save', secondary: true, onTouchTap: callRunTests})))));
4142
};
4243
default_1 = __decorate([
4344
react_redux_1.connect(null, function (dispatch, state) {
4445
return {
4546
callNextPage: function () { return dispatch(Action.nextPage()); },
46-
callRunTests: function () { return dispatch(Action.runTests()); },
47+
callSave: function () { return editor_1.save(); },
4748
toggleLog: function () { return dispatch(Action.toggleLog()); }
4849
};
4950
}),

lib/components/router.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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 React = require('react');
8+
var _components_1 = require('./_components');
9+
var default_1 = (function (_super) {
10+
__extends(default_1, _super);
11+
function default_1() {
12+
_super.apply(this, arguments);
13+
}
14+
default_1.prototype.chooseRoute = function (state) {
15+
switch (state.route) {
16+
case 'page':
17+
return React.createElement(_components_1.Page, {page: state.page, tasks: state.tasks, taskPosition: state.taskPosition, hintPosition: state.hintPosition, editorActions: state.editorActions, runTests: state.runTests, log: state.log});
18+
case 'progress':
19+
return React.createElement(_components_1.Progress, {progress: state.progress, position: state.position});
20+
case 'projects':
21+
return React.createElement(_components_1.Projects, {tutorials: state.tutorials});
22+
default:
23+
throw 'Error: Route not found.';
24+
}
25+
};
26+
default_1.prototype.render = function () {
27+
var state = this.props.state;
28+
return this.chooseRoute(state);
29+
};
30+
return default_1;
31+
}(React.Component));
32+
Object.defineProperty(exports, "__esModule", { value: true });
33+
exports.default = default_1;

src/actions/actions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export function logMessage(message: string): CR.Action {
3838
return { type: Type.LOG_MESSAGE, payload: { message }};
3939
}
4040

41+
4142
/* Page */
4243
export {setPage, nextPage} from './page-actions';
4344

src/atom/editor.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ export function setAtomGlobals() {
1616

1717
let getEditorCount = 0;
1818

19+
export function save() {
20+
const editor = findEditor();
21+
editor.save();
22+
}
23+
1924
export function findEditor() {
2025
let editor = atom.workspace.getActiveTextEditor();
2126
if (!editor) {

src/components/_components.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
export {default as App} from './app/app';
66

77
// Router
8-
export {default as Router} from './app/router';
8+
export {default as Router} from './router';
99

1010
// Components
1111
export {default as Page} from './page/page';

src/components/_index.less

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
// root: ../styles/tut.less
1+
@import './app/_app';
22
@import './menu/_menu';
33
@import './page/_chapter';
44
@import './page/_page';
55
@import './progress/_progress';
66
@import './alert/_alert';
77
@import './projects/_projects';
8-
@import './app/app';
98

109
#crv {
11-
width: 400px;
1210
height: 100%;
1311
overflow: scroll;
1412
}

src/components/app/_app.less

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
atom-panel-container > atom-panel > #crv {
2+
animation: slide 0.3s forwards;
3+
animation-timing-function: ease-in-out;
4+
}
5+
6+
@keyframes slide {
7+
0% { width: 0px; }
8+
}
9+
@keyframes slide {
10+
100% { width: 400px; }
11+
}

src/components/app/app.less

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

src/components/app/app.tsx

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
'use strict';
21
import * as React from 'react';
32
import {connect} from 'react-redux';
43
import {Menu, Router, Alert} from '../_components';
54
import * as ThemeManager from 'material-ui/lib/styles/theme-manager';
65
import Theme from '../theme/theme';
7-
import ReactCSSTransitionGroup from 'react-addons-css-transition-group';
86

9-
/**
10-
* App Component
11-
*/
127
@connect((state: CR.State) => {
138
return { state };
149
})
1510
export default class extends React.Component<{state?: CR.State}, {}> {
1611
static childContextTypes = {
17-
muiTheme: React.PropTypes.object,
18-
};
12+
muiTheme: React.PropTypes.object,
13+
};
1914
getChildContext() {
2015
return {
2116
muiTheme: ThemeManager.getMuiTheme(Theme)
@@ -24,13 +19,11 @@ export default class extends React.Component<{state?: CR.State}, {}> {
2419
render(): React.ReactElement<{}> {
2520
const state = this.props.state;
2621
return (
27-
<ReactCSSTransitionGroup transitionName='example' transitionEnterTimeout={500} transitionLeaveTimeout={300}>
28-
<section className='cr' key='main'>
29-
<Menu route={state.route} position={state.position} />
30-
<Router state={state} />
31-
<Alert alert={state.alert} />
32-
</section>
33-
</ReactCSSTransitionGroup>
22+
<section className='cr' key='main'>
23+
<Menu route={state.route} position={state.position} />
24+
<Router state={state} />
25+
<Alert alert={state.alert} />
26+
</section>
3427
);
3528
}
3629
};

src/components/page/toolbar.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import * as React from 'react';
22
import {connect} from 'react-redux';
33
import * as Action from '../../actions/actions';
44
import {LinearProgress, Toolbar, ToolbarGroup, RaisedButton} from 'material-ui';
5+
import {save} from '../../atom/editor';
56

67
const ProgressBar = ({progress}) => <LinearProgress mode='determinate'
7-
value={progress} style={{height: '8px'}}/>;
8+
value={progress} style={{height: '10px'}}/>;
89

910
function taskProgress(current: number, max: number) {
1011
return (current / max) * 100;
@@ -13,7 +14,7 @@ function taskProgress(current: number, max: number) {
1314
@connect(null, (dispatch, state) => {
1415
return {
1516
callNextPage: () => dispatch(Action.nextPage()),
16-
callRunTests: () => dispatch(Action.runTests()),
17+
callSave: () => save(),
1718
toggleLog: () => dispatch(Action.toggleLog())
1819
};
1920
})
@@ -39,7 +40,7 @@ export default class extends React.Component<{
3940
{allComplete ?
4041
<RaisedButton label='Continue' primary={true} onTouchTap={callNextPage}/>
4142
:
42-
<RaisedButton label='Run' secondary={true} onTouchTap={callRunTests}/>
43+
<RaisedButton label='Save' secondary={true} onTouchTap={callRunTests}/>
4344
}
4445
</ToolbarGroup>
4546

src/components/app/router.tsx renamed to src/components/router.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import {Page, Progress, Projects} from '../_components';
2+
import {Page, Progress, Projects} from './_components';
33

44
export default class extends React.Component<{state: CR.State}, {}> {
55
chooseRoute(state: CR.State) {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare module 'react-tap-event-plugin'{
2-
var exports:()=>any;
1+
declare module 'react-tap-event-plugin' {
2+
var exports: () => any;
33
export = exports;
44
}

styles/styles.css

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
atom-panel-container > atom-panel > #crv {
2+
animation: slide 0.3s forwards;
3+
animation-timing-function: ease-in-out;
4+
}
5+
@keyframes slide {
6+
0% {
7+
width: 0px;
8+
}
9+
}
10+
@keyframes slide {
11+
100% {
12+
width: 400px;
13+
}
14+
}
115
.cr .cr-menu-bar {
216
z-index: 999 !important;
317
}
@@ -113,22 +127,7 @@
113127
.cr-tutorials {
114128
padding: 10px;
115129
}
116-
.example-enter {
117-
opacity: 0.01;
118-
}
119-
.example-enter.example-enter-active {
120-
opacity: 1;
121-
transition: opacity 500ms ease-in;
122-
}
123-
.example-leave {
124-
opacity: 1;
125-
}
126-
.example-leave.example-leave-active {
127-
opacity: 0.01;
128-
transition: opacity 300ms ease-in;
129-
}
130130
#crv {
131-
width: 400px;
132131
height: 100%;
133132
overflow: scroll;
134133
}

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@
9797
"src/components/account/signup.tsx",
9898
"src/components/alert/alert.tsx",
9999
"src/components/app/app.tsx",
100-
"src/components/app/router.tsx",
101100
"src/components/markdown/markdown.tsx",
102101
"src/components/menu/menu.tsx",
103102
"src/components/page/chapter.tsx",
@@ -111,7 +110,8 @@
111110
"src/components/page/toolbar.tsx",
112111
"src/components/progress/progress.tsx",
113112
"src/components/projects/projects.tsx",
114-
"src/components/render.tsx"
113+
"src/components/render.tsx",
114+
"src/components/router.tsx"
115115
],
116116
"exclude": [
117117
"node_modules"

0 commit comments

Comments
 (0)