diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-09-16 00:05:06 +0200 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-09-16 00:05:06 +0200 |
commit | acdd182754625fabcfc2c6ed4bdad8a63bce8ad6 (patch) | |
tree | bd48b8c269790d31913a13ecac8969c9d6413f0e /web/src/js/stores | |
parent | 1d9b1f79a11feb57043be1d9d656f4c1638d3357 (diff) | |
download | mitmproxy-acdd182754625fabcfc2c6ed4bdad8a63bce8ad6.tar.gz mitmproxy-acdd182754625fabcfc2c6ed4bdad8a63bce8ad6.tar.bz2 mitmproxy-acdd182754625fabcfc2c6ed4bdad8a63bce8ad6.zip |
web: implement EventLogStore
Diffstat (limited to 'web/src/js/stores')
-rw-r--r-- | web/src/js/stores/EventLogStore.es6.js | 79 | ||||
-rw-r--r-- | web/src/js/stores/SettingsStore.es6.js | 23 | ||||
-rw-r--r-- | web/src/js/stores/base.es6.js | 2 |
3 files changed, 54 insertions, 50 deletions
diff --git a/web/src/js/stores/EventLogStore.es6.js b/web/src/js/stores/EventLogStore.es6.js index caa9d77d..55401690 100644 --- a/web/src/js/stores/EventLogStore.es6.js +++ b/web/src/js/stores/EventLogStore.es6.js @@ -1,17 +1,62 @@ -class _EventLogStore extends EventEmitter { - constructor() { - /*jshint validthis: true */ +class EventLogView extends EventEmitter { + constructor(store, live){ super(); + this._store = store; + this.live = live; this.log = []; + + this.add = this.add.bind(this); + + if(live){ + this._store.addListener("new_entry", this.add); + } + + } + close() { + this._store.removeListener("new_entry", this.add); } getAll() { return this.log; } + + add(entry){ + this.log.push(entry); + this.emit("change"); + } + add_bulk(messages){ + var log = messages; + var last_id = log[log.length-1].id; + var to_add = _.filter(this.log, entry => entry.id > last_id); + this.log = log.concat(to_add); + this.emit("change"); + } +} + +class _EventLogStore extends EventEmitter { + getView(since){ + var view = new EventLogView(this, !since); + + //TODO: Really do bulk retrieval of last messages. + + window.setTimeout(function(){ + view.add_bulk([ + { id:1, message: "Hello World"}, + { id:2, message: "I was already transmitted as an event."} + ]); + }, 100); + + var id = 2; + view.add({id:id++, message: "I was already transmitted as an event."}); + view.add({id:id++, message: "I was only transmitted as an event before the bulk was added.."}); + window.setInterval(function(){ + view.add({id: id++, message: "."}); + }, 1000); + return view; + } handle(action) { switch (action.actionType) { - case ActionTypes.LOG_ADD: - this.log.push(action.message); - this.emit("change"); + case ActionTypes.EVENTLOG_ADD: + this.emit("new_message", action.message); break; default: return; @@ -19,24 +64,4 @@ class _EventLogStore extends EventEmitter { } } var EventLogStore = new _EventLogStore(); -AppDispatcher.register(EventLogStore.handle.bind(EventLogStore)); - - -var EventLogMixin = { - getInitialState(){ - return { - log: EventLog.getAll() - }; - }, - componentDidMount(){ - SettingsStore.addListener("change", this._onEventLogChange); - }, - componentWillUnmount(){ - SettingsStore.removeListener("change", this._onEventLogChange); - }, - _onEventLogChange(){ - this.setState({ - log: EventLog.getAll() - }); - } -};
\ No newline at end of file +AppDispatcher.register(EventLogStore.handle.bind(EventLogStore));
\ No newline at end of file diff --git a/web/src/js/stores/SettingsStore.es6.js b/web/src/js/stores/SettingsStore.es6.js index 7f3a6837..dea4597c 100644 --- a/web/src/js/stores/SettingsStore.es6.js +++ b/web/src/js/stores/SettingsStore.es6.js @@ -1,10 +1,9 @@ class _SettingsStore extends EventEmitter { constructor() { - /*jshint validthis: true */ super(); this.settings = { version: "0.12", showEventLog: true }; //FIXME: Need to get that from somewhere. } - getSettings() { + getAll() { return this.settings; } handle(action) { @@ -20,23 +19,3 @@ class _SettingsStore extends EventEmitter { } var SettingsStore = new _SettingsStore(); AppDispatcher.register(SettingsStore.handle.bind(SettingsStore)); - - -var SettingsMixin = { - getInitialState(){ - return { - settings: SettingsStore.getSettings() - }; - }, - componentDidMount(){ - SettingsStore.addListener("change", this._onSettingsChange); - }, - componentWillUnmount(){ - SettingsStore.removeListener("change", this._onSettingsChange); - }, - _onSettingsChange(){ - this.setState({ - settings: SettingsStore.getSettings() - }); - } -};
\ No newline at end of file diff --git a/web/src/js/stores/base.es6.js b/web/src/js/stores/base.es6.js index 9e9c69aa..d5d0c7ab 100644 --- a/web/src/js/stores/base.es6.js +++ b/web/src/js/stores/base.es6.js @@ -7,7 +7,7 @@ class EventEmitter { return; } this.listeners[event].forEach(function(listener) { - listener(event, this); + listener.apply(this, arguments); }.bind(this)); } addListener(event, f) { |