diff options
Diffstat (limited to 'web/src')
-rw-r--r-- | web/src/js/components/Header.js | 28 | ||||
-rw-r--r-- | web/src/js/ducks/flows.js | 9 | ||||
-rw-r--r-- | web/src/js/ducks/utils/view.js | 2 | ||||
-rw-r--r-- | web/src/js/ducks/view.js | 11 |
4 files changed, 30 insertions, 20 deletions
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> <nav className="nav-tabs nav-tabs-lg"> <FileMenu/> - {Header.entries.map(Entry => ( + {entries.map(Entry => ( <a key={Entry.title} href="#" - className={classnames({ active: Entry.title === active_menu, hidden: !selectedFlow && Entry === FlowMenu })} + className={classnames({ active: Entry === Active})} onClick={e => this.handleClick(Entry, e)}> {Entry.title} </a> ))} </nav> <div className="menu"> - {Header.entries.map(Entry => ( - <div className={classnames({ hidden: Entry.title !== active_menu })}> - <Entry - settings={settings} - updateLocation={updateLocation} - query={query} - /> - </div> - ))} + <Active + settings={settings} + updateLocation={updateLocation} + query={query} + /> </div> </header> ) 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 } |