/********************************* * Search *********************************/ function searchPressed(key) { var value = $('#searchinput').val(); switchContent('search'); if (key == 13) { initSearch(); return false; } return true; } //init search function initSearch() { var value = $('#searchinput').val(); if ((value.length < 100) && (value.length > 0)) { showLoading(true); //hide ios/android keyboard document.activeElement.blur(); $("input").blur(); delete customTracklists['allresultscache']; delete customTracklists['artistresultscache']; delete customTracklists['albumresultscache']; delete customTracklists['trackresultscache']; $("#searchresults").hide(); mopidy.library.search({ any : value }).then(processSearchResults, console.error); } } /******************************************************** * process results of a search *********************************************************/ function processSearchResults(resultArr) { <<<<<<< HEAD // Merge results from different backends. var results = {'tracks': [], 'artists': [], 'albums': []}; var emptyResult = true; console.log(resultArr, 'resultArr'); for (var i = 0; i < resultArr.length; ++i) { for (var prop in results) { if (resultArr[i][prop] && resultArr[i][prop].length) { results[prop] = results[prop].concat(resultArr[i][prop]); emptyResult = false; } } } customTracklists['trackresultscache'] = results.tracks; if (emptyResult) { alert('No results'); showLoading(false); ======= $(SEARCH_TRACK_TABLE).empty(); $(SEARCH_ARTIST_TABLE).empty(); $(SEARCH_ALBUM_TABLE).empty(); //get the right result //depends on versioon of mopidy: 0 = 0.14+ 1 = 0.13- // var results = resultArr[0]; //add complete array //results = tracks from spotify var results = resultArr[0]; //add tracks from local search if (resultArr[1].tracks) { results.tracks = resultArr[1].tracks.concat(results.tracks); } if (resultArr[1].artists) { results.artists = resultArr[1].artists.concat(results.artists); } if (resultArr[1].albums) { results.albums = resultArr[1].albums.concat(results.albums); } var tracks = (results.tracks) ? results.tracks : ''; customTracklists['trackresultscache'] = tracks; var artists = (results.artists) ? results.artists : ''; var albums = (results.albums) ? results.albums : ''; if ((tracks == '') && (artists == '') && (albums == '')) { toast('No results', 1500, true); >>>>>>> develop return false; } $("#searchresults").show(); // Returns a string where {x} in template is replaced by tokens[x]. function theme(template, tokens) { return template.replace(/{[^}]+}/g, function(match) { return tokens[match.slice(1,-1)]; }); } // 'Show more' pattern var showMorePattern = '
  • Show {count} more
  • '; // Artist results var child = ''; var pattern = '
  • {name}
  • '; var tokens; for (var i = 0; i < results.artists.length; i++) { tokens = { 'id': results.artists[i].uri, 'name': results.artists[i].name }; // Add 'Show all' item after a certain number of hits. if (i == 4 && results.artists.length > 5) { child += theme(showMorePattern, {'count': results.artists.length - i}); pattern = pattern.replace('
  • ', '
  • '); } <<<<<<< HEAD child += theme(pattern, tokens); ======= if (artists[i]) { child += '">' + artists[i].name + "
  • "; } >>>>>>> develop } // Inject list items, refresh listview and hide superfluous items. $(SEARCH_ARTIST_TABLE).html(child).listview('refresh').find('.overflow').hide(); // Album results child = ''; <<<<<<< HEAD pattern = '
  • '; pattern += '
    {albumName}
    '; pattern += '

    {artistName} ({albumYear})

    '; pattern += '
  • '; for (var i = 0; i < results.albums.length; i++) { tokens = { 'albumId': results.albums[i].uri, 'albumName': results.albums[i].name, 'artistName': '', 'albumYear': results.albums[i].date }; for (var j = 0; j < results.albums[i].artists.length; j++) { tokens.artistName += results.albums[i].artists[j].name + ' '; } // Add 'Show all' item after a certain number of hits. if (i == 4 && results.albums.length > 5) { child += theme(showMorePattern, {'count': results.albums.length - i}); pattern = pattern.replace('
  • ', '
  • '); } child += theme(pattern, tokens); } // Inject list items, refresh listview and hide superfluous items. $(SEARCH_ALBUM_TABLE).html(child).listview('refresh').find('.overflow').hide(); // Track results child = ''; pattern = ''; pattern += ''; pattern += '{track}{artist}{time}{album}'; //playlisttotable(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); for (var i = 0; i < results.tracks.length; ++i) { popupData[results.tracks[i].uri] = results.tracks[i]; tokens = { 'track': results.tracks[i].name, 'artist': '', 'time': timeFromSeconds(results.tracks[i].length / 1000), 'album': results.tracks[i].album.name, 'listuri': undefined, 'trackuri': results.tracks[i].uri, 'domId': SEARCH_TRACK_TABLE.substr(1) + '-' + results.tracks[i].uri, }; var as = []; for (var j = 0; j < results.tracks[i].artists.length; ++j) { as.push(results.tracks[i].artists[j].name); } tokens.artist = as.join(', '); child += theme(pattern, tokens); ======= // console.log(albums.length); for (var i = 0; i < albums.length; i++) { child += '
  • '; child += "

    " + albums[i].name + "

    "; for (var j = 0; j < albums[i].artists.length; j++) { if (albums[i].artists[j]) { child += albums[i].artists[j].name + " "; } } child += '

  • '; } >>>>>>> develop } $(SEARCH_TRACK_TABLE).children('tbody').html(child); $(SEARCH_TRACK_TABLE).find('tbody tr td a').button(); $(SEARCH_TRACK_TABLE).table('refresh'); <<<<<<< HEAD ======= // console.log(results.tracks); playlisttotable(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); >>>>>>> develop setSongInfo(); showLoading(false); } function toggleSearch() { $("#albumresulttable tr").removeClass('hidden'); $("#artistresulttable tr").removeClass('hidden'); } /********************************* * Playlists *********************************/ function getPlaylists() { // get playlists without tracks mopidy.playlists.getPlaylists(false).then(processGetPlaylists, console.error); } function getCurrentPlaylist() { mopidy.tracklist.getTracks().then(processCurrentPlaylist, console.error); } /******************************************************** * Show tracks of playlist ********************************************************/ function showTracklist(uri) { $(PLAYLIST_TABLE).empty(); $('#playlisttracksdiv').show(); var pl = getPlaylistFromUri(uri); //load from cache if (pl) { resultsToTables(pl.tracks, PLAYLIST_TABLE, uri); } else { showLoading(true); } $('#playlistslist li a').each(function() { $(this).removeClass("playlistactive"); if (this.id == uri) { $(this).addClass('playlistactive'); } }); scrollToTracklist(); //lookup recent tracklist mopidy.playlists.lookup(uri).then(processGetTracklist, console.error); return false; } /****** * Lookups */ function showArtist(nwuri) { $('#popupTracks').popup('close'); $('#controlsmodal').popup('close'); $(ARTIST_TABLE).empty(); //fill from cache // var pl = getTracksFromUri(nwuri); //TODO cache $('#h_artistname').html(''); showLoading(true); mopidy.library.lookup(nwuri).then(processArtistResults, console.error); switchContent('artists', nwuri); scrollToTop(); setSongInfo(); return false; } function showAlbum(uri) { $('#popupTracks').popup('close'); $('#controlsmodal').popup('close'); $(ALBUM_TABLE).empty(); //fill from cache var pl = getTracksFromUri(uri); if (pl) { albumTracksToTable(pl, ALBUM_TABLE, uri); var albumname = getAlbum(pl); var artistname = getArtist(pl); $('#h_albumname').html(albumname); $('#h_albumartist').html(artistname); $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); showLoading(false); getCover(artistname, albumname, '#albumviewcover, #coverpopupimage', 'extralarge'); mopidy.library.lookup(uri).then(processAlbumResults, console.error); } else { showLoading(true); $('#h_albumname').html(''); $('#h_albumartist').html(''); mopidy.library.lookup(uri).then(processAlbumResults, console.error); } //show page switchContent('albums', uri); scrollToTop(); setSongInfo(); return false; }