diff --git a/src/models/mongodb-instance.js b/src/models/mongodb-instance.js index b7bb45f313f..c514b8f618b 100644 --- a/src/models/mongodb-instance.js +++ b/src/models/mongodb-instance.js @@ -1,6 +1,7 @@ var MongoDBInstance = require('mongodb-instance-model'); var MongoDBCollection = require('./mongodb-collection'); var scoutClientMixin = require('./scout-client-mixin'); +var filterableMixin = require('ampersand-collection-filterable'); var selectableMixin = require('./selectable-collection-mixin'); var toNS = require('mongodb-ns'); @@ -8,7 +9,7 @@ var toNS = require('mongodb-ns'); * A user selectable collection of `MongoDBCollection`'s with `specialish` * collections filtered out. */ -var MongoDBCollectionOnInstanceCollection = MongoDBCollection.Collection.extend(selectableMixin, { +var MongoDBCollectionOnInstanceCollection = MongoDBCollection.Collection.extend({ namespace: 'MongoDBCollectionOnInstanceCollection', model: MongoDBCollection, parse: function(res) { @@ -16,7 +17,7 @@ var MongoDBCollectionOnInstanceCollection = MongoDBCollection.Collection.extend( return !toNS(d._id).specialish; }); } -}); +}, filterableMixin, selectableMixin); /** * Metadata for a MongoDB Instance, such as a `db.hostInfo()`, `db.listDatabases()`, diff --git a/src/sidebar/collection-filter.js b/src/sidebar/collection-filter.js index e92c0fc1b19..d0072605e3c 100644 --- a/src/sidebar/collection-filter.js +++ b/src/sidebar/collection-filter.js @@ -1,4 +1,5 @@ var View = require('ampersand-view'); +var debug = require('debug')('scout:sidebar:collection-filter'); var CollectionFilterView = View.extend({ template: require('./collection-filter.jade'), @@ -22,7 +23,9 @@ var CollectionFilterView = View.extend({ this.search = this.input.value.trim(); }, applyFilter: function() { + debug('applying filter for `%s`', this.search); this.parent.filterCollections(this.search); + debug('filter applied'); } }); module.exports = CollectionFilterView; diff --git a/src/sidebar/index.js b/src/sidebar/index.js index 37cdb7088d8..3ba3da2d8ec 100644 --- a/src/sidebar/index.js +++ b/src/sidebar/index.js @@ -1,16 +1,8 @@ var View = require('ampersand-view'); -var _ = require('lodash'); var mousetrap = require('mousetrap'); var CollectionFilterView = require('./collection-filter'); var CollectionListView = require('./collection-list'); -function fast_filter_collection(collection, pattern) { - var re = new RegExp(pattern || '.*'); - collection.filter(function(model) { - return re.test(model.getId()); - }); -} - var SidebarView = View.extend({ props: { open: { @@ -63,7 +55,11 @@ var SidebarView = View.extend({ } }, filterCollections: function(pattern) { - _.defer(fast_filter_collection, this.collection, pattern); + var re = new RegExp(pattern); + + this.collection.filter(function(model) { + return re.test(model.getId()); + }); } });