Initial browsing functionality (Mopidy 0.18)
(playing tracks does not work yet)
This commit is contained in:
parent
8017062d52
commit
f87f7f4aae
@ -287,7 +287,7 @@
|
|||||||
background-color: #ddd !important;
|
background-color: #ddd !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#playlistslist li a {
|
#browselist li a, #playlistslist li a {
|
||||||
padding: 7px;
|
padding: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -63,6 +63,10 @@
|
|||||||
<a href="#playlists" onclick="switchContent('playlists' ); return false;">
|
<a href="#playlists" onclick="switchContent('playlists' ); return false;">
|
||||||
<span class="navtxt"> Playlists </span><i class="fa fa-star"></i></a>
|
<span class="navtxt"> Playlists </span><i class="fa fa-star"></i></a>
|
||||||
</li>
|
</li>
|
||||||
|
<li id="navbrowse" data-icon="false">
|
||||||
|
<a href="#browse" onclick="switchContent('browse' ); return false;">
|
||||||
|
<span class="navtxt"> Browse </span><i class="fa fa-folder"></i></a>
|
||||||
|
</li>
|
||||||
<li id="navcurrent" data-icon="false">
|
<li id="navcurrent" data-icon="false">
|
||||||
<a href="#current" onclick="switchContent('current' ); return false;">
|
<a href="#current" onclick="switchContent('current' ); return false;">
|
||||||
<span class="navtxt">Queue </span><i class="fa fa-align-left"></i></a>
|
<span class="navtxt">Queue </span><i class="fa fa-align-left"></i></a>
|
||||||
@ -204,13 +208,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ui-block-b scroll" id="playlisttracksdiv">
|
<div class="ui-block-b scroll" id="playlisttracksdiv">
|
||||||
<ul class="table" id="playlisttracks"></ul>
|
<ul class="table" id="playlisttracks"></ul>
|
||||||
<!-- <ul id="playlisttracks"></ul> -->
|
|
||||||
<!-- <ul data-role="listview" data-theme="c" data-icon="false" id="playlisttracks" data-inset="true"></ul> -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!--/playlistspane-->
|
<!--/playlistspane-->
|
||||||
|
|
||||||
|
<div data-role="content" id="browsepane" class="pane">
|
||||||
|
<h3>Browse</h3>
|
||||||
|
<ul id="browselist" class="table"></ul>
|
||||||
|
</div>
|
||||||
|
<!--/browsepane-->
|
||||||
|
|
||||||
<div id="nowPlayingpane" data-role="content" class="pane">
|
<div id="nowPlayingpane" data-role="content" class="pane">
|
||||||
|
|
||||||
|
|||||||
40
flatclient/js/controls.js
vendored
40
flatclient/js/controls.js
vendored
@ -1,3 +1,43 @@
|
|||||||
|
/********************************************************
|
||||||
|
* play tracks from a browse list
|
||||||
|
*********************************************************/
|
||||||
|
function playBrowsedTracks(addtoqueue, trackid) {
|
||||||
|
//stop directly, for user feedback
|
||||||
|
if (!addtoqueue) {
|
||||||
|
mopidy.playback.stop(true);
|
||||||
|
mopidy.tracklist.clear();
|
||||||
|
}
|
||||||
|
toast('Loading...');
|
||||||
|
|
||||||
|
// first add track to be played, then the other tracks
|
||||||
|
mopidy.tracklist.add(trackid);
|
||||||
|
// mopidy.tracklist.add({ 'uri':trackid });
|
||||||
|
|
||||||
|
console.log(trackid);
|
||||||
|
return false;
|
||||||
|
|
||||||
|
//wait 1.5 second before adding the rest to give server the time to start playing
|
||||||
|
setTimeout(function() {
|
||||||
|
mopidy.tracklist.add(tracks.slice(0, selected), 0);
|
||||||
|
if (selected < tracks.length) {
|
||||||
|
mopidy.tracklist.add(tracks.slice(selected + 1) );
|
||||||
|
}
|
||||||
|
}, 1500);
|
||||||
|
|
||||||
|
|
||||||
|
// mopidy.playback.changeTrack(tracks[selected]);
|
||||||
|
|
||||||
|
for (var i = 0; i <= selected; i++) {
|
||||||
|
mopidy.playback.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
mopidy.playback.play(); //tracks[selected]);
|
||||||
|
//console.log(selected);
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* play an uri from a tracklist
|
* play an uri from a tracklist
|
||||||
*********************************************************/
|
*********************************************************/
|
||||||
|
|||||||
@ -248,6 +248,7 @@ function initSocketevents() {
|
|||||||
getCurrentPlaylist();
|
getCurrentPlaylist();
|
||||||
updateStatusOfAll();
|
updateStatusOfAll();
|
||||||
getPlaylists();
|
getPlaylists();
|
||||||
|
getBrowseDir();
|
||||||
showLoading(false);
|
showLoading(false);
|
||||||
$(window).hashchange();
|
$(window).hashchange();
|
||||||
});
|
});
|
||||||
@ -421,6 +422,9 @@ function locationHashChanged() {
|
|||||||
case 'playlists':
|
case 'playlists':
|
||||||
$('#navplaylists a').addClass('ui-state-active ui-state-persist ui-btn-active');
|
$('#navplaylists a').addClass('ui-state-active ui-state-persist ui-btn-active');
|
||||||
break;
|
break;
|
||||||
|
case 'browse':
|
||||||
|
$('#navbrowse a').addClass('ui-state-active ui-state-persist ui-btn-active');
|
||||||
|
break;
|
||||||
case 'search':
|
case 'search':
|
||||||
$('#navsearch a').addClass($.mobile.activeBtnClass);
|
$('#navsearch a').addClass($.mobile.activeBtnClass);
|
||||||
$("#searchinput").focus();
|
$("#searchinput").focus();
|
||||||
@ -480,7 +484,7 @@ $(document).ready(function(event) {
|
|||||||
|
|
||||||
// Connect to server
|
// Connect to server
|
||||||
mopidy = new Mopidy();
|
mopidy = new Mopidy();
|
||||||
// mopidy.on(console.log.bind(console)); // Log all events
|
mopidy.on(console.log.bind(console)); // Log all events
|
||||||
|
|
||||||
//initialize events
|
//initialize events
|
||||||
initSocketevents();
|
initSocketevents();
|
||||||
|
|||||||
@ -147,7 +147,7 @@ function toggleSearch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*********************************
|
/*********************************
|
||||||
* Playlists
|
* Playlists & Browse
|
||||||
*********************************/
|
*********************************/
|
||||||
|
|
||||||
function getPlaylists() {
|
function getPlaylists() {
|
||||||
@ -155,6 +155,13 @@ function getPlaylists() {
|
|||||||
mopidy.playlists.getPlaylists(false).then(processGetPlaylists, console.error);
|
mopidy.playlists.getPlaylists(false).then(processGetPlaylists, console.error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getBrowseDir(rootdir) {
|
||||||
|
// get directory to browse
|
||||||
|
console.log('browse init: ' + rootdir);
|
||||||
|
showLoading(true);
|
||||||
|
mopidy.library.browse(rootdir).then(processBrowseDir, console.error);
|
||||||
|
}
|
||||||
|
|
||||||
function getCurrentPlaylist() {
|
function getCurrentPlaylist() {
|
||||||
mopidy.tracklist.getTracks().then(processCurrentPlaylist, console.error);
|
mopidy.tracklist.getTracks().then(processCurrentPlaylist, console.error);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,6 +55,73 @@ function processPlaystate(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********************************************************
|
||||||
|
* process results of a browse list
|
||||||
|
*********************************************************/
|
||||||
|
function processBrowseDir(resultArr) {
|
||||||
|
/*<p><ul><li>Donec id elit non mi porta</li><li>Gravida at eget metus. Fusce dapibus.</li><li>Tellus ac cursus commodo</li></p>
|
||||||
|
<p><a class="btn" href="#">More »</a></p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ((!resultArr) || (resultArr == '')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(resultArr);
|
||||||
|
|
||||||
|
if (resultArr.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#browselist').empty();
|
||||||
|
|
||||||
|
var child = "", rooturi = "", uri = resultArr[0].uri;
|
||||||
|
|
||||||
|
//check root uri
|
||||||
|
//find last : or / (spltting the result)
|
||||||
|
//do it twice, since.
|
||||||
|
var colonindex = uri.lastIndexOf(':');
|
||||||
|
var slashindex = uri.lastIndexOf('/');
|
||||||
|
|
||||||
|
var lastindex = (colonindex > slashindex) ? colonindex : slashindex;
|
||||||
|
rooturi = uri.slice(0, lastindex);
|
||||||
|
if (resultArr[0].type == 'track' ) {
|
||||||
|
rooturi = rooturi.replace(":track:", ":directory:");
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(uri, lastindex, rooturi);
|
||||||
|
|
||||||
|
colonindex = rooturi.lastIndexOf(':');
|
||||||
|
slashindex = rooturi.lastIndexOf('/');
|
||||||
|
|
||||||
|
lastindex = (colonindex > slashindex) ? colonindex : slashindex;
|
||||||
|
rooturi = rooturi.slice(0, lastindex);
|
||||||
|
|
||||||
|
console.log(rooturi);
|
||||||
|
|
||||||
|
if (rooturi.indexOf(':') == -1 ) {
|
||||||
|
rooturi = '';
|
||||||
|
child += '<li><a href="#" onclick="return getBrowseDir();">..</a></li>';
|
||||||
|
} else {
|
||||||
|
child += '<li><a href="#" onclick="return getBrowseDir(this.id);" id="' + rooturi + '">..</a></li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('new:' + rooturi);
|
||||||
|
|
||||||
|
|
||||||
|
console.log('a1');
|
||||||
|
for (var i = 0; i < resultArr.length; i++) {
|
||||||
|
if(resultArr[i].type == 'track' ) {
|
||||||
|
child += '<li><a href="#" onclick="return playBrowsedTracks(0, this.id);" id="' + resultArr[i].uri + '"">' + resultArr[i].name + '</a></li>';
|
||||||
|
} else {
|
||||||
|
child += '<li><a href="#" onclick="return getBrowseDir(this.id);" id="' + resultArr[i].uri + '"">' + resultArr[i].name + '</a></li>';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
console.log(child);
|
||||||
|
$('#browselist').html(child);
|
||||||
|
// scrollToTracklist();
|
||||||
|
showLoading(false);
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************
|
/********************************************************
|
||||||
* process results of list of playlists of the user
|
* process results of list of playlists of the user
|
||||||
*********************************************************/
|
*********************************************************/
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user