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"
alertUser(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"))