Skip to content

Commit 10f964a

Browse files
prx-lmomportuga
authored andcommitted
[hotfix/5502]
- null in filter is now changed to '' - cleaned code - breaking change: custom regex and filter may not work anymore
1 parent 5aa34e5 commit 10f964a

File tree

1 file changed

+34
-56
lines changed

1 file changed

+34
-56
lines changed

packages/core/src/js/services/rowSearcher.js

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
111111
rowSearcher.setupFilters = function setupFilters( filters ) {
112112
var newFilters = [];
113113

114-
var filtersLength = filters.length;
115-
for ( var i = 0; i < filtersLength; i++ ) {
114+
for ( var i = 0; i < filters.length; i++ ) {
116115
var filter = filters[i];
117116

118117
if ( filter.noTerm || !gridUtil.isNullOrUndefined(filter.term) ) {
@@ -131,30 +130,24 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
131130
newFilter.term = rowSearcher.stripTerm(filter);
132131
}
133132
}
134-
newFilter.noTerm = filter.noTerm;
135-
136-
if ( filter.condition ) {
137-
newFilter.condition = filter.condition;
138-
} else {
139-
newFilter.condition = rowSearcher.guessCondition(filter);
140-
}
141133

134+
newFilter.noTerm = filter.noTerm;
135+
newFilter.condition = filter.condition || rowSearcher.guessCondition(filter);
142136
newFilter.flags = angular.extend( { caseSensitive: false, date: false }, filter.flags );
143137

144-
if (newFilter.condition === uiGridConstants.filter.STARTS_WITH) {
145-
newFilter.startswithRE = new RegExp('^' + newFilter.term, regexpFlags);
146-
}
147-
148-
if (newFilter.condition === uiGridConstants.filter.ENDS_WITH) {
149-
newFilter.endswithRE = new RegExp(newFilter.term + '$', regexpFlags);
150-
}
151-
152-
if (newFilter.condition === uiGridConstants.filter.CONTAINS) {
153-
newFilter.containsRE = new RegExp(newFilter.term, regexpFlags);
154-
}
155-
156-
if (newFilter.condition === uiGridConstants.filter.EXACT) {
157-
newFilter.exactRE = new RegExp('^' + newFilter.term + '$', regexpFlags);
138+
switch (newFilter.condition) {
139+
case uiGridConstants.filter.STARTS_WITH:
140+
newFilter.startswithRE = new RegExp('^' + newFilter.term, regexpFlags);
141+
break;
142+
case uiGridConstants.filter.ENDS_WITH:
143+
newFilter.endswithRE = new RegExp(newFilter.term + '$', regexpFlags);
144+
break;
145+
case uiGridConstants.filter.EXACT:
146+
newFilter.exactRE = new RegExp('^' + newFilter.term + '$', regexpFlags);
147+
break;
148+
case uiGridConstants.filter.CONTAINS:
149+
newFilter.containsRE = new RegExp(newFilter.term, regexpFlags);
150+
break;
158151
}
159152

160153
newFilters.push(newFilter);
@@ -185,12 +178,9 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
185178
var term = filter.term;
186179

187180
// Get the column value for this row
188-
var value;
189-
if ( column.filterCellFiltered ) {
190-
value = grid.getCellDisplayValue(row, column);
191-
} else {
192-
value = grid.getCellValue(row, column);
193-
}
181+
var value = column.filterCellFiltered ? grid.getCellDisplayValue(row, column) : grid.getCellValue(row, column);
182+
if(value == void 0)
183+
value = "";
194184

195185

196186
// If the filter's condition is a RegExp, then use it
@@ -220,8 +210,7 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
220210
}
221211

222212
if (filter.condition === uiGridConstants.filter.NOT_EQUAL) {
223-
var regex = new RegExp('^' + term + '$');
224-
return !regex.exec(value);
213+
return !new RegExp('^' + term + '$').test(value);
225214
}
226215

227216
if (typeof(value) === 'number' && typeof(term) === 'string' ) {
@@ -240,20 +229,15 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
240229
term = new Date(term.replace(/\\/g, ''));
241230
}
242231

243-
if (filter.condition === uiGridConstants.filter.GREATER_THAN) {
244-
return (value > term);
245-
}
246-
247-
if (filter.condition === uiGridConstants.filter.GREATER_THAN_OR_EQUAL) {
248-
return (value >= term);
249-
}
250-
251-
if (filter.condition === uiGridConstants.filter.LESS_THAN) {
252-
return (value < term);
253-
}
254-
255-
if (filter.condition === uiGridConstants.filter.LESS_THAN_OR_EQUAL) {
256-
return (value <= term);
232+
switch (filter.condition) {
233+
case uiGridConstants.filter.GREATER_THAN:
234+
return (value > term);
235+
case uiGridConstants.filter.GREATER_THAN_OR_EQUAL:
236+
return (value >= term);
237+
case uiGridConstants.filter.LESS_THAN:
238+
return (value < term);
239+
case uiGridConstants.filter.LESS_THAN_OR_EQUAL:
240+
return (value <= term);
257241
}
258242

259243
return true;
@@ -287,13 +271,11 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
287271
return true;
288272
}
289273

290-
var filtersLength = filters.length;
291-
for (var i = 0; i < filtersLength; i++) {
274+
for (var i = 0; i < filters.length; i++) {
292275
var filter = filters[i];
293276

294277
if ( !gridUtil.isNullOrUndefined(filter.term) && filter.term !== '' || filter.noTerm ) {
295-
var ret = rowSearcher.runColumnFilter(grid, row, column, filter);
296-
if (!ret) {
278+
if (!rowSearcher.runColumnFilter(grid, row, column, filter)) {
297279
return false;
298280
}
299281
}
@@ -333,8 +315,6 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
333315
// Build list of filters to apply
334316
var filterData = [];
335317

336-
var colsLength = columns.length;
337-
338318
var hasTerm = function( filters ) {
339319
var hasTerm = false;
340320

@@ -347,7 +327,7 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
347327
return hasTerm;
348328
};
349329

350-
for (var i = 0; i < colsLength; i++) {
330+
for (var i = 0; i < cols.length; i++) {
351331
var col = columns[i];
352332

353333
if (typeof(col.filters) !== 'undefined' && hasTerm(col.filters) ) {
@@ -364,15 +344,13 @@ module.service('rowSearcher', ['gridUtil', 'uiGridConstants', function (gridUtil
364344
};
365345

366346
var foreachFilterCol = function(grid, filterData) {
367-
var rowsLength = rows.length;
368-
for ( var i = 0; i < rowsLength; i++) {
347+
for ( var i = 0; i < rows.length; i++) {
369348
foreachRow(grid, rows[i], filterData.col, filterData.filters);
370349
}
371350
};
372351

373352
// nested loop itself - foreachFilterCol, which in turn calls foreachRow
374-
var filterDataLength = filterData.length;
375-
for ( var j = 0; j < filterDataLength; j++) {
353+
for ( var j = 0; j < filterData.length; j++) {
376354
foreachFilterCol( grid, filterData[j] );
377355
}
378356

0 commit comments

Comments
 (0)