(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.
pull/91/head
Francis Lachapelle 2015-05-07 15:15:20 -04:00
parent ab38134ba9
commit 9f9cd68997
5 changed files with 28 additions and 14 deletions

View File

@ -318,7 +318,7 @@
</label>
<md-contact-chips
ng-model="card.refs"
md-contacts="currentFolder.$filter($query, {dry: true, excludeLists: true})"
md-contacts="userFilter($query)"
md-contact-name="$$fullname"
md-contact-image="$$image"
md-contact-email="$$email"

View File

@ -453,8 +453,7 @@
md-contact-email="c_email"
md-require-match="md-require-match"
filter-selected="false"
placeholder="Add">
</md-contact-chips>
placeholder="Add"><!-- users --></md-contact-chips>
</div>
</div>

View File

@ -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;
};
/**

View File

@ -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()

View File

@ -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() {