diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index daec3cc..3db4a6d 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -8,7 +8,7 @@ function playBrowsedTracks (action, trackIndex) { if (typeof trackIndex === 'undefined') { trackIndex = $('#popupBrowse').data('tlid') } - if (action == PLAY_ALL) { + if (action === PLAY_ALL) { mopidy.tracklist.clear() // Default for radio streams is to just add the selected URI. if (isStreamUri(browseTracks[trackIndex].uri)) { @@ -62,8 +62,8 @@ function playTrack (action) { var divid = hash[0].substr(1) // Search page default click behaviour adds and plays selected track only. - if (action == PLAY_NOW && divid == 'search') { - action = PLAY_NOW_SEARCH + if (action === PLAY_NOW && divid === 'search') { + action === PLAY_NOW_SEARCH } $('#popupTracks').popup('close') @@ -76,7 +76,7 @@ function playTrack (action) { var trackUris = getTracksFromUri(playlisturi) // find track that was selected for (var selected = 0; selected < trackUris.length; selected++) { - if (trackUris[selected] == uri) { + if (trackUris[selected] === uri) { break } } @@ -121,7 +121,7 @@ function playTrackByUri (track_uri, playlist_uri) { if (tlTracks.length > 0) { // Find track that was selected for (var selected = 0; selected < tlTracks.length; selected++) { - if (tlTracks[selected].track.uri == track_uri) { + if (tlTracks[selected].track.uri === track_uri) { mopidy.playback.play({'tl_track': tlTracks[selected]}) return } @@ -214,7 +214,7 @@ function clearQueue () { } function savePressed (key) { - if (key == 13) { + if (key === 13) { saveQueue() return false } @@ -228,7 +228,6 @@ function showSavePopup () { $('#popupSave').popup('open') } }) - } function saveQueue () { @@ -335,33 +334,33 @@ function backbt () { *************/ function setTracklistOption (name, new_value) { if (!new_value) { - $("#" + name+'bt').attr('style', 'color:#2489ce') + $('#' + name + 'bt').attr('style', 'color:#2489ce') } else { - $("#" + name+'bt').attr('style', 'color:#66DD33') + $('#' + name + 'bt').attr('style', 'color:#66DD33') } return new_value } function setRepeat (nwrepeat) { - if (repeat != nwrepeat) { + if (repeat !== nwrepeat) { repeat = setTracklistOption('repeat', nwrepeat) } } function setRandom (nwrandom) { - if (random != nwrandom) { + if (random !== nwrandom) { random = setTracklistOption('random', nwrandom) } } function setConsume (nwconsume) { - if (consume != nwconsume) { + if (consume !== nwconsume) { consume = setTracklistOption('consume', nwconsume) } } function setSingle (nwsingle) { - if (single != nwsingle) { + if (single !== nwsingle) { single = setTracklistOption('single', nwsingle) } } @@ -382,7 +381,6 @@ function doSingle () { mopidy.tracklist.setSingle({'value': !single}).then() } - /** ********************************************* * Track Slider * * Use a timer to prevent looping of commands * @@ -397,7 +395,7 @@ function doSeekPos (value) { } function setPosition (pos) { - if (!positionChanging && $('#trackslider').val() != pos) { + if (!positionChanging && $('#trackslider').val() !== pos) { setProgressTimer(pos) } } @@ -408,10 +406,10 @@ function setPosition (pos) { ***********************************************/ function setVolume (value) { - if (!volumeChanging && !volumeSliding && $('#volumeslider').val() != value) { - $("#volumeslider").off( 'change') - $("#volumeslider").val(value).slider('refresh') - $("#volumeslider").on( 'change', function () { doVolume($(this).val()) }) + if (!volumeChanging && !volumeSliding && $('#volumeslider').val() !== value) { + $('#volumeslider').off('change') + $('#volumeslider').val(value).slider('refresh') + $('#volumeslider').on('change', function () { doVolume($(this).val()) }) } } @@ -425,7 +423,7 @@ function doVolume (value) { } function setMute (nwmute) { - if (mute != nwmute) { + if (mute !== nwmute) { mute = nwmute if (mute) { $('#mutebt').attr('class', 'fa fa-volume-off') @@ -443,7 +441,7 @@ function doMute () { * Stream * ************/ function streamPressed (key) { - if (key == 13) { + if (key === 13) { playStreamUri() return false } @@ -530,8 +528,8 @@ function getFavourites () { STREAMS_PLAYLIST_SCHEME, true).then(function (playlist) { if (playlist) { - return getPlaylistFull(playlist.uri) - } + return getPlaylistFull(playlist.uri) + } return Mopidy.when(false) }) } @@ -552,11 +550,11 @@ function addToFavourites (newTracks) { } function addFavourite (uri, name) { - var uri = uri || $('#streamuriinput').val().trim() - var name = name || $('#streamnameinput').val().trim() + uri = uri || $('#streamuriinput').val().trim() + name = name || $('#streamnameinput').val().trim() mopidy.library.lookup({'uris': [uri]}).then(function (results) { var newTracks = results[uri] - if (newTracks.length == 1) { + if (newTracks.length === 1) { // TODO: Supporting adding an entire playlist? if (name) { newTracks[0].name = name // User overrides name. diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 1b8f060..9d82bf3 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -42,11 +42,11 @@ var customTracklists = [] var browseStack = [] var browseTracks = [] -var ua = navigator.userAgent, - isMobileSafari = /Mac/.test(ua) && /Mobile/.test(ua), - isMobileWebkit = /WebKit/.test(ua) && /Mobile/.test(ua), - isMobile = /Mobile/.test(ua), - isWebkit = /WebKit/.test(ua) +var ua = navigator.userAgent +var isMobileSafari = /Mac/.test(ua) && /Mobile/.test(ua) +var isMobileWebkit = /WebKit/.test(ua) && /Mobile/.test(ua) +var isMobile = /Mobile/.test(ua) +var isWebkit = /WebKit/.test(ua) // constants PROGRAM_NAME = 'MusicBox' @@ -215,7 +215,7 @@ function resultsToTables (results, target, uri) { return } var tlids = [] - if (target == CURRENT_PLAYLIST_TABLE) { + if (target === CURRENT_PLAYLIST_TABLE) { for (i = 0; i < results.length; i++) { tlids[i] = results[i].tlid results[i] = results[i].track @@ -255,7 +255,7 @@ function resultsToTables (results, target, uri) { } // leave out unplayable items - if (results[i].name.substring(0, 12) == '[unplayable]') continue + if (results[i].name.substring(0, 12) === '[unplayable]') continue newalbum.push(results[i]) newtlids.push(tlids[i]) @@ -263,39 +263,40 @@ function resultsToTables (results, target, uri) { if ((i < length - 1) && results[i + 1].album && results[i + 1].album.name) { nextname = results[i + 1].album.name } - if (results[i].length == -1) { + if (results[i].length === -1) { html += '
" + '
' } else { html += '
" + '
' } if (newalbum[0].artists) { for (j = 0; j < newalbum[0].artists.length; j++) { html += newalbum[0].artists[j].name - html += (j == newalbum[0].artists.length - 1) ? '' : ' / ' + html += (j === newalbum[0].artists.length - 1) ? '' : ' / ' // stop after 3 if (j > 2) { html += '...' @@ -322,7 +323,7 @@ function resultsToTables (results, target, uri) { if (results[i].album.artists) { for (j = 0; j < results[i].album.artists.length; j++) { html += results[i].album.artists[j].name - html += (j == results[i].album.artists.length - 1) ? '' : ' / ' + html += (j === results[i].album.artists.length - 1) ? '' : ' / ' // stop after 3 if (j > 2) { child += '...' @@ -334,8 +335,8 @@ function resultsToTables (results, target, uri) { for (j = 0; j < newalbum.length; j++) { popupData[newalbum[j].uri] = newalbum[j] // hERE! - var liID = targetmin + '-' + newalbum[j].uri - if (target == CURRENT_PLAYLIST_TABLE) { + liID = targetmin + '-' + newalbum[j].uri + if (target === CURRENT_PLAYLIST_TABLE) { html += renderQueueSongLi(newalbum[j], liID, uri, newtlids[j]) } else { html += renderSongLi(newalbum[j], liID, uri) @@ -369,13 +370,13 @@ function playlisttotable (pl, target, uri) { if (pl[i]) { popupData[pl[i].uri] = pl[i] child = '
' child += '' + timeFromSeconds(pl[i].length / 1000) + '' for (var j = 0; j < pl[i].artists.length; j++) { if (pl[i].artists[j]) { child += pl[i].artists[j].name - child += (j == pl[i].artists.length - 1) ? '' : ' / ' + child += (j === pl[i].artists.length - 1) ? '' : ' / ' // stop after 3 if (j > 2) { child += '...' @@ -436,7 +437,7 @@ function timeFromSeconds (length) { /** ***** Toast ***/ function toast (message, delay, textOnly) { textOnl = textOnly || false - message = message || "Loading..." + message = message || 'Loading...' delay = delay || 1000 $.mobile.loading('show', { text: message, @@ -480,7 +481,6 @@ function showOffline (on) { } } - // from http://dzone.com/snippets/validate-url-regexp function validUri (str) { var regexp = /^(mms|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ @@ -504,7 +504,7 @@ function isStreamUri (uri) { function getMediaClass (uri) { var scheme = getScheme(uri) for (var i = 0; i < uriClassList.length; i++) { - if (scheme == uriClassList[i][0]) { + if (scheme === uriClassList[i][0]) { return 'fa ' + uriClassList[i][1] } } @@ -514,7 +514,7 @@ function getMediaClass (uri) { function getMediaHuman (uri) { var scheme = getScheme(uri) for (var i = 0; i < uriHumanList.length; i++) { - if (scheme == uriHumanList[i][0]) { + if (scheme === uriHumanList[i][0]) { return uriHumanList[i][1] } } @@ -523,13 +523,14 @@ function getMediaHuman (uri) { function isServiceUri (uri) { var scheme = getScheme(uri) - for (var i = 0; i < uriClassList.length; i++) { - if (scheme == uriClassList[i][0]) { + var i = 0 + for (i = 0; i < uriClassList.length; i++) { + if (scheme === uriClassList[i][0]) { return true } } - for (var i = 0; i < radioExtensionsList.length; i++) { - if (scheme == radioExtensionsList[i]) { + for (i = 0; i < radioExtensionsList.length; i++) { + if (scheme === radioExtensionsList[i]) { return true } } @@ -537,11 +538,11 @@ function isServiceUri (uri) { } function isFavouritesPlaylist (playlist) { - return (playlist.name == STREAMS_PLAYLIST_NAME && - getScheme(playlist.uri) == STREAMS_PLAYLIST_SCHEME) + return (playlist.name === STREAMS_PLAYLIST_NAME && + getScheme(playlist.uri) === STREAMS_PLAYLIST_SCHEME) } function isSpotifyStarredPlaylist (playlist) { var starredRegex = /spotify:user:.*:starred/g - return (starredRegex.test(playlist.uri) && playlist.name == 'Starred') + return (starredRegex.test(playlist.uri) && playlist.name === 'Starred') } diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index 4827d1c..1654123 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -9,9 +9,9 @@ function resetSong () { setPlayState(false) setPosition(0) - var data = new Object({}) + var data = {} data.tlid = -1 - data.track = new Object({}) + data.track = {} data.track.name = '' data.track.artists = '' data.track.length = 0 @@ -60,7 +60,6 @@ function resizeMb () { $('#playlistslistdiv').show(); } - if (isMobileWebkit && ($(window).width() > 480)) { playlistslistScroll.refresh(); playlisttracksScroll.refresh(); @@ -79,7 +78,7 @@ function setSongTitle (title, refresh_ui) { function setSongInfo (data) { // console.log(data, songdata); if (!data) { return } - if (data.tlid == songdata.tlid) { return } + if (data.tlid === songdata.tlid) { return } if (!data.track.name || data.track.name === '') { var name = data.track.uri.split('/') data.track.name = decodeURI(name[name.length - 1]) @@ -92,7 +91,7 @@ function setSongInfo (data) { if (validUri(data.track.name)) { for (var key in streamUris) { rs = streamUris[key] - if (rs && rs[1] == data.track.name) { + if (rs && rs[1] === data.track.name) { data.track.name = (rs[0] || rs[1]) } } @@ -117,14 +116,14 @@ function setSongInfo (data) { var arttmp = '' if (data.track.artists) { - for (var j = 0; j < data.track.artists.length; j++) { - artistshtml += '' + data.track.artists[j].name + '' - artiststext += data.track.artists[j].name - if (j != data.track.artists.length - 1) { - artistshtml += ', ' - artiststext += ', ' - } - } + for (var j = 0; j < data.track.artists.length; j++) { + artistshtml += '' + data.track.artists[j].name + '' + artiststext += data.track.artists[j].name + if (j !== data.track.artists.length - 1) { + artistshtml += ', ' + artiststext += ', ' + } + } arttmp = artistshtml } if (data.track.album && data.track.album.name) { @@ -161,14 +160,15 @@ function closePopups () { } function popupTracks (e, listuri, trackuri, tlid) { - if (!e) + if (!e) { e = window.event + } $('.popupTrackName').html(popupData[trackuri].name) $('.popupAlbumName').html(popupData[trackuri].album.name) - var child = "" + var child = '' if (popupData[trackuri].artists) { - if (popupData[trackuri].artists.length == 1) { + if (popupData[trackuri].artists.length === 1) { child = 'Show Artist' $('.popupArtistName').html(popupData[trackuri].artists[0].name) $('.popupArtistHref').attr('onclick', 'showArtist("' + popupData[trackuri].artists[0].uri + '");') @@ -192,10 +192,10 @@ function popupTracks (e, listuri, trackuri, tlid) { var hash = document.location.hash.split('?') var divid = hash[0].substr(1) var popupName = '' - if (divid == 'current') { + if (divid === 'current') { $('.addqueue').hide() popupName = '#popupQueue' - } else if (divid == 'browse') { + } else if (divid === 'browse') { $('.addqueue').show() popupName = '#popupBrowse' } else { @@ -203,15 +203,15 @@ function popupTracks (e, listuri, trackuri, tlid) { popupName = '#popupTracks' } - if (typeof tlid != 'undefined' && tlid !== '') { + if (typeof tlid !== 'undefined' && tlid !== '') { $(popupName).data('list', listuri).data('track', trackuri).data('tlid', tlid).popup('open', { - x : e.pageX, - y : e.pageY + x: e.pageX, + y: e.pageY }) } else { $(popupName).data('list', listuri).data('track', trackuri).popup('open', { - x : e.pageX, - y : e.pageY + x: e.pageX, + y: e.pageY }) } @@ -311,7 +311,6 @@ function initSocketevents () { $(document).bind('pageinit', function () { resizeMb() - }) /** ************ @@ -392,7 +391,6 @@ function locationHashChanged () { var divid = hash[0].substr(1) setHeadline(divid) - var uri = hash[1] $('.mainNav a').removeClass('ui-state-active ui-state-persist ui-btn-active') // i don't know why some li elements have those classes, but they do, so we need to remove them @@ -470,7 +468,7 @@ $(document).ready(function (event) { } // workaround for a bug in jQuery Mobile, without that the panel doesn't close on mobile devices... - $('.ui-panel-dismiss').on( 'tap', function () { $('#panel').panel('close') }) + $('.ui-panel-dismiss').on('tap', function () { $('#panel').panel('close') }) // end of workaround $(window).hashchange() @@ -489,16 +487,15 @@ $(document).ready(function (event) { try { mopidy = new Mopidy({callingConvention: 'by-position-or-by-name'}) } catch (e) { - showOffline(true) - } + showOffline(true) + } } // initialize events initSocketevents() progressTimer = new ProgressTimer({ - callback: timerCallback, - // updateRate: 2000, + callback: timerCallback }) resetSong() @@ -535,9 +532,9 @@ $(document).ready(function (event) { // event handlers for full screen mode $(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange, MSFullscreenChange', function (e) { if (isFullscreen()) { - document.getElementById('toggletxt').innerHTML = "Exit Fullscreen" + document.getElementById('toggletxt').innerHTML = 'Exit Fullscreen' } else { - document.getElementById('toggletxt').innerHTML = "Fullscreen" + document.getElementById('toggletxt').innerHTML = 'Fullscreen' } }) @@ -560,28 +557,27 @@ $(document).ready(function (event) { $(document).keypress(function (event) { // console.log('kp: '+event); - if (event.target.tagName != 'INPUT') { - var unicode = event.keyCode ? event.keyCode : event.charCode - var actualkey = String.fromCharCode(unicode) - switch (actualkey) { - case ' ': - doPlay() - event.preventDefault() - break - case '>': - doNext() - event.preventDefault() - break - case '<': - doPrevious() - event.preventDefault() - break - } - return true - } + if (event.target.tagName !== 'INPUT') { + var unicode = event.keyCode ? event.keyCode : event.charCode + var actualkey = String.fromCharCode(unicode) + switch (actualkey) { + case ' ': + doPlay() + event.preventDefault() + break + case '>': + doNext() + event.preventDefault() + break + case '<': + doPrevious() + event.preventDefault() + break + } + return true + } }) - if ($(window).width() < 980) { $('#panel').panel('close') } else { @@ -593,84 +589,86 @@ $(document).ready(function (event) { $.event.special.swipe.durationThreshold = 500 // swipe songinfo and panel - $("#normalFooter, #nowPlayingFooter").on( 'swiperight', doPrevious) - $("#normalFooter, #nowPlayingFooter").on( 'swipeleft', doNext) - $("#nowPlayingpane, .ui-body-c, #header, #panel, .pane").on( 'swiperight', function () { - if (!$(event.target).is('#normalFooter') && !$(event.target).is('#nowPlayingFooter')) { - $('#panel').panel('open') - event.stopImmediatePropagation() } - }) - $("#nowPlayingpane, .ui-body-c, #header, #panel, .pane").on( 'swipeleft', function () { - if (!$(event.target).is('#normalFooter') && !$(event.target).is('#nowPlayingFooter')) { - $('#panel').panel('close') - event.stopImmediatePropagation() } - }) - - $("#trackslider").on( 'slidestart', function () { - progressTimer.stop() - $("#trackslider").on( 'change', function () { updatePosition($(this).val()) }) + $('#normalFooter, #nowPlayingFooter').on('swiperight', doPrevious) + $('#normalFooter, #nowPlayingFooter').on('swipeleft', doNext) + $('#nowPlayingpane, .ui-body-c, #header, #panel, .pane').on('swiperight', function () { + if (!$(event.target).is('#normalFooter') && !$(event.target).is('#nowPlayingFooter')) { + $('#panel').panel('open') + event.stopImmediatePropagation() + } + }) + $('#nowPlayingpane, .ui-body-c, #header, #panel, .pane').on('swipeleft', function () { + if (!$(event.target).is('#normalFooter') && !$(event.target).is('#nowPlayingFooter')) { + $('#panel').panel('close') + event.stopImmediatePropagation() + } }) - $("#trackslider").on( 'slidestop', function () { - $("#trackslider").off( 'change') + $('#trackslider').on('slidestart', function () { + progressTimer.stop() + $('#trackslider').on('change', function () { updatePosition($(this).val()) }) + }) + + $('#trackslider').on('slidestop', function () { + $('#trackslider').off('change') doSeekPos($(this).val()) }) - $("#volumeslider").on( 'slidestart', function () { volumeSliding = true }) - $("#volumeslider").on( 'slidestop', function () { volumeSliding = false }) - $("#volumeslider").on( 'change', function () { doVolume($(this).val()) }) + $('#volumeslider').on('slidestart', function () { volumeSliding = true }) + $('#volumeslider').on('slidestop', function () { volumeSliding = false }) + $('#volumeslider').on('change', function () { doVolume($(this).val()) }) }) function updatePlayIcons (uri, tlid) { // update styles of listviews $('#currenttable li').each(function () { var eachTlid = $(this).attr('tlid') - if (typeof eachTlid != 'undefined') { + if (typeof eachTlid !== 'undefined') { eachTlid = parseInt(eachTlid) } - if (this.id == 'currenttable-' + uri && eachTlid == tlid) { + if (this.id === 'currenttable-' + uri && eachTlid === tlid) { $(this).addClass('currenttrack') } else { $(this).removeClass('currenttrack') - } + } }) $('#playlisttracks li').each(function () { - if (this.id == 'playlisttracks-' + uri) { + if (this.id === 'playlisttracks-' + uri) { $(this).addClass('currenttrack2') } else { $(this).removeClass('currenttrack2') - } + } }) $('#trackresulttable li').each(function () { - if (this.id == 'trackresulttable-' + uri) { + if (this.id === 'trackresulttable-' + uri) { $(this).addClass('currenttrack2') } else { - $(this).removeClass('currenttrack2') - } + $(this).removeClass('currenttrack2') + } }) $('#artiststable li').each(function () { - if (this.id == 'artiststable-' + uri) { + if (this.id === 'artiststable-' + uri) { $(this).addClass('currenttrack2') } else { $(this).removeClass('currenttrack2') - } + } }) $('#albumstable li').each(function () { - if (this.id == 'albumstable-' + uri) { + if (this.id === 'albumstable-' + uri) { $(this).addClass('currenttrack2') } else { $(this).removeClass('currenttrack2') - } + } }) $('#browselist li').each(function () { - if (this.id == 'browselisttracks-' + uri) { + if (this.id === 'browselisttracks-' + uri) { $(this).addClass('currenttrack2') } else { $(this).removeClass('currenttrack2') - } + } }) } diff --git a/mopidy_musicbox_webclient/static/js/images.js b/mopidy_musicbox_webclient/static/js/images.js index 8cb61dc..d8c6627 100644 --- a/mopidy_musicbox_webclient/static/js/images.js +++ b/mopidy_musicbox_webclient/static/js/images.js @@ -13,9 +13,9 @@ $(window).load(function () { fmcache = new LastFMCache() // create a LastFM object lastfm = new LastFM({ - apiKey : API_KEY, - apiSecret : API_SECRET, - cache : fmcache + apiKey: API_KEY, + apiSecret: API_SECRET, + cache: fmcache }) }) @@ -72,7 +72,7 @@ function getCoverFromLastFm (track, images, size) { lastfm.album.getInfo({artist: artistname, album: albumname}, { success: function (data) { for (var i = 0; i < data.album.image.length; i++) { - if (data.album.image[i].size == size) { + if (data.album.image[i].size === size) { $(images).attr('src', data.album.image[i]['#text'] || defUrl) } } @@ -84,7 +84,7 @@ function getArtistImage (nwartist, image, size) { var defUrl = 'images/user_24x32.png' lastfm.artist.getInfo({artist: nwartist}, {success: function (data) { for (var i = 0; i < data.artist.image.length; i++) { - if (data.artist.image[i].size == size) { + if (data.artist.image[i].size === size) { $(image).attr('src', data.artist.image[i]['#text'] || defUrl) } } diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index e91e6bc..9cba433 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -5,7 +5,7 @@ function searchPressed (key) { var value = $('#searchinput').val() switchContent('search') - if (key == 13) { + if (key === 13) { initSearch() return false } @@ -31,12 +31,12 @@ function initSearch () { $('#searchalbums').hide() $('#searchtracks').hide() - if (searchService != 'all') { - mopidy.library.search({'query': {any:[value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error) + if (searchService !== 'all') { + mopidy.library.search({'query': {any: [value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error) } else { mopidy.getUriSchemes().then(function (schemes) { - var query = {}, - uris = [] + var query = {} + var uris = [] var regexp = $.map(schemes, function (scheme) { return '^' + scheme + ':' @@ -79,9 +79,10 @@ function processSearchResults (resultArr) { // Merge results from different backends. // TODO should of coures have multiple tables var results = {'tracks': [], 'artists': [], 'albums': []} - var j, emptyResult = true + var i, j + var emptyResult = true - for (var i = 0; i < resultArr.length; i++) { + for (i = 0; i < resultArr.length; i++) { if (resultArr[i].tracks) { for (j = 0; j < resultArr[i].tracks.length; j++) { results.tracks.push(resultArr[i].tracks[j]) @@ -137,7 +138,7 @@ function processSearchResults (resultArr) { var pattern = '
{artistName}
' pattern += '