diff options
author | Clemens <cle1000.cb@gmail.com> | 2016-08-03 12:08:10 +0200 |
---|---|---|
committer | Clemens <cle1000.cb@gmail.com> | 2016-08-03 12:08:10 +0200 |
commit | 34fe391afbe18f89d774137f82620024f697ab6a (patch) | |
tree | 0a1bcd4b0bccd1e7e51166982f8b4332da94a384 /web/src/js/components/ContentView/ContentViews.jsx | |
parent | bcc496527ebf5faf94025ec7c28992a1ac368140 (diff) | |
download | mitmproxy-34fe391afbe18f89d774137f82620024f697ab6a.tar.gz mitmproxy-34fe391afbe18f89d774137f82620024f697ab6a.tar.bz2 mitmproxy-34fe391afbe18f89d774137f82620024f697ab6a.zip |
add view all button, add dropdown for contentviews
Diffstat (limited to 'web/src/js/components/ContentView/ContentViews.jsx')
-rw-r--r-- | web/src/js/components/ContentView/ContentViews.jsx | 75 |
1 files changed, 54 insertions, 21 deletions
diff --git a/web/src/js/components/ContentView/ContentViews.jsx b/web/src/js/components/ContentView/ContentViews.jsx index 3b2af0a9..43aece46 100644 --- a/web/src/js/components/ContentView/ContentViews.jsx +++ b/web/src/js/components/ContentView/ContentViews.jsx @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React, { PropTypes, Component } from 'react' +import { connect } from 'react-redux' +import { setContentViewDescription, setShowFullContent } from '../../ducks/ui/flow' import ContentLoader from './ContentLoader' import { MessageUtils } from '../../flow/utils' import CodeEditor from './CodeEditor' @@ -27,32 +29,63 @@ function Edit({ content, onChange }) { } Edit = ContentLoader(Edit) +class ViewServer extends Component { + constructor(props){ + super(props) + this.maxLines = 80 + } -function ViewServer(props){ - const {content, contentView, message} = props - let data = JSON.parse(content) + componentWillMount(){ + this.setContentView(this.props) + } + componentWillReceiveProps(nextProps){ + this.setContentView(nextProps) + } + setContentView(props){ + try { + this.data = JSON.parse(props.content) + }catch(err) { + this.data= {lines: [], description: err.message} + } - return <div> - {contentView != data.description && - <div className="alert alert-warning">{data.description}</div> - } - <pre> - {data.lines.map((line, i) => - <div key={`line${i}`}> - {line.map((tuple, j) => - <span key={`tuple${j}`} className={tuple[0]}> - {tuple[1]} - </span> - )} - </div> - )} - </pre> + props.setContentViewDescription(props.contentView != this.data.description ? this.data.description : '') + + let isFullContentShown = this.data.lines.length < this.maxLines + if (isFullContentShown) props.setShowFullContent(true) + } + render() { + const {content, contentView, message} = this.props + + let lines = this.props.showFullContent ? this.data.lines : this.data.lines.slice(0, this.maxLines) + + return <div> + <pre> + {lines.map((line, i) => + <div key={`line${i}`}> + {line.map((tuple, j) => + <span key={`tuple${j}`} className={tuple[0]}> + {tuple[1]} + </span> + )} + </div> + )} + </pre> {ViewImage.matches(message) && - <ViewImage {...props} /> + <ViewImage {...this.props} /> } </div> + } + } -ViewServer = ContentLoader(ViewServer) +ViewServer = connect( + state => ({ + showFullContent: state.ui.flow.showFullContent + }), + { + setContentViewDescription, + setShowFullContent + } +)(ContentLoader(ViewServer)) export { Edit, ViewServer, ViewImage } |