From: Chris Fulljames Date: Sun, 30 Mar 2025 01:16:27 +0000 (-0400) Subject: Add mini player X-Git-Url: https://littlesong.place/gitweb/?a=commitdiff_plain;h=bd163e5b66a4d956fc52e841f6590b2b629b742a;p=littlesongplace.git Add mini player --- diff --git a/static/player.js b/static/player.js index c879a97..174add7 100644 --- a/static/player.js +++ b/static/player.js @@ -12,6 +12,7 @@ function play(event) { } m_songIndex = m_allSongs.indexOf(songElement); + showBigPlayer(); playCurrentSong(); } @@ -19,9 +20,6 @@ function 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}`; @@ -72,6 +70,13 @@ function playCurrentSong() { } } + // 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, @@ -98,6 +103,20 @@ function playCurrentSong() { } } +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"); @@ -176,15 +195,20 @@ document.addEventListener("DOMContentLoaded", (event) => { // 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 @@ -219,5 +243,8 @@ document.addEventListener("DOMContentLoaded", (event) => { document.getElementById("volume-slider").oninput = function(event) { audio.volume = event.target.value; } + + // Show mini player on scroll + document.addEventListener("scroll", showMiniPlayer); }); diff --git a/static/styles.css b/static/styles.css index 12bc5cf..9be2828 100644 --- a/static/styles.css +++ b/static/styles.css @@ -441,6 +441,17 @@ div.player { background: var(--yellow); } +.mini-player { + margin: 10px; + padding-left: 10px; + box-shadow: 0px 0px 20px 0px; + border-radius: 10px; + background: var(--yellow); + + display: flex; + align-items: center; +} + div.player-info { display: flex; flex-direction: row; @@ -461,6 +472,16 @@ div.player-info { /*padding: 0px 10px;*/ } +.mini-player-controls { + margin: 5px; + display: flex; + gap: 5px; +} + +.mini-player-label { + white-space: nowrap; +} + #player-title { text-decoration: none; } @@ -506,6 +527,7 @@ div.player-info { .player-button img { image-rendering: pixelated; width: 32px; + vertical-align: middle; } #volume-slider { diff --git a/templates/base.html b/templates/base.html index 1fcd26a..95f1356 100644 --- a/templates/base.html +++ b/templates/base.html @@ -2,9 +2,9 @@ {% block title %}{% endblock %} - + - + @@ -98,6 +98,29 @@ +