v2.0.0.0000
This commit is contained in:
379
html/js/files.js
Normal file
379
html/js/files.js
Normal file
@@ -0,0 +1,379 @@
|
||||
function openFiles(elm, fileType) {
|
||||
//document.getElementById("settings").innerHTML = "Test";
|
||||
|
||||
columnToSort = 0;
|
||||
var newDiv = document.getElementById("settings");
|
||||
|
||||
var newEntry = new Object();
|
||||
newEntry["_element"] = "HR";
|
||||
newDiv.appendChild(createElement(newEntry));
|
||||
|
||||
var newEntry = new Object();
|
||||
newEntry["_element"] = "INPUT";
|
||||
newEntry["type"] = "button";
|
||||
newEntry["class"] = "button";
|
||||
newEntry["value"] = "New";
|
||||
newEntry["onclick"] = 'fileDetail("-", "' + fileType + '")';
|
||||
newDiv.appendChild(createElement(newEntry));
|
||||
|
||||
var newEntry = new Object();
|
||||
newEntry["_element"] = "INPUT";
|
||||
newEntry["type"] = "button";
|
||||
newEntry["class"] = "button";
|
||||
newEntry["value"] = "Update";
|
||||
newEntry["onclick"] = "fileDetail(0)";
|
||||
//newDiv.appendChild(createElement(newEntry));
|
||||
|
||||
var div = document.getElementById("settings");
|
||||
|
||||
// Build table
|
||||
var newTable = new Object();
|
||||
newTable["_element"] = "TABLE";
|
||||
newTable["id"] = "id_mapping";
|
||||
newTable["class"] = "table-mapping";
|
||||
div.appendChild(createElement(newTable));
|
||||
|
||||
setTimeout(function(){
|
||||
createFilesTable(fileType);
|
||||
}, 10);
|
||||
|
||||
}
|
||||
|
||||
function createFilesTable(fileType) {
|
||||
var table = document.getElementById("id_mapping");
|
||||
var availableFileTypes = new Array();
|
||||
|
||||
table.innerHTML = "";
|
||||
var newTR = new Object();
|
||||
newTR["_element"] = "TR";
|
||||
newTR["class"] = "table-mapping-header";
|
||||
table.appendChild(createElement(newTR));
|
||||
|
||||
var tr = table.lastChild;
|
||||
|
||||
switch(fileType) {
|
||||
case "xmltv":
|
||||
availableFileTypes = new Array("xmltv");
|
||||
var trHeadlines = new Array("Guide", "Last Update", "Availability %", "Channels", "Programs")
|
||||
var compatibilityKeys = new Array("xmltv.channels", "xmltv.programs")
|
||||
break;
|
||||
|
||||
case "m3u":
|
||||
availableFileTypes = new Array("m3u", "hdhr");
|
||||
var trHeadlines = new Array("Playlist", "Last Update", "Availability %", "Type", "Streams", "group-title %", "tvg-id %", "Unique ID %");
|
||||
var compatibilityKeys = new Array("streams", "group.title", "tvg.id", "stream.id");
|
||||
break;
|
||||
}
|
||||
|
||||
for (var i = 0; i < trHeadlines.length; i++) {
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "TD";
|
||||
newTD["_text"] = trHeadlines[i];
|
||||
tr.appendChild(createElement(newTD));
|
||||
}
|
||||
|
||||
for (var i = 0; i < availableFileTypes.length; i++) {
|
||||
|
||||
var fileType = availableFileTypes[i]
|
||||
|
||||
var data = config["files"][fileType];
|
||||
|
||||
var allFiles = getObjKeys(data)
|
||||
|
||||
for (var f = 0; f < allFiles.length; f++) {
|
||||
var elm = data[allFiles[f]];
|
||||
var table = document.getElementById("id_mapping");
|
||||
var fileID = elm["id.provider"];
|
||||
var name = elm["name"];
|
||||
var lastUpdate = elm["last.update"];
|
||||
var availability = elm["provider.availability"];
|
||||
var type = elm["type"].toUpperCase();
|
||||
var compatibility = elm["compatibility"];
|
||||
|
||||
// Create TR
|
||||
var newTR = new Object();
|
||||
newTR["_element"] = "TR";
|
||||
newTR["class"] = "";
|
||||
newTR["id"] = fileID;
|
||||
newTR["onclick"] = 'javascript: fileDetail("' + fileID + '","' + fileType + '");';
|
||||
table.appendChild(createElement(newTR));
|
||||
|
||||
var tr = table.lastChild;
|
||||
|
||||
// Create file name TD
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "P";
|
||||
newTD["_text"] = name;
|
||||
createNewTD(newTD, tr);
|
||||
|
||||
// Create last update TD
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "P";
|
||||
newTD["_text"] = lastUpdate;
|
||||
createNewTD(newTD, tr);
|
||||
|
||||
// Create availability TD
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "P";
|
||||
newTD["_text"] = availability;
|
||||
createNewTD(newTD, tr);
|
||||
|
||||
if (fileType == "m3u" || fileType == "hdhr") {
|
||||
|
||||
// Create Type TD
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "P";
|
||||
newTD["_text"] = type;
|
||||
createNewTD(newTD, tr);
|
||||
|
||||
}
|
||||
|
||||
// Create all compatibility TDs
|
||||
|
||||
for (var j = 0; j < compatibilityKeys.length; j++) {
|
||||
var newTD = new Object();
|
||||
newTD["_element"] = "P";
|
||||
newTD["_text"] = compatibility[compatibilityKeys[j]];
|
||||
createNewTD(newTD, tr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
sortTable(0)
|
||||
|
||||
// usage Info
|
||||
var div = document.getElementById("settings");
|
||||
switch(menu[activeMenu.id].hasOwnProperty("_usage")) {
|
||||
case true:
|
||||
var usageItem = new Object();
|
||||
usageItem["_element"] = "PRE"
|
||||
usageItem["_text"] = menu[activeMenu.id]["_usage"];
|
||||
|
||||
var newHR = new Object();
|
||||
newHR["_element"] = "HR"
|
||||
div.appendChild(createElement(newHR));
|
||||
div.appendChild(createElement(usageItem));
|
||||
break;
|
||||
}
|
||||
|
||||
calculateWrapperHeight();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
function fileDetail(fileID, fileType) {
|
||||
|
||||
optionsText = new Array("M3U", "HDHomeRun - [Experimental]")
|
||||
optionsValue = new Array("m3u", "hdhr")
|
||||
|
||||
switch (fileType) {
|
||||
|
||||
case "m3u":
|
||||
document.getElementById("name").setAttribute("placeholder", "Playlist name");
|
||||
document.getElementById("description").setAttribute("placeholder", "Description of this playlist");
|
||||
document.getElementById("file-detail-headline").innerHTML = "M3U Playlist";
|
||||
document.getElementById("file-path").innerHTML = "M3U File:";
|
||||
document.getElementById("file.source").setAttribute("placeholder", "Local or remote");
|
||||
break;
|
||||
|
||||
case "hdhr":
|
||||
document.getElementById("name").setAttribute("placeholder", "HDHomeRun name");
|
||||
document.getElementById("description").setAttribute("placeholder", "Description of this HDHomeRun tuner");
|
||||
document.getElementById("file-detail-headline").innerHTML = "HDHomeRun";
|
||||
document.getElementById("file-path").innerHTML = "HDHomeRun IP:";
|
||||
document.getElementById("file.source").setAttribute("placeholder", "IP address and port of the tuner (192.168.1.10:5004)");
|
||||
break;
|
||||
|
||||
case "xmltv":
|
||||
document.getElementById("name").setAttribute("placeholder", "XMLTV name");
|
||||
document.getElementById("description").setAttribute("placeholder", "Description of this XMLTV file");
|
||||
document.getElementById("file-detail-headline").innerHTML = "XMLTV File";
|
||||
document.getElementById("file-path").innerHTML = "XMLTV File:";
|
||||
document.getElementById("file.source").setAttribute("placeholder", "Local or remote");
|
||||
|
||||
optionsText = new Array("XMLTV")
|
||||
optionsValue = new Array("xmltv")
|
||||
break;
|
||||
}
|
||||
|
||||
modifyOption("type", optionsText, optionsValue)
|
||||
|
||||
showPopUpElement('file-detail');
|
||||
|
||||
document.getElementById("saveFileDetail").setAttribute("onclick", 'javascript: saveFileDetail("' + fileID + '","' + fileType + '", false)');
|
||||
document.getElementById("updateFileDetail").setAttribute("onclick", 'javascript: updateFile("' + fileID + '","' + fileType + '", false)');
|
||||
document.getElementById("deleteFileDetail").setAttribute("onclick", 'javascript: saveFileDetail("' + fileID + '","' + fileType + '", true)');
|
||||
|
||||
var data = new Object();
|
||||
|
||||
switch(fileID) {
|
||||
|
||||
case "-": // New file
|
||||
data["name"] = "";
|
||||
data["description"] = "";
|
||||
data["file.source"] = "";
|
||||
data["type"] = fileType;
|
||||
|
||||
document.getElementById("deleteFileDetail").className = "delete";
|
||||
document.getElementById("type").setAttribute("onchange", "changeFileType(this);")
|
||||
document.getElementById("type").setAttribute("data-id", fileID)
|
||||
|
||||
showElement("deleteFileDetail", false);
|
||||
showElement("updateFileDetail", false);
|
||||
|
||||
if (fileType == "xmltv") {
|
||||
showElement("type", false);
|
||||
showElement("file-type", false);
|
||||
} else {
|
||||
showElement("type", true);
|
||||
showElement("file-type", true);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
data = config["files"][fileType][fileID];
|
||||
document.getElementById("deleteFileDetail").className = "delete";
|
||||
|
||||
showElement("updateFileDetail", true);
|
||||
showElement("type", false);
|
||||
showElement("file-type", false);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
var keys = getObjKeys(data);
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
|
||||
if(document.getElementById(keys[i])){
|
||||
document.getElementById(keys[i]).value = data[keys[i]];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function changeFileType(elm) {
|
||||
|
||||
var fileID = elm.getAttribute("data-id");
|
||||
var fileType = elm.options[elm.selectedIndex].value;
|
||||
|
||||
fileDetail(fileID, fileType)
|
||||
|
||||
}
|
||||
|
||||
|
||||
function saveFileDetail(fileID, fileType, deleteFile) {
|
||||
|
||||
if (fileID == undefined) {
|
||||
alert("ID is missing!!!");
|
||||
return
|
||||
}
|
||||
|
||||
var inputs = document.getElementById("file-detail").getElementsByTagName("INPUT");
|
||||
var selects = document.getElementById("file-detail").getElementsByTagName("SELECT");
|
||||
var newFileData = new Object();
|
||||
var data = new Object();
|
||||
|
||||
for (var i = 0; i < inputs.length; i++) {
|
||||
switch(inputs[i].type) {
|
||||
case "text": newFileData[inputs[i].name] = inputs[i].value; break;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < selects.length; i++) {
|
||||
newFileData[selects[i].id] = selects[i].options[selects[i].selectedIndex].value;
|
||||
}
|
||||
|
||||
if (deleteFile == true) {
|
||||
switch(fileType) {
|
||||
case "m3u": var alertText = "Delete this playlist?"; break;
|
||||
case "hdhr": var alertText = "Delete this HDHomeRun tuner?"; break;
|
||||
case "xmltv": var alertText = "Delete this XMLTV file?"; break;
|
||||
}
|
||||
|
||||
if (confirm(alertText)) {
|
||||
newFileData["delete"] = true
|
||||
data = buildFilesObj(fileType, fileID, newFileData);
|
||||
console.log(data);
|
||||
|
||||
} else {
|
||||
showElement("popup", false);
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
switch(config["files"][fileType].hasOwnProperty(fileID)) {
|
||||
|
||||
case true:
|
||||
data = config["files"][fileType][fileID];
|
||||
if (data["file.source"] != newFileData["file.source"]) {
|
||||
data["update"] = true
|
||||
} else {
|
||||
data["updatePlaylistName"] = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case false:
|
||||
newFileData["new"] = true;
|
||||
data = buildFilesObj(fileType, fileID, newFileData);
|
||||
break
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
switch(fileType) {
|
||||
|
||||
case "m3u": data["cmd"] = "saveFilesM3U"; break;
|
||||
case "hdhr": data["cmd"] = "saveFilesHDHR"; break;
|
||||
case "xmltv": data["cmd"] = "saveFilesXMLTV"; break;
|
||||
|
||||
}
|
||||
//console.log(data);
|
||||
xTeVe(data);
|
||||
return
|
||||
}
|
||||
|
||||
function updateFile(fileID, fileType, allFiles) {
|
||||
|
||||
switch(config["files"][fileType].hasOwnProperty(fileID)) {
|
||||
|
||||
case true:
|
||||
|
||||
var data = new Object();
|
||||
var data = buildFilesObj(fileType, fileID, config["files"][fileType][fileID])
|
||||
data["new"] = true
|
||||
|
||||
switch(fileType) {
|
||||
|
||||
case "m3u": data["cmd"] = "updateFileM3U"; break;
|
||||
case "hdhr": data["cmd"] = "updateFileHDHR"; break;
|
||||
case "xmltv": data["cmd"] = "updateFileXMLTV"; break;
|
||||
|
||||
}
|
||||
|
||||
xTeVe(data);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function buildFilesObj(fileType, fileID, obj) {
|
||||
|
||||
var data = new Object();
|
||||
data["files"] = new Object();
|
||||
data["files"][fileType] = new Object();
|
||||
data["files"][fileType][fileID] = obj
|
||||
return data
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user