ntv-site/NTV_offering/index.js

129 lines
5.1 KiB
JavaScript
Raw Permalink Normal View History

2023-03-27 15:46:52 +00:00
var library = [];
var URLINFO = new URL(window.location.href);
document.addEventListener("DOMContentLoaded", function() {
document.getElementById("query").addEventListener("keydown", function(event) {
if (event.keyCode == 13) {
event.preventDefault();
document.getElementById("submit").click();
}
});
var raw = new XMLHttpRequest();
var libIndic = document.getElementById("libIndic");
libIndic.innerHTML = "loading";
raw.addEventListener("load", function() {
if (this.status != 200) return alert("Cannot fetch library");
var items = this.responseText.split("\n");
for (var i = 0; i < items.length; i++) {
if (items[i] == "") continue;
var info = JSON.parse(items[i]);
info.lName = info.name.toLowerCase().split(" ").join("_");
library.push(info);
}
libIndic.innerHTML = "loaded";
});
raw.open("GET", "https://home.nezbednik.eu.org:2000/NTV_offering/library.txt");
raw.send();
});
window.addEventListener("message", (data) => {
if (data.data == "closeQueue") document.getElementById("queueButton").click();
});
function doSearch() {
document.getElementById("nosearch").style.display = "none";
document.getElementById("noresults").style.display = "none";
var searching = document.getElementById("searching");
var resultsH = document.getElementById("results");
resultsH.style.display = "none";
resultsH.innerHTML = "";
searching.style.display = "block";
var titles = document.createElement("tr");
var titleName = document.createElement("th");
titleName.innerHTML = "name & stream";
titles.appendChild(titleName);
var titleSource = document.createElement("th");
titleSource.innerHTML = "source";
titles.appendChild(titleSource);
var titleAdd = document.createElement("th");
titleAdd.innerHTML = "request";
titles.appendChild(titleAdd);
resultsH.appendChild(titles);
var query = document.getElementById("query").value.toLowerCase().split(" ").join("_");
var results = library.filter((a) => {
return a.lName.includes(query);
});
for (var i = 0; i < results.length; i++) {
var tr = document.createElement("tr");
var _name = document.createElement("td");
var name = document.createElement("a");
name.classList.add("name");
name.href = results[i].stream;
name.setAttribute("target", "_blank");
name.innerHTML = (Object.keys(results[i]).includes("prefix") ? ("<p href=\"about:blank\" style=\"text-decoration: none; display: inline; color: #3399ff;\">(" + results[i].prefix + ")</p> ") : "") + results[i].name;
name.style.color = "blue";
_name.appendChild(name);
tr.appendChild(_name);
var source = document.createElement("td");
source.innerHTML = results[i].source;
tr.appendChild(source);
var _add = document.createElement("td");
var add = document.createElement("button");
add.textContent = "request!";
add.setAttribute("onclick", "event.preventDefault(); doRequest(this)");
add.setAttribute("data-source", results[i].source);
add.setAttribute("data-item", results[i].item);
_add.appendChild(add);
if (URLINFO.searchParams.has("commandMode") && URLINFO.searchParams.get("commandMode").toString() == "1") {
var spacer = document.createElement("a");
spacer.innerHTML = "&nbsp;";
_add.appendChild(spacer);
var copy = document.createElement("button");
copy.textContent = "copy";
copy.setAttribute("onclick", "event.preventDefault(); prompt('your command', './makeJSON.sh \\\"' + this.getAttribute('data-stream') + '\\\" \\\"' + this.getAttribute('data-name').split('\"').join('\\\\\\\"') + '\\\" \\\"' + this.getAttribute('data-source') + '\\\"')");
copy.setAttribute("data-stream", results[i].stream);
copy.setAttribute("data-name", results[i].name);
copy.setAttribute("data-source", results[i].source);
_add.appendChild(copy);
}
tr.appendChild(_add);
resultsH.appendChild(tr);
}
resultsH.style.display = "";
searching.style.display = "none";
}
function doRequest(obj) {
var comment = prompt("Please enter any wishes here. Special title? Dedication? Will show in the queue menu!");
if (comment == null) comment = "";
var source = obj.getAttribute("data-source");
var item = obj.getAttribute("data-item");
obj.textContent = "requesting";
var paramObj = new URL("http://a.a");
paramObj.searchParams.set("source", source);
paramObj.searchParams.set("item", item);
if (comment != "") paramObj.searchParams.set("comment", comment);
var raw = new XMLHttpRequest();
raw.addEventListener("load", function() {
if (this.status != 200) return obj.textContent = "failed :\\";
obj.textContent = "requested!";
});
raw.open("POST", "https://home.nezbednik.eu.org:2000/NTV_offering/request.php");
raw.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
raw.send(paramObj.search.slice(1));
}