var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var SettingsCategory = /** @class */ (function () { function SettingsCategory() { this.DocumentID = "content_settings"; } SettingsCategory.prototype.createCategoryHeadline = function (value) { var element = document.createElement("H4"); element.innerHTML = value; return element; }; SettingsCategory.prototype.createHR = function () { var element = document.createElement("HR"); return element; }; SettingsCategory.prototype.createSettings = function (settingsKey) { var setting = document.createElement("TR"); var content = new PopupContent(); var data = SERVER["settings"][settingsKey]; switch (settingsKey) { // Texteingaben case "update": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.update.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createInput("text", "update", data.toString()); input.setAttribute("placeholder", "{{.settings.update.placeholder}}"); input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "backup.path": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.backupPath.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createInput("text", "backup.path", data); input.setAttribute("placeholder", "{{.settings.backupPath.placeholder}}"); input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "temp.path": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.tempPath.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createInput("text", "temp.path", data); input.setAttribute("placeholder", "{{.settings.tmpPath.placeholder}}"); input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "user.agent": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.userAgent.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createInput("text", "user.agent", data); input.setAttribute("placeholder", "{{.settings.userAgent.placeholder}}"); input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "buffer.timeout": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.bufferTimeout.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createInput("text", "buffer.timeout", data); input.setAttribute("placeholder", "{{.settings.bufferTimeout.placeholder}}"); input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; // Checkboxen case "authentication.web": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.authenticationWEB.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "authentication.pms": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.authenticationPMS.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "authentication.m3u": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.authenticationM3U.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "authentication.xml": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.authenticationXML.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "authentication.api": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.authenticationAPI.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "files.update": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.filesUpdate.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "cache.images": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.cacheImages.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "xepg.replace.missing.images": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.replaceEmptyImages.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "xteveAutoUpdate": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.xteveAutoUpdate.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "buffer": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.streamBuffering.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "api": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.api.title}}" + ":"; var tdRight = document.createElement("TD"); var input = content.createCheckbox(settingsKey); input.checked = data; input.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(input); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; // Select case "tuner": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.tuner.title}}" + ":"; var tdRight = document.createElement("TD"); var text = new Array(); var values = new Array(); for (var i = 1; i <= 100; i++) { text.push(i); values.push(i); } var select = content.createSelect(text, values, data, settingsKey); select.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(select); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "epgSource": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.epgSource.title}}" + ":"; var tdRight = document.createElement("TD"); var text = ["PMS", "XEPG"]; var values = ["PMS", "XEPG"]; var select = content.createSelect(text, values, data, settingsKey); select.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(select); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "backup.keep": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.backupKeep.title}}" + ":"; var tdRight = document.createElement("TD"); var text = ["5", "10", "20", "30", "40", "50"]; var values = ["5", "10", "20", "30", "40", "50"]; var select = content.createSelect(text, values, data, settingsKey); select.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(select); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; case "buffer.size.kb": var tdLeft = document.createElement("TD"); tdLeft.innerHTML = "{{.settings.bufferSize.title}}" + ":"; var tdRight = document.createElement("TD"); var text = ["0.5 MB", "1 MB", "2 MB", "3 MB", "4 MB", "5 MB", "6 MB", "7 MB", "8 MB"]; var values = ["512", "1024", "2048", "3072", "4096", "5120", "6144", "7168", "8192"]; var select = content.createSelect(text, values, data, settingsKey); select.setAttribute("onchange", "javascript: this.className = 'changed'"); tdRight.appendChild(select); setting.appendChild(tdLeft); setting.appendChild(tdRight); break; } return setting; }; SettingsCategory.prototype.createDescription = function (settingsKey) { var description = document.createElement("TR"); var text; switch (settingsKey) { case "authentication.web": text = "{{.settings.authenticationWEB.description}}"; break; case "authentication.m3u": text = "{{.settings.authenticationM3U.description}}"; break; case "authentication.pms": text = "{{.settings.authenticationPMS.description}}"; break; case "authentication.xml": text = "{{.settings.authenticationXML.description}}"; break; case "authentication.api": if (SERVER["settings"]["authentication.web"] == true) { text = "{{.settings.authenticationAPI.description}}"; } break; case "xteveAutoUpdate": text = "{{.settings.xteveAutoUpdate.description}}"; break; case "backup.keep": text = "{{.settings.backupKeep.description}}"; break; case "backup.path": text = "{{.settings.backupPath.description}}"; break; case "temp.path": text = "{{.settings.tempPath.description}}"; break; case "buffer": text = "{{.settings.streamBuffering.description}}"; break; case "buffer.size.kb": text = "{{.settings.bufferSize.description}}"; break; case "buffer.timeout": text = "{{.settings.bufferTimeout.description}}"; break; case "user.agent": text = "{{.settings.userAgent.description}}"; break; case "epgSource": text = "{{.settings.epgSource.description}}"; break; case "tuner": text = "{{.settings.tuner.description}}"; break; case "update": text = "{{.settings.update.description}}"; break; case "api": text = "{{.settings.api.description}}"; break; case "files.update": text = "{{.settings.filesUpdate.description}}"; break; case "cache.images": text = "{{.settings.cacheImages.description}}"; break; case "xepg.replace.missing.images": text = "{{.settings.replaceEmptyImages.description}}"; break; default: text = ""; break; } var tdLeft = document.createElement("TD"); tdLeft.innerHTML = ""; var tdRight = document.createElement("TD"); var pre = document.createElement("PRE"); pre.innerHTML = text; tdRight.appendChild(pre); description.appendChild(tdLeft); description.appendChild(tdRight); return description; }; return SettingsCategory; }()); var SettingsCategoryItem = /** @class */ (function (_super) { __extends(SettingsCategoryItem, _super); function SettingsCategoryItem(headline, settingsKeys) { var _this = _super.call(this) || this; _this.headline = headline; _this.settingsKeys = settingsKeys; return _this; } SettingsCategoryItem.prototype.createCategory = function () { var _this = this; var headline = this.createCategoryHeadline(this.headline); var settingsKeys = this.settingsKeys; var doc = document.getElementById(this.DocumentID); doc.appendChild(headline); // Tabelle für die Kategorie erstellen var table = document.createElement("TABLE"); var keys = settingsKeys.split(","); keys.forEach(function (settingsKey) { switch (settingsKey) { case "authentication.pms": case "authentication.m3u": case "authentication.xml": case "authentication.api": if (SERVER["settings"]["authentication.web"] == false) { break; } default: var item = _this.createSettings(settingsKey); var description = _this.createDescription(settingsKey); table.appendChild(item); table.appendChild(description); break; } }); doc.appendChild(table); doc.appendChild(this.createHR()); }; return SettingsCategoryItem; }(SettingsCategory)); function showSettings() { console.log("SETTINGS"); for (var i = 0; i < settingsCategory.length; i++) { settingsCategory[i].createCategory(); } } function saveSettings() { console.log("Save Settings"); var cmd = "saveSettings"; var div = document.getElementById("content_settings"); var settings = div.getElementsByClassName("changed"); var newSettings = new Object(); for (var i = 0; i < settings.length; i++) { var name; var value; switch (settings[i].tagName) { case "INPUT": switch (settings[i].type) { case "checkbox": name = settings[i].name; value = settings[i].checked; newSettings[name] = value; break; case "text": name = settings[i].name; value = settings[i].value; switch (name) { case "update": value = value.split(","); value = value.filter(function (e) { return e; }); break; case "buffer.timeout": value = parseFloat(value); } newSettings[name] = value; break; } break; case "SELECT": name = settings[i].name; value = settings[i].value; // Wenn der Wert eine Zahl ist, wird dieser als Zahl gespeichert if (isNaN(value)) { newSettings[name] = value; } else { newSettings[name] = parseInt(value); } break; } } var data = new Object(); data["settings"] = newSettings; var server = new Server(cmd); server.request(data); }