diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-07-25 17:03:50 -0700 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-07-25 17:03:50 -0700 |
commit | 70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3 (patch) | |
tree | 8c15d471934ac4b2c898725a2929f30f8dc7f9dd /web/src/js/components/ContentView/ViewSelector.jsx | |
parent | 79ebcb046e8669f80357a6c3046ec76c6adf49be (diff) | |
download | mitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.tar.gz mitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.tar.bz2 mitmproxy-70dbd1b32d13d30e15c03ee91b0fab7bfdf429b3.zip |
web: refactor ContentLoader
Diffstat (limited to 'web/src/js/components/ContentView/ViewSelector.jsx')
-rw-r--r-- | web/src/js/components/ContentView/ViewSelector.jsx | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/web/src/js/components/ContentView/ViewSelector.jsx b/web/src/js/components/ContentView/ViewSelector.jsx index 9b151a5b..973d2333 100644 --- a/web/src/js/components/ContentView/ViewSelector.jsx +++ b/web/src/js/components/ContentView/ViewSelector.jsx @@ -1,28 +1,47 @@ import React, { PropTypes } from 'react' import classnames from 'classnames' -import views, { ViewAuto } from './ContentViews' +import { connect } from 'react-redux' +import * as ContentViews from './ContentViews' +import { setContentView } from "../../ducks/ui/flow"; + + +function ViewButton({ name, setContentView, children, activeView }) { + return ( + <button + onClick={() => setContentView(name)} + className={classnames('btn btn-default', { active: name === activeView })}> + {children} + </button> + ) +} +ViewButton = connect(state => ({ + activeView: state.ui.flow.contentView +}), { + setContentView +})(ViewButton) + ViewSelector.propTypes = { - active: PropTypes.func.isRequired, message: PropTypes.object.isRequired, - onSelectView: PropTypes.func.isRequired, } +export default function ViewSelector({ message }) { + + let autoView = ContentViews.ViewAuto.findView(message) + let autoViewName = (autoView.displayName || autoView.name) + .toLowerCase() + .replace('view', '') + .replace(/ContentLoader\((.+)\)/,"$1") -export default function ViewSelector({ active, message, onSelectView }) { return ( <div className="view-selector btn-group btn-group-xs"> - {views.map(View => ( - <button - key={View.name} - onClick={() => onSelectView(View.name)} - className={classnames('btn btn-default', { active: View === active })}> - {View === ViewAuto ? ( - `auto: ${ViewAuto.findView(message).name.toLowerCase().replace('view', '')}` - ) : ( - View.name.toLowerCase().replace('view', '') - )} - </button> - ))} + + <ViewButton name="AutoView">auto: {autoViewName}</ViewButton> + + {Object.keys(ContentViews).map(name => + name !== "ViewAuto" && + <ViewButton key={name} name={name}>{name.toLowerCase().replace('view', '')}</ViewButton> + )} + </div> ) } |