aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js
diff options
context:
space:
mode:
authorLegend Tang <sp3478@gmail.com>2015-03-06 02:51:57 +0800
committerLegend Tang <sp3478@gmail.com>2015-03-06 02:51:57 +0800
commitfa8fc64ce0170b029410600af20b25c8160fe5c6 (patch)
tree223afbdf401ca4dc5782cc8c29103253890d58df /web/src/js
parent300868edff433f0f895a83482e0e7d92fa9e815e (diff)
downloadmitmproxy-fa8fc64ce0170b029410600af20b25c8160fe5c6.tar.gz
mitmproxy-fa8fc64ce0170b029410600af20b25c8160fe5c6.tar.bz2
mitmproxy-fa8fc64ce0170b029410600af20b25c8160fe5c6.zip
revert to custom EventEmitter, workaround for #504
It's an EventEmitter issue.
Diffstat (limited to 'web/src/js')
-rw-r--r--web/src/js/store/view.js7
-rw-r--r--web/src/js/utils.js30
2 files changed, 32 insertions, 5 deletions
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,