Skip to content

Commit 2cc75aa

Browse files
committed
top panel events: pageSet, tutorialAddPage
1 parent 5f7e5a0 commit 2cc75aa

File tree

23 files changed

+174
-48
lines changed

23 files changed

+174
-48
lines changed

lib/actions.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
"use strict";
2+
var page_position_1 = require('./modules/page-position');
3+
exports.pageSet = page_position_1.pageSet;
24
var package_json_1 = require('./modules/package-json');
35
exports.pjSave = package_json_1.pjSave;
46
var setup_1 = require('./modules/setup');
@@ -7,6 +9,7 @@ exports.setupPackage = setup_1.setupPackage;
79
var tutorial_1 = require('./modules/tutorial');
810
exports.tutorialInit = tutorial_1.tutorialInit;
911
exports.tutorialLoad = tutorial_1.tutorialLoad;
12+
exports.tutorialPageAdd = tutorial_1.tutorialPageAdd;
1013
var alert_1 = require('core-coderoad/lib/alert');
1114
exports.alertOpen = alert_1.alertOpen;
1215
exports.alertClose = alert_1.alertClose;

lib/components/TopPanel/PageTab.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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 Tabs_1 = require('material-ui/Tabs');
19+
var actions_1 = require('../../actions');
20+
var PageTab = (function (_super) {
21+
__extends(PageTab, _super);
22+
function PageTab() {
23+
_super.apply(this, arguments);
24+
}
25+
PageTab.prototype.render = function () {
26+
var _a = this.props, page = _a.page, index = _a.index, pageSet = _a.pageSet;
27+
return (React.createElement(Tabs_1.Tab, {key: 'add', label: page.title.substring(0, 10), onTouchTap: pageSet.bind(this, index)}));
28+
};
29+
PageTab = __decorate([
30+
react_redux_1.connect(null, function (dispatch) {
31+
return {
32+
pageSet: function (index) { return actions_1.pageSet(index); }
33+
};
34+
}),
35+
__metadata('design:paramtypes', [])
36+
], PageTab);
37+
return PageTab;
38+
}(React.Component));
39+
Object.defineProperty(exports, "__esModule", { value: true });
40+
exports.default = PageTab;

lib/components/TopPanel/TopApp.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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 __assign = (this && this.__assign) || Object.assign || function(t) {
8+
for (var s, i = 1, n = arguments.length; i < n; i++) {
9+
s = arguments[i];
10+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11+
t[p] = s[p];
12+
}
13+
return t;
14+
};
15+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18+
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;
19+
return c > 3 && r && Object.defineProperty(target, key, r), r;
20+
};
21+
var __metadata = (this && this.__metadata) || function (k, v) {
22+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
23+
};
24+
var React = require('react');
25+
var react_redux_1 = require('react-redux');
26+
var TopPanel_1 = require('./TopPanel');
27+
var TopApp = (function (_super) {
28+
__extends(TopApp, _super);
29+
function TopApp() {
30+
_super.apply(this, arguments);
31+
}
32+
TopApp.prototype.render = function () {
33+
return React.createElement(TopPanel_1.default, __assign({}, this.props.store));
34+
};
35+
TopApp = __decorate([
36+
react_redux_1.connect(function (store) {
37+
return { store: store };
38+
}),
39+
__metadata('design:paramtypes', [])
40+
], TopApp);
41+
return TopApp;
42+
}(React.Component));
43+
Object.defineProperty(exports, "__esModule", { value: true });
44+
exports.default = TopApp;

lib/components/TopPanel/TopPanel.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var React = require('react');
1717
var react_redux_1 = require('react-redux');
1818
var Tabs_1 = require('material-ui/Tabs');
1919
var add_1 = require('material-ui/svg-icons/content/add');
20-
var pageTabs_1 = require('./pageTabs');
20+
var actions_1 = require('../../actions');
2121
var styles = {
2222
tabs: {
2323
marginRight: '400px',
@@ -29,12 +29,21 @@ var TopPanel = (function (_super) {
2929
_super.apply(this, arguments);
3030
}
3131
TopPanel.prototype.render = function () {
32-
return (React.createElement(Tabs_1.Tabs, {style: styles.tabs}, pageTabs_1.default(this.props.tutorial), React.createElement(Tabs_1.Tab, {icon: React.createElement(add_1.default, null)})));
32+
var _this = this;
33+
var _a = this.props, tutorial = _a.tutorial, pagePosition = _a.pagePosition, pageSet = _a.pageSet, pageAdd = _a.pageAdd;
34+
if (!tutorial || !tutorial.pages) {
35+
return null;
36+
}
37+
return (React.createElement(Tabs_1.Tabs, {style: styles.tabs}, tutorial.pages.map(function (page, index) {
38+
return (React.createElement(Tabs_1.Tab, {key: index.toString(), label: page.title.substring(0, 10), onClick: pageSet.bind(_this, index)}));
39+
}), React.createElement(Tabs_1.Tab, {icon: React.createElement(add_1.default, {onClick: pageAdd})})));
3340
};
3441
TopPanel = __decorate([
35-
react_redux_1.connect(function (_a) {
36-
var tutorial = _a.tutorial;
37-
return { tutorial: tutorial };
42+
react_redux_1.connect(null, function (dispatch) {
43+
return {
44+
pageSet: function (index) { return dispatch(actions_1.pageSet(index)); },
45+
pageAdd: function () { return dispatch(actions_1.tutorialPageAdd()); }
46+
};
3847
}),
3948
__metadata('design:paramtypes', [])
4049
], TopPanel);

lib/components/TopPanel/pageTabs.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
"use strict";
22
var React = require('react');
33
var Tabs_1 = require('material-ui/Tabs');
4+
var actions_1 = require('../../actions');
45
var styles = {};
5-
function pageTabs(tutorial) {
6-
console.log('tut', tutorial);
6+
function pageTabs(tutorial, pagePosition) {
7+
var _this = this;
78
if (!tutorial || !tutorial.pages) {
89
return null;
910
}
10-
return tutorial.pages.map(function (page) {
11-
return (React.createElement(Tabs_1.Tab, {label: page.title.substring(0, 10)}));
11+
return tutorial.pages.map(function (page, index) {
12+
return (React.createElement(Tabs_1.Tab, {key: index.toString(), label: page.title.substring(0, 10), onTouchTap: actions_1.pageSet.bind(_this, index)}));
1213
});
1314
}
1415
Object.defineProperty(exports, "__esModule", { value: true });

lib/components/TopPanel/render.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ var React = require('react');
33
var ReactDOM = require('react-dom');
44
var react_redux_1 = require('react-redux');
55
var store_1 = require('../../store');
6-
var TopPanel_1 = require('./TopPanel');
6+
var TopApp_1 = require('./TopApp');
77
var theme_1 = require('../styles/theme');
88
var MuiThemeProvider_1 = require('material-ui/styles/MuiThemeProvider');
99
function render(target) {
10-
ReactDOM.render(React.createElement(react_redux_1.Provider, {store: store_1.default}, React.createElement(MuiThemeProvider_1.default, {muiTheme: theme_1.default}, React.createElement(TopPanel_1.default, null))), target);
10+
ReactDOM.render(React.createElement(react_redux_1.Provider, {store: store_1.default}, React.createElement(MuiThemeProvider_1.default, {muiTheme: theme_1.default}, React.createElement(TopApp_1.default, null))), target);
1111
}
1212
Object.defineProperty(exports, "__esModule", { value: true });
1313
exports.default = render;

lib/components/common/Save.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var Save = (function (_super) {
3333
return (React.createElement(RaisedButton_1.default, {label: 'Save', style: styles, secondary: true, onTouchTap: this.props.save}));
3434
};
3535
Save = __decorate([
36-
react_redux_1.connect(null, function (dispatch, state) {
36+
react_redux_1.connect(null, function (dispatch) {
3737
return {
3838
save: function () { return dispatch(actions_1.editorSave()); }
3939
};

lib/modules/page-position/actions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var types_1 = require('./types');
3-
function pageSet(position) {
4-
return { type: types_1.PAGE_SET };
3+
function pageSet(pagePosition) {
4+
return { type: types_1.PAGE_SET, payload: { pagePosition: pagePosition } };
55
}
66
exports.pageSet = pageSet;

lib/modules/tutorial/actions.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,8 @@ function tutorialBuild() {
2323
};
2424
}
2525
exports.tutorialBuild = tutorialBuild;
26+
function tutorialPageAdd() {
27+
console.log('called tutorialPageAdd');
28+
return { type: types_1.TUTORIAL_PAGE_ADD };
29+
}
30+
exports.tutorialPageAdd = tutorialPageAdd;

lib/modules/tutorial/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ var actions_1 = require('./actions');
33
exports.tutorialInit = actions_1.tutorialInit;
44
exports.tutorialLoad = actions_1.tutorialLoad;
55
exports.tutorialBuild = actions_1.tutorialBuild;
6+
exports.tutorialPageAdd = actions_1.tutorialPageAdd;
67
var reducer_1 = require('./reducer');
78
exports.reducer = reducer_1.default;

lib/modules/tutorial/types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
exports.TUTORIAL_INIT = 'TUTORIAL_INIT';
33
exports.TUTORIAL_LOAD = 'TUTORIAL_LOAD';
44
exports.TUTORIAL_BUILD = 'TUTORIAL_BUILD';
5-
exports.TUTORIAL_ADD_PAGE = 'TUTORIAL_ADD_PAGE';
5+
exports.TUTORIAL_PAGE_ADD = 'TUTORIAL_PAGE_ADD';

lib/store.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var reducers_1 = require('./reducers');
44
var createLogger = require('redux-logger');
55
var redux_thunk_1 = require('redux-thunk');
66
var middlewares = [redux_thunk_1.default];
7-
var devMode = false;
7+
var devMode = true;
88
if (devMode) {
99
var logger = createLogger();
1010
middlewares.push(logger);

src/actions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
export {pageSet} from './modules/page';
1+
export {pageSet} from './modules/page-position';
22
export {pjSave} from './modules/package-json';
33
export {setupVerify, setupPackage} from './modules/setup';
4-
export {tutorialInit, tutorialLoad} from './modules/tutorial';
4+
export {tutorialInit, tutorialLoad, tutorialPageAdd} from './modules/tutorial';
55

66
export {alertOpen, alertClose, alertReplay} from 'core-coderoad/lib/alert';
77
export {editorDevToolsToggle, editorOpen, editorInsert,

src/components/TopPanel/TopApp.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import * as React from 'react';
2+
import {connect} from 'react-redux';
3+
import TopPanel from './TopPanel';
4+
5+
@connect((store: CR.State) => {
6+
return { store };
7+
})
8+
export default class TopApp extends React.Component<{
9+
store?: CR.State
10+
}, {}> {
11+
render() {
12+
return <TopPanel {...this.props.store} />;
13+
}
14+
}

src/components/TopPanel/TopPanel.tsx

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,42 @@ import * as React from 'react';
22
import {connect} from 'react-redux';
33
import {Tabs, Tab} from 'material-ui/Tabs';
44
import Add from 'material-ui/svg-icons/content/add';
5-
import pageTabs from './pageTabs';
5+
import {pageSet, tutorialPageAdd} from '../../actions';
66

77
const styles = {
88
tabs: {
99
marginRight: '400px',
1010
},
1111
};
1212

13-
@connect(({tutorial}) => {
14-
return { tutorial };
13+
@connect(null, dispatch => {
14+
return {
15+
pageSet: (index: number) => dispatch(pageSet(index)),
16+
pageAdd: () => dispatch(tutorialPageAdd())
17+
};
1518
})
1619
export default class TopPanel extends React.Component<{
17-
tutorial?: CR.Tutorial
20+
tutorial: CR.Tutorial, pagePosition: number,
21+
pageSet?: (index: number) => any, pageAdd?: () => any
1822
}, {}> {
1923
render() {
24+
const {tutorial, pagePosition, pageSet, pageAdd} = this.props;
25+
26+
// no tutorial or pages? no need for a tab bar
27+
if (!tutorial || !tutorial.pages) { return null; }
28+
2029
return (
2130
<Tabs style={styles.tabs}>
22-
{pageTabs(this.props.tutorial)}
23-
<Tab icon={<Add />} />
31+
{tutorial.pages.map((page: CR.Page, index) => {
32+
return (
33+
<Tab
34+
key={index.toString()}
35+
label={page.title.substring(0, 10)}
36+
onClick={pageSet.bind(this, index)}
37+
/>
38+
);
39+
})}
40+
<Tab icon={<Add onClick={pageAdd}/>} />
2441
</Tabs>
2542
);
2643
}

src/components/TopPanel/pageTabs.tsx

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

src/components/TopPanel/render.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import * as React from 'react';
22
import * as ReactDOM from 'react-dom';
33
import {Provider} from 'react-redux';
44
import store from '../../store';
5-
import TopPanel from './TopPanel';
5+
import TopApp from './TopApp';
66
import muiTheme from '../styles/theme';
77
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
88

99
export default function render(target: HTMLElement) {
1010
ReactDOM.render(
1111
<Provider store={store}>
1212
<MuiThemeProvider muiTheme={muiTheme}>
13-
<TopPanel />
13+
<TopApp />
1414
</MuiThemeProvider>
1515
</Provider>,
1616
target

src/components/common/Save.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const styles = {
1111
top: '10px',
1212
};
1313

14-
@connect(null, (dispatch, state) => {
14+
@connect(null, dispatch => {
1515
return {
1616
save: () => dispatch(editorSave())
1717
};

src/modules/page-position/actions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {PAGE_SET} from './types';
22

3-
export function pageSet(position: number) {
4-
return { type: PAGE_SET };
3+
export function pageSet(pagePosition: number) {
4+
return { type: PAGE_SET, payload: { pagePosition } };
55
}

src/modules/tutorial/actions.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import {TUTORIAL_INIT, TUTORIAL_LOAD, TUTORIAL_BUILD} from './types';
1+
import {
2+
TUTORIAL_INIT, TUTORIAL_LOAD, TUTORIAL_BUILD, TUTORIAL_PAGE_ADD
3+
} from './types';
24

35
export function tutorialInit() {
46
return function(dispatch, getState) {
@@ -22,3 +24,8 @@ export function tutorialBuild() {
2224
dispatch({ type: TUTORIAL_BUILD, payload: { dir } });
2325
};
2426
}
27+
28+
export function tutorialPageAdd() {
29+
console.log('called tutorialPageAdd');
30+
return { type: TUTORIAL_PAGE_ADD };
31+
}

src/modules/tutorial/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {tutorialInit, tutorialLoad, tutorialBuild} from './actions';
1+
export {tutorialInit, tutorialLoad, tutorialBuild, tutorialPageAdd} from './actions';
22
export {default as reducer} from './reducer';

src/modules/tutorial/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export const TUTORIAL_INIT = 'TUTORIAL_INIT';
22
export const TUTORIAL_LOAD = 'TUTORIAL_LOAD';
33
export const TUTORIAL_BUILD = 'TUTORIAL_BUILD';
4-
export const TUTORIAL_ADD_PAGE = 'TUTORIAL_ADD_PAGE';
4+
export const TUTORIAL_PAGE_ADD = 'TUTORIAL_PAGE_ADD';

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
"src/components/Start/Welcome/index.tsx",
8888
"src/components/TopPanel/pageTabs.tsx",
8989
"src/components/TopPanel/render.tsx",
90+
"src/components/TopPanel/TopApp.tsx",
9091
"src/components/TopPanel/TopPanel.tsx",
9192
"src/components/TutorialConfig/index.tsx",
9293
"src/components/TutorialConfig/languageItems.tsx",

0 commit comments

Comments
 (0)