From 00b4abfe8362748c197a32f7150d8b38a37e3739 Mon Sep 17 00:00:00 2001 From: Clemens Date: Wed, 15 Jun 2016 00:19:33 +0200 Subject: add previous state to dispatch function --- web/src/js/components/Header.js | 28 +++++++++++++++------------- web/src/js/ducks/flows.js | 9 ++++++--- web/src/js/ducks/utils/view.js | 2 +- web/src/js/ducks/view.js | 11 ++++++++--- 4 files changed, 30 insertions(+), 20 deletions(-) (limited to 'web/src/js') diff --git a/web/src/js/components/Header.js b/web/src/js/components/Header.js index f0cd3dcd..080f438a 100644 --- a/web/src/js/components/Header.js +++ b/web/src/js/components/Header.js @@ -11,8 +11,7 @@ import FlowMenu from './Header/FlowMenu' import {setActiveMenu} from '../ducks/view' class Header extends Component { - - static entries = [MainMenu, ViewMenu, OptionMenu, FlowMenu] + static entries = [MainMenu, ViewMenu, OptionMenu] static propTypes = { settings: PropTypes.object.isRequired, @@ -27,29 +26,32 @@ class Header extends Component { render() { const { settings, updateLocation, query, selectedFlow, active_menu} = this.props + + let entries = [...Header.entries] + if(selectedFlow) + entries.push(FlowMenu) + + const Active = _.find(entries, (e) => e.title == active_menu) + return (
- {Header.entries.map(Entry => ( -
- -
- ))} +
) diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js index f7a5538a..b877d3e4 100644 --- a/web/src/js/ducks/flows.js +++ b/web/src/js/ducks/flows.js @@ -101,9 +101,12 @@ export function setSort(sort){ } } export function selectFlow(flowId) { - return { - type: SELECT_FLOW, - flowId + return (dispatch, getState) => { + dispatch({ + type: SELECT_FLOW, + currentSelection: getState().flows.selected[0], + flowId + }) } } diff --git a/web/src/js/ducks/utils/view.js b/web/src/js/ducks/utils/view.js index 2d23a39c..01d57b17 100644 --- a/web/src/js/ducks/utils/view.js +++ b/web/src/js/ducks/utils/view.js @@ -124,7 +124,7 @@ export function updateViewFilter(list, filterFn = defaultFilterFn, sortFn = defa } export function updateViewSort(list, sortFn = defaultSortFn) { - let sorted = list.slice(0) + let sorted = [...list] if (sortFn) { sorted.sort(makeCompareFn(sortFn)) } diff --git a/web/src/js/ducks/view.js b/web/src/js/ducks/view.js index 2b6fe67d..b56561d0 100644 --- a/web/src/js/ducks/view.js +++ b/web/src/js/ducks/view.js @@ -1,3 +1,5 @@ +import ReduxThunk from 'redux-thunk' + import { SELECT_FLOW } from './flows' const ACTIVE_MENU = 'ACTIVE_MENU' @@ -13,10 +15,13 @@ export default function reducer(state = defaultState, action) { active_menu: action.active_menu } case SELECT_FLOW: - return{ - ...state, - active_menu: action.flowId ? 'Flow' : 'Start' + if (!action.currentSelection != !action.flowId){ + return{ + ...state, + active_menu: action.flowId ? 'Flow' : (state.active_menu == 'Flow' ? 'Start' : state.active_menu) + } } + return state default: return state } -- cgit v1.2.3