From 3d954ee902b2f446326f022b7febe411e08199da Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Wed, 11 Mar 2020 14:33:34 +0100 Subject: [PATCH] Display playlist entries and state. --- contrib/aura-clock/src/StudioClock.svelte | 76 ++++++++++++++++++----- 1 file changed, 60 insertions(+), 16 deletions(-) diff --git a/contrib/aura-clock/src/StudioClock.svelte b/contrib/aura-clock/src/StudioClock.svelte index ee174dd6..44cd0368 100644 --- a/contrib/aura-clock/src/StudioClock.svelte +++ b/contrib/aura-clock/src/StudioClock.svelte @@ -66,16 +66,17 @@ t = parseInt(t/1000); timeLeft = info.track.duration - t - 4; + console.log("Current Data", info); } return ""; } - function displayTitle(info) { - if (info != null && info.track != null) { + function displayTitle(track) { + if (track != null) { let artist = ""; - if (info.track.artist != "") - artist = info.track.artist + " - "; - return artist + info.track.title; + if (track.artist != "") + artist = track.artist + " - "; + return artist + track.title; } return ""; } @@ -135,8 +136,14 @@ return str; } + function isActive(entry, currentTrack) { + if (currentTrack != null && entry.id == currentTrack.id) { + return true; + } + return false; + } + - </script> @@ -166,18 +173,30 @@ margin: 0 0 40px 20px; } - #track-list { + #playlist { border: 2px solid #333; margin: 20px 20px 40px 20px; padding: 10px; } + .playlist-entry { + font-size: 1.4em; + padding-left: 53px; + } + .play-icon, .track-time-left { margin: 12px; } - .active { + .is-active { + color: green; + padding-left: 0; + } + + .is-active::before { + content: "\00a0\00a0â–¶\00a0\00a0"; + font-size: larger; color: green; } @@ -290,14 +309,39 @@ <div class="schedule-details"> <b>Type:</b> {value.current.type}, <b>Host:</b> {value.current.host}</div> </div> - <div id="track-list"> - <div id="current-track"> - <h2> - <span class="play-icon">▶</span> - <span class="active track-title">{displayTitle(value)}</span> - <span class="track-time-left">({formatTime(timeLeft)})</span> - </h2> - </div> + <div id="playlist"> + + {#if value.current.playlist} + <ol> + {#each value.current.playlist.entries as entry, index} + {#if isActive(entry, value.track)} + + <li class="playlist-entry is-active"> + <!-- <span class="play-icon">▶</span> --> + <span class="track-title">{displayTitle(entry)}</span> + <span class="track-time-left">({formatTime(timeLeft)})</span> + </li> + + {:else} + + <li class="playlist-entry"> + <span class="track-title">{displayTitle(entry)}</span> + <span class="track-duration">({formatTime(entry.duration)})</span> + </li> + + {/if} + + {/each} + </ol> + {:else} + + <div id="current-track"> + <h2> + <span class="track-title is-active">{displayTitle(value.track)}</span> + <span class="track-time-left">({formatTime(timeLeft)})</span> + </h2> + </div> + {/if} </div> <div id="next-schedule"> <h2 class="schedule-title">Next: {@html displayShowName(value.next.show)} {displayShowSchedule(value)}</h2> -- GitLab