Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions lib/reactive_table.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -72,6 +72,14 @@ var getFilterQuery = function (filter, fields) {
}
});
}

if (mongoFilter) {
if (!_.isObject(mongoFilter)) {
console.log("reactiveTable error: Your mongoFilter setting is not an object.");
} else {
queryList.push(mongoFilter);
}
}
return queryList.length ? {'$and': queryList} : {};
};

Expand Down Expand Up @@ -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)) {
Expand Down Expand Up @@ -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);
};
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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);
},
Expand Down