diff options
author | Aldo Cortesi <aldo@corte.si> | 2016-06-06 08:58:50 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@corte.si> | 2016-06-06 08:58:50 +1200 |
commit | 2b19a33738b20181d7b6ff10a9ffbf6c51ac96c2 (patch) | |
tree | 0939fd997c33b5baaa821cb846a4dc721dc38357 /web/src/js/store/view.js | |
parent | 08344ee38b1311b60afc906296f4720de748c945 (diff) | |
parent | d53a2de0ba69bea6c7aefa87782ad249cfb4ea76 (diff) | |
download | mitmproxy-2b19a33738b20181d7b6ff10a9ffbf6c51ac96c2.tar.gz mitmproxy-2b19a33738b20181d7b6ff10a9ffbf6c51ac96c2.tar.bz2 mitmproxy-2b19a33738b20181d7b6ff10a9ffbf6c51ac96c2.zip |
Merge pull request #1212 from mitmproxy/such-redux
web: completely move flow state to redux
Diffstat (limited to 'web/src/js/store/view.js')
-rw-r--r-- | web/src/js/store/view.js | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/web/src/js/store/view.js b/web/src/js/store/view.js index d8aeba60..e69de29b 100644 --- a/web/src/js/store/view.js +++ b/web/src/js/store/view.js @@ -1,111 +0,0 @@ -import {EventEmitter} from 'events'; -import _ from "lodash"; - -import utils from "../utils.js"; - -function SortByStoreOrder(elem) { - return this.store.index(elem.id); -} - -var default_sort = SortByStoreOrder; -var default_filt = function (elem) { - return true; -}; - -export function StoreView(store, filt, sortfun) { - EventEmitter.call(this); - - this.store = store; - - this.add = this.add.bind(this); - this.update = this.update.bind(this); - this.remove = this.remove.bind(this); - this.recalculate = this.recalculate.bind(this); - this.store.addListener("add", this.add); - this.store.addListener("update", this.update); - this.store.addListener("remove", this.remove); - this.store.addListener("recalculate", this.recalculate); - - this.recalculate(filt, sortfun); -} - -_.extend(StoreView.prototype, EventEmitter.prototype, { - close: function () { - this.store.removeListener("add", this.add); - this.store.removeListener("update", this.update); - this.store.removeListener("remove", this.remove); - this.store.removeListener("recalculate", this.recalculate); - this.removeAllListeners(); - }, - recalculate: function (filt, sortfun) { - filt = filt || this.filt || default_filt; - sortfun = sortfun || this.sortfun || default_sort; - filt = filt.bind(this); - sortfun = sortfun.bind(this); - this.filt = filt; - this.sortfun = sortfun; - - this.list = this.store.list.filter(filt); - this.list.sort(function (a, b) { - var akey = sortfun(a); - var bkey = sortfun(b); - if(akey < bkey){ - return -1; - } else if(akey > bkey){ - return 1; - } else { - return 0; - } - }); - this.emit("recalculate"); - }, - indexOf: function (elem) { - return this.list.indexOf(elem, _.sortedIndexBy(this.list, elem, this.sortfun)); - }, - add: function (elem) { - if (this.filt(elem)) { - var idx = _.sortedIndexBy(this.list, elem, this.sortfun); - if (idx === this.list.length) { //happens often, .push is way faster. - this.list.push(elem); - } else { - this.list.splice(idx, 0, elem); - } - this.emit("add", elem, idx); - } - }, - update: function (elem) { - var idx; - var i = this.list.length; - // Search from the back, we usually update the latest entries. - while (i--) { - if (this.list[i].id === elem.id) { - idx = i; - break; - } - } - - if (idx === -1) { //not contained in list - this.add(elem); - } else if (!this.filt(elem)) { - this.remove(elem.id); - } else { - if (this.sortfun(this.list[idx]) !== this.sortfun(elem)) { //sortpos has changed - this.remove(this.list[idx]); - this.add(elem); - } else { - this.list[idx] = elem; - this.emit("update", elem, idx); - } - } - }, - remove: function (elem_id) { - var idx = this.list.length; - while (idx--) { - if (this.list[idx].id === elem_id) { - this.list.splice(idx, 1); - this.emit("remove", elem_id, idx); - break; - } - } - } -}); |