diff options
| author | Clemens <cle1000.cb@gmail.com> | 2016-08-05 12:47:34 +0200 | 
|---|---|---|
| committer | Clemens <cle1000.cb@gmail.com> | 2016-08-05 12:47:34 +0200 | 
| commit | 9b0b007a5da75d70ec25b141c2a47b1b0010f5a3 (patch) | |
| tree | 373d864b95f8adfff875a24c3c2284363a607994 /web/src | |
| parent | a8aa1f2d1c8fe19313ca8abe07f9d6aa431fc3c3 (diff) | |
| download | mitmproxy-9b0b007a5da75d70ec25b141c2a47b1b0010f5a3.tar.gz mitmproxy-9b0b007a5da75d70ec25b141c2a47b1b0010f5a3.tar.bz2 mitmproxy-9b0b007a5da75d70ec25b141c2a47b1b0010f5a3.zip | |
change some style
Diffstat (limited to 'web/src')
| -rw-r--r-- | web/src/css/flowdetail.less | 31 | ||||
| -rw-r--r-- | web/src/js/components/ContentView.jsx | 18 | ||||
| -rw-r--r-- | web/src/js/components/ContentView/ContentViewOptions.jsx | 31 | ||||
| -rw-r--r-- | web/src/js/components/ContentView/ContentViews.jsx | 13 | ||||
| -rw-r--r-- | web/src/js/components/FlowView.jsx | 2 | ||||
| -rw-r--r-- | web/src/js/components/FlowView/Messages.jsx | 96 | 
6 files changed, 121 insertions, 70 deletions
| diff --git a/web/src/css/flowdetail.less b/web/src/css/flowdetail.less index b4c7047b..421630eb 100644 --- a/web/src/css/flowdetail.less +++ b/web/src/css/flowdetail.less @@ -5,8 +5,7 @@  .flow-detail {      width: 100%; -    overflow-x: auto; -    overflow-y: scroll; +    overflow:hidden;      nav {          background-color: #F2F2F2; @@ -41,6 +40,28 @@  } +.flowview-container{ +    display: flex; +    flex-direction: column; +    padding: 0 !important; +    height:95%; +} + +.flowview-body{ +    position:relative; +    flex: 1 1 auto; +    overflow: auto; +    padding: 5px 12px 0; +} + +.flowview-footer{ +    flex: 0 0 auto; +    box-shadow: 0 0 3px gray; +    padding: 2px; +    margin: 0; +    height:23px; +} +  .inline-input {      display: inline;      margin: 0 -3px; @@ -64,13 +85,9 @@      }  } -.view-options { -    margin-bottom: 10px; -    margin-top: 10px; -} -  .view-all-content-btn{      float: right; +    margin-bottom: 12px;  }  .flow-detail table { diff --git a/web/src/js/components/ContentView.jsx b/web/src/js/components/ContentView.jsx index 128d8e81..398438ab 100644 --- a/web/src/js/components/ContentView.jsx +++ b/web/src/js/components/ContentView.jsx @@ -2,12 +2,10 @@ import React, { Component, PropTypes } from 'react'  import { connect } from 'react-redux'  import * as ContentViews from './ContentView/ContentViews'  import * as MetaViews from './ContentView/MetaViews' -import ViewSelector from './ContentView/ViewSelector' -import UploadContentButton from './ContentView/UploadContentButton' -import DownloadContentButton from './ContentView/DownloadContentButton'  import ShowFullContentButton from './ContentView/ShowFullContentButton' -import { setContentView, displayLarge, updateEdit } from '../ducks/ui/flow' + +import { displayLarge, updateEdit } from '../ducks/ui/flow'  ContentView.propTypes = {      // It may seem a bit weird at the first glance: @@ -20,7 +18,7 @@ ContentView.propTypes = {  ContentView.isContentTooLarge = msg => msg.contentLength > 1024 * 1024 * (ContentViews.ViewImage.matches(msg) ? 10 : 0.2)  function ContentView(props) { -    const { flow, message, contentView, isDisplayLarge, displayLarge, uploadContent, onContentChange, readonly, contentViewDescription } = props +    const { flow, message, contentView, isDisplayLarge, displayLarge, onContentChange, readonly } = props      if (message.contentLength === 0 && readonly) {          return <MetaViews.ContentEmpty {...props}/> @@ -39,15 +37,6 @@ function ContentView(props) {          <div className="contentview">              <View flow={flow} message={message} contentView={contentView} readonly={readonly} onChange={onContentChange}/>              <ShowFullContentButton/> -            <div className="view-options footer navbar-fixed-bottom"> -                <ViewSelector message={message}/> -                  -                <DownloadContentButton flow={flow} message={message}/> -                  -                <UploadContentButton uploadContent={uploadContent}/> -                  -                <span>{contentViewDescription}</span> -            </div>          </div>      )  } @@ -56,7 +45,6 @@ export default connect(      state => ({          contentView: state.ui.flow.contentView,          isDisplayLarge: state.ui.flow.displayLarge, -        contentViewDescription: state.ui.flow.viewDescription      }),      {          displayLarge, diff --git a/web/src/js/components/ContentView/ContentViewOptions.jsx b/web/src/js/components/ContentView/ContentViewOptions.jsx new file mode 100644 index 00000000..fed3a088 --- /dev/null +++ b/web/src/js/components/ContentView/ContentViewOptions.jsx @@ -0,0 +1,31 @@ +import React, { PropTypes } from 'react' +import { connect } from 'react-redux' +import ViewSelector from './ViewSelector' +import UploadContentButton from './UploadContentButton' +import DownloadContentButton from './DownloadContentButton' + +ContentViewOptions.propTypes = { +    flow: React.PropTypes.object.isRequired, +    message: React.PropTypes.object.isRequired, +} + +function ContentViewOptions(props) { +    const { flow, message, uploadContent, readonly, contentViewDescription } = props +    return ( +        <div className="view-options"> +            <ViewSelector message={message}/> +              +            <DownloadContentButton flow={flow} message={message}/> +              +            <UploadContentButton uploadContent={uploadContent}/> +              +            <span>{contentViewDescription}</span> +        </div> +    ) +} + +export default connect( +    state => ({ +        contentViewDescription: state.ui.flow.viewDescription +    }) +)(ContentViewOptions) diff --git a/web/src/js/components/ContentView/ContentViews.jsx b/web/src/js/components/ContentView/ContentViews.jsx index 43aece46..3db77af4 100644 --- a/web/src/js/components/ContentView/ContentViews.jsx +++ b/web/src/js/components/ContentView/ContentViews.jsx @@ -30,9 +30,8 @@ function Edit({ content, onChange }) {  Edit = ContentLoader(Edit)  class ViewServer extends Component { -    constructor(props){ -        super(props) -        this.maxLines = 80 +    static defaultProps = { +        maxLines: 80,      }      componentWillMount(){ @@ -50,14 +49,12 @@ class ViewServer extends Component {          props.setContentViewDescription(props.contentView != this.data.description ? this.data.description : '') -        let isFullContentShown = this.data.lines.length < this.maxLines +        let isFullContentShown = this.data.lines.length < props.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) - +        const {content, contentView, message, maxLines} = this.props +        let lines = this.props.showFullContent ? this.data.lines : this.data.lines.slice(0, maxLines)          return <div>                  <pre>                      {lines.map((line, i) => diff --git a/web/src/js/components/FlowView.jsx b/web/src/js/components/FlowView.jsx index a80dc040..72cffdfe 100644 --- a/web/src/js/components/FlowView.jsx +++ b/web/src/js/components/FlowView.jsx @@ -71,7 +71,7 @@ export default class FlowView extends Component {          const Tab = FlowView.allTabs[_.capitalize(active)]          return ( -            <div className="flow-detail" onScroll={this.adjustHead}> +            <div className="flow-detail">                  <Nav                      flow={flow}                      tabs={tabs} diff --git a/web/src/js/components/FlowView/Messages.jsx b/web/src/js/components/FlowView/Messages.jsx index 9de25b5b..27644823 100644 --- a/web/src/js/components/FlowView/Messages.jsx +++ b/web/src/js/components/FlowView/Messages.jsx @@ -5,6 +5,7 @@ import { connect } from 'react-redux'  import { RequestUtils, isValidHttpVersion, parseUrl } from '../../flow/utils.js'  import { formatTimeStamp } from '../../utils.js'  import ContentView from '../ContentView' +import ContentViewOptions from '../ContentView/ContentViewOptions'  import ValidateEditor from '../ValueEditor/ValidateEditor'  import ValueEditor from '../ValueEditor/ValueEditor' @@ -81,27 +82,35 @@ const Message = connect(  export class Request extends Component {      render() {          const { flow, isEdit, updateFlow, uploadContent } = this.props - +        let noContent =  !isEdit && (flow.request.contentLength == 0 || flow.request.contentLength == null)          return ( -            <section className="request"> -                <ToggleEdit/> -                <RequestLine -                    flow={flow} -                    readonly={!isEdit} -                    updateFlow={updateFlow}/> -                <Headers -                    message={flow.request} -                    readonly={!isEdit} -                    onChange={headers => updateFlow({ request: { headers } })} -                /> - -                <hr/> -                <ContentView -                    readonly={!isEdit} -                    flow={flow} -                    onContentChange={content => updateFlow({ request: {content}})} -                    uploadContent={content => uploadContent(flow, content, "request")} -                    message={flow.request}/> +            <section className="request flowview-container"> +                <div className="flowview-body"> +                    <ToggleEdit/> +                    <RequestLine +                        flow={flow} +                        readonly={!isEdit} +                        updateFlow={updateFlow}/> +                    <Headers +                        message={flow.request} +                        readonly={!isEdit} +                        onChange={headers => updateFlow({ request: { headers } })} +                    /> + +                    <hr/> +                    <ContentView +                        readonly={!isEdit} +                        flow={flow} +                        onContentChange={content => updateFlow({ request: {content}})} +                        message={flow.request}/> +                </div> +                <div hidden={noContent} className="flowview-footer"> +                    <ContentViewOptions +                        flow={flow} +                        readonly={!isEdit} +                        message={flow.request} +                        uploadContent={content => uploadContent(flow, content, "request")}/> +                </div>              </section>          )      } @@ -137,27 +146,36 @@ Request = Message(Request)  export class Response extends Component {      render() {          const { flow, isEdit, updateFlow, uploadContent } = this.props +        let noContent =  !isEdit && (flow.response.contentLength == 0 || flow.response.contentLength == null)          return ( -            <section className="response"> -                <ToggleEdit/> -                <ResponseLine -                    flow={flow} -                    readonly={!isEdit} -                    updateFlow={updateFlow}/> -                <Headers -                    message={flow.response} -                    readonly={!isEdit} -                    onChange={headers => updateFlow({ response: { headers } })} -                /> -                <hr/> -                <ContentView -                    readonly={!isEdit} -                    flow={flow} -                    onContentChange={content => updateFlow({ response: {content}})} -                    uploadContent={content => uploadContent(flow, content, "response")} -                    message={flow.response} -                /> +            <section className="response flowview-container"> +                <div className="flowview-body"> +                    <ToggleEdit/> +                    <ResponseLine +                        flow={flow} +                        readonly={!isEdit} +                        updateFlow={updateFlow}/> +                    <Headers +                        message={flow.response} +                        readonly={!isEdit} +                        onChange={headers => updateFlow({ response: { headers } })} +                    /> +                    <hr/> +                    <ContentView +                        readonly={!isEdit} +                        flow={flow} +                        onContentChange={content => updateFlow({ response: {content}})} +                        message={flow.response} +                    /> +                </div> +                <div hidden={noContent} className="flowview-footer"> +                    <ContentViewOptions +                        flow={flow} +                        message={flow.response} +                        uploadContent={content => uploadContent(flow, content, "response")} +                        readonly={!isEdit}/> +                </div>              </section>          )      } | 
