330 lines
8.3 KiB
JavaScript
330 lines
8.3 KiB
JavaScript
function showConfig(obj) {
|
|
config = obj;
|
|
//setMenuItem();
|
|
createMenu();
|
|
//document.getElementById("page").className = "";
|
|
}
|
|
|
|
showMyStreams
|
|
|
|
function showMyStreams(allStreamsObj) {
|
|
|
|
var streamTypeKeys = getObjKeys(allStreamsObj)
|
|
|
|
for (var s = 0; s < streamTypeKeys.length; s++) {
|
|
var streamType = streamTypeKeys[s];
|
|
var obj = new Object();
|
|
obj = allStreamsObj[streamType];
|
|
switch(streamType) {
|
|
case "activeStreams": activeStreams = obj; break;
|
|
}
|
|
|
|
document.getElementById(streamType).innerHTML = "";
|
|
|
|
var streamsObj = new Object();
|
|
var streamsNames = new Array();
|
|
|
|
var keys = getObjKeys(obj)
|
|
|
|
// Create Object (streamsObj) for the streams and sort by name (streamsNames)
|
|
for (var i = 0; i < keys.length; i++) {
|
|
var name = obj[keys[i]]["name"];
|
|
var tmp = new Object();
|
|
var streamKey = getObjKeys(obj[keys[i]]);
|
|
|
|
for (var j = 0; j < streamKey.length; j++) {
|
|
tmp[streamKey[j]] = obj[keys[i]][streamKey[j]];
|
|
}
|
|
|
|
streamsObj[name] = tmp;
|
|
streamsNames.push(name)
|
|
}
|
|
|
|
streamsNames.sort();
|
|
|
|
// Create Table for activeStreams
|
|
var table = document.getElementById(streamType);
|
|
|
|
for (var i = 0; i < streamsNames.length; i++) {
|
|
var newEntry = new Object();
|
|
newEntry["_element"] = "TR";
|
|
table.appendChild(createElement(newEntry));
|
|
var line = table.lastChild;
|
|
|
|
var tmp = streamsObj[streamsNames[i]]
|
|
var keys = getObjKeys(tmp)
|
|
|
|
var newKey = new Object()
|
|
newKey["_element"] = "TD";
|
|
//newKey["_text"] = streamsNames[i];
|
|
switch(streamType) {
|
|
case "activeStreams": newKey["_text"] = "Channel (+):"; break;
|
|
case "inactiveStreams": newKey["_text"] = "Channel (-):"; break;
|
|
}
|
|
|
|
newKey["class"] = "tdKey";
|
|
console.log();
|
|
|
|
|
|
var newVal = new Object()
|
|
newVal["_element"] = "TD";
|
|
newVal["_text"] = streamsNames[i];
|
|
newVal["class"] = "tdVal";
|
|
//newVal["_text"] = value;
|
|
|
|
line.appendChild(createElement(newKey));
|
|
line.appendChild(createElement(newVal));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
function showActiveStreams(obj) {
|
|
document.getElementById("activeStreams").innerHTML = "";
|
|
activeStreams = obj;
|
|
var streamsObj = new Object();
|
|
var streamsNames = new Array();
|
|
|
|
var keys = getObjKeys(obj)
|
|
|
|
// Create Object (streamsObj) for the streams and sort by name (streamsNames)
|
|
for (var i = 0; i < keys.length; i++) {
|
|
var name = obj[keys[i]]["name"];
|
|
var tmp = new Object();
|
|
var streamKey = getObjKeys(obj[keys[i]]);
|
|
|
|
for (var j = 0; j < streamKey.length; j++) {
|
|
tmp[streamKey[j]] = obj[keys[i]][streamKey[j]];
|
|
}
|
|
|
|
streamsObj[name] = tmp;
|
|
streamsNames.push(name)
|
|
}
|
|
|
|
streamsNames.sort();
|
|
|
|
// Create Table for activeStreams
|
|
var table = document.getElementById("activeStreams");
|
|
|
|
for (var i = 0; i < streamsNames.length; i++) {
|
|
var newEntry = new Object();
|
|
newEntry["_element"] = "TR";
|
|
table.appendChild(createElement(newEntry));
|
|
var line = table.lastChild;
|
|
|
|
var tmp = streamsObj[streamsNames[i]]
|
|
var keys = getObjKeys(tmp)
|
|
|
|
var newKey = new Object()
|
|
newKey["_element"] = "TD";
|
|
//newKey["_text"] = streamsNames[i];
|
|
newKey["_text"] = "Channel:";
|
|
newKey["class"] = "tdKey";
|
|
console.log();
|
|
|
|
|
|
var newVal = new Object()
|
|
newVal["_element"] = "TD";
|
|
newVal["_text"] = streamsNames[i];
|
|
newVal["class"] = "tdVal";
|
|
//newVal["_text"] = value;
|
|
|
|
line.appendChild(createElement(newKey));
|
|
line.appendChild(createElement(newVal));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function parseLogs(obj) {
|
|
log = obj
|
|
var keys = getObjKeys(obj)
|
|
|
|
var msgType;
|
|
for (var i = 0; i < keys.length; i++) {
|
|
switch(keys[i]) {
|
|
case "warnings": msgType = "warningMsg"; break;
|
|
case "errors": msgType = "errorMsg"; break;
|
|
}
|
|
|
|
switch(obj[keys[i]]) {
|
|
case 0: msgType = "tdVal"; break;
|
|
default: break;
|
|
}
|
|
|
|
if(document.getElementById(keys[i])){
|
|
document.getElementById(keys[i]).className = msgType;
|
|
}
|
|
|
|
|
|
}
|
|
return
|
|
}
|
|
|
|
|
|
function cancelData(element) {
|
|
createMenu();
|
|
}
|
|
|
|
function saveData(element) {
|
|
var data = new Object();
|
|
var div = element.parentNode.parentNode;
|
|
var inputs = div.getElementsByTagName("INPUT");
|
|
|
|
var configKey = div.getAttribute("data-configkey");
|
|
var menuType = div.getAttribute("data-menutype");
|
|
var value;
|
|
var valueArr = new Array();
|
|
|
|
for (var i = 0; i < inputs.length; i++) {
|
|
if (inputs[i].type == "text" && inputs[i].value != undefined && inputs[i].value != "" ) {
|
|
console.log(inputs[i].value, menuType)
|
|
switch(menuType) {
|
|
case "inputArray": valueArr.push(inputs[i].value); break;
|
|
case "singleInput": value = inputs[i].value; break;
|
|
}
|
|
}
|
|
}
|
|
|
|
switch(menuType) {
|
|
case "inputArray": data[configKey] = valueArr; break;
|
|
case "singleInput":
|
|
if (isNaN(value) == false) {
|
|
value = parseInt(value);
|
|
data[configKey] = value;
|
|
break;
|
|
}
|
|
|
|
if (value == undefined) {
|
|
data["delete"] = configKey;
|
|
} else {
|
|
data[configKey] = value
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
data["cmd"] = "saveConfig";
|
|
console.log(data);
|
|
xTeVe(data)
|
|
}
|
|
|
|
function xTeVe(data) {
|
|
if (webSockets == false) {
|
|
alert("Your browser does not support WebSockets");
|
|
return;
|
|
} else {
|
|
if (data["cmd"] != "getLog") {
|
|
showLoadingScreen(true)
|
|
}
|
|
}
|
|
delete undo["epgMapping"];
|
|
|
|
var protocolWS
|
|
switch(window.location.protocol) {
|
|
case "http:": protocolWS = "ws://"; break;
|
|
case "https:": protocolWS = "wss://"; break;
|
|
}
|
|
|
|
|
|
var ws = new WebSocket(protocolWS + window.location.hostname + ":" + window.location.port + "/data/" + "?Token=" + getCookie("Token"));
|
|
ws.onopen = function() {
|
|
console.log(data)
|
|
ws.send(JSON.stringify(data));
|
|
}
|
|
|
|
ws.onmessage = function (e) {
|
|
var response = JSON.parse(e.data);
|
|
console.log(response);
|
|
|
|
if (response.hasOwnProperty("clientInfo")) {
|
|
createClintInfo(response["clientInfo"]);
|
|
}
|
|
|
|
if (response.hasOwnProperty("log")) {
|
|
createClintInfo(response["log"]);
|
|
}
|
|
|
|
if (response.hasOwnProperty("status")) {
|
|
if (response["status"] == false) {
|
|
alert(response["err"])
|
|
if(response.hasOwnProperty("reload")) {
|
|
location.reload();
|
|
}
|
|
//checkErr(response)
|
|
console.log(response);
|
|
updateXteveStatus(response);
|
|
setTimeout(function(){ showLoadingScreen(false); }, 300);
|
|
|
|
return
|
|
}
|
|
|
|
updateXteveStatus(response)
|
|
|
|
//console.log(data["cmd"]);
|
|
switch(data["cmd"]) {
|
|
case "saveUserData": createMenu(); break;
|
|
case "saveNewUser": createMenu(); break;
|
|
case "saveFilesXMLTV": //createMenu(); break;
|
|
case "saveFilesM3U": //createMenu(); return; break;
|
|
case "saveConfig":
|
|
data = new Object();
|
|
data["cmd"] = "checkToken";
|
|
xTeVe(data);
|
|
break;
|
|
|
|
case "emptyLog": writeLogInDiv(); break;
|
|
case "getLog": return; break;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (config["files"] == undefined || config["files"].length == 0) {
|
|
createMenu();
|
|
document.getElementById(10).click()
|
|
}
|
|
|
|
setTimeout(function(){ showLoadingScreen(false); }, 0);
|
|
}
|
|
|
|
}
|
|
|
|
function updateXteveStatus(response) {
|
|
var keys = getObjKeys(response);
|
|
//console.log(keys);
|
|
|
|
for (var i = 0; i < keys.length; i++) {
|
|
switch(keys[i]) {
|
|
case "alert": alert(response[keys[i]]); break;
|
|
case "config": showConfig(response[keys[i]]); break;
|
|
case "log": parseLogs(response[keys[i]]); break;
|
|
case "myStreams": showMyStreams(response[keys[i]]); break;
|
|
case "xEPG": xEPG = response[keys[i]]; break;
|
|
case "users": users = response[keys[i]]; break;
|
|
case "token": document.cookie = "Token=" + response[keys[i]]; break;
|
|
case "reload": location.reload(); break;
|
|
case "openLink": window.location = response["openLink"]; break;
|
|
//case "version": version = response[keys[i]]; break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function getValueFromProviderFile(xXmltvFile, fileType, key) {
|
|
|
|
var fileID = xXmltvFile.substring(0, xXmltvFile.lastIndexOf('.'))
|
|
|
|
if (config["files"][fileType].hasOwnProperty(fileID) == true) {
|
|
var data = config["files"][fileType][fileID];
|
|
return data[key]
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|