diff --git a/public/views/modals/search.html b/public/views/modals/search.html index 7b8f80d3a..42da493e0 100644 --- a/public/views/modals/search.html +++ b/public/views/modals/search.html @@ -1,86 +1,95 @@ - + - + Close Search Transactions - - - - - + + + + - - + + + Cancel + - - - - - - + + + + + + - - + + + - {{btx.note.body}} - Received + {{btx.note.body}} + Received + + + + + + {{btx.message}} + {{btx.note.body}} + {{wallet.addressbook[btx.addressTo]}} + Sent + + + + + + {{btx.note.body}} + Moved + + + Invalid + + + + + + + - + + (possible double spend) + + + {{btx.amountStr}} - - - {{btx.message}} - {{btx.note.body}} - {{index.addressbook[btx.addressTo]}} - Sent + + {{btx.time * 1000 | amTimeAgo}} + + Unconfirmed - - Moved - Invalid + + + + + + + {{filteredTxHistory.length - txHistorySearchResults.length}} more + + + - - - + - - - - (possible double spend) - - - {{btx.amountStr}} - - - - {{btx.time * 1000 | amTimeAgo}} - - Unconfirmed - - - - - - + + - - {{index.result.length - index.txHistorySearchResults.length}} more - - - - - - diff --git a/public/views/walletDetails.html b/public/views/walletDetails.html index 0d173d0a8..3836efb03 100644 --- a/public/views/walletDetails.html +++ b/public/views/walletDetails.html @@ -13,7 +13,7 @@ - + No Wallet diff --git a/src/js/controllers/search.js b/src/js/controllers/search.js index b75610417..470e9548a 100644 --- a/src/js/controllers/search.js +++ b/src/js/controllers/search.js @@ -1,72 +1,88 @@ +'use strict'; +angular.module('copayApp.controllers').controller('searchController', function($scope, $rootScope, $interval, $timeout, $filter, $log, $ionicModal, $ionicPopover, $ionicNavBarDelegate, $state, $stateParams, $ionicScrollDelegate, bwcError, profileService, lodash, configService, gettext, gettextCatalog, platformInfo, walletService) { - // - // self.startSearch = function() { - // self.isSearching = true; - // self.txHistorySearchResults = []; - // self.result = []; - // self.historyShowMore = false; - // self.nextTxHistory = self.historyShowMoreLimit; - // } - // - // self.cancelSearch = function() { - // self.isSearching = false; - // self.result = []; - // self.setCompactTxHistory(); - // } - // - // self.updateSearchInput = function(search) { - // self.search = search; - // if (isCordova) - // window.plugins.toast.hide(); - // self.throttleSearch(); - // $ionicScrollDelegate.resize(); - // } - // - // self.throttleSearch = lodash.throttle(function() { - // - // function filter(search) { - // self.result = []; - // - // function computeSearchableString(tx) { - // var addrbook = ''; - // if (tx.addressTo && self.addressbook && self.addressbook[tx.addressTo]) addrbook = self.addressbook[tx.addressTo] || ''; - // var searchableDate = computeSearchableDate(new Date(tx.time * 1000)); - // var message = tx.message ? tx.message : ''; - // var comment = tx.note ? tx.note.body : ''; - // var addressTo = tx.addressTo ? tx.addressTo : ''; - // return ((tx.amountStr + message + addressTo + addrbook + searchableDate + comment).toString()).toLowerCase(); - // } - // - // function computeSearchableDate(date) { - // var day = ('0' + date.getDate()).slice(-2).toString(); - // var month = ('0' + (date.getMonth() + 1)).slice(-2).toString(); - // var year = date.getFullYear(); - // return [month, day, year].join('/'); - // }; - // - // if (lodash.isEmpty(search)) { - // self.historyShowMore = false; - // return []; - // } - // self.result = lodash.filter(self.completeHistory, function(tx) { - // if (!tx.searcheableString) tx.searcheableString = computeSearchableString(tx); - // return lodash.includes(tx.searcheableString, search.toLowerCase()); - // }); - // - // if (self.result.length > self.historyShowLimit) self.historyShowMore = true; - // else self.historyShowMore = false; - // - // return self.result; - // }; - // - // self.txHistorySearchResults = filter(self.search).slice(0, self.historyShowLimit); - // if (isCordova) - // window.plugins.toast.showShortBottom(gettextCatalog.getString('Matches: ' + self.result.length)); - // - // $timeout(function() { - // $rootScope.$apply(); - // }); - // - // }, 1000); - // + var HISTORY_SHOW_LIMIT = 10; + var currentTxHistoryPage = 0; + var wallet; + var isCordova = platformInfo.isCordova; + $scope.txHistorySearchResults = []; + $scope.filteredTxHistory = []; + + $scope.cancel = function() { + $scope.searchModal.hide(); + }; + + $scope.cancelSearch = function() { + $scope.txHistorySearchResults = []; + $scope.filteredTxHistory = []; + $scope.search = ''; + $scope.currentTxHistoryPage = 0; + $ionicScrollDelegate.resize(); + } + + $scope.updateSearchInput = function(search) { + if (isCordova) + window.plugins.toast.hide(); + throttleSearch(search); + $ionicScrollDelegate.resize(); + } + + var throttleSearch = lodash.throttle(function(search) { + + function filter(search) { + $scope.filteredTxHistory = []; + + function computeSearchableString(tx) { + var addrbook = ''; + if (tx.addressTo && self.addressbook && self.addressbook[tx.addressTo]) addrbook = self.addressbook[tx.addressTo] || ''; + var searchableDate = computeSearchableDate(new Date(tx.time * 1000)); + var message = tx.message ? tx.message : ''; + var comment = tx.note ? tx.note.body : ''; + var addressTo = tx.addressTo ? tx.addressTo : ''; + return ((tx.amountStr + message + addressTo + addrbook + searchableDate + comment).toString()).toLowerCase(); + } + + function computeSearchableDate(date) { + var day = ('0' + date.getDate()).slice(-2).toString(); + var month = ('0' + (date.getMonth() + 1)).slice(-2).toString(); + var year = date.getFullYear(); + return [month, day, year].join('/'); + }; + + if (lodash.isEmpty(search)) { + $scope.txHistoryShowMore = false; + return []; + } + + $scope.filteredTxHistory = lodash.filter($scope.completeTxHistory, function(tx) { + if (!tx.searcheableString) tx.searcheableString = computeSearchableString(tx); + return lodash.includes(tx.searcheableString, search.toLowerCase()); + }); + + if ($scope.filteredTxHistory.length > HISTORY_SHOW_LIMIT) $scope.txHistoryShowMore = true; + else $scope.txHistoryShowMore = false; + + return $scope.filteredTxHistory; + }; + $scope.txHistorySearchResults = filter(search).slice(0, HISTORY_SHOW_LIMIT); + if (isCordova) + window.plugins.toast.showShortBottom(gettextCatalog.getString('Matches: ' + $scope.filteredTxHistory.length)); + $timeout(function() { + $rootScope.$apply(); + }); + + }, 1000); + + $scope.moreSearchResults = function() { + currentTxHistoryPage++; + $scope.showHistory(); + $scope.$broadcast('scroll.infiniteScrollComplete'); + }; + + $scope.showHistory = function() { + $scope.txHistorySearchResults = $scope.filteredTxHistory ? $scope.filteredTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT) : []; + $scope.txHistoryShowMore = $scope.filteredTxHistory.length > $scope.txHistorySearchResults.length; + }; + +}); diff --git a/src/js/controllers/walletDetails.js b/src/js/controllers/walletDetails.js index 49ecdedbf..5352bda8c 100644 --- a/src/js/controllers/walletDetails.js +++ b/src/js/controllers/walletDetails.js @@ -15,7 +15,6 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun $scope.openSearchModal = function() { var wallet = profileService.getWallet($stateParams.walletId); $scope.color = wallet.color; - $scope.self = self; $ionicModal.fromTemplateUrl('views/modals/search.html', { scope: $scope, @@ -73,7 +72,7 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun var progressFn = function(txs) { $scope.updatingTxHistoryProgress = txs ? txs.length : 0; - completeTxHistory = txs; + $scope.completeTxHistory = txs; $scope.showHistory(); $scope.$digest(); }; @@ -88,7 +87,7 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun $scope.updateTxHistoryError = true; return; } - completeTxHistory = txHistory; + $scope.completeTxHistory = txHistory; $scope.showHistory(); $scope.$apply(); @@ -97,12 +96,9 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun }; $scope.showHistory = function() { - if ($scope.isSearching) { - $scope.txHistorySearchResults = filteredTxHistory ? filteredTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT) : []; - $scope.txHistoryShowMore = filteredTxHistory.length > $scope.txHistorySearchResults.length; - } else if (completeTxHistory) { - $scope.txHistory = completeTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT); - $scope.txHistoryShowMore = completeTxHistory.length > $scope.txHistory.length; + if ($scope.completeTxHistory) { + $scope.txHistory = $scope.completeTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT); + $scope.txHistoryShowMore = $scope.completeTxHistory.length > $scope.txHistory.length; } }; @@ -122,12 +118,11 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun }; var currentTxHistoryPage; - var completeTxHistory; var wallet; $scope.init = function() { currentTxHistoryPage = 0; - completeTxHistory = []; + $scope.completeTxHistory = []; wallet = profileService.getWallet($stateParams.walletId); $scope.wallet = wallet;
+ {{btx.time * 1000 | amTimeAgo}} + + Unconfirmed -