var current = undefined const progressMargin = 50; var progress = undefined; window.addEventListener('DOMContentLoaded', (event) => { progress = document.getElementById('player-progress'); document.getElementById('player-progress').addEventListener('click', (e) => { if(current){ let media = current.getElementsByTagName('audio')[0]; media.currentTime = e.layerX * media.duration / progress.offsetWidth; } }); let toggler = document.getElementById('player-toggler'); toggler.setAttribute('title','afficher/masquer la liste des morceaux'); toggler.addEventListener('click', (e) => { document.getElementsByTagName('ul')[0].classList.toggle('invisible'); }) }); function togglePlay(src) { let media = src.getElementsByTagName('audio')[0]; let icon = src.getElementsByTagName('img')[0]; if (current){//stops current media and reset its play icon pause(); } if(current != src){ //sets current media icon and plays media icon.setAttribute('src','assets/pause.png'); media.play(); progress.max = Math.floor(media.duration); current = src; document.getElementById('time-info').style.visibility = 'visible'; } else{ current = undefined; } } function pause(){ current.getElementsByTagName('audio')[0].pause(); current.getElementsByTagName('img')[0].setAttribute('src','assets/play.png'); document.getElementById('time-info').style.visibility = 'hidden'; } function updateProgress(media){ progress.value = Math.floor(media.currentTime); document.getElementById('time-info').innerHTML = prettyDuration(media.currentTime) + ' / ' + prettyDuration(media.duration); } function prettyDuration(duration) { let sec = Math.floor( duration ); let min = Math.floor( sec / 60 ); min = min >= 10 ? min : '0' + min; sec = Math.floor( sec % 60 ); sec = sec >= 10 ? sec : '0' + sec; return min + ':' + sec; }