Home Reference Source Repository

js/user/typeahead.js

/**
 * Typeahead.js/Bloodhound completion definition for datasets
 */
define([
    'jquery',
    'api.light',
    'bloodhound',
    'hbs!templates/search/header',
    'hbs!templates/search/suggestion',
    'i18n',
    'logger'
], function($, API, Bloodhound, header, suggestion, i18n, log) {
    var MAX = 2,
        engine = new Bloodhound({
            name: 'users',
            limit: MAX,
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            datumTokenizer: function(d) {
                return Bloodhound.tokenizers.whitespace(d.name);
            },
            remote: {
                url: API.build_url('/users/suggest/') + '?q=%QUERY&size='+MAX,
                // Keep until model is uniformised
                filter: function(response) {
                    return $.map(response, function(row, idx) {
                        row.name = row.first_name + ' ' + row.last_name;
                        return row;
                    })
                }
            }
        });

    engine.initialize();

    return {
        name: 'users',
        source: engine.ttAdapter(),
        displayKey: 'name',
        limit: MAX,
        templates: {
            header: header({title: i18n._('Users')}),
            suggestion: suggestion
        }
    };
});