ColeSite/scripts/audioPlayer.js

73 lines
3 KiB
JavaScript
Raw Normal View History

2021-12-27 00:20:43 +00:00
const audioList = document.getElementsByClassName('audioPlayer');
var changingSlider = false
function convertTime(timeInSec)
{
const minutes = Math.floor(timeInSec / 60);
const seconds = Math.floor(timeInSec % 60);
const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;
return `${minutes}:${returnedSeconds}`;
}
2021-12-27 00:53:51 +00:00
function updateSliderBg(slider)
{
var value = (slider.value-slider.min)/(slider.max-slider.min)*100
2021-12-27 19:53:20 +00:00
slider.style.background = 'url("../images/bar.png"), linear-gradient(to right, #000000 0%, #000000 ' + value + '%, transparent ' + value + '%, transparent 100%)'
2021-12-27 00:53:51 +00:00
}
2021-12-27 00:20:43 +00:00
Array.prototype.forEach.call(audioList, audio => {
// setup duration in slider and counter
audioElement = audio.getElementsByClassName("audioElement")[0];
audioElement.addEventListener('loadedmetadata', event => {
event.target.parentElement.getElementsByClassName("audioSlider")[0].max = event.target.duration
event.target.parentElement.getElementsByClassName("durationContainer")[0].innerHTML = convertTime(event.target.duration)
});
// set up slider to change counter when used
audio.getElementsByClassName("audioSlider")[0].addEventListener("input", event => {
event.target.parentElement.getElementsByClassName("timeContainer")[0].innerHTML = convertTime(event.target.value)
2021-12-27 00:53:51 +00:00
updateSliderBg(event.target)
2021-12-27 00:20:43 +00:00
changingSlider = true;
})
// set slider to change part of music playing when used
audio.getElementsByClassName("audioSlider")[0].addEventListener("change", event => {
event.target.parentElement.getElementsByClassName("audioElement")[0].currentTime = event.target.value
changingSlider = false;
})
// set the audio element to change the sliders value whenever its time updates
audioElement.addEventListener("timeupdate", event => {
if (changingSlider)
{
return
}
event.target.parentElement.getElementsByClassName("audioSlider")[0].value = Math.floor(event.target.currentTime)
event.target.parentElement.getElementsByClassName("timeContainer")[0].innerHTML = convertTime(event.target.currentTime)
2021-12-27 00:53:51 +00:00
updateSliderBg(event.target.parentElement.getElementsByClassName("audioSlider")[0])
})
audioElement.addEventListener("ended", event => {
event.target.currentTime = 0
2021-12-27 19:53:20 +00:00
event.target.parentElement.getElementsByClassName("playButton")[0].children[0].src = "../images/play.png"
2021-12-27 00:20:43 +00:00
})
// set the play button
audio.getElementsByClassName("playButton")[0].addEventListener("click", event => {
if (event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].paused)
{
event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].play()
2021-12-27 19:53:20 +00:00
event.target.src = "../images/pause.png"
2021-12-27 00:20:43 +00:00
}
else
{
event.target.parentElement.parentElement.parentElement.getElementsByClassName("audioElement")[0].pause()
2021-12-27 19:53:20 +00:00
event.target.src = "../images/play.png"
2021-12-27 00:20:43 +00:00
}
})
});