parent
9b15298747
commit
a19dd163ad
14 changed files with 74 additions and 100 deletions
@ -1,35 +0,0 @@ |
|||||||
export const BOARD_ACTION = 'BOARD_ACTION'; |
|
||||||
export const GENERATE = 'GENERATE'; |
|
||||||
export const UPDATE = 'UPDATE'; |
|
||||||
export const HIDE = 'HIDE'; |
|
||||||
export const SHOW = 'SHOW'; |
|
||||||
export const NEXT_LEVEL = 'NEXT_LEVEL'; |
|
||||||
|
|
||||||
export const generateValues = () => ({ |
|
||||||
type: BOARD_ACTION, |
|
||||||
action: GENERATE |
|
||||||
}); |
|
||||||
|
|
||||||
export const updateValue = (index, value) => ({ |
|
||||||
type: BOARD_ACTION, |
|
||||||
action: UPDATE, |
|
||||||
index: index, |
|
||||||
value: value |
|
||||||
}); |
|
||||||
|
|
||||||
export const showValue = (index) => ({ |
|
||||||
type: BOARD_ACTION, |
|
||||||
action: SHOW, |
|
||||||
index: index |
|
||||||
}); |
|
||||||
|
|
||||||
export const hideValue = (index) => ({ |
|
||||||
type: BOARD_ACTION, |
|
||||||
action: HIDE, |
|
||||||
index: index |
|
||||||
}); |
|
||||||
|
|
||||||
export const nextLevel = () => ({ |
|
||||||
type: BOARD_ACTION, |
|
||||||
action: NEXT_LEVEL |
|
||||||
}); |
|
@ -1,11 +1,7 @@ |
|||||||
export const GRID_ACTION = 'GRID_ACTION'; |
export const GRID_ACTION = 'GRID_ACTION'; |
||||||
export const UPDATE = 'UPDATE'; |
export const UPDATE = 'GRID_UPDATE'; |
||||||
|
|
||||||
const GridActions = { |
export const update = () => ({ |
||||||
update: () => ({ |
type: GRID_ACTION, |
||||||
type: GRID_ACTION, |
action: UPDATE |
||||||
action: UPDATE |
}); |
||||||
}) |
|
||||||
}; |
|
||||||
|
|
||||||
export default GridActions; |
|
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
export const TITLEBAR_ACTION = 'TITLEBAR_ACTION'; |
||||||
|
export const UPDATE = 'TITLEBAR_UPDATE'; |
||||||
|
|
||||||
|
export const update = (text) => ({ |
||||||
|
type: TITLEBAR_ACTION, |
||||||
|
action: UPDATE, |
||||||
|
text: text |
||||||
|
}); |
@ -1,9 +1,18 @@ |
|||||||
require('../../sass/board/titlebar.scss'); |
require('../../sass/board/titlebar.scss'); |
||||||
|
|
||||||
import { Component } from 'react'; |
import { Component } from 'react'; |
||||||
|
import { connect } from 'react-redux'; |
||||||
|
|
||||||
export default class Titlebar extends Component { |
export class Titlebar extends Component { |
||||||
render() { |
render() { |
||||||
return (<div className='titlebar'>Connect titlebar</div>); |
return (<div className='titlebar'>{this.props.title}</div>); |
||||||
}; |
}; |
||||||
}; |
}; |
||||||
|
|
||||||
|
const select = (state) => { |
||||||
|
return { |
||||||
|
title: state.titlebar |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
export default connect(select)(Titlebar); |
||||||
|
@ -0,0 +1,15 @@ |
|||||||
|
import * as TitlebarActions from '../actions/board/titlebar.actions'; |
||||||
|
import ValuesCtrl from './values.controller'; |
||||||
|
|
||||||
|
let dispatch; |
||||||
|
|
||||||
|
const TitlebarCtrl = { |
||||||
|
setDispatch: d => dispatch = d, |
||||||
|
|
||||||
|
setTitle: (level) => { |
||||||
|
const title = ValuesCtrl.getTitle(level); |
||||||
|
dispatch(TitlebarActions.update(title)); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
export default TitlebarCtrl; |
@ -1,42 +0,0 @@ |
|||||||
const Immutable = require('immutable'); |
|
||||||
|
|
||||||
import * as BoardActions from '../../actions/board/board.actions'; |
|
||||||
import ValuesController from '../../controllers/values.controller.js'; |
|
||||||
import { SETTINGS } from '../../App'; |
|
||||||
|
|
||||||
const initial = { |
|
||||||
level: -1, |
|
||||||
values: [], |
|
||||||
title: 'Setting up...' |
|
||||||
}; |
|
||||||
|
|
||||||
const count = SETTINGS.GRID_WIDTH * SETTINGS.GRID_HEIGHT; |
|
||||||
|
|
||||||
const reducer = (state = initial, action) => { |
|
||||||
if (action.type !== BoardActions.BOARD_ACTION) { |
|
||||||
return state; |
|
||||||
} |
|
||||||
|
|
||||||
switch (action.action) { |
|
||||||
case BoardActions.UPDATE: |
|
||||||
return Immutable.fromJS(state).setIn(['values', action.index, 'value'], action.value).toJS(); |
|
||||||
|
|
||||||
case BoardActions.SHOW: |
|
||||||
return Immutable.fromJS(state).setIn(['values', action.index, 'show'], true).toJS(); |
|
||||||
|
|
||||||
case BoardActions.HIDE: |
|
||||||
return Immutable.fromJS(state).setIn(['values', action.index, 'show'], false).toJS(); |
|
||||||
|
|
||||||
case BoardActions.NEXT_LEVEL: |
|
||||||
const lvl = state.level + 1; |
|
||||||
return Immutable.Map(state) |
|
||||||
.set('level', lvl) |
|
||||||
.set('title', ValuesController.getDescription(lvl)) |
|
||||||
.set('values', ValuesController.generate(count, lvl)) |
|
||||||
.toObject(); |
|
||||||
} |
|
||||||
|
|
||||||
return state; |
|
||||||
}; |
|
||||||
|
|
||||||
export default reducer; |
|
@ -0,0 +1,19 @@ |
|||||||
|
const Immutable = require('immutable'); |
||||||
|
|
||||||
|
import * as TitlebarActions from '../../actions/board/titlebar.actions'; |
||||||
|
|
||||||
|
const initial = ''; |
||||||
|
|
||||||
|
const reducer = (state = initial, action) => { |
||||||
|
if (action.type !== TitlebarActions.TITLEBAR_ACTION) { |
||||||
|
return state; |
||||||
|
} |
||||||
|
|
||||||
|
if (action.action === TitlebarActions.UPDATE) { |
||||||
|
return action.text; |
||||||
|
} |
||||||
|
|
||||||
|
return state; |
||||||
|
}; |
||||||
|
|
||||||
|
export default reducer; |
Loading…
Reference in new issue