mirror of
https://github.com/vale981/Vulcan
synced 2025-03-10 20:46:40 -04:00

Using {{pathFor}}, path(), and url() where possible. Passing in path to Meteor.absoluteUrl() where the IronRouter functions didn't make sense. Also deleting some random unused code.
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
// see: http://stackoverflow.com/questions/1909441/jquery-keyup-delay
|
|
var delay = (function(){
|
|
var timer = 0;
|
|
return function(callback, ms){
|
|
clearTimeout (timer);
|
|
timer = setTimeout(callback, ms);
|
|
};
|
|
})();
|
|
|
|
Meteor.startup(function () {
|
|
|
|
Template[getTemplate('search')].helpers({
|
|
canSearch: function () {
|
|
return canView(Meteor.user());
|
|
},
|
|
searchQuery: function () {
|
|
return Session.get("searchQuery");
|
|
},
|
|
searchQueryEmpty: function () {
|
|
return !!Session.get("searchQuery") ? '' : 'empty';
|
|
}
|
|
});
|
|
|
|
Template[getTemplate('search')].events({
|
|
'keyup, search .search-field': function(e){
|
|
e.preventDefault();
|
|
var val = $(e.target).val(),
|
|
$search = $('.search');
|
|
if (val === '') {
|
|
// if search field is empty, just do nothing and show an empty template
|
|
$search.addClass('empty');
|
|
Session.set('searchQuery', '');
|
|
Router.go('search', null, {replaceState: true});
|
|
} else {
|
|
$search.removeClass('empty');
|
|
// if search field is not empty, add a delay to avoid firing new searches for every keystroke
|
|
delay(function(){
|
|
Session.set('searchQuery', val);
|
|
|
|
// Update the querystring.
|
|
var opts = {query: {q: val}};
|
|
// if we're already on the search page, do a replaceState. Otherwise,
|
|
// just use the pushState default.
|
|
if(Router.current().route.getName() === 'search') {
|
|
opts.replaceState = true;
|
|
}
|
|
Router.go('search', null, opts);
|
|
|
|
}, 700 );
|
|
}
|
|
}
|
|
});
|
|
|
|
});
|