Merge pull request #125 from kingosticks/tracklist-add-uris
Use mopidy v1.0 uris param when adding to tracklist.
This commit is contained in:
commit
94212f1915
124
mopidy_musicbox_webclient/static/js/controls.js
vendored
124
mopidy_musicbox_webclient/static/js/controls.js
vendored
@ -1,45 +1,59 @@
|
||||
/********************************************************
|
||||
* play tracks from a browse list
|
||||
*********************************************************/
|
||||
function playBrowsedTracks(addtoqueue, trackIndex) {
|
||||
function playBrowsedTracks(action, trackIndex) {
|
||||
$('#popupBrowse').popup('close');
|
||||
toast('Loading...');
|
||||
|
||||
if (typeof trackIndex === 'undefined') {
|
||||
trackIndex = $('#popupBrowse').data("tlid");
|
||||
}
|
||||
var trackUri = browseTracks[trackIndex].uri;
|
||||
|
||||
if (action == PLAY_ALL) {
|
||||
mopidy.tracklist.clear();
|
||||
}
|
||||
var trackUris = [];
|
||||
switch (action) {
|
||||
case PLAY_NOW:
|
||||
case PLAY_NEXT:
|
||||
case ADD_THIS_BOTTOM:
|
||||
trackUris.push(browseTracks[trackIndex].uri);
|
||||
break;
|
||||
case ADD_ALL_BOTTOM:
|
||||
case PLAY_ALL:
|
||||
trackUris = getUris(browseTracks);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// For radio streams we just add the selected URI.
|
||||
// TODO: Why?
|
||||
//if (isStreamUri(trackUri)) {
|
||||
//mopidy.tracklist.add(null, null, trackUri);
|
||||
//return false;
|
||||
//}
|
||||
|
||||
switch (addtoqueue) {
|
||||
|
||||
switch (action) {
|
||||
case PLAY_NOW:
|
||||
case PLAY_NEXT:
|
||||
mopidy.tracklist.index(songdata).then(function(currentIndex) {
|
||||
mopidy.tracklist.add(null, currentIndex + 1, trackUri).then(function(tlTracks) {
|
||||
if (addtoqueue == PLAY_NOW) {
|
||||
var addFunc = mopidy.tracklist.add(null, currentIndex + 1, null, trackUris);
|
||||
if (action == PLAY_NOW) {
|
||||
addFunc.then(function(tlTracks) {
|
||||
mopidy.playback.play(tlTracks[0]);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
break;
|
||||
case ADD_THIS_BOTTOM:
|
||||
mopidy.tracklist.add(null, null, trackUri);
|
||||
break;
|
||||
case ADD_ALL_BOTTOM:
|
||||
mopidy.tracklist.add(browseTracks);
|
||||
break;
|
||||
case PLAY_ALL:
|
||||
mopidy.tracklist.clear();
|
||||
// TODO: Use uris parameter in v1.0 API (faster?).
|
||||
mopidy.tracklist.add(browseTracks).then(function(tlTracks) {
|
||||
mopidy.playback.play(tlTracks[trackIndex]);
|
||||
});
|
||||
var addFunc = mopidy.tracklist.add(null, null, null, trackUris);
|
||||
if (action == PLAY_ALL) {
|
||||
addFunc.then(function(tlTracks) {
|
||||
mopidy.playback.play(tlTracks[trackIndex]);
|
||||
});
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -51,71 +65,56 @@ function playBrowsedTracks(addtoqueue, trackIndex) {
|
||||
/********************************************************
|
||||
* play an uri from a tracklist
|
||||
*********************************************************/
|
||||
function playTrack(addtoqueue) {
|
||||
function playTrack(action) {
|
||||
var hash = document.location.hash.split('?');
|
||||
var divid = hash[0].substr(1);
|
||||
|
||||
if (!addtoqueue) {
|
||||
addtoqueue = PLAY_NOW;
|
||||
}
|
||||
|
||||
// console.log(addtoqueue, divid);
|
||||
|
||||
//stop directly, for user feedback. If searchresults, also clear queue
|
||||
if (!addtoqueue || ((addtoqueue == PLAY_NOW) && (divid == 'search'))) {
|
||||
// Clearing also stops playback.
|
||||
if (action == PLAY_NOW) {
|
||||
mopidy.tracklist.clear();
|
||||
if (divid == 'search') {
|
||||
action = PLAY_NOW_SEARCH;
|
||||
}
|
||||
}
|
||||
|
||||
$('#popupTracks').popup('close');
|
||||
$('#controlspopup').popup('close');
|
||||
toast('Loading...');
|
||||
|
||||
playlisturi = $('#popupTracks').data("list");
|
||||
|
||||
uri = $('#popupTracks').data("track");
|
||||
|
||||
var trackslist = new Array();
|
||||
var track, tracksbefore, tracksafter;
|
||||
var tracks = getTracksFromUri(playlisturi);
|
||||
|
||||
var trackUris = getTracksFromUri(playlisturi);
|
||||
//find track that was selected
|
||||
for (var selected = 0; selected < tracks.length; selected++) {
|
||||
if (tracks[selected].uri == uri) {
|
||||
for (var selected = 0; selected < trackUris.length; selected++) {
|
||||
if (trackUris[selected] == uri) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//switch popup options
|
||||
switch (addtoqueue) {
|
||||
case PLAY_NOW:
|
||||
if (divid == 'search') {
|
||||
mopidy.tracklist.add(tracks.slice(selected, selected + 1));
|
||||
mopidy.playback.play();
|
||||
return false;
|
||||
}
|
||||
switch (action) {
|
||||
case ADD_THIS_BOTTOM:
|
||||
mopidy.tracklist.add(tracks.slice(selected, selected + 1));
|
||||
return false;
|
||||
case PLAY_NEXT:
|
||||
case PLAY_NOW_SEARCH:
|
||||
trackUris = [trackUris[selected]];
|
||||
selected = 0;
|
||||
}
|
||||
switch (action) {
|
||||
case PLAY_NOW:
|
||||
case PLAY_NOW_SEARCH:
|
||||
mopidy.tracklist.add(null, null, null, trackUris).then(function(tlTracks) {
|
||||
mopidy.playback.play(tlTracks[selected])
|
||||
});
|
||||
break;
|
||||
case PLAY_NEXT:
|
||||
mopidy.tracklist.index(songdata).then(function(currentIndex) {
|
||||
mopidy.tracklist.add(tracks.slice(selected, selected + 1), currentIndex + 1);
|
||||
mopidy.tracklist.add(null, currentIndex + 1, null, trackUris);
|
||||
});
|
||||
return false;
|
||||
break;
|
||||
case ADD_THIS_BOTTOM:
|
||||
case ADD_ALL_BOTTOM:
|
||||
mopidy.tracklist.add(tracks);
|
||||
return false;
|
||||
mopidy.tracklist.add(null, null, null, trackUris);
|
||||
break;
|
||||
}
|
||||
// PLAY_NOW, play the selected track
|
||||
// mopidy.tracklist.add(null, null, uri); //tracks);
|
||||
mopidy.tracklist.add(tracks);
|
||||
|
||||
if (!addtoqueue) {
|
||||
mopidy.playback.stop();
|
||||
for (var i = 0; i <= selected; i++) {
|
||||
mopidy.playback.next();
|
||||
}
|
||||
mopidy.playback.play();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -155,8 +154,9 @@ function playTrackByUri(track_uri, playlist_uri) {
|
||||
function(tltracks) {
|
||||
//check if tltracks is filled, some backends (gmusic, m3u) do not support adding by uri, it seems
|
||||
if (tltracks.length == 0) {
|
||||
console.log('failed to add by playlist, falling back');
|
||||
var tracks = getTracksFromUri(playlist_uri);
|
||||
mopidy.tracklist.add(tracks).then(findAndPlayTrack);
|
||||
mopidy.tracklist.add(null, null, null, tracks).then(findAndPlayTrack);
|
||||
}
|
||||
findAndPlayTrack(tltracks);
|
||||
}
|
||||
|
||||
@ -65,6 +65,7 @@ PLAY_NEXT = 1;
|
||||
ADD_THIS_BOTTOM = 2;
|
||||
ADD_ALL_BOTTOM = 3;
|
||||
PLAY_ALL = 4;
|
||||
PLAY_NOW_SEARCH = 5;
|
||||
|
||||
MAX_TABLEROWS = 50;
|
||||
|
||||
@ -409,14 +410,28 @@ function getPlaylistFromUri(uri) {
|
||||
}
|
||||
}
|
||||
|
||||
function getTracksFromUri(uri) {
|
||||
var pl = getPlaylistFromUri(uri);
|
||||
if (pl) {
|
||||
return pl.tracks;
|
||||
} else if (customTracklists[uri]) {
|
||||
return customTracklists[uri];
|
||||
function getUris(tracks) {
|
||||
var results = [];
|
||||
for (var i = 0; i < tracks.length; i++) {
|
||||
results.push(tracks[i].uri);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
function getTracksFromUri(uri, full_track_data) {
|
||||
full_track_data = full_track_data || false;
|
||||
var pl = getPlaylistFromUri(uri);
|
||||
var tracks = [];
|
||||
if (pl) {
|
||||
tracks = pl.tracks;
|
||||
} else if (customTracklists[uri]) {
|
||||
tracks = customTracklists[uri];
|
||||
}
|
||||
if (full_track_data) {
|
||||
return tracks;
|
||||
} else {
|
||||
return getUris(tracks);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
//convert time to human readable format
|
||||
|
||||
@ -220,10 +220,10 @@ function getBrowseDir(rootdir) {
|
||||
// get directory to browse
|
||||
showLoading(true);
|
||||
if (!rootdir) {
|
||||
browseStack.pop();
|
||||
rootdir = browseStack[browseStack.length - 1];
|
||||
browseStack.pop();
|
||||
rootdir = browseStack[browseStack.length - 1];
|
||||
} else {
|
||||
browseStack.push(rootdir);
|
||||
browseStack.push(rootdir);
|
||||
}
|
||||
mopidy.library.browse(rootdir).then(processBrowseDir, console.error);
|
||||
}
|
||||
@ -300,7 +300,7 @@ function showAlbum(uri) {
|
||||
$('#controlsmodal').popup('close');
|
||||
$(ALBUM_TABLE).empty();
|
||||
//fill from cache
|
||||
var pl = getTracksFromUri(uri);
|
||||
var pl = getTracksFromUri(uri, true);
|
||||
if (pl.length>0) {
|
||||
albumTracksToTable(pl, ALBUM_TABLE, uri);
|
||||
var albumname = getAlbum(pl);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user