/** * @author Wouter van Wijk * * all kinds functions and vars */ var baseurl = '/mopidy'; var host = window.location.hostname; var port = window.location.port; var wsurl = host + ':' + port + baseurl var intv; var socket; var mopidy; //values for controls var play = false; var random; var repeat; var currentVolume = -1; var muteVolume = -1; var posTimer; var seekTimer; var initgui = true; var currentpos = 0; var popupData = {}; var artistshtml = ''; var artiststext = ''; var songname = ''; var newposition = 0; //array of cached playlists (not only user-playlists, also search, artist, album-playlists) var playlists = {}; var currentplaylist; var customPlaylists = []; var customTracklists = []; //constants PROGRAM_NAME = 'Mopidy'; ARTIST_TABLE = '#artiststable'; ALBUM_TABLE = '#albumstable'; PLAYLIST_TABLE = '#playlisttable'; CURRENT_PLAYLIST_TABLE = '#currenttable'; SEARCH_ALL_TABLE = '#allresulttable'; SEARCH_ALBUM_TABLE = '#albumresulttable'; SEARCH_ARTIST_TABLE = '#artistresulttable'; SEARCH_TRACK_TABLE = '#trackresulttable'; //update track timer, milliseconds TRACK_TIMER = 1000; /******* * */ function scrollToTracklist() { var divtop = $("#playlisttablediv").offset().top - 15; $('body,html').animate({ scrollTop : divtop }, 250); } //A hack to find the name of the first artist of a playlist. this is not yet returned by mopidy //does not work wel with multiple artists of course function getArtist(pl) { for (var i = 0; i < pl.length; i++) { for (var j = 0; j < pl[i].artists.length; j++) { if (pl[i].artists[j].name != '') { return pl[i].artists[j].name; } } }; } //A hack to find the first album of a playlist. this is not yet returned by mopidy function getAlbum(pl) { for (var i = 0; i < pl.length; i++) { if (pl[i].album.name != '') { return pl[i].album.name; } }; } //process updated playlist to gui function playlisttotable(pl, table, uri) { var tmp = ''; $(table).html(''); var child = ''; for (var i = 0; i < pl.length; i++) { /* var child = '
  • ' + pl[i].name + "

    "; child += '

    ' + timeFromSeconds(pl[i].length / 1000) + '

    '; // console.log(i); child += '

    '; for (var j = 0; j < pl[i].artists.length; j++) { child += '' + pl[i].artists[j].name + ""; //stop after 3 if (j > 2) { child += '...'; break; } } // child += ''; child += ' / ' + pl[i].album.name + '

    '; child += '
  • '; //console.log(child); tmp += child; */ popupData[pl[i].uri] = pl[i]; child = '
  • '; child += '

    ' + pl[i].name + "

    "; child += '

    '; child += '' + timeFromSeconds(pl[i].length / 1000) + ''; //   for (var j = 0; j < pl[i].artists.length; j++) { child += pl[i].artists[j].name; child += (j == pl[i].artists.length - 1) ? '' : ' / '; //stop after 3 if (j > 2) { child += '...'; break; } } child += ' / ' + pl[i].album.name + '

    '; // child += '

    ' + pl[i].album.name + '

    '; child += '
  • '; tmp += child; }; $(table).html(tmp); $(table).attr('data', uri); //create (for new tables) // $(table).listview().trigger("create"); //refresh $(table).listview('refresh'); } function albumtrackstotable(pl, table, uri) { var tmp = ''; $(table).empty(); var child = ''; for (var i = 0; i < pl.length; i++) { popupData[pl[i].uri] = pl[i]; child = '
  • '; child += '

    ' + timeFromSeconds(pl[i].length / 1000) + '

    ' + pl[i].name + '

  • '; tmp += child; }; $(table).html(tmp); $(table).attr('data', uri); //set click handlers /* $(table + ' .name').click(function() { return playtrack(this.id, uri) });*/ //create (for new tables) $(table).listview().trigger("create"); //refresh $(table).listview('refresh'); } function getPlaylistFromUri(uri) { if (playlists[uri]) { return playlists[uri]; } if (customPlaylists[uri]) { return customPlaylists[uri]; } } function getTracksFromUri(uri) { var pl = getPlaylistFromUri(uri); if (pl) { return pl.tracks; } else if (customTracklists[uri]) { return customTracklists[uri]; } } //convert time to human readable format function timeFromSeconds(length) { var d = Number(length); var h = Math.floor(d / 3600); var m = Math.floor(d % 3600 / 60); var s = Math.floor(d % 3600 % 60); return ((h > 0 ? h + ":" : "") + (m > 0 ? (h > 0 && m < 10 ? "0" : "") + m + ":" : "0:") + (s < 10 ? "0" : "") + s); }