1
0
dwelling-radio/web/assets/js/main.js

73 lines
2.3 KiB
JavaScript
Raw Normal View History

2022-03-08 01:17:24 +04:00
function $(id) { return document.getElementById(id); }
function updateRadioStatus() {
fetch("/status")
2022-03-08 01:17:24 +04:00
.then(r => r.json())
.then(r => {
$("radio-song").textContent = r.song;
$("radio-listeners").textContent = r.listeners;
$("radio-listener-peak").textContent = r.listener_peak;
}).catch(() => {
$("radio-song").textContent = "";
$("radio-listeners").textContent =
$("radio-listener-peak").textContent = "0";
2022-03-08 01:17:24 +04:00
});
}
function updateLastPlayedSong() {
fetch("/lastsong")
2022-03-08 01:17:24 +04:00
.then(r => r.json())
.then(last_played => {
if ($("last-played").firstChild === null)
$("last-played").appendChild(document.createElement("tbody"))
else if (last_played.time == $("last-played").firstChild.lastChild.firstChild.innerText)
return;
2022-03-08 01:17:24 +04:00
if ($("last-played").firstChild.children.length == 10)
$("last-played").firstChild.firstChild.remove();
2022-03-08 01:17:24 +04:00
let row = $("last-played").insertRow();
2022-04-01 18:42:13 +04:00
row.insertCell().appendChild(document.createTextNode(last_played.time));
row.insertCell().appendChild(document.createTextNode(last_played.listeners == 0 ? "" : last_played.listeners));
row.insertCell().appendChild(document.createTextNode(last_played.song));
2022-03-08 01:17:24 +04:00
});
}
document.getElementsByName("update")[0].addEventListener("click", () => {
2022-03-08 01:17:24 +04:00
updateLastPlayedSong();
updateRadioStatus();
})
setInterval(updateRadioStatus, 45000);
2023-08-20 01:20:28 +04:00
setInterval(updateLastPlayedSong, 45000);
2023-08-22 03:39:29 +04:00
const audio = document.getElementsByTagName("audio")[0];
const volume = document.getElementsByName("volume")[0];
2023-08-20 01:20:28 +04:00
2023-08-20 02:10:29 +04:00
const audio_src = audio.childNodes[0].src;
2023-08-20 01:20:28 +04:00
audio.hidden = true;
audio.volume = parseFloat(volume.value) / 100.0;
2023-08-22 03:39:29 +04:00
document.querySelector("#player div:first-child").style.display = "flex";
$("player").style.display = "flex";
2023-08-20 01:20:28 +04:00
2023-08-22 03:39:29 +04:00
volume.addEventListener("input", e => {
audio.volume = parseFloat(e.target.value) / 100.0; });
document.getElementsByName("play")[0].addEventListener("click", e => {
2023-08-20 02:10:29 +04:00
if (audio.paused) {
audio.src = audio_src;
audio.play();
} else {
audio.pause();
audio.src = "";
}
e.target.style.maskImage = e.target.style.webkitMaskImage = audio.paused ?
"url(/assets/img/play.svg)" : "url(/assets/img/stop.svg)"; });
2023-08-20 01:20:28 +04:00
audio.addEventListener("timeupdate", e => {
const ct = e.target.currentTime;
const s = Math.floor(ct % 60);
const m = Math.floor((ct / 60) % 60);
const h = Math.floor(ct / 3600);
2023-08-22 03:39:29 +04:00
document.getElementsByClassName("elapsed")[0].textContent = `${h}h ${m}m ${s}s`; });