From 9f9cd68997698cfa7751366925ecc7328d9b522b Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 7 May 2015 15:15:20 -0400 Subject: [PATCH] (fix) Partial fix for md-contact-chips Those fixes resolve the JavaScript errors, but the behavior is wrong; the displayed results are delayed with respect to the search string. md-contact-chips is expected to change (for the best) soon. --- .../ContactsUI/UIxContactEditorTemplate.wox | 2 +- UI/Templates/PreferencesUI/UIxPreferences.wox | 3 +-- .../js/Common/User.service.js | 23 ++++++++++++++----- .../js/Contacts/CardController.js | 7 ++++++ .../js/Preferences/PreferencesController.js | 7 ++---- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox b/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox index f713d72cb..d976d04c1 100644 --- a/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox +++ b/UI/Templates/ContactsUI/UIxContactEditorTemplate.wox @@ -318,7 +318,7 @@ - + placeholder="Add"> diff --git a/UI/WebServerResources/js/Common/User.service.js b/UI/WebServerResources/js/Common/User.service.js index b16fbcc03..cc60d5d6c 100644 --- a/UI/WebServerResources/js/Common/User.service.js +++ b/UI/WebServerResources/js/Common/User.service.js @@ -40,10 +40,19 @@ * @return a promise of an array of matching User objects */ User.$filter = function(search) { - var param = {search: search}; - if (!search) - return User.$q.when([]); - return User.$$resource.fetch(null, 'usersSearch', param).then(function(response) { + var deferred = User.$q.defer(), + param = {search: search}; + + if (!search) { + User.$users = []; + deferred.resolve(User.$users); + return deferred.promise; + } + if (angular.isUndefined(User.$users)) { + User.$users = []; + } + + User.$$resource.fetch(null, 'usersSearch', param).then(function(response) { var results = []; angular.forEach(response.users, function(data) { console.debug(JSON.stringify(data, undefined, 2)); @@ -51,8 +60,10 @@ results.push(user); }); User.$users = results; - return results; - }); + deferred.resolve(results); + }, deferred.reject); + + return deferred.promise; }; /** diff --git a/UI/WebServerResources/js/Contacts/CardController.js b/UI/WebServerResources/js/Contacts/CardController.js index dcfe1175a..f3ccc3e7e 100644 --- a/UI/WebServerResources/js/Contacts/CardController.js +++ b/UI/WebServerResources/js/Contacts/CardController.js @@ -16,6 +16,7 @@ $scope.allUrlTypes = Card.$URL_TYPES; $scope.allAddressTypes = Card.$ADDRESS_TYPES; $scope.categories = {}; + $scope.userFilterResults = []; $scope.addOrgUnit = function() { var i = $scope.card.$addOrgUnit(''); @@ -41,6 +42,12 @@ var i = $scope.card.$addMember(''); focus('ref_' + i); }; + $scope.userFilter = function($query) { + $scope.currentFolder.$filter($query, {dry: true, excludeLists: true}).then(function(results) { + $scope.userFilterResults = results; + }); + return $scope.userFilterResults; + }; $scope.save = function(form) { if (form.$valid) { $scope.card.$save() diff --git a/UI/WebServerResources/js/Preferences/PreferencesController.js b/UI/WebServerResources/js/Preferences/PreferencesController.js index 89d74f313..2f1e23b94 100644 --- a/UI/WebServerResources/js/Preferences/PreferencesController.js +++ b/UI/WebServerResources/js/Preferences/PreferencesController.js @@ -146,11 +146,8 @@ } function userFilter($query) { - var deferred = $q.defer(); - User.$filter($query).then(function(results) { - deferred.resolve(results) - }); - return deferred.promise; + User.$filter($query); + return User.$users; } function save() {