class WizardCategory { DocumentID = "content" createCategoryHeadline(value:string):any { var element = document.createElement("H4") element.innerHTML = value return element } } class WizardItem extends WizardCategory { key:string headline:string constructor(key:string, headline:string) { super() this.headline = headline this.key = key } createWizard():void { var headline = this.createCategoryHeadline(this.headline) var key = this.key var content:PopupContent = new PopupContent() var description:string var doc = document.getElementById(this.DocumentID) doc.innerHTML = "" doc.appendChild(headline) switch (key) { case "tuner": 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, "1", key) select.setAttribute("class", "wizard") select.id = key doc.appendChild(select) description = "Number of parallel connections that can be established to the provider.
Available for: Plex, Emby (HDHR), M3U (with active buffer).
After a change, xTeVe must be delete in the Plex / Emby DVR settings and set up again." break; case "epgSource": var text:any[] = ["PMS", "XEPG"] var values:any[] = ["PMS", "XEPG"] var select = content.createSelect(text, values, "XEPG", key) select.setAttribute("class", "wizard") select.id = key doc.appendChild(select) description = "PMS:
- Use EPG data from Plex or Emby

XEPG:
- Use of one or more XMLTV files
- Channel management
- M3U / XMLTV export (HTTP link for IPTV apps)" break case "m3u": var input = content.createInput("text", key, "") input.setAttribute("placeholder", "File path or URL of the M3U") input.setAttribute("class", "wizard") input.id = key doc.appendChild(input) description = "Local or remote playlists" break case "xmltv": var input = content.createInput("text", key, "") input.setAttribute("placeholder", "File path or URL of the XMLTV") input.setAttribute("class", "wizard") input.id = key doc.appendChild(input) description = "Local or remote XMLTV file" break default: console.log(key) break; } var pre = document.createElement("PRE") pre.innerHTML = description doc.appendChild(pre) console.log(headline, key) } } function readyForConfiguration(wizard:number) { var server:Server = new Server("getServerConfig") server.request(new Object()) showElement("loading", false) configurationWizard[wizard].createWizard() } function saveWizard() { var cmd = "saveWizard" var div = document.getElementById("content") var config = div.getElementsByClassName("wizard") var wizard = new Object() for (var i = 0; i < config.length; i++) { var name:string var value:any switch (config[i].tagName) { case "SELECT": name = (config[i] as HTMLSelectElement).name value = (config[i] as HTMLSelectElement).value // Wenn der Wert eine Zahl ist, wird dieser als Zahl gespeichert if(isNaN(value)){ wizard[name] = value } else { wizard[name] = parseInt(value) } break case "INPUT": switch ((config[i] as HTMLInputElement).type) { case "text": name = (config[i] as HTMLInputElement).name value = (config[i] as HTMLInputElement).value if (value.length == 0) { var msg = name.toUpperCase() + ": " + "Missing input" alert(msg) return } wizard[name] = value break } break default: // code... break; } } var data = new Object() data["wizard"] = wizard var server:Server = new Server(cmd) server.request(data) console.log(data) } // Wizard var configurationWizard = new Array() configurationWizard.push(new WizardItem("tuner", "Number of tuners")) configurationWizard.push(new WizardItem("epgSource", "EPG Source")) configurationWizard.push(new WizardItem("m3u", "M3U Playlist")) configurationWizard.push(new WizardItem("xmltv", "XMLTV File"))