From 8500c8be25626e8db5f2837dd546af2e7c59a93a Mon Sep 17 00:00:00 2001 From: Ben Burlingham Date: Sun, 24 Apr 2016 17:13:37 -0700 Subject: [PATCH] Options screen work started. --- App.js | 5 ++- actions/mode.actions.js | 6 +++ actions/options/options.actions.js | 8 ++++ components/options/option.component.js | 25 +++++++++++ components/options/options.component.js | 26 ++++++++++++ components/welcome/new-game.component.js | 2 +- controllers/grid.controller.js | 6 +-- controllers/titlebar.controller.js | 4 +- index.js | 4 +- .../equality.model.js | 14 +++---- models/factors.model.js | 42 +++++++++++++++++++ models/inequality.model.js | 42 +++++++++++++++++++ models/multiples.model.js | 42 +++++++++++++++++++ reducers/mode.reducer.js | 2 +- reducers/options/options.reducer.js | 19 +++++++++ sass/options/options.scss | 30 +++++++++++++ 16 files changed, 261 insertions(+), 16 deletions(-) create mode 100644 actions/options/options.actions.js create mode 100644 components/options/option.component.js create mode 100644 components/options/options.component.js rename controllers/values.controller.js => models/equality.model.js (79%) create mode 100644 models/factors.model.js create mode 100644 models/inequality.model.js create mode 100644 models/multiples.model.js create mode 100644 reducers/options/options.reducer.js create mode 100644 sass/options/options.scss diff --git a/App.js b/App.js index 15b712e..357b4fc 100644 --- a/App.js +++ b/App.js @@ -3,8 +3,9 @@ import { connect } from 'react-redux'; import * as ModeActions from './actions/mode.actions'; -import Board from './components/board/board.component'; import Welcome from './components/welcome/welcome.component'; +import Options from './components/options/options.component'; +import Board from './components/board/board.component'; export class App extends Component { render() { @@ -13,6 +14,8 @@ export class App extends Component { switch (this.props.mode) { case ModeActions.WELCOME: return ; + case ModeActions.OPTIONS: + return case ModeActions.BOARD: return ; } diff --git a/actions/mode.actions.js b/actions/mode.actions.js index 518517b..dd2df06 100644 --- a/actions/mode.actions.js +++ b/actions/mode.actions.js @@ -1,6 +1,7 @@ // Game mode actions and action creators. export const MODE_ACTION = 'MODE_ACTION'; export const WELCOME = 'MODE_WELCOME'; +export const OPTIONS = 'MODE_OPTIONS'; export const BOARD = 'MODE_BOARD'; export const welcome = () => ({ @@ -8,6 +9,11 @@ export const welcome = () => ({ action: WELCOME }); +export const options = () => ({ + type: MODE_ACTION, + action: OPTIONS +}); + export const board = () => ({ type: MODE_ACTION, action: BOARD diff --git a/actions/options/options.actions.js b/actions/options/options.actions.js new file mode 100644 index 0000000..b0e59ac --- /dev/null +++ b/actions/options/options.actions.js @@ -0,0 +1,8 @@ +export const OPTIONS_ACTION = 'OPTIONS_ACTION'; +export const UPDATE = 'OPTIONS_UPDATE'; + +export const update = (selected) => ({ + type: OPTIONS_ACTION, + action: UPDATE, + selected: selected +}); diff --git a/components/options/option.component.js b/components/options/option.component.js new file mode 100644 index 0000000..e9c1031 --- /dev/null +++ b/components/options/option.component.js @@ -0,0 +1,25 @@ +import { Component } from 'react'; +import { connect } from 'react-redux'; + +export class Option extends Component { + render() { + const className = ['option']; + console.log(this.props.selected + ' ' + this.props.index) + + if (this.props.selected === this.props.index) { + className.push('selected'); + } + + return ( +
{this.props.value}
+ ); + }; +}; + +const select = (state) => { + return { + selected: state.options + }; +}; + +export default connect(select)(Option); diff --git a/components/options/options.component.js b/components/options/options.component.js new file mode 100644 index 0000000..6956356 --- /dev/null +++ b/components/options/options.component.js @@ -0,0 +1,26 @@ +require('../../sass/options/options.scss'); + +import { Component } from 'react'; +import Option from './option.component'; + +export default class Options extends Component { + render() { + const values = ['Multiples', 'Factors', 'Equality', 'Inequality']; + const optionsElements = []; + + values.map((v, i) => { + optionsElements.push(