function load() { // track has ended document.getElementById('player').addEventListener('ended', function() { // shuffle if (document.getElementById('shuffle').checked) { ajax('/musik/get_shuffle', function() { if (httpRequest.readyState !== XMLHttpRequest.DONE) { return; } if (httpRequest.status !== 200) { return; } let track = httpRequest.responseText; change_track(track); }); } }); } var httpRequest; function ajax(url, func) { httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = func; httpRequest.open('GET', url, true); httpRequest.send(); } function navigate(item) { if (/\..{3,5}$/.test(item)) { select_track(item); } else { get_dir(item); } } function select_track(item) { let cd = document.getElementById('currentDirectory').innerText; let track = cd + item; change_track(track); } function change_track(track) { let source = document.getElementById('stream'); source.src = '/musik/stream' + encodeURIComponent(track); let player = document.getElementById('player'); player.load(); player.play(); document.getElementById('nowPlaying').innerHTML = track; let arr = track.split('/'); let art = document.getElementById('albumCover'); art.firstChild.src = '/musik/album_cover' + arr.slice(0, arr.length-1).join("/") + '/folder.jpg'; } function get_dir(item) { let cd = document.getElementById('currentDirectory').innerText; if (item === "../") { if (cd !== "/") { item = cd.slice(0, cd.slice(0, -1).lastIndexOf("/")+1); } else { return; } } else { item = cd + item; } ajax('/musik/get_dir/' + item, update_nav_items); } function update_nav_items() { if (httpRequest.readyState !== XMLHttpRequest.DONE) { return; } if (httpRequest.status !== 200) { return; } nav_items = JSON.parse(httpRequest.responseText); document.getElementById('currentDirectory').innerText = nav_items.shift(); let html_str = ''; for (let i = 0; i < nav_items.length; i++) { html_str += `
  • ${nav_items[i]}
  • `; } document.getElementById('navItems').innerHTML = html_str; }