Skip to content
Snippets Groups Projects
Commit 60d318aa authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Improve "now playing" page

parent d32de92f
No related branches found
No related tags found
1 merge request!41Resolve "Improve "now playing" page"
This commit is part of merge request !41. Comments created here will be created in the context of that merge request.
...@@ -20,17 +20,33 @@ ...@@ -20,17 +20,33 @@
} }
.now-playing { .now-playing {
padding: 0;
margin: 0;
background-color: black; background-color: black;
color: white; color: white;
} }
.now-playing-cover { .now-playing-cover {
padding: 2em; padding: 1em;
}
.now-playing-loading,
.now-playing-nothing {
padding-top: 2em;
padding-bottom: 2em;
text-align: center;
font-size: 300%;
}
.now-playing-data {
padding: 1em 0.5em;
} }
.now-playing-title { .now-playing-title {
padding-top: 4em; padding-top: 1em;
font-size: 400%; font-size: 300%;
font-weight: bolder; font-weight: bolder;
line-height: 1.2em;
} }
.now-playing-artists { .now-playing-artists {
padding-top: 0.5em;
padding-bottom: 1em;
font-size: 200%; font-size: 200%;
line-height: 1.2em;
} }
var lastFetchedNowPlayingData = "";
function updateNowPlaying() { function updateNowPlaying() {
var apiUrl = "now-playing?api"; var apiUrl = "now-playing?api";
...@@ -6,9 +8,11 @@ function updateNowPlaying() { ...@@ -6,9 +8,11 @@ function updateNowPlaying() {
return response.json(); return response.json();
}) })
.then(function (data) { .then(function (data) {
if (hasChanged(data)) {
var nowPlayingBlock = document.getElementById("now-playing"); var nowPlayingBlock = document.getElementById("now-playing");
newContent = buildNowPlayingBlock(data); newContent = buildNowPlayingBlock(data);
nowPlayingBlock.innerHTML = newContent; nowPlayingBlock.innerHTML = newContent;
}
}) })
.catch(function (err) { .catch(function (err) {
console.warn("Something went wrong.", err); console.warn("Something went wrong.", err);
...@@ -19,24 +23,46 @@ function updateNowPlaying() { ...@@ -19,24 +23,46 @@ function updateNowPlaying() {
}); });
} }
function hasChanged(data) {
if (data && data["playing"] && data["playing"]["item"]) {
var dataAsString = JSON.stringify(data["playing"]["item"]);
if (dataAsString !== lastFetchedNowPlayingData) {
lastFetchedNowPlayingData = dataAsString;
return true;
}
}
return false;
}
function buildNowPlayingBlock(apiResponse) { function buildNowPlayingBlock(apiResponse) {
var html = ` var html = `
<div class="container-fluid now-playing"> <div class="container-fluid now-playing">
<div class="row"> <div class="row">
<div class="col"> <div class="col-12 col-md-6">
<div class="now-playing-cover"><img src="COVER_URL" class="img-fluid"></div> <div class="now-playing-cover"><img src="COVER_URL" class="img-fluid"></div>
</div> </div>
<div class="col"> <div class="col-12 col-md-6">
<div class="now-playing-data">
<div class="now-playing-title">TITLE</div> <div class="now-playing-title">TITLE</div>
<div class="now-playing-artists">ARTISTS</div> <div class="now-playing-artists">ARTISTS</div>
</div> </div>
</div> </div>
</div>
</div>`; </div>`;
var nowPlayingData = apiResponse["playing"]; var nowPlayingData = apiResponse["playing"];
if (!nowPlayingData) { if (!nowPlayingData) {
return '<div class="alert alert-info">No currently playing track...</div>'; return `
<div class="container-fluid now-playing">
<div class="row">
<div class="col">
<div class="now-playing-nothing">🔇</div>
</div>
</div>
</div>
`;
} }
var item = nowPlayingData["item"]; var item = nowPlayingData["item"];
...@@ -54,4 +80,5 @@ function buildNowPlayingBlock(apiResponse) { ...@@ -54,4 +80,5 @@ function buildNowPlayingBlock(apiResponse) {
return html; return html;
} }
updateNowPlaying();
setInterval(updateNowPlaying, 2000); setInterval(updateNowPlaying, 2000);
...@@ -232,7 +232,11 @@ ...@@ -232,7 +232,11 @@
<?php if ($templateData['page'] === 'now-playing') { ?> <?php if ($templateData['page'] === 'now-playing') { ?>
<div id="now-playing"> <div id="now-playing">
<div class="container-fluid now-playing">
<div class="col">
<div class="now-playing-loading"></div>
</div>
</div>
</div> </div>
<script src="js/now-playing.js"></script> <script src="js/now-playing.js"></script>
<?php } ?> <?php } ?>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment