From 3437a61341aa10ea0a733f6345a97144025aa0ee Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Fri, 30 Sep 2011 09:59:06 +0100 Subject: [PATCH] move autocompletion into the backend module --- .../frontend/static/js/djr/backend.js | 22 +++++++++++++- .../djrandom/frontend/static/js/djr/player.js | 14 +++++++++ server/djrandom/frontend/templates/index.html | 30 +------------------ 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/server/djrandom/frontend/static/js/djr/backend.js b/server/djrandom/frontend/static/js/djr/backend.js index a499b25..21caba4 100644 --- a/server/djrandom/frontend/static/js/djr/backend.js +++ b/server/djrandom/frontend/static/js/djr/backend.js @@ -78,6 +78,27 @@ djr.Backend.prototype.moreLikeThese = function(n, uuids, callback, ctx) { }); }; +/** + * Autocomplete. + * + * Autocompletion callback suitable for use with the jQuery UI + * autocomplete plugin. + * + * @param {Object} request request object (contains term). + * @param {function} callback Callback function. + */ +djr.Backend.prototype.autocomplete = function(request, callback) { + $.ajax({url: '/autocomplete', + data: {'term': request.term}, + dataType: 'json', + success: function(data) { + callback(data.results); + }, + error: function(xhr, status, errorThrown) { + callback(); + }}); +}; + /** * Get the playlist list for a specified user. * @@ -99,7 +120,6 @@ djr.Backend.prototype.getPlList = function(uid, callback, ctx) { }); }; - /** * Get the songs in a playlist. * diff --git a/server/djrandom/frontend/static/js/djr/player.js b/server/djrandom/frontend/static/js/djr/player.js index b463d74..13c14a2 100644 --- a/server/djrandom/frontend/static/js/djr/player.js +++ b/server/djrandom/frontend/static/js/djr/player.js @@ -364,6 +364,20 @@ djr.init = function () { djr.state.backend = new djr.Backend(); djr.state.player = new djr.Player(djr.state.backend, '#djr_player'); + // Set autocompletion and search handlers. + $('#queryField').autocomplete({ + source: djr.state.backend.autocomplete, + autoFocus: true, + delay: 200, + minLength: 1 + }); + $('#queryField').focus(); + $('#searchForm').submit(function() { + var query_string = $('#queryField').val(); + djr.state.player.search(query_string); + return false; + }); + // Add onclick hooks to the playlist controls. $('#playlistClearBtn').click(function() { djr.state.player.clearPlaylist(); diff --git a/server/djrandom/frontend/templates/index.html b/server/djrandom/frontend/templates/index.html index fee52a5..a40880a 100644 --- a/server/djrandom/frontend/templates/index.html +++ b/server/djrandom/frontend/templates/index.html @@ -2,36 +2,8 @@ {% block head %} <script type="text/javascript"> -do_autocomplete = function(request, response) { - $.ajax({url: '/autocomplete', - data: {'term': request.term}, - dataType: 'json', - success: function(data) { - var items = data.results; - response(data.results); - }, - error: function(xhr, status, errorThrown) { - response(); - }}); -}; - -do_search = function() { - var player = djr.player(); - player.search($('#queryField').val()); - return false; -}; - $(document).ready(function() { - $('#queryField').autocomplete({ - source: do_autocomplete, - autoFocus: true, - delay: 200, - minLength: 1, - }); - $('#queryField').focus(); - $('#searchForm').submit(do_search); - - // Initialize DJRd. + // Initialize DJR. djr.init(); }); </script> -- GitLab