From abc91d6658e827b1ac7db62dba32d6bd3df6a09b Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Sun, 14 Sep 2014 02:04:48 +0200 Subject: web: add flow stub --- web/src/js/mitmproxy.react.js | 52 +++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 14 deletions(-) (limited to 'web/src/js/mitmproxy.react.js') diff --git a/web/src/js/mitmproxy.react.js b/web/src/js/mitmproxy.react.js index 2a2ee910..cdb6221d 100644 --- a/web/src/js/mitmproxy.react.js +++ b/web/src/js/mitmproxy.react.js @@ -9,16 +9,13 @@ var App = React.createClass({ }, componentDidMount: function () { //TODO: Replace DummyStore with real settings over WS (https://facebook.github.io/react/tips/initial-ajax.html) - //TODO: Is there a sensible place where we can store this? - var settings = new DummySettings({ + var settingsStore = new DummySettings({ version: "0.12" }); - settings.addChangeListener(this._onSettingsChange); - - //This would be async in some way or another. - this._onSettingsChange(null, settings); + this.setState({settingsStore: settingsStore}); + settingsStore.addChangeListener(this.onSettingsChange); }, - _onSettingsChange: function(event, settings){ + onSettingsChange: function(event, settings){ this.setState({settings: settings.getAll()}); }, render: function () { @@ -34,12 +31,39 @@ var App = React.createClass({ } }); -var Traffic = React.createClass({ - render: function(){ - var json = JSON.stringify(this.props, null, 4); - var i = 5; - while(i--) json += json; - return (
{json}
); +var TrafficTable = React.createClass({ + getInitialState: function(){ + return { + flows: [] + }; + }, + componentDidMount: function () { + var flowStore = new DummyFlowStore([]); + this.setState({flowStore: flowStore}); + + flowStore.addChangeListener(this.onFlowsChange); + + $.getJSON("/flows.json").success(function (flows) { + + flows.forEach(function (flow, i) { + window.setTimeout(function () { + flowStore.addFlow(flow); + }, _.random(i*400,i*400+1000)); + }); + + }.bind(this)); + }, + componentWillUnmount: function(){ + this.state.flowStore.close(); + }, + onFlowsChange: function(event, flows){ + this.setState({flows: flows.getAll()}); + }, + render: function () { + var flows = this.state.flows.map(function(flow){ + return
{flow.request.method} {flow.request.scheme}://{flow.request.host}{flow.request.path}
; + }); + return
{flows}
; } }); @@ -52,7 +76,7 @@ var Reports = React.createClass({ var routes = ( - + -- cgit v1.2.3