webmusic.js: refactor continuous- and repeat-button handling
This commit is contained in:
parent
1cf5c13e2b
commit
94ed0d208d
53
webmusic.js
53
webmusic.js
|
@ -1,7 +1,7 @@
|
||||||
let audioPlayer = new Audio();
|
let audioPlayer = new Audio();
|
||||||
let continuelist = true;
|
let continuous = true;
|
||||||
let gstate = "idle";
|
|
||||||
let repeat = false;
|
let repeat = false;
|
||||||
|
let gstate = "idle";
|
||||||
let total = 0;
|
let total = 0;
|
||||||
let index = 0;
|
let index = 0;
|
||||||
|
|
||||||
|
@ -60,6 +60,8 @@ const initState = () => {
|
||||||
let id = 0;
|
let id = 0;
|
||||||
|
|
||||||
document.getElementById("state").addEventListener("click", togglePlayback)
|
document.getElementById("state").addEventListener("click", togglePlayback)
|
||||||
|
document.getElementById("repeatButton").addEventListener("click", toggleRepeat)
|
||||||
|
document.getElementById("continuousButton").addEventListener("click", toggleContinue)
|
||||||
|
|
||||||
dirElements.forEach(function(element){
|
dirElements.forEach(function(element){
|
||||||
element.id = id++;
|
element.id = id++;
|
||||||
|
@ -76,7 +78,8 @@ const initState = () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
total = id;
|
total = id;
|
||||||
updateState()
|
updateState();
|
||||||
|
updateButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
const setState = (state) => {
|
const setState = (state) => {
|
||||||
|
@ -87,28 +90,31 @@ const setState = (state) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateState = () => {
|
const updateState = () => {
|
||||||
let statestr = "[";
|
let statestr = "[" + gstate;
|
||||||
statestr += gstate;
|
|
||||||
|
|
||||||
if (!audioPlayer.paused) {
|
if (!audioPlayer.paused) {
|
||||||
statestr += " " + formatTime(Math.round(audioPlayer.currentTime)) + "/" + formatTime(Math.round(audioPlayer.duration));
|
statestr += " " + formatTime(audioPlayer.currentTime) + "/" + formatTime(audioPlayer.duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
statestr += "]";
|
statestr += "]";
|
||||||
document.getElementById("state").innerHTML = statestr;
|
document.getElementById("state").innerHTML = statestr;
|
||||||
let flags = "[";
|
|
||||||
if (repeat)
|
|
||||||
flags += '<a onclick="toggleRepeat()" href="#" style="color:#6b9969">R</a>';
|
|
||||||
else
|
|
||||||
flags += '<a onclick="toggleRepeat()" href="#">R</a>';
|
|
||||||
if (continuelist)
|
|
||||||
flags += '<a onclick="toggleContinue()" href="#" style="color:#6b9969">C</a>';
|
|
||||||
else
|
|
||||||
flags += '<a onclick="toggleContinue()" href="#">C</a>';
|
|
||||||
|
|
||||||
document.getElementById("flags").innerHTML = flags + "]";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateButtonState = () => {
|
||||||
|
if (repeat !== false) {
|
||||||
|
document.getElementById('repeatButton').style.color = '#6b9969';
|
||||||
|
} else {
|
||||||
|
document.getElementById('repeatButton').style.color = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (continuous !== false) {
|
||||||
|
document.getElementById('continuousButton').style.color = '#6b9969';
|
||||||
|
} else {
|
||||||
|
document.getElementById('continuousButton').style.color = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const playSong = (id) => {
|
const playSong = (id) => {
|
||||||
let element = document.getElementById(id);
|
let element = document.getElementById(id);
|
||||||
|
|
||||||
|
@ -167,14 +173,14 @@ const togglePlayback = () => {
|
||||||
|
|
||||||
const toggleRepeat = () => {
|
const toggleRepeat = () => {
|
||||||
repeat = !repeat;
|
repeat = !repeat;
|
||||||
continuelist = !repeat;
|
continuous = !repeat;
|
||||||
audioPlayer.loop = repeat;
|
audioPlayer.loop = repeat;
|
||||||
updateState();
|
updateButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleContinue = () => {
|
const toggleContinue = () => {
|
||||||
continuelist = !continuelist;
|
continuous = !continuous;
|
||||||
updateState();
|
updateButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
const previousTrack = () => {
|
const previousTrack = () => {
|
||||||
|
@ -184,7 +190,7 @@ const previousTrack = () => {
|
||||||
return previousTrack();
|
return previousTrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (continuelist) {
|
if (continuous) {
|
||||||
playSong(index)
|
playSong(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,12 +202,13 @@ const nextTrack = () => {
|
||||||
return nextTrack();
|
return nextTrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (continuelist) {
|
if (continuous) {
|
||||||
playSong(index)
|
playSong(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const formatTime = (secs) => {
|
const formatTime = (secs) => {
|
||||||
|
secs = Math.round(secs);
|
||||||
const minutes = Math.floor(secs / 60) || 0;
|
const minutes = Math.floor(secs / 60) || 0;
|
||||||
const seconds = (secs - minutes * 60) || 0;
|
const seconds = (secs - minutes * 60) || 0;
|
||||||
return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
|
return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
|
||||||
|
|
Loading…
Reference in a new issue