diff --git a/server/djrandom/frontend/static/player.js b/server/djrandom/frontend/static/player.js index e0aa3a8e2900e1014bf19868d28ce9c86e27acd8..7462fcafba27f0f65dd116550d90c7cedff2ac3f 100644 --- a/server/djrandom/frontend/static/player.js +++ b/server/djrandom/frontend/static/player.js @@ -15,7 +15,7 @@ djr.Backend = function(userid) { }; // Read a playlist, calls callback(Playlist). -djr.Backend.prototype.getPlaylist(uuid, callback, ctx) { +djr.Backend.prototype.getPlaylist = function(uuid, callback, ctx) { $.ajax({url: '/json/playlist/get/' + uuid, dataType: 'json', context: ctx, @@ -26,7 +26,7 @@ djr.Backend.prototype.getPlaylist(uuid, callback, ctx) { }; // Save a playlist (song array). -djr.Backend.prototype.savePlaylist(uuid, songs) { +djr.Backend.prototype.savePlaylist = function(uuid, songs) { $.ajax({url: '/json/playlist/save', data: {uuid: uuid, h: songs.join(',')}, @@ -35,7 +35,7 @@ djr.Backend.prototype.savePlaylist(uuid, songs) { }; // Return the HTML fragment for an array of songs. -djr.Backend.prototype.getHtmlForSongs(songs, callback, ctx) { +djr.Backend.prototype.getHtmlForSongs = function(songs, callback, ctx) { $.ajax({url: '/fragment/songs', data: {'h': songs.join(',')}, dataType: 'html', @@ -57,11 +57,11 @@ djr.PlaylistChunk = function(songs) { this.songs = songs || []; }; -djr.PlaylistChunk.prototype.hasSong(sha1) { +djr.PlaylistChunk.prototype.hasSong = function(sha1) { return (this.songs.indexOf(sha1) >= 0); }; -djr.PlaylistChunk.prototype.removeSong(sha1) { +djr.PlaylistChunk.prototype.removeSong = function(sha1) { this.songs = $.grep(this.songs, function(a) { return a != sha1; }); }; @@ -69,8 +69,8 @@ djr.PlaylistChunk.prototype.removeSong(sha1) { // Playlist. -djr.Playlist = function() { - this.uuid = null; +djr.Playlist = function(uuid) { + this.uuid = uuid || djr.generateRandomId(); this.chunks = []; this.song_map = {}; this.chunk_map = {}; @@ -90,6 +90,7 @@ djr.Playlist.prototype.allSongs = function() { // Add a new chunk (only adds unique songs). // Returns the chunk ID. djr.Playlist.prototype.addChunk = function(playlist_chunk) { + djr.debug('adding chunk to playlist ' + this.uuid); chunk_id = this.next_chunk_id++; var songs = []; $.each(playlist_chunk.songs, function(idx, song) { @@ -106,6 +107,7 @@ djr.Playlist.prototype.addChunk = function(playlist_chunk) { // Remove a chunk (by ID). djr.Playlist.prototype.removeChunk = function(chunk_id) { + djr.debug('removing chunk ' + chunk_id); $.each(this.chunks[chunk_id].songs, function(idx, song){ delete this.song_map[song]; }); @@ -181,8 +183,13 @@ djr.Player.prototype.search = function(query) { $.each(results, function(idx, item) { songs.push(item.sha1); }); + if (songs.length == 0) { + djr.debug('No results found.'); + return; + } var chunk_id = this.playlist.addChunk(new PlaylistChunk(songs)); + djr.debug('search: new chunk ' + chunk_id); var player = this; this.backend.getHtmlForSongs(songs, function(songs_html) {