From 0152391882a32a4898e04fc2e8ceb96384c18123 Mon Sep 17 00:00:00 2001 From: dezsiszabi Date: Tue, 29 Apr 2014 21:32:02 +0200 Subject: [PATCH 1/3] Fixed a bug where using a parameterless cellFilter would stop the grid filtering from working. Example Plunker: plnkr.co/edit/nL1dvjMAnuvHdHPgGv9L --- src/classes/searchProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/searchProvider.js b/src/classes/searchProvider.js index 4c9fafabed..c99c618012 100644 --- a/src/classes/searchProvider.js +++ b/src/classes/searchProvider.js @@ -43,7 +43,7 @@ if (pVal !== null && pVal !== undefined) { if (typeof f === "function") { // Have to slice off the quotes the parser would have removed - var filterRes = f(pVal, s[1].slice(1,-1)).toString(); + var filterRes = f(pVal, s[1] ? s[1].slice(1,-1) : "").toString(); result = condition.regex.test(filterRes); } else { result = condition.regex.test(pVal.toString()); From 1872eb1349f3c7e3d6f3cf74f781b517fdef2980 Mon Sep 17 00:00:00 2001 From: dezsiszabi Date: Wed, 30 Apr 2014 01:03:58 +0200 Subject: [PATCH 2/3] Fixed a bug where the filtering stops working if one of the fields in the columnDefs is pointing to an object --- src/classes/searchProvider.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/classes/searchProvider.js b/src/classes/searchProvider.js index c99c618012..692dc3efff 100644 --- a/src/classes/searchProvider.js +++ b/src/classes/searchProvider.js @@ -18,14 +18,25 @@ return fieldMap; }; + var getAllPrimitiveValues = function(value) { + if(typeof value === "object") { + var arr = []; + for(var prop in value) { + arr = arr.concat(getAllPrimitiveValues(value[prop])); + } + + return arr; + } + else { + return [value]; + } + } + var searchEntireRow = function(condition, item, fieldMap){ var result; for (var prop in item) { if (item.hasOwnProperty(prop)) { var c = fieldMap[prop.toLowerCase()]; - if (!c) { - continue; - } var pVal = item[prop]; if(typeof pVal === 'object' && !(pVal instanceof Date)) { var objectFieldMap = convertToFieldMap(c); @@ -75,7 +86,10 @@ result = condition.regex.test(filterResults); } else { - result = condition.regex.test(typeof value === "object" ? evalObject(value, col.field).toString() : value.toString()); + var primitiveValues = getAllPrimitiveValues(evalObject(value, col.field)); + for(var prop in primitiveValues) { + result |= condition.regex.test(primValues[prop]); + } } if (result) { return true; From 20fdaf3a1d1491b72a801f9c4d336670ef679999 Mon Sep 17 00:00:00 2001 From: dezsiszabi Date: Wed, 30 Apr 2014 01:08:38 +0200 Subject: [PATCH 3/3] Mixing semicolon from previous commit --- src/classes/searchProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/searchProvider.js b/src/classes/searchProvider.js index 692dc3efff..12f5b36df4 100644 --- a/src/classes/searchProvider.js +++ b/src/classes/searchProvider.js @@ -30,7 +30,7 @@ else { return [value]; } - } + }; var searchEntireRow = function(condition, item, fieldMap){ var result;