diff --git a/server/djrandom/frontend/static/js/djr/djr.js b/server/djrandom/frontend/static/js/djr/djr.js index 8654e476b36e385afe84c9936bc2d13d00aa7464..5277e6e127528b99e5cc80cb420326bfe6e03eef 100644 --- a/server/djrandom/frontend/static/js/djr/djr.js +++ b/server/djrandom/frontend/static/js/djr/djr.js @@ -20,6 +20,9 @@ djr.init = function (userid) { djr.state.backend = new djr.Backend(); djr.state.player = new djr.Player(djr.state.backend, '#djr_player'); + // Set a callback on URL hash changes. + $(window).bind('hashchange', djr.history.restore); + // Set autocompletion and search handlers. $('#queryField').autocomplete('/autocomplete', { queryParamName: 'term', diff --git a/server/djrandom/frontend/static/js/djr/history.js b/server/djrandom/frontend/static/js/djr/history.js index 44730e4754ff04c1eaef3ba4ab27027d4b978bc5..82c9ad1542980c28c4d88ef14f243c2fab336750 100644 --- a/server/djrandom/frontend/static/js/djr/history.js +++ b/server/djrandom/frontend/static/js/djr/history.js @@ -1,17 +1,4 @@ -// djrandom.js - -djr = {}; - -// Global state. -djr.state = { - userid: null -}; - -// Debugging. -djr.debug = function(msg) { - $('#debug').append(msg + '<br>'); -}; - +// history.js // History and state @@ -20,9 +7,8 @@ djr.history = { }; // Save current state to hashtag. -djr.history.save = function() { - var curPlaylist = djr.state.player.getCurrentPlaylistID(); - var hash_tag = '#pl:' + curPlaylist; +djr.history.save = function(pl) { + var hash_tag = '#pl:' + pl; djr.history.cur_hash = hash_tag; window.location.hash = hash_tag; }; @@ -35,30 +21,19 @@ djr.history.restore = function() { } djr.history.cur_hash = hash_tag; + // Parse the hash tag. var hash_info = {}; $.each(hash_tag.substr(1).split(','), function(idx, value) { var kv = value.split(':'); hash_info[kv[0]] = unescape(kv.slice(1).join(':')); }); + // Load the new playlist if specified. if (hash_info.pl) { - var newPlaylistID = hash_info.pl; - djr.state.player.loadPlaylist(newPlaylistID, function() { - djr.loadPlaylistHtml(); - }); + djr.state.player.loadPlaylist(hash_info.pl); } }; -djr.getQuery = function() { - return $('#queryField').val(); -}; - -djr.setQuery = function(query) { - djr.debug('setQuery:' + query); - $('#queryField').val(query); - djr.doSearch(query); -}; - djr.doSearch = function() { $('#loading').show(); $.getJSON('/json/search', {'q': djr.getQuery()}, @@ -85,16 +60,5 @@ djr.doSearch = function() { }; -// Initialization. -djr.init = function(userid) { - djr.state.userid = userid; - - // Restore state if the URL changes. - $(window).bind('hashchange', djr.history.restore); - - // Initialize the global Player instance. - djr.state.player = new djr.Player('#djr_player'); -}; - // Puppa. diff --git a/server/djrandom/frontend/static/js/djr/player.js b/server/djrandom/frontend/static/js/djr/player.js index 254ca0f3b545901dbd9d0b0deb9ebb5251de5cbe..6f8ffb797f8c7d49a12b9dd5abcb4484f39d110c 100644 --- a/server/djrandom/frontend/static/js/djr/player.js +++ b/server/djrandom/frontend/static/js/djr/player.js @@ -248,6 +248,9 @@ djr.Player.prototype.createChunk = function(songs, chunk_title) { // Save the current playlist. this.savePlaylist(); + // Set the URL hash fragment to point to the current playlist. + djr.history.save(this.playlist.uuid); + // Load the HTML fragment for the chunk and display it. Also, // minimize all the other chunks. var player = this;