From fa8fc64ce0170b029410600af20b25c8160fe5c6 Mon Sep 17 00:00:00 2001 From: Legend Tang Date: Fri, 6 Mar 2015 02:51:57 +0800 Subject: revert to custom EventEmitter, workaround for #504 It's an EventEmitter issue. --- web/src/js/store/view.js | 7 ++----- web/src/js/utils.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) (limited to 'web/src') diff --git a/web/src/js/store/view.js b/web/src/js/store/view.js index b5db9287..e96d1bcc 100644 --- a/web/src/js/store/view.js +++ b/web/src/js/store/view.js @@ -1,8 +1,5 @@ - -var EventEmitter = require('events').EventEmitter; var _ = require("lodash"); - var utils = require("../utils.js"); function SortByStoreOrder(elem) { @@ -15,7 +12,7 @@ var default_filt = function(elem){ }; function StoreView(store, filt, sortfun) { - EventEmitter.call(this); + utils.EventEmitter.call(this); filt = filt || default_filt; sortfun = sortfun || default_sort; @@ -33,7 +30,7 @@ function StoreView(store, filt, sortfun) { this.recalculate(filt, sortfun); } -_.extend(StoreView.prototype, EventEmitter.prototype, { +_.extend(StoreView.prototype, utils.EventEmitter.prototype, { close: function () { this.store.removeListener("add", this.add); this.store.removeListener("update", this.update); diff --git a/web/src/js/utils.js b/web/src/js/utils.js index 21b7a868..459b18f3 100644 --- a/web/src/js/utils.js +++ b/web/src/js/utils.js @@ -58,6 +58,35 @@ var formatTimeStamp = function (seconds) { return ts.replace("T", " ").replace("Z", ""); }; +function EventEmitter() { + this.listeners = {}; +} +EventEmitter.prototype.emit = function (event) { + if (!(event in this.listeners)) { + return; + } + var args = Array.prototype.slice.call(arguments, 1); + this.listeners[event].forEach(function (listener) { + listener.apply(this, args); + }.bind(this)); +}; +EventEmitter.prototype.addListener = function (events, f) { + events.split(" ").forEach(function (event) { + this.listeners[event] = this.listeners[event] || []; + this.listeners[event].push(f); + }.bind(this)); +}; +EventEmitter.prototype.removeListener = function (events, f) { + if (!(events in this.listeners)) { + return false; + } + events.split(" ").forEach(function (event) { + var index = this.listeners[event].indexOf(f); + if (index >= 0) { + this.listeners[event].splice(index, 1); + } + }.bind(this)); +}; function getCookie(name) { var r = document.cookie.match("\\b" + name + "=([^;]*)\\b"); @@ -84,6 +113,7 @@ $(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { }); module.exports = { + EventEmitter: EventEmitter, formatSize: formatSize, formatTimeDelta: formatTimeDelta, formatTimeStamp: formatTimeStamp, -- cgit v1.2.3 From b903dd4e4a3da579e4629a5e992ab16740d440f7 Mon Sep 17 00:00:00 2001 From: Legend Tang Date: Fri, 6 Mar 2015 03:29:15 +0800 Subject: Revert "revert to custom EventEmitter, workaround for #504" This reverts commit fa8fc64ce0170b029410600af20b25c8160fe5c6. --- web/src/js/store/view.js | 7 +++++-- web/src/js/utils.js | 30 ------------------------------ 2 files changed, 5 insertions(+), 32 deletions(-) (limited to 'web/src') diff --git a/web/src/js/store/view.js b/web/src/js/store/view.js index e96d1bcc..b5db9287 100644 --- a/web/src/js/store/view.js +++ b/web/src/js/store/view.js @@ -1,5 +1,8 @@ + +var EventEmitter = require('events').EventEmitter; var _ = require("lodash"); + var utils = require("../utils.js"); function SortByStoreOrder(elem) { @@ -12,7 +15,7 @@ var default_filt = function(elem){ }; function StoreView(store, filt, sortfun) { - utils.EventEmitter.call(this); + EventEmitter.call(this); filt = filt || default_filt; sortfun = sortfun || default_sort; @@ -30,7 +33,7 @@ function StoreView(store, filt, sortfun) { this.recalculate(filt, sortfun); } -_.extend(StoreView.prototype, utils.EventEmitter.prototype, { +_.extend(StoreView.prototype, EventEmitter.prototype, { close: function () { this.store.removeListener("add", this.add); this.store.removeListener("update", this.update); diff --git a/web/src/js/utils.js b/web/src/js/utils.js index 459b18f3..21b7a868 100644 --- a/web/src/js/utils.js +++ b/web/src/js/utils.js @@ -58,35 +58,6 @@ var formatTimeStamp = function (seconds) { return ts.replace("T", " ").replace("Z", ""); }; -function EventEmitter() { - this.listeners = {}; -} -EventEmitter.prototype.emit = function (event) { - if (!(event in this.listeners)) { - return; - } - var args = Array.prototype.slice.call(arguments, 1); - this.listeners[event].forEach(function (listener) { - listener.apply(this, args); - }.bind(this)); -}; -EventEmitter.prototype.addListener = function (events, f) { - events.split(" ").forEach(function (event) { - this.listeners[event] = this.listeners[event] || []; - this.listeners[event].push(f); - }.bind(this)); -}; -EventEmitter.prototype.removeListener = function (events, f) { - if (!(events in this.listeners)) { - return false; - } - events.split(" ").forEach(function (event) { - var index = this.listeners[event].indexOf(f); - if (index >= 0) { - this.listeners[event].splice(index, 1); - } - }.bind(this)); -}; function getCookie(name) { var r = document.cookie.match("\\b" + name + "=([^;]*)\\b"); @@ -113,7 +84,6 @@ $(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { }); module.exports = { - EventEmitter: EventEmitter, formatSize: formatSize, formatTimeDelta: formatTimeDelta, formatTimeStamp: formatTimeStamp, -- cgit v1.2.3 From 36db55f6620d428eee8e4c4a29c42396db3cd4d2 Mon Sep 17 00:00:00 2001 From: Legend Tang Date: Fri, 6 Mar 2015 03:45:58 +0800 Subject: Replace `addListener` method with multiple bindings, fix for #503 504 --- web/src/js/components/flowtable.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'web/src') diff --git a/web/src/js/components/flowtable.js b/web/src/js/components/flowtable.js index d4515257..76c865e2 100644 --- a/web/src/js/components/flowtable.js +++ b/web/src/js/components/flowtable.js @@ -65,15 +65,24 @@ var FlowTable = React.createClass({ }, componentWillMount: function () { if (this.props.view) { - this.props.view.addListener("add update remove recalculate", this.onChange); + this.props.view.addListener("add", this.onChange); + this.props.view.addListener("update", this.onChange); + this.props.view.addListener("remove", this.onChange); + this.props.view.addListener("recalculate", this.onChange); } }, componentWillReceiveProps: function (nextProps) { if (nextProps.view !== this.props.view) { if (this.props.view) { - this.props.view.removeListener("add update remove recalculate"); + this.props.view.removeListener("add"); + this.props.view.removeListener("update"); + this.props.view.removeListener("remove"); + this.props.view.removeListener("recalculate"); } - nextProps.view.addListener("add update remove recalculate", this.onChange); + nextProps.props.view.addListener("add", this.onChange); + nextProps.props.view.addListener("update", this.onChange); + nextProps.props.view.addListener("remove", this.onChange); + nextProps.props.view.addListener("recalculate", this.onChange); } }, getDefaultProps: function () { -- cgit v1.2.3 From 98c0047b4e151c832f46f9a1465a82ffbd714cf3 Mon Sep 17 00:00:00 2001 From: Legend Tang Date: Fri, 6 Mar 2015 03:57:38 +0800 Subject: clean up for #503 #504 --- web/src/js/components/flowtable.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'web/src') diff --git a/web/src/js/components/flowtable.js b/web/src/js/components/flowtable.js index 76c865e2..cd50b891 100644 --- a/web/src/js/components/flowtable.js +++ b/web/src/js/components/flowtable.js @@ -79,10 +79,10 @@ var FlowTable = React.createClass({ this.props.view.removeListener("remove"); this.props.view.removeListener("recalculate"); } - nextProps.props.view.addListener("add", this.onChange); - nextProps.props.view.addListener("update", this.onChange); - nextProps.props.view.addListener("remove", this.onChange); - nextProps.props.view.addListener("recalculate", this.onChange); + nextProps.view.addListener("add", this.onChange); + nextProps.view.addListener("update", this.onChange); + nextProps.view.addListener("remove", this.onChange); + nextProps.view.addListener("recalculate", this.onChange); } }, getDefaultProps: function () { -- cgit v1.2.3 From 0b57f851bd3a7b4cea9ad384feacd3342cbd321d Mon Sep 17 00:00:00 2001 From: Legend Tang Date: Fri, 6 Mar 2015 04:03:52 +0800 Subject: another clean up for #503 #504 --- web/src/js/components/eventlog.js | 3 ++- web/src/js/components/mainview.js | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'web/src') diff --git a/web/src/js/components/eventlog.js b/web/src/js/components/eventlog.js index 85c33527..ae7cd093 100644 --- a/web/src/js/components/eventlog.js +++ b/web/src/js/components/eventlog.js @@ -49,7 +49,8 @@ var EventLogContents = React.createClass({ view: view }); - view.addListener("add recalculate", this.onEventLogChange); + view.addListener("add", this.onEventLogChange); + view.addListener("recalculate", this.onEventLogChange); }, closeView: function () { this.state.view.close(); diff --git a/web/src/js/components/mainview.js b/web/src/js/components/mainview.js index a98007ec..6d2d3a5f 100644 --- a/web/src/js/components/mainview.js +++ b/web/src/js/components/mainview.js @@ -53,7 +53,9 @@ var MainView = React.createClass({ }); view.addListener("recalculate", this.onRecalculate); - view.addListener("add update remove", this.onUpdate); + view.addListener("add", this.onUpdate); + view.addListener("update", this.onUpdate); + view.addListener("remove", this.onUpdate); view.addListener("remove", this.onRemove); }, onRecalculate: function () { -- cgit v1.2.3