diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-07-25 15:16:16 -0700 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-07-25 15:16:16 -0700 |
commit | 79ebcb046e8669f80357a6c3046ec76c6adf49be (patch) | |
tree | 441981a16f1be1e620584e4a47f41767ce5585b2 /web/src/js | |
parent | 3254595584e1d711e7ae292ad34753a52f7a0fc1 (diff) | |
parent | 56796aeda25dda66621ce78af227ff46049ef811 (diff) | |
download | mitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.tar.gz mitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.tar.bz2 mitmproxy-79ebcb046e8669f80357a6c3046ec76c6adf49be.zip |
Merge remote-tracking branch 'origin/master' into flow_editing_v2
Diffstat (limited to 'web/src/js')
-rw-r--r-- | web/src/js/components/FlowTable/FlowRow.jsx | 7 | ||||
-rw-r--r-- | web/src/js/components/MainView.jsx | 2 | ||||
-rw-r--r-- | web/src/js/utils.js | 26 |
3 files changed, 26 insertions, 9 deletions
diff --git a/web/src/js/components/FlowTable/FlowRow.jsx b/web/src/js/components/FlowTable/FlowRow.jsx index 749bc0ce..7961d502 100644 --- a/web/src/js/components/FlowTable/FlowRow.jsx +++ b/web/src/js/components/FlowTable/FlowRow.jsx @@ -1,6 +1,7 @@ import React, { PropTypes } from 'react' import classnames from 'classnames' import columns from './FlowColumns' +import { pure } from '../../utils' FlowRow.propTypes = { onSelect: PropTypes.func.isRequired, @@ -9,7 +10,7 @@ FlowRow.propTypes = { selected: PropTypes.bool, } -export default function FlowRow({ flow, selected, highlighted, onSelect }) { +function FlowRow({ flow, selected, highlighted, onSelect }) { const className = classnames({ 'selected': selected, 'highlighted': highlighted, @@ -19,10 +20,12 @@ export default function FlowRow({ flow, selected, highlighted, onSelect }) { }) return ( - <tr className={className} onClick={() => onSelect(flow)}> + <tr className={className} onClick={() => onSelect(flow.id)}> {columns.map(Column => ( <Column key={Column.name} flow={flow}/> ))} </tr> ) } + +export default pure(FlowRow) diff --git a/web/src/js/components/MainView.jsx b/web/src/js/components/MainView.jsx index d7d1ebeb..f45f9eef 100644 --- a/web/src/js/components/MainView.jsx +++ b/web/src/js/components/MainView.jsx @@ -22,7 +22,7 @@ class MainView extends Component { flows={flows} selected={selectedFlow} highlight={highlight} - onSelect={flow => this.props.selectFlow(flow.id)} + onSelect={this.props.selectFlow} /> {selectedFlow && [ <Splitter key="splitter"/>, diff --git a/web/src/js/utils.js b/web/src/js/utils.js index d3b99bd0..cc17c565 100644 --- a/web/src/js/utils.js +++ b/web/src/js/utils.js @@ -1,7 +1,9 @@ -import _ from "lodash"; +import _ from 'lodash' +import React from 'react' +import shallowEqual from 'shallowequal' window._ = _; -window.React = require("react"); +window.React = React; export var Key = { UP: 38, @@ -106,15 +108,27 @@ fetchApi.put = (url, json, options) => fetchApi( } ) - export function getDiff(obj1, obj2) { let result = {...obj2}; for(let key in obj1) { if(_.isEqual(obj2[key], obj1[key])) - result[key] = undefined; + result[key] = undefined else if(!(Array.isArray(obj2[key]) && Array.isArray(obj1[key])) && typeof obj2[key] == 'object' && typeof obj1[key] == 'object') - result[key] = getDiff(obj1[key], obj2[key]); + result[key] = getDiff(obj1[key], obj2[key]) + } + return result +} + +export const pure = renderFn => class extends React.Component { + static displayName = renderFn.name + + shouldComponentUpdate(nextProps) { + console.log(!shallowEqual(this.props, nextProps)) + return !shallowEqual(this.props, nextProps) + } + + render() { + return renderFn(this.props) } - return result; } |