2016-03-19 11:02:13 +00:00
|
|
|
angular.module('contactsApp')
|
|
|
|
.service('SearchService', function() {
|
2016-03-14 23:58:51 +00:00
|
|
|
var searchTerm = '';
|
|
|
|
|
|
|
|
var observerCallbacks = [];
|
|
|
|
|
|
|
|
this.registerObserverCallback = function(callback) {
|
|
|
|
observerCallbacks.push(callback);
|
|
|
|
};
|
|
|
|
|
|
|
|
var notifyObservers = function(eventName) {
|
|
|
|
var ev = {
|
|
|
|
event:eventName,
|
2016-03-17 01:09:33 +00:00
|
|
|
searchTerm:searchTerm
|
2016-03-14 23:58:51 +00:00
|
|
|
};
|
|
|
|
angular.forEach(observerCallbacks, function(callback) {
|
|
|
|
callback(ev);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2016-03-16 19:15:14 +00:00
|
|
|
var SearchProxy = {
|
2016-03-14 23:58:51 +00:00
|
|
|
attach: function(search) {
|
|
|
|
search.setFilter('contacts', this.filterProxy);
|
|
|
|
},
|
|
|
|
filterProxy: function(query) {
|
|
|
|
searchTerm = query;
|
2016-03-16 19:15:14 +00:00
|
|
|
notifyObservers('changeSearch');
|
2016-03-14 23:58:51 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
this.getSearchTerm = function() {
|
|
|
|
return searchTerm;
|
|
|
|
};
|
|
|
|
|
|
|
|
this.cleanSearch = function() {
|
2016-03-16 19:15:14 +00:00
|
|
|
if (!_.isUndefined($('.searchbox'))) {
|
|
|
|
$('.searchbox')[0].reset();
|
|
|
|
}
|
2016-03-14 23:58:51 +00:00
|
|
|
searchTerm = '';
|
|
|
|
};
|
|
|
|
|
2018-07-10 13:20:48 +00:00
|
|
|
|
2016-03-14 23:58:51 +00:00
|
|
|
|
|
|
|
if (!_.isUndefined($('.searchbox'))) {
|
|
|
|
$('.searchbox')[0].addEventListener('keypress', function(e) {
|
|
|
|
if(e.keyCode === 13) {
|
2016-03-16 19:15:14 +00:00
|
|
|
notifyObservers('submitSearch');
|
2016-03-14 23:58:51 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|