}
m_songIndex = m_allSongs.indexOf(songElement);
+ showBigPlayer();
playCurrentSong();
}
var song = m_allSongs[m_songIndex];
var songData = JSON.parse(song.dataset.song);
- var player = document.getElementById("player")
- player.hidden = false;
-
var audio = document.getElementById("player-audio");
audio.pause();
audio.src = `/song/${songData.userid}/${songData.songid}`;
}
}
+ // Copy song info to mini player
+ document.getElementById("mini-player-title").textContent = songData.title;
+ document.getElementById("mini-player-title").href = title.href;
+ document.getElementById("mini-player-artist").textContent = songData.username;
+ document.getElementById("mini-player-artist").href = artist.href;
+ document.getElementById("mini-player-collabs").innerHTML = collabs.innerHTML;
+
if ("mediaSession" in navigator) {
navigator.mediaSession.metadata = new MediaMetadata({
title: songData.title,
}
}
+function showBigPlayer() {
+ document.getElementById("mini-player").hidden = true;
+ document.getElementById("player").hidden = false;
+}
+
+function showMiniPlayer(event) {
+ // Only show mini player if big player is already shown
+ var bigPlayer = document.getElementById("player");
+ if (!bigPlayer.hidden) {
+ bigPlayer.hidden = true;
+ document.getElementById("mini-player").hidden = false;
+ }
+}
+
// Play or pause the current song in the player
function songPlayPause() {
var audio = document.getElementById("player-audio");
// Show pause button when audio is playing
var button = document.getElementById("play-pause-button");
+ var miniButton = document.getElementById("mini-play-pause-button");
audio.addEventListener("play", (event) => {
button.className = "lsp_btn_pause02";
button.src = customImage(document.getElementById("lsp_btn_pause02"));
+ miniButton.className = "lsp_btn_pause02";
+ miniButton.src = customImage(document.getElementById("lsp_btn_pause02"));
})
// Show play button when audio is paused
audio.addEventListener("pause", (event) => {
button.className = "lsp_btn_play02";
button.src = customImage(document.getElementById("lsp_btn_play02"));
+ miniButton.className = "lsp_btn_play02";
+ miniButton.src = customImage(document.getElementById("lsp_btn_play02"));
})
// Audio position scrubbing
document.getElementById("volume-slider").oninput = function(event) {
audio.volume = event.target.value;
}
+
+ // Show mini player on scroll
+ document.addEventListener("scroll", showMiniPlayer);
});
<html>
<head>
<title>{% block title %}{% endblock %}</title>
- <link rel="stylesheet" href="/static/styles.css?v=3"/>
+ <link rel="stylesheet" href="/static/styles.css?v=4"/>
<link rel="icon" type="image/x-icon" href="/static/lsp_notes.png?v=1"/>
- <script src="/static/player.js?v=1"></script>
+ <script src="/static/player.js?v=2"></script>
<script src="/static/nav.js?v=2"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<input id="volume-slider" name="volume" type="range" min="0" max="1" step="any" value="1"/>
</div>
</div>
+ <div class="mini-player" id="mini-player" hidden>
+ <div class="song-info">
+ <!-- Song Title -->
+ <div class="song-title mini-player-label"><a id="mini-player-title">Not Playing</a></div>
+
+ <!-- Separator -->
+ <div class="song-info-sep"> - </div>
+
+ <!-- Song Artist(s) -->
+ <div class="mini-player-label">
+ <a class="profile-link" id="mini-player-artist"></a>
+ <span class="profile-link" id="mini-player-collabs"></span>
+ </div>
+ </div>
+ <div class="mini-player-controls">
+ <button onclick="showBigPlayer()" title="Show Big Player" class="player-button">
+ <img class="lsp_btn_show02">
+ </button>
+ <button onclick="songPlayPause()" title="Play" class="player-button">
+ <img class="lsp_btn_pause02" id="mini-play-pause-button">
+ </button>
+ </div>
+ </div>
</div>
</body>
</html>