diff options
Diffstat (limited to 'static/@solitude/js')
| -rw-r--r-- | static/@solitude/js/welcome.js | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/static/@solitude/js/welcome.js b/static/@solitude/js/welcome.js deleted file mode 100644 index d8921075..00000000 --- a/static/@solitude/js/welcome.js +++ /dev/null @@ -1,113 +0,0 @@ -Object.defineProperty(Array.prototype, "shuffle", { - value: function () { - for (let i = this.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [this[i], this[j]] = [this[j], this[i]]; - } - return this; - }, -}); - -const tracks = Object.entries(playlistTracks) - .map((track) => track[1]) - .shuffle(); - -const controls = document.querySelector(".controls"); -const audio = document.querySelector("#audio"); -const trackTitle = document.querySelector("#track-title"); -const trackArtist = document.querySelector("#track-artist"); -const albumArt = document.querySelector("#album-art"); -const minElap = document.querySelector("#min-elap"); -const secElap = document.querySelector("#sec-elap"); -const minDur = document.querySelector("#min-dur"); -const secDur = document.querySelector("#sec-dur"); - -let currentTrack = 0; - -const loadAudio = new Promise((resolve, reject) => { - audio.addEventListener("canplaythrough", () => { - resolve(audio); - }); -}); - -async function playAudio() { - audio.src = tracks[currentTrack].location; - const duration = audio.duration; - audio.play().catch((e) => { - window.addEventListener( - "click", - () => { - controls.click(); - audio.play(); - }, - { once: true } - ); - }); - return audio; -} - -function pauseAudio() { - audio.pause(); -} - -function nextTrack() { - currentTrack = (currentTrack + 1) % tracks.length; - audio.currentTime = 0; - playTrack(); -} - -function playTrack() { - const track = tracks[currentTrack]; - trackTitle.textContent = track.title; - trackArtist.textContent = track.artist; - albumArt.src = track.cover_art; - playAudio().then((audio) => { - audio.addEventListener("ended", nextTrack); - }); -} - -function updateIntervals() { - const duration = audio.duration; - const currentTime = audio.currentTime; - const elapsed = Math.floor(currentTime); - const total = Math.floor(duration); - const minutesElapsed = Math.floor(elapsed / 60); - const secondsElapsed = elapsed % 60; - const minutesTotal = Math.floor(total / 60) || 0; - const secondsTotal = total % 60 || 0; - minElap.textContent = - minutesElapsed < 10 ? `0${minutesElapsed}` : minutesElapsed; - secElap.textContent = - secondsElapsed < 10 ? `0${secondsElapsed}` : secondsElapsed; - minDur.textContent = minutesTotal < 10 ? `0${minutesTotal}` : minutesTotal; - secDur.textContent = secondsTotal < 10 ? `0${secondsTotal}` : secondsTotal; -} - -function togglePlayPause() { - const buttons = Array.from(this.children); - let triggeredButton; - buttons.forEach((button) => { - if (!button.classList.contains("hidden")) { - triggeredButton = button; - } - button.classList.toggle("hidden"); - }); - signalTrigger(triggeredButton); -} - -function signalTrigger(button) { - const role = button.getAttribute("role"); - switch (role) { - case "play": - playAudio(); - break; - case "pause": - pauseAudio(); - break; - } -} - -audio.currentTime = 0; -controls.addEventListener("click", togglePlayPause); -audio.addEventListener("timeupdate", updateIntervals); -playTrack(); |
