From 78a31936de03f35da4b2db002c5a3ba18b3a2ecb Mon Sep 17 00:00:00 2001 From: Andy Joslin Date: Thu, 24 Apr 2014 09:20:21 -0600 Subject: [PATCH] demo(collection-repeat): only show letters that match searched names --- demos/collection-repeat/index.html | 2 +- demos/collection-repeat/script.js | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/demos/collection-repeat/index.html b/demos/collection-repeat/index.html index 3721f1b827..463a9a5c93 100644 --- a/demos/collection-repeat/index.html +++ b/demos/collection-repeat/index.html @@ -6,7 +6,7 @@ Collection-Repeat: Early Preview - + diff --git a/demos/collection-repeat/script.js b/demos/collection-repeat/script.js index 045aa7e142..b594ca062e 100644 --- a/demos/collection-repeat/script.js +++ b/demos/collection-repeat/script.js @@ -31,10 +31,24 @@ function MainCtrl($scope, $ionicScrollDelegate, filterFilter) { } $scope.getContacts = function() { + var contactsByLetter = {}; return contacts.filter(function(item) { - return !$scope.search || item.isLetter || + var itemDoesMatch = !$scope.search || item.isLetter || item.first_name.toLowerCase().indexOf($scope.search.toLowerCase()) > -1 || item.last_name.toLowerCase().indexOf($scope.search.toLowerCase()) > -1; + + if (!item.isLetter && itemDoesMatch) { + var letter = item.last_name.charAt(0).toUpperCase(); + contactsByLetter[letter] = contactsByLetter[letter] || 0; + contactsByLetter[letter]++; + } + + return itemDoesMatch; + }).filter(function(item) { + if (item.isLetter && !contactsByLetter[item.letter]) { + return false; + } + return true; }); };