From 7a17666e762e91857303cb625c7c8be1fd150fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Let=C3=ADcia=20Camara?= Date: Wed, 16 Jan 2019 01:52:35 -0200 Subject: [PATCH] Extend search algorith to include AND between columns and sort at EnhacedTable component --- src/components/EnhancedTable.js | 25 +++++++++++++++++++------ src/components/pages/AmbassadorsPage.js | 2 +- src/components/pages/MerchantsPage.js | 2 +- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/components/EnhancedTable.js b/src/components/EnhancedTable.js index 1dec23f..3ae0ae4 100644 --- a/src/components/EnhancedTable.js +++ b/src/components/EnhancedTable.js @@ -219,18 +219,27 @@ class EnhancedTable extends Component { // Logic of search query and columns if(searchQuery.length > 0) { - data = data.filter((item) => { - let insert = false; + // Remove white spaces and wrong "" split + const queryTerms = searchQuery.split(' ').filter(value => value !== ''); + + data = data.filter((item) => { + + const insertArray = []; + // Implement hardcoded AND query over each column + // Iterate over each search term + queryTerms.forEach(searchItem => { + let insert = false; // Iterate over the search column select boxes searchColumns.map(column => { try { if( column.checked && (item[column.name] !== undefined) ) { - - if(item[column.name].hasOwnProperty('searchText') && item[column.name].searchText.toLowerCase().indexOf(searchQuery.toLowerCase().trim()) !== -1){ + if(item[column.name].hasOwnProperty('searchText') && + item[column.name].searchText.toLowerCase().indexOf(searchItem.toLowerCase().trim()) !== -1 + ){ insert = true; } - else if(item[column.name].toLowerCase().indexOf(searchQuery.toLowerCase().trim()) !== -1){ + else if(item[column.name].toLowerCase().indexOf(searchItem.toLowerCase().trim()) !== -1){ insert = true; } } @@ -241,7 +250,11 @@ class EnhancedTable extends Component { return column; }); - if(insert){ + insertArray.push(insert); + }); + + // AND logic + if(insertArray.filter(item => !item).length === 0){ return item; } return false; diff --git a/src/components/pages/AmbassadorsPage.js b/src/components/pages/AmbassadorsPage.js index 3cdb462..a73895e 100644 --- a/src/components/pages/AmbassadorsPage.js +++ b/src/components/pages/AmbassadorsPage.js @@ -357,7 +357,7 @@ class AmbassadorsPage extends Component { }); }); - data = data.sort(sortBy('location.searchText')); + data = data.sort(sortBy('nickname')); const textComponent = ( diff --git a/src/components/pages/MerchantsPage.js b/src/components/pages/MerchantsPage.js index 2cf1f6e..3984666 100644 --- a/src/components/pages/MerchantsPage.js +++ b/src/components/pages/MerchantsPage.js @@ -419,7 +419,7 @@ class MerchantsPage extends Component { return this.getMerchantMarker(merchant); }); - merchantsData = merchantsData.sort(sortBy('location.searchText')); + merchantsData = merchantsData.sort(sortBy('name')); const textComponent = (