diff options
Diffstat (limited to 'bairadio.js')
-rw-r--r-- | bairadio.js | 67 |
1 files changed, 58 insertions, 9 deletions
diff --git a/bairadio.js b/bairadio.js index 685eaff..104e2f3 100644 --- a/bairadio.js +++ b/bairadio.js @@ -69,6 +69,7 @@ function update(first) { if (audio.src != resp.listenurl) { audio.src = resp.listenurl; if (!first) { playPause(); } + if (document.getElementById("chat-filter")) { filterChat(true); } } var current = artist.textContent + title.textContent; @@ -153,15 +154,15 @@ function checkLong() { var cont = document.getElementById("nowplaying"); var strip = document.getElementById("nowplaying-txt"); - var marquee = document.getElementById("marqueeStyle"); - if (marquee) marquee.parentElement.removeChild(marquee); + var marquee = document.getElementById("marquee-style"); + if (marquee) { marquee.parentElement.removeChild(marquee); } var ws = strip.clientWidth; var wc = cont.clientWidth if (ws > wc) { var travel = ws - (wc-10); var style = document.createElement("style"); - style.id = "marqueeStyle"; + style.id = "marquee-style"; var dur = Math.round(travel/10); if (dur < 3) { dur++; } style.textContent = "#nowplaying-txt {\n -webkit-animation: marquee " + dur + "s linear infinite;\n animation: marquee " + dur + "s linear infinite;\n}\n"; @@ -294,11 +295,12 @@ function checkSend(e) { var msgField = document.getElementById("msg_type"); var msg = msgField.value.trim(); + var stream = document.getElementById("current_server").value; if (!msg) { return; } if (chatConnected) { - sendMsg("MSG:" + escapeColon(document.getElementById("current_server").value) + ":" + escapeColon(msg)); - addMsg(msg); + sendMsg("MSG:" + escapeColon(stream) + ":" + escapeColon(msg)); + addMsg(msg, stream, false, true); } else { return; } msgField.value = ""; @@ -319,29 +321,54 @@ function sendMsg(msg) { sock.send(msg); } -function addMsg(msg, stream, time) { +function addMsg(msg, stream, time, own) { var time = time || false; var stream = stream || false; + var own = own || false; var chat = document.getElementById("chat-all"); var line = document.createElement("div"); - line.className = (time ? "msg history" : "msg"); + line.className = (own ? "msg own" : (time ? "msg history" : "msg")); var presentTime = (time ? new Date(Number(time)) : new Date()); var hh = presentTime.getHours(); hh = (hh < 10) ? ("0" + hh) : hh; var mm = presentTime.getMinutes(); mm = (mm < 10) ? ("0" + mm) : mm; line.textContent = "[" + hh + ":" + mm + "] "; - if (stream) { line.textContent += "(" + stream + ") "; } + if (stream) { + line.textContent += "(" + stream + ") "; + line.dataset.stream = stream; + } line.textContent += msg; chat.appendChild(line); chat.scrollTop = chat.scrollHeight; } + +function filterChat(enable) { + var filter = document.getElementById("chat-filter"); + if (filter) { filter.parentElement.removeChild(filter); } + + if (enable) { + var current = document.getElementById("current_server").value; + var style = document.createElement("style"); + style.id = "chat-filter"; + style.textContent = '[data-stream] { display: none; }'; + style.textContent += '[data-stream^="' + current + '"] { display: block; }'; + document.getElementsByTagName("head")[0].appendChild(style); + } + + var chat = document.getElementById("chat-all"); + chat.scrollTop = chat.scrollHeight; +} + document.addEventListener("DOMContentLoaded", function() { document.getElementById("control").addEventListener("click", playPause); document.getElementById("volume").addEventListener("mousedown", changeVolume); - document.getElementById("server_name").addEventListener("change", function(e) { selected = this.value; }); + document.getElementById("server_name").addEventListener("change", function(e) { + selected = this.value; + }); + var boxt = document.getElementsByClassName("boxtitle"); for (var i = -1; ++i < boxt.length;) { boxt[i].addEventListener("click", collapsePanel); @@ -350,6 +377,28 @@ document.addEventListener("DOMContentLoaded", function() { for (var i = -1; ++i < resize.length;) { resize[i].addEventListener("mousedown", resizePanel); } + + document.getElementById("show_own").addEventListener("click", function(e) { + if (document.body.hasAttribute("class")) { + document.body.removeAttribute("class"); + this.className = "btn toggle-off"; + } else { + document.body.className = "show-own"; + this.className = "btn toggle-on"; + } + }); + document.getElementById("stream_filter").addEventListener("click", function(e) { + if (document.getElementById("chat-filter")) { + filterChat(false); + this.className = "btn toggle-off"; + } else { + filterChat(true); + this.className = "btn toggle-on"; + } + }); + document.getElementById("clear_chat").addEventListener("click", function(e) { + document.getElementById("chat-all").textContent = ""; + }); update(true); startVisualization(); |