diff --git a/Gruntfile.js b/Gruntfile.js
index dd7a0115..ff91f02f 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -114,7 +114,8 @@ module.exports = function(grunt) {
],
options: {
ignores: [
- 'src/js/**/*.ios.js'
+ 'src/js/**/*.ios.js',
+ 'src/js/native_react_views/*.js'
],
curly: true,
// sometimes triple equality is just redundant and unnecessary
@@ -217,6 +218,7 @@ module.exports = function(grunt) {
'src/__tests__/casperjs/*.js',
'src/js/__tests__/create.js',
'src/js/__tests__/*.js',
+ 'src/js/native_react_views/*.js',
'src/js/**/*.ios.js'
]
},
diff --git a/src/js/constants/Routes.js b/src/js/constants/Routes.js
new file mode 100644
index 00000000..d9af3475
--- /dev/null
+++ b/src/js/constants/Routes.js
@@ -0,0 +1,19 @@
+var assign = require('object-assign');
+var keyMirror = require('../util/keyMirror');
+
+module.exports = keyMirror({
+ NUX: null,
+ LOADING: null,
+ SEQUENCE_SELECT: null,
+ LEVEL_SELECT: null,
+});
+
+module.exports.getRouteWithParams = function(id, params) {
+ return assign({id: id}, params);
+};
+
+module.exports.getRouteForID = function(id) {
+ return {
+ id: id,
+ };
+};
diff --git a/src/js/native/index.ios.js b/src/js/native/index.ios.js
index 2ed5543b..73d646a9 100755
--- a/src/js/native/index.ios.js
+++ b/src/js/native/index.ios.js
@@ -4,98 +4,49 @@
*/
'use strict';
-var levels = require('../../levels/index.js');
-var LevelStore = require('../stores/LevelStore.js');
-var levelSequences = require('../../levels').levelSequences;
-
var React = require('react-native');
var {
AppRegistry,
- StyleSheet,
Image,
+ Navigator,
ScrollView,
+ StyleSheet,
Text,
TouchableHighlight,
View,
} = React;
+var Routes = require('../constants/Routes');
+var SequenceSelectView = require('../native_react_views/SequenceSelectView');
+var LevelSelectView = require('../native_react_views/LevelSelectView');
+
var LearnGitBranching = React.createClass({
+
+ _renderScene: function(route, navigator) {
+ switch (route.id) {
+ case Routes.SEQUENCE_SELECT:
+ return ;
+ case Routes.LEVEL_SELECT:
+ return ;
+ }
+ throw new Exception('No route found for ' + route.id);
+ },
+
render: function() {
return (
-
-
-
-
- Yo Whatup Peter
-
- {Object.keys(levelSequences).map(function(sequence) {
- return (
-
-
-
-
-
- {sequence}
-
-
-
-
-
- );
- })}
-
-
+
);
- }
+ },
+
});
var styles = StyleSheet.create({
headerSpacer: {
height: 40
},
- logo: {
- width: 300,
- borderRadius: 2,
- justifyContent: 'center',
- flexDirection: 'column',
- alignItems: 'center',
- height: 100
- },
- cardContainer: {
- shadowColor: '#666',
- shadowOpacity: 0.7,
- marginBottom: 16,
- shadowOffset: {
- x: 100,
- y: 100
- },
- },
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: '#FFF',
- },
- levelLabel: {
- flexDirection: 'column',
- backgroundColor: 'rgba(0, 0, 0, 0)',
- alignItems: 'center',
- justifyContent: 'center',
- borderRadius: 10
- },
- sequenceName: {
- color: '#FFF',
- fontWeight: 'bold',
- fontSize: 20,
- },
- welcome: {
- fontSize: 20,
- textAlign: 'center',
- margin: 10,
- },
});
AppRegistry.registerComponent('LearnGitBranching', () => LearnGitBranching);
diff --git a/src/js/native_react_views/LevelSelectView.js b/src/js/native_react_views/LevelSelectView.js
new file mode 100644
index 00000000..b19a19f0
--- /dev/null
+++ b/src/js/native_react_views/LevelSelectView.js
@@ -0,0 +1,42 @@
+var NavButton = require('../native_react_views/NavButton');
+var React = require('react-native');
+var Routes = require('../constants/Routes');
+
+var {
+ ScrollView,
+ StyleSheet,
+ Text,
+ View,
+} = React;
+
+var LevelSelectView = React.createClass({
+
+ propTypes: {
+ navigator: React.PropTypes.object.isRequired,
+ },
+
+ render: function() {
+ return (
+
+
+
+ {
+ this.props.navigator.popToTop();
+ }}
+ />
+
+
+ );
+ }
+
+});
+
+var styles = StyleSheet.create({
+ headerSpacer: {
+ height: 40
+ },
+});
+
+module.exports = LevelSelectView;
diff --git a/src/js/native_react_views/NavButton.js b/src/js/native_react_views/NavButton.js
new file mode 100644
index 00000000..7aa1bd90
--- /dev/null
+++ b/src/js/native_react_views/NavButton.js
@@ -0,0 +1,32 @@
+var React = require('react-native');
+var {
+ PixelRatio,
+ StyleSheet,
+ Text,
+ TouchableHighlight,
+ View,
+} = React;
+
+class NavButton extends React.Component {
+ render() {
+ return (
+
+ {this.props.text}
+
+ );
+ }
+}
+
+var styles = StyleSheet.create({
+ button: {
+ backgroundColor: 'white',
+ padding: 15,
+ borderBottomWidth: 1 / PixelRatio.get(),
+ borderBottomColor: '#CDCDCD',
+ },
+});
+
+module.exports = NavButton;
diff --git a/src/js/native_react_views/SequenceSelectView.js b/src/js/native_react_views/SequenceSelectView.js
new file mode 100644
index 00000000..be2fa879
--- /dev/null
+++ b/src/js/native_react_views/SequenceSelectView.js
@@ -0,0 +1,44 @@
+var NavButton = require('../native_react_views/NavButton');
+var React = require('react-native');
+var Routes = require('../constants/Routes');
+var {
+ PixelRatio,
+ ScrollView,
+ StyleSheet,
+ Text,
+ View,
+} = React;
+
+var SequenceSelectView = React.createClass({
+
+ propTypes: {
+ navigator: React.PropTypes.object.isRequired,
+ },
+
+ render: function() {
+ return (
+
+
+
+ {
+ this.props.navigator.push(
+ Routes.getRouteForID(Routes.LEVEL_SELECT)
+ );
+ }}
+ />
+
+
+ );
+ }
+
+});
+
+var styles = StyleSheet.create({
+ headerSpacer: {
+ height: 40
+ },
+});
+
+module.exports = SequenceSelectView;