From 73d51c8bdc744f5817fb5833e4170a2a634bae60 Mon Sep 17 00:00:00 2001 From: Craig Levy Date: Fri, 23 Jan 2015 20:41:19 +0000 Subject: [PATCH 1/2] Added Mongo filter settings support. --- lib/reactive_table.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/reactive_table.js b/lib/reactive_table.js index dace3a0..edac5e1 100644 --- a/lib/reactive_table.js +++ b/lib/reactive_table.js @@ -47,7 +47,7 @@ var parseFilterString = function (filterString) { return filters; }; -var getFilterQuery = function (filter, fields) { +var getFilterQuery = function (filter, fields, mongoFilter) { var numberRegExp = /^\d+$/; var queryList = []; if (filter) { @@ -72,6 +72,14 @@ var getFilterQuery = function (filter, fields) { } }); } + + if (mongoFilter) { + if (!_.isObject(mongoFilter)) { + console.log('Your mongoFilter is not an object.'); + } else { + queryList.push(mongoFilter); + } + } return queryList.length ? {'$and': queryList} : {}; }; @@ -115,6 +123,7 @@ var setup = function () { context.templateData = this.data; this.data.settings = this.data.settings || {}; var collection = this.data.collection || this.data.settings.collection || this.data; + context.mongoFilter = this.data.mongoFilter || this.data.settings.mongoFilter; if (!(collection instanceof Meteor.Collection)) { if (_.isArray(collection)) { @@ -233,7 +242,7 @@ var setup = function () { var getPageCount = function () { var rowsPerPage = this.rowsPerPage.get(); - var filterQuery = getFilterQuery(this.filter.get(), this.fields); + var filterQuery = getFilterQuery(this.filter.get(), this.fields, this.mongoFilter); var count = this.collection.find(filterQuery).count(); return Math.ceil(count / rowsPerPage); }; @@ -302,7 +311,7 @@ Template.reactiveTable.helpers({ var limit = this.rowsPerPage.get(); var currentPage = this.currentPage.get(); var skip = currentPage * limit; - var filterQuery = getFilterQuery(this.filter.get(), this.fields); + var filterQuery = getFilterQuery(this.filter.get(), this.fields, this.mongoFilter); if (sortKeyField.fn && !sortKeyField.sortByValue) { var data = this.collection.find(filterQuery).fetch(); @@ -347,7 +356,7 @@ Template.reactiveTable.helpers({ 'isntLastPage' : function () { var currentPage = 1 + this.currentPage.get(); var rowsPerPage = this.rowsPerPage.get(); - var filterQuery = getFilterQuery(this.filter.get(), this.fields); + var filterQuery = getFilterQuery(this.filter.get(), this.fields, this.mongoFilter); var count = this.collection.find(filterQuery).count(); return currentPage < Math.ceil(count / rowsPerPage); }, From dd287c8236075f404ad13be33575fb0f70e15f6b Mon Sep 17 00:00:00 2001 From: Craig Levy Date: Fri, 23 Jan 2015 20:52:33 +0000 Subject: [PATCH 2/2] Error log update. --- lib/reactive_table.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reactive_table.js b/lib/reactive_table.js index edac5e1..d1a7ed7 100644 --- a/lib/reactive_table.js +++ b/lib/reactive_table.js @@ -75,7 +75,7 @@ var getFilterQuery = function (filter, fields, mongoFilter) { if (mongoFilter) { if (!_.isObject(mongoFilter)) { - console.log('Your mongoFilter is not an object.'); + console.log("reactiveTable error: Your mongoFilter setting is not an object."); } else { queryList.push(mongoFilter); }