From 83f19e7a02694bd76f8deb80630dfbc23f5f3df1 Mon Sep 17 00:00:00 2001 From: Kasamsun Suwannajitr Date: Fri, 12 Oct 2018 15:42:33 +0700 Subject: [PATCH] Added support for sort column --- lib/mongoose-datatables.js | 39 ++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/lib/mongoose-datatables.js b/lib/mongoose-datatables.js index 59a7d4f..687cad6 100644 --- a/lib/mongoose-datatables.js +++ b/lib/mongoose-datatables.js @@ -25,26 +25,45 @@ function dataTablesPlugin (schema, options) { var columns = params.columns || []; var formatter = params.formatter + var findGlobal = [] if (search && search.value && search.fields && search.fields.length) { var searchQuery = { '$regex': search.value, '$options': 'i' } - - if (search.fields.length == 1) { - find[search.fields[0]] = searchQuery - } else if(search.fields.length > 1) { - if (!find.$or) { - find.$or = [] - } - search.fields.forEach(function (el){ + + if(search.fields.length >= 1) { + search.fields.forEach(function (field){ var obj = {} - obj[el] = searchQuery - find.$or.push(obj) + obj[field] = searchQuery + findGlobal.push(obj) }) } } + var findColumn = [] + if (columns && columns.length>=1) { + columns.forEach(function(col){ + if (col.value) { + col.fields.forEach(function (field){ + var obj = {} + obj[field] = col.value + findColumn.push(obj) + }) + } + }) + } + + if (findGlobal.length>0 && findColumn.length>0) { + find.$and = []; + find.$and.push({$or:findGlobal}) + find.$and.push({$and:findColumn}) + } else if (findGlobal.length>0) { + find = {$or:findGlobal} + } else if (findColumn.length>0) { + find = {$and:findColumn} + } + if (order && columns) { const sortByOrder = order.reduce((memo, ordr) => { const column = columns[ordr.column];