diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-12-10 15:25:40 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-12-10 15:25:40 +0100 |
commit | 7e40b8ab09d6d605307342fbfa21129ca15ff055 (patch) | |
tree | 3ffbd6263f8550bea9c1cb847b0f4178c1499733 /web/src/js/components/eventlog.jsx.js | |
parent | d2feaf5d84820e75e3931522d889748563972c75 (diff) | |
download | mitmproxy-7e40b8ab09d6d605307342fbfa21129ca15ff055.tar.gz mitmproxy-7e40b8ab09d6d605307342fbfa21129ca15ff055.tar.bz2 mitmproxy-7e40b8ab09d6d605307342fbfa21129ca15ff055.zip |
web: implement settings store, modularize store
Diffstat (limited to 'web/src/js/components/eventlog.jsx.js')
-rw-r--r-- | web/src/js/components/eventlog.jsx.js | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/web/src/js/components/eventlog.jsx.js b/web/src/js/components/eventlog.jsx.js index 3bd188ea..7ef369f8 100644 --- a/web/src/js/components/eventlog.jsx.js +++ b/web/src/js/components/eventlog.jsx.js @@ -25,22 +25,29 @@ var LogMessage = React.createClass({ var EventLogContents = React.createClass({ mixins: [AutoScrollMixin, VirtualScrollMixin], - getInitialState: function(){ - var store = new EventLogStore(); - var view = new StoreView(store, function(entry){ - return this.props.filter[entry.level]; - }.bind(this)); - view.addListener("add recalculate", this.onEventLogChange); + getInitialState: function () { return { - store: store, - view: view, log: [] }; }, + componentWillMount: function () { + this.openView(this.props.eventStore); + }, componentWillUnmount: function () { - this.state.view.removeListener("add recalculate", this.onEventLogChange); + this.closeView(); + }, + openView: function (store) { + var view = new StoreView(store, function (entry) { + return this.props.filter[entry.level]; + }.bind(this)); + this.setState({ + view: view + }); + + view.addListener("add recalculate", this.onEventLogChange); + }, + closeView: function () { this.state.view.close(); - this.state.store.close(); }, onEventLogChange: function () { this.setState({ @@ -48,9 +55,13 @@ var EventLogContents = React.createClass({ }); }, componentWillReceiveProps: function (nextProps) { - if(nextProps.filter !== this.props.filter){ + if (nextProps.filter !== this.props.filter) { this.props.filter = nextProps.filter; // Dirty: Make sure that view filter sees the update. - this.state.view.recalculate(this.state.store._list); + this.state.view.recalculate(this.props.eventStore.list); + } + if (nextProps.eventStore !== this.props.eventStore) { + this.closeView(); + this.openView(nextProps.eventStore); } }, getDefaultProps: function () { @@ -60,7 +71,7 @@ var EventLogContents = React.createClass({ placeholderTagName: "div" }; }, - renderRow: function(elem){ + renderRow: function (elem) { return <LogMessage key={elem.id} entry={elem}/>; }, render: function () { @@ -130,7 +141,7 @@ var EventLog = React.createClass({ </div> </div> - <EventLogContents filter={this.state.filter}/> + <EventLogContents filter={this.state.filter} eventStore={this.props.eventStore}/> </div> ); } |