X-Git-Url: https://git.rvb.name/mpd-lua.git/blobdiff_plain/55262d4cf0ac84eb33fafca62bdcae22a4d478b3..bf3bf92221cb7c06bcd93683db53b54b28ec31b5:/ajax/mpd.js diff --git a/ajax/mpd.js b/ajax/mpd.js deleted file mode 100644 index ccee6fb..0000000 --- a/ajax/mpd.js +++ /dev/null @@ -1,408 +0,0 @@ -urlbase="mpd.lua?" -minScrollHeight=200 - -function GetFilename(url) -{ - if (url) - return url.split('/').pop().split('#')[0].split('?')[0]; -} - -function EscapeStr(str) { - res = str.replace(/'/g,"\\'"); - 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(); - - req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - var returnedData = JSON.parse(this.responseText); - 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+ '' - } - document.getElementById('nowplaying_content').innerHTML=nowPlaying; - if (returnedData["state"]=="play") { - document.getElementById('playpausebutton').innerHTML=""; - } else { - document.getElementById('playpausebutton').innerHTML=""; - } - if (returnedData["repeat"]=="1") { - document.getElementById('repeatstate').innerHTML=""; - } else { - 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() { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - var returnedData = JSON.parse(this.responseText); - - var playlistMenuText = "\ - \ - \ -
\ - \ - \ - \ -
"; - - var itemsText="\ - \ - \ - "; - - var even = 0; - for (var key in returnedData) { - var rec=returnedData[key]; - var name=GetFilename(rec["name"]); - var id=rec["id"]; - - if (even) { - evText="itemEven"; - } else { - evText="itemOdd"; - }; - - even = ! even; - - itemsText = itemsText + "\ - \ - \ - \ - \ - \ - \ - "; - } - - itemsText = itemsText + "
TitleControls
\ - "+(Number(id)+1)+"\ - "+name+"\ - \ - \ - \ - \ - \ - \ -
"; - - 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); -req.send(); - -} - -function EditPlayList(dir) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - var returnedData = JSON.parse(this.responseText); - - var playlistMenuText = "\ - \ - \ -
\ - \ -
"; - - var itemsText= "\ - \ - \ - "; - - var even = 0; - if (dir) { - var lastSlash=dir.lastIndexOf("/"); - if (lastSlash>0) { - var upperLevel=dir.slice(0,lastSlash); - } else { - var upperLevel=""; - } - even = ! even; - var itemsText = itemsText + "\ - \ - \ - "; - } - - var i = 0; - for (var key in returnedData) { - var rec=returnedData[key]; - var type=rec["type"]; - var name=rec["name"]; - var lastSlash=name.lastIndexOf("/"); - if (lastSlash>0) { - var tailName=name.slice(lastSlash+1); - } else { - var tailName=name - }; - - if (type == "directory" || type == "file") { - if (even) { - evText="itemEven"; - } else { - evText="itemOdd"; - }; - - i = i + 1; - even = ! even; - - itemsText = itemsText + "\ - \ - "; - - if (type == "directory") { - itemsText = itemsText + ""; - }; - - if (type == "file") { - itemsText = itemsText + ""; - }; - - itemsText = itemsText + ""; - - } - - } - - var itemsText = itemsText+"
TitleControls
..
\ - \ - "+tailName+"\ - \ - "+tailName+"\ -
"; - document.getElementById('items').innerHTML=itemsText; - document.getElementById('playlist_menu_top').innerHTML=playlistMenuText; - document.getElementById('playlist_menu_bottom').innerHTML=playlistMenuText; -}; - -if (!dir) { dir = ''; }; - -req.open("GET", urlbase+"lists|edit|"+dir, true); -req.send(); - -} - -function LoadPlayList() { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - var returnedData = JSON.parse(this.responseText); - playlistMenuText="\ - \ - \ -
\ - \ -
"; - itemsText="\ - \ - \ - "; - - var even = 0; - for (var key in returnedData) { - var name=returnedData[key]; - - if (even) { - evText="itemEven"; - } else { - evText="itemOdd"; - }; - - even = ! even; - - itemsText = itemsText + "\ - \ - \ - \ - "; - } - - itemsText=itemsText+"
NameControls
"+name+"
"; - 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); -req.send(); - -} - -function SavePlayList() { - -var name=window.prompt('List name',''); - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - if (this.responseText != 'OK') { - window.alert(this.responseText); - } -}; - -req.open("GET", urlbase+"lists|save|"+name, true); -req.send(); - -} - -function DelPlayList(item) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - LoadPlayList(); - RefreshPageStatus(); -}; - -req.open("GET", urlbase+"lists|delete|"+item, true); -req.send(); - -} - -function RefreshPageContent() { - RefreshPlaylist(); - RefreshPageStatus(); -} - -function Command(cmd) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - RefreshPageStatus(); -}; - -req.open("GET", urlbase+cmd, true); -req.send(); - -} - -function PlaylistCommand(cmd,item) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - RefreshPageContent(); -}; - -req.open("GET", urlbase+"cpl|"+cmd+"|"+item, true); -req.send(); - -} - -function PlaylistCommandRefStatus(cmd,item) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - RefreshPageStatus(); -}; - -req.open("GET", urlbase+"cpl|"+cmd+"|"+item, true); -req.send(); - -} - -function PlaylistEditCommand(cmd,item) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - RefreshPageStatus(); -}; - -req.open("GET", urlbase+"lists|"+cmd+"|"+item, true); -req.send(); - -} - -function PlaylistEditCommandRefFull(cmd,item) { - -var req = new XMLHttpRequest(); - -req.onreadystatechange = function () { - if (this.readyState != 4 || this.status != 200) return; - RefreshPageContent(); -}; - -req.open("GET", urlbase+"lists|"+cmd+"|"+item, true); -req.send(); - -} - -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)