var _ = require('underscore'); var $ = require('jquery'); var vent = require('vent'); var Backbone = require('backbone'); var jdu = require('jdu'); var ArtistCollection = require('../Artist/ArtistCollection'); require('typeahead'); vent.on(vent.Hotkeys.NavbarSearch, function() { $('.x-artist-search').focus(); }); var stringCleaner = function(text) { return jdu.replace(text.toLowerCase()); }; var substringMatcher = function() { return function findMatches (q, cb) { var matches = _.select(ArtistCollection.toJSON(), function(artist) { return stringCleaner(artist.name).indexOf(stringCleaner(q)) > -1; }); cb(matches); }; }; $.fn.bindSearch = function() { $(this).typeahead({ hint : true, minLength : 1 }, { name : 'artist', displayKey : 'name', source : substringMatcher() }); $(this).on('typeahead:selected typeahead:autocompleted', function(e, artist) { this.blur(); $(this).val(''); Backbone.history.navigate('/artist/{0}'.format(artist.nameSlug), { trigger : true }); }); };