X-Git-Url: https://git.rvb.name/mpd-lua.git/blobdiff_plain/7e7b0d2b9ec3b3c62370de418cf9b0a4a667b1fb..55262d4cf0ac84eb33fafca62bdcae22a4d478b3:/ajax/mpd.js diff --git a/ajax/mpd.js b/ajax/mpd.js index 9cd2667..ccee6fb 100644 --- a/ajax/mpd.js +++ b/ajax/mpd.js @@ -1,4 +1,5 @@ urlbase="mpd.lua?" +minScrollHeight=200 function GetFilename(url) { @@ -11,6 +12,21 @@ function EscapeStr(str) { return res; } +function SetSize() { + var w = window, + d = document, + e = d.documentElement, + g = d.getElementsByTagName('body')[0], + body_h = g.clientHeight, + window_h = w.innerHeight|| e.clientHeight|| g.clientHeight, + items = d.getElementById('items'), + current_h = items.clientHeight, + new_h=(window_h-body_h)+current_h; + if (new_h>minScrollHeight) { + items.style.height=new_h+"px"; + } +} + function RefreshPageStatus() { var req = new XMLHttpRequest(); @@ -18,9 +34,10 @@ function RefreshPageStatus() { req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - nowPlaying = GetFilename(returnedData['current_playing']) - document.title='MPD Player: '+nowPlaying; - nowPlaying = (1+Number(returnedData['song'])) + '/' + returnedData['playlistlength'] + ' '+nowPlaying; + trackName = GetFilename(returnedData['current_playing']); + trackNo = returnedData['song']; + document.title='MPD Player: '+trackName; + nowPlaying = (1+Number(trackNo)) + '/' + returnedData['playlistlength'] + ' '+trackName; if (returnedData['state']=='stop') { nowPlaying = '' + nowPlaying+ '' } @@ -36,12 +53,24 @@ function RefreshPageStatus() { document.getElementById('repeatstate').innerHTML=""; } document.getElementById('volume_total').innerHTML="
"; + + var items = document.getElementById('items'); + var table = items.getElementsByClassName('track'); + var current_track="track_"+trackNo; + for (var i = 0; i < table.length; i++) { + console.log(table[i].id); + if (table[i].id==current_track) { + table[i].classList.add("itemActive"); + } else { + table[i].classList.remove("itemActive") + } + } + }; req.open("GET", urlbase+"status", true); req.send(); - } function RefreshPlaylist() { @@ -52,20 +81,18 @@ req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - var text = "
\ - \ + var playlistMenuText = "
\ \ \ -
\ \ \ \
\ -
\ -
\ - \ +
"; + + var itemsText="\ \ - \ + \ "; var even = 0; @@ -82,39 +109,30 @@ req.onreadystatechange = function () { even = ! even; - text = text + "\ - \ + itemsText = itemsText + "\ + \ \ - \ - \ - \ - \ "; } - text = text + "
TitleControlsTitleControls
\ -
\ + "+(Number(id)+1)+"\ + \ "+name+"\ \ + \ \ \ + \ \ \ + \ \
\ -
\ -
\ - \ - \ - \ -
\ - \ - \ - \ -
\ -
"; + itemsText = itemsText + ""; - document.getElementById('playlist').innerHTML=text; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; req.open("GET", urlbase+"playlist", true); @@ -130,20 +148,19 @@ req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - var text = "
\ - \ + var playlistMenuText = "
\ \ \ -
\ \
\ -
\ -
\ - \ +
"; + + var itemsText= "\ \ - \ + \ "; + var even = 0; if (dir) { var lastSlash=dir.lastIndexOf("/"); if (lastSlash>0) { @@ -151,13 +168,13 @@ req.onreadystatechange = function () { } else { var upperLevel=""; } - var text = text + "\ - \ - \ + even = ! even; + var itemsText = itemsText + "\ + \ + \ "; } - var even = 0; var i = 0; for (var key in returnedData) { var rec=returnedData[key]; @@ -180,39 +197,33 @@ req.onreadystatechange = function () { i = i + 1; even = ! even; - text = text + "\ - \ + \ "; if (type == "directory") { - text = text + ""; }; if (type == "file") { - text = text + ""; }; - text = text + ""; + itemsText = itemsText + ""; } } - var text = text+"
TitleControlsTitleControls
..
\ + itemsText = itemsText + "
\ \ + itemsText = itemsText + "\ "+tailName+"\ \ + itemsText = itemsText + "\ "+tailName+"\
\ -
\ - \ - \ - \ -
\ - \ -
\ -
"; - document.getElementById('playlist').innerHTML=text; + var itemsText = itemsText+""; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; if (!dir) { dir = ''; }; @@ -229,18 +240,15 @@ var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; var returnedData = JSON.parse(this.responseText); - text="
\ - \ + playlistMenuText="
\ \ \ -
\ \
\ -
\ -
\ - \ +
"; + itemsText="\ \ - \ + \ "; var even = 0; @@ -255,23 +263,17 @@ req.onreadystatechange = function () { even = ! even; - text = text + "\ - \ - \ - \ + itemsText = itemsText + "\ + \ + \ + \ "; } - text=text+"
NameControlsNameControls
"+name+"
"+name+"
\ - \ - \ - \ -
\ - \ -
\ -
"; - - document.getElementById('playlist').innerHTML=text; + itemsText=itemsText+""; + document.getElementById('items').innerHTML=itemsText; + document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; + document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; }; req.open("GET", urlbase+"lists|load", true); @@ -303,8 +305,8 @@ var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (this.readyState != 4 || this.status != 200) return; - RefreshPageStatus(); LoadPlayList(); + RefreshPageStatus(); }; req.open("GET", urlbase+"lists|delete|"+item, true); @@ -313,10 +315,8 @@ req.send(); } function RefreshPageContent() { - - RefreshPageStatus(); RefreshPlaylist(); - + RefreshPageStatus(); } function Command(cmd) { @@ -389,4 +389,20 @@ req.send(); } -setInterval(RefreshPageStatus, 10000); +function subscribe_status() { + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (this.readyState != 4) return; + if (this.status == 200) { + RefreshPageStatus() + setTimeout(subscribe_status,1000) + } else { + setTimeout(subscribe_status,15000) + } + } + xhr.open("GET", urlbase+"idle", true); + xhr.send(); +} + +setTimeout(subscribe_status,5000)