Bearbeiten von „OS2.ergebnisse“
Zur Navigation springen
Zur Suche springen
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Greasemonkey]] | [[Kategorie:Greasemonkey]] | ||
{| style="background-color:white; font-size:11px; float: right; margin:3px 3px 3px 10px; border:1px solid #999; border-color: #9C1818; border-collapse:collapse;" width=500 cellpadding=3 cellspacing=0 | {| style="background-color:white; font-size:11px; float: right; margin:3px 3px 3px 10px; border:1px solid #999; border-color: #9C1818; border-collapse:collapse;" width=500 cellpadding=3 cellspacing=0 | ||
| colspan="2" style="padding:0.3em; background-color:#9C1818; font-size: 18px; color:#FFFFFF" align=center| '''OS2.ergebnisse''' | | colspan="2" style="padding:0.3em; background-color:#9C1818; font-size: 18px; color:#FFFFFF" align=center| '''OS2.ergebnisse''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Dateiname''' | | '''Dateiname''' | ||
| ''' | | '''os2.ergebnisse.user.js''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Version''' | | '''Version''' | ||
| '''0. | | '''0.20''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Autor''' | | '''Autor''' | ||
Zeile 20: | Zeile 19: | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Funktionalität''' | | '''Funktionalität''' | ||
| '''Haken wird standardmäßig aktiviert/nicht aktiviert'''<br> '''Benutzermenü für Optionen'''<br> '''Erweiterte Optionen auch auf der Seite | | '''Haken wird standardmäßig aktiviert/nicht aktiviert'''<br> '''Benutzermenü für Optionen'''<br> '''Erweiterte Optionen auch auf der Seite''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Letzte Änderung''' | | '''Letzte Änderung''' | ||
Zeile 26: | Zeile 25: | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
|} | |} | ||
<pre> | <pre> | ||
// ==UserScript== | // ==UserScript== | ||
// @name | // @name OS2.ergebnisse | ||
// @namespace | // @namespace http://os.ongapo.com/ | ||
// @version | // @version 0.20 | ||
// @copyright | // @copyright 2016+ | ||
// @author | // @author Sven Loges (SLC) | ||
// @description | // @description Aktiviert als Standard die Option "Ergebnisse anzeigen" fuer Online Soccer 2.0 | ||
// @include | // @include http*://os.ongapo.com/ls.php | ||
// @ | // @include http*://os.ongapo.com/ls.php?* | ||
// @ | // @include http*://os.ongapo.com/lp.php | ||
// @ | // @include http*://os.ongapo.com/lp.php?* | ||
// @ | // @include http*://os.ongapo.com/oseq.php | ||
// @ | // @include http*://os.ongapo.com/oseq.php?* | ||
// @ | // @include http*://os.ongapo.com/ose.php | ||
// @grant | // @include http*://os.ongapo.com/ose.php?* | ||
// @grant | // @include http*://os.ongapo.com/oscq.php | ||
// @grant | // @include http*://os.ongapo.com/oscq.php?* | ||
// @grant | // @include http*://os.ongapo.com/oschr.php | ||
// @include http*://os.ongapo.com/oschr.php?* | |||
// @include http*://os.ongapo.com/osczr.php | |||
// @include http*://os.ongapo.com/osczr.php?* | |||
// @include http*://os.ongapo.com/oscfr.php | |||
// @include http*://os.ongapo.com/oscfr.php?* | |||
// @include http*://os.ongapo.com/zer.php | |||
// @include http*://os.ongapo.com/zer.php?* | |||
// @include http*://www.os.ongapo.com/ls.php | |||
// @include http*://www.os.ongapo.com/ls.php?* | |||
// @include http*://www.os.ongapo.com/lp.php | |||
// @include http*://www.os.ongapo.com/lp.php?* | |||
// @include http*://www.os.ongapo.com/oseq.php | |||
// @include http*://www.os.ongapo.com/oseq.php?* | |||
// @include http*://www.os.ongapo.com/ose.php | |||
// @include http*://www.os.ongapo.com/ose.php?* | |||
// @include http*://www.os.ongapo.com/oscq.php | |||
// @include http*://www.os.ongapo.com/oscq.php?* | |||
// @include http*://www.os.ongapo.com/oschr.php | |||
// @include http*://www.os.ongapo.com/oschr.php?* | |||
// @include http*://www.os.ongapo.com/osczr.php | |||
// @include http*://www.os.ongapo.com/osczr.php?* | |||
// @include http*://www.os.ongapo.com/oscfr.php | |||
// @include http*://www.os.ongapo.com/oscfr.php?* | |||
// @include http*://www.os.ongapo.com/zer.php | |||
// @include http*://www.os.ongapo.com/zer.php?* | |||
// @include http*://online-soccer.eu/ls.php | |||
// @include http*://online-soccer.eu/ls.php?* | |||
// @include http*://online-soccer.eu/lp.php | |||
// @include http*://online-soccer.eu/lp.php?* | |||
// @include http*://online-soccer.eu/oseq.php | |||
// @include http*://online-soccer.eu/oseq.php?* | |||
// @include http*://online-soccer.eu/ose.php | |||
// @include http*://online-soccer.eu/ose.php?* | |||
// @include http*://online-soccer.eu/oscq.php | |||
// @include http*://online-soccer.eu/oscq.php?* | |||
// @include http*://online-soccer.eu/oschr.php | |||
// @include http*://online-soccer.eu/oschr.php?* | |||
// @include http*://online-soccer.eu/osczr.php | |||
// @include http*://online-soccer.eu/osczr.php?* | |||
// @include http*://online-soccer.eu/oscfr.php | |||
// @include http*://online-soccer.eu/oscfr.php?* | |||
// @include http*://online-soccer.eu/zer.php | |||
// @include http*://online-soccer.eu/zer.php?* | |||
// @include http*://www.online-soccer.eu/ls.php | |||
// @include http*://www.online-soccer.eu/ls.php?* | |||
// @include http*://www.online-soccer.eu/lp.php | |||
// @include http*://www.online-soccer.eu/lp.php?* | |||
// @include http*://www.online-soccer.eu/oseq.php | |||
// @include http*://www.online-soccer.eu/oseq.php?* | |||
// @include http*://www.online-soccer.eu/ose.php | |||
// @include http*://www.online-soccer.eu/ose.php?* | |||
// @include http*://www.online-soccer.eu/oscq.php | |||
// @include http*://www.online-soccer.eu/oscq.php?* | |||
// @include http*://www.online-soccer.eu/oschr.php | |||
// @include http*://www.online-soccer.eu/oschr.php?* | |||
// @include http*://www.online-soccer.eu/osczr.php | |||
// @include http*://www.online-soccer.eu/osczr.php?* | |||
// @include http*://www.online-soccer.eu/oscfr.php | |||
// @include http*://www.online-soccer.eu/oscfr.php?* | |||
// @include http*://www.online-soccer.eu/zer.php | |||
// @include http*://www.online-soccer.eu/zer.php?* | |||
// @grant GM_getValue | |||
// @grant GM_setValue | |||
// @grant GM_deleteValue | |||
// @grant GM_registerMenuCommand | |||
// ==/UserScript== | // ==/UserScript== | ||
// ECMAScript 6: | // ECMAScript 6: Erlaubt 'const', 'let', ... | ||
/* jshint esnext: true */ | /* jshint esnext: true */ | ||
/* jshint moz: true */ | /* jshint moz: true */ | ||
// ==================== Konfigurations-Abschnitt fuer Optionen ==================== | // ==================== Konfigurations-Abschnitt fuer Optionen ==================== | ||
// Options-Typen | // Options-Typen | ||
Zeile 72: | Zeile 131: | ||
'NXT' : "set next option value", | 'NXT' : "set next option value", | ||
'RST' : "reset options" | 'RST' : "reset options" | ||
}; | }; | ||
Zeile 109: | Zeile 147: | ||
}, | }, | ||
'reset' : { // Optionen auf die "Werkseinstellungen" zuruecksetzen | 'reset' : { // Optionen auf die "Werkseinstellungen" zuruecksetzen | ||
'Name' : "reset", | 'Name' : "reset", | ||
'Type' : __OPTTYPES.SI, | 'Type' : __OPTTYPES.SI, | ||
Zeile 116: | Zeile 153: | ||
'Hotkey' : 'O', | 'Hotkey' : 'O', | ||
'FormLabel' : "" | 'FormLabel' : "" | ||
}, | }, | ||
'showForm' : { // Optionen auf der Webseite (true = anzeigen, false = nicht anzeigen) | 'showForm' : { // Optionen auf der Webseite (true = anzeigen, false = nicht anzeigen) | ||
'Name' : "showForm", | 'Name' : "showForm", | ||
'Type' : __OPTTYPES.SW, | 'Type' : __OPTTYPES.SW, | ||
Zeile 143: | Zeile 160: | ||
'Permanent' : true, | 'Permanent' : true, | ||
'Default' : false, | 'Default' : false, | ||
'Action' : __OPTACTION.NXT, | 'Action' : __OPTACTION.NXT, | ||
'Label' : "Optionen anzeigen", | 'Label' : "Optionen anzeigen", | ||
'Hotkey' : 'a', | 'Hotkey' : 'a', | ||
'AltLabel' : "Optionen verbergen", | 'AltLabel' : "Optionen verbergen", | ||
'AltHotkey' : 'v', | 'AltHotkey' : 'v', | ||
Zeile 155: | Zeile 170: | ||
// ==================== Invarianter Abschnitt fuer Optionen ==================== | // ==================== Invarianter Abschnitt fuer Optionen ==================== | ||
// ==================== Abschnitt fuer diverse Utilities ==================== | // ==================== Abschnitt fuer diverse Utilities ==================== | ||
// Gibt einen Wert zurueck. Ist dieser nicht definiert | // Gibt einen Wert zurueck. Ist dieser nicht definiert, wird ein Alternativwert geliefert | ||
// value: Ein Wert. Ist dieser nicht undefined | // value: Ein Wert. Ist dieser nicht undefined, wird er zurueckgeliefert | ||
// defValue: Default-Wert fuer den Fall, dass nichts gesetzt ist | // defValue: Default-Wert fuer den Fall, dass nichts gesetzt ist | ||
// retValue: Falls definiert, Rueckgabe-Wert fuer den Fall, dass value nicht undefined | // retValue: Falls definiert, Rueckgabe-Wert fuer den Fall, dass value nicht undefined ist | ||
// return Der Wert. Sind weder value noch defValue definiert, dann undefined | // return Der Wert. Sind weder value noch defValue definiert, dann undefined | ||
function getValue(value, defValue = undefined, retValue = undefined) { | function getValue(value, defValue = undefined, retValue = undefined) { | ||
return | return (value === undefined) ? defValue : (retValue === undefined) ? value : retValue; | ||
} | } | ||
Zeile 914: | Zeile 211: | ||
} | } | ||
// | // Speichert einen beliebiegen (strukturierten) Wert unter einem Namen ab | ||
// | // name: GM_setValue-Name, unter dem die Daten gespeichert werden | ||
// value: Beliebiger (strukturierter) Wert | |||
// | // return String-Darstellung des Wertes | ||
function serialize(name, value) { | |||
// return | const __STREAM = (value !== undefined) ? JSON.stringify(value) : value; | ||
function | |||
console.log(name + " >> " + __STREAM); | |||
GM_setValue(name, __STREAM); | |||
return | return __STREAM; | ||
} | } | ||
// | // Holt einen beliebiegen (strukturierter) Wert unter einem Namen zurueck | ||
// | // name: GM_setValue-Name, unter dem die Daten gespeichert werden | ||
// defValue: Default-Wert fuer den Fall, dass | // defValue: Default-Wert fuer den Fall, dass nichts gespeichert ist | ||
// return | // return Objekt, das unter dem Namen gespeichert war | ||
function | function deserialize(name, defValue = undefined) { | ||
const __STREAM = GM_getValue(name, defValue); | |||
console.log(name + " << " + __STREAM); | |||
if ((__STREAM !== undefined) && (__STREAM.length !== 0)) { | |||
try { | |||
return JSON.parse(__STREAM); | |||
} catch (ex) { | |||
console.error(name + ": " + ex.message); | |||
} | } | ||
} | } | ||
return | return undefined; | ||
} | } | ||
// | // Setzt eine Option dauerhaft und laedt die Seite neu | ||
// name: Name der Option als Speicherort | |||
// value: Zu setzender Wert | |||
// reload: Seite mit neuem Wert neu laden | |||
// return Gespeicherter Wert fuer setOptValue() | |||
function setStored(name, value, reload = true, serial = false) { | |||
if (serial) { | |||
serialize(name, value); | |||
// | |||
// | |||
// | |||
// return | |||
function | |||
if ( | |||
} else { | } else { | ||
GM_setValue(name, value); | |||
} | } | ||
if (reload) { | if (reload) { | ||
window.location.reload(); | window.location.reload(); | ||
} | } | ||
return value; | return value; | ||
Zeile 1.310: | Zeile 269: | ||
// value: Vorher gesetzter Wert | // value: Vorher gesetzter Wert | ||
// reload: Seite mit neuem Wert neu laden | // reload: Seite mit neuem Wert neu laden | ||
// return Gespeicherter Wert fuer setOptValue() | // return Gespeicherter Wert fuer setOptValue() | ||
function setNextStored(arr, name, value, reload = | function setNextStored(arr, name, value, reload = true, serial = false) { | ||
return setStored(name, getNextValue(arr, value), reload, serial | return setStored(name, getNextValue(arr, value), reload, serial); | ||
} | } | ||
// Fuehrt die in einem Storage gespeicherte Operation aus | // Fuehrt die in einem Storage gespeicherte Operation aus | ||
// | // optSet: Set mit den Optionen | ||
// session: true = bis Browserende gespeichert (sessionStorage), false = unbegrenzt gespeichert (localStorage) | |||
function | function runStored(optSet, session = true) { | ||
const __STORAGE = | const __STORAGE = (session ? sessionStorage : localStorage); | ||
const | const __CMD = ((__STORAGE !== undefined) ? __STORAGE.getItem('runcmd') : undefined); | ||
if ( | if (__CMD !== undefined) { | ||
const | const __KEY = __STORAGE.getItem('runkey'); | ||
let value = __STORAGE.getItem('runval'); | |||
try { | |||
value = JSON.parse(value); | |||
} catch (ex) { | |||
console.error("runStored(): " + __CMD + " '" + __KEY + "' hat illegalen Wert '" + value + "'"); | |||
// ... meist kann man den String selber aber speichern, daher kein "return"... | |||
} | } | ||
const __VAL = value; | |||
switch (__OPTACTION[__CMD]) { | |||
case __OPTACTION.SET : console.log("SET '" + __KEY + "' " + __VAL); | |||
setStored(__KEY, __VAL, false, false); | |||
break; | |||
case __OPTACTION.NXT : console.log("SETNEXT '" + __KEY + "' " + __VAL); | |||
//setNextStored(__CONFIG.Choice, __KEY, __VAL, false, false); | |||
setStored(__KEY, __VAL, false, false); | |||
break; | |||
case __OPTACTION.RST : console.log("RESET"); | |||
resetOptions(optSet, false); | |||
break; | |||
default : break; | |||
} | } | ||
} | } | ||
__STORAGE.removeItem('runcmd'); | |||
__STORAGE.removeItem('runkey'); | |||
__STORAGE.removeItem('runval'); | |||
} | } | ||
Zeile 1.451: | Zeile 349: | ||
// return Gesetzter Name der Option | // return Gesetzter Name der Option | ||
function setOptName(opt, name) { | function setOptName(opt, name) { | ||
return (getOptConfig(opt).Name = name); | |||
} | } | ||
Zeile 1.467: | Zeile 356: | ||
// return Name der Option | // return Name der Option | ||
function getOptName(opt) { | function getOptName(opt) { | ||
return getOptConfig(opt).Name; | |||
} | } | ||
Zeile 1.490: | Zeile 364: | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function setOptValue(opt, value) { | function setOptValue(opt, value) { | ||
return (opt !== undefined) ? (opt.Value = value) : undefined; | |||
} | } | ||
Zeile 1.505: | Zeile 370: | ||
// opt: Config und Value der Option | // opt: Config und Value der Option | ||
// defValue: Default-Wert fuer den Fall, dass nichts gesetzt ist | // defValue: Default-Wert fuer den Fall, dass nichts gesetzt ist | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function getOptValue(opt, defValue = undefined | function getOptValue(opt, defValue = undefined) { | ||
return getValue((opt !== undefined) ? opt.Value : undefined, defValue); | |||
} | } | ||
// ==================== Ende Abschnitt fuer diverse Utilities ==================== | // ==================== Ende Abschnitt fuer diverse Utilities ==================== | ||
// ==================== Abschnitt fuer das Benutzermenu ==================== | // ==================== Abschnitt fuer das Benutzermenu ==================== | ||
// Zeigt den Eintrag im Menu einer Option | // Zeigt den Eintrag im Menu einer Option | ||
// | // opt: Derzeitiger Wert der Option | ||
// menuOn: Text zum Setzen im Menu | // menuOn: Text zum Setzen im Menu | ||
// funOn: Funktion zum Setzen | // funOn: Funktion zum Setzen | ||
Zeile 1.788: | Zeile 387: | ||
// funOff: Funktion zum Ausschalten | // funOff: Funktion zum Ausschalten | ||
// keyOff: Hotkey zum Ausschalten im Menu | // keyOff: Hotkey zum Ausschalten im Menu | ||
function registerMenuOption(opt, menuOn, funOn, keyOn, menuOff, funOff, keyOff) { | |||
function registerMenuOption( | const __ON = (opt ? '*' : ""); | ||
const __ON = ( | const __OFF = (opt ? "" : '*'); | ||
const __OFF = ( | |||
console.log("OPTION " + __ON + menuOn + __ON + " / " + __OFF + menuOff + __OFF); | |||
if ( | if (opt) { | ||
GM_registerMenuCommand(menuOff, funOff, keyOff); | |||
} else { | } else { | ||
GM_registerMenuCommand(menuOn, funOn, keyOn); | |||
} | } | ||
} | } | ||
// Zeigt den Eintrag im Menu einer Option mit Wahl des naechsten Wertes | // Zeigt den Eintrag im Menu einer Option mit Wahl des naechsten Wertes | ||
// | // opt: Derzeitiger Wert der Option | ||
// arr: Array-Liste mit den moeglichen Optionen | // arr: Array-Liste mit den moeglichen Optionen | ||
// menu: Text zum Setzen im Menu ($ wird durch gesetzten Wert ersetzt) | // menu: Text zum Setzen im Menu ($ wird durch gesetzten Wert ersetzt) | ||
// fun: Funktion zum Setzen des naechsten Wertes | // fun: Funktion zum Setzen des naechsten Wertes | ||
// key: Hotkey zum Setzen des naechsten Wertes im Menu | // key: Hotkey zum Setzen des naechsten Wertes im Menu | ||
function registerNextMenuOption(opt, arr, menu, fun, key) { | |||
function registerNextMenuOption( | const __MENU = menu.replace('$', opt); | ||
const __MENU = | |||
let options = "OPTION " + __MENU; | let options = "OPTION " + __MENU; | ||
for (let value of arr) { | for (let value of arr) { | ||
if (value === | if (value === opt) { | ||
options += " / *" + value + '*'; | options += " / *" + value + '*'; | ||
} else { | } else { | ||
Zeile 1.820: | Zeile 417: | ||
} | } | ||
} | } | ||
console.log(options); | |||
GM_registerMenuCommand(__MENU, fun, key); | |||
} | } | ||
// Zeigt den Eintrag im Menu einer Option, falls nicht hidden | // Zeigt den Eintrag im Menu einer Option, falls nicht hidden | ||
// | // opt: Derzeitiger Wert der Option | ||
// menu: Text zum Setzen im Menu ($ wird durch gesetzten Wert ersetzt) | // menu: Text zum Setzen im Menu ($ wird durch gesetzten Wert ersetzt) | ||
// fun: Funktion zum Setzen des naechsten Wertes | // fun: Funktion zum Setzen des naechsten Wertes | ||
// key: Hotkey zum Setzen des naechsten Wertes im Menu | // key: Hotkey zum Setzen des naechsten Wertes im Menu | ||
// hidden: Angabe, ob Menupunkt nicht sichtbar sein soll ( | // hidden: Angabe, ob Menupunkt nicht sichtbar sein soll (default: sichtbar) | ||
// serial: Serialization fuer komplexe Daten | // serial: Serialization fuer komplexe Daten | ||
function registerDataOption(opt, menu, fun, key, hidden = false, serial = true) { | |||
function registerDataOption( | const __VALUE = ((serial && (opt !== undefined)) ? JSON.stringify(opt) : opt); | ||
const __VALUE = ((serial && ( | const __MENU = getValue(menu, "").replace('$', __VALUE); | ||
const __MENU = | |||
const __OPTIONS = (hidden ? "HIDDEN " : "") + "OPTION " + __MENU + | const __OPTIONS = (hidden ? "HIDDEN " : "") + "OPTION " + __MENU + | ||
getValue(__VALUE, "", " = " + __VALUE); | getValue(__VALUE, "", " = " + __VALUE); | ||
console.log(__OPTIONS); | |||
if (hidden) { | if (! hidden) { | ||
GM_registerMenuCommand(__MENU, fun, key); | |||
} | } | ||
} | } | ||
Zeile 1.850: | Zeile 444: | ||
// Zeigt den Eintrag im Menu einer Option | // Zeigt den Eintrag im Menu einer Option | ||
// opt: Config und Value der Option | // opt: Config und Value der Option | ||
function registerOption(opt) { | function registerOption(opt) { | ||
const __CONFIG = getOptConfig(opt); | const __CONFIG = getOptConfig(opt); | ||
if (! __CONFIG.HiddenMenu) { | if (! __CONFIG.HiddenMenu) { | ||
switch (__CONFIG.Type) { | switch (__CONFIG.Type) { | ||
case __OPTTYPES.MC : | case __OPTTYPES.MC : registerNextMenuOption(getOptValue(opt), __CONFIG.Choice, | ||
case __OPTTYPES.SW : | __CONFIG.Label, opt.Action, __CONFIG.Hotkey); | ||
break; | |||
case __OPTTYPES.TF : | case __OPTTYPES.SW : registerMenuOption(getOptValue(opt), __CONFIG.Label, opt.Action, __CONFIG.Hotkey, | ||
__CONFIG.AltLabel, opt.Action, __CONFIG.AltHotkey); | |||
case __OPTTYPES.SD : | break; | ||
case __OPTTYPES.SI : | case __OPTTYPES.TF : registerMenuOption(getOptValue(opt), __CONFIG.Label, opt.Action, __CONFIG.Hotkey, | ||
default : | __CONFIG.AltLabel, opt.AltAction, __CONFIG.AltHotkey); | ||
break; | |||
case __OPTTYPES.SD : registerDataOption(getOptValue(opt), __CONFIG.Label, opt.Action, __CONFIG.Hotkey, | |||
__CONFIG.HiddenMenu, __CONFIG.Serial); | |||
break; | |||
case __OPTTYPES.SI : registerDataOption(getOptValue(opt), __CONFIG.Label, opt.Action, __CONFIG.Hotkey, | |||
__CONFIG.HiddenMenu, __CONFIG.Serial); | |||
break; | |||
default : break; | |||
} | } | ||
} else { | } else { | ||
// Nur Anzeige im Log... | // Nur Anzeige im Log... | ||
registerDataOption(getOptValue(opt), getOptName(opt), opt.Action, __CONFIG.Hotkey, __CONFIG.HiddenMenu, __CONFIG.Serial); | |||
} | } | ||
} | } | ||
Zeile 1.881: | Zeile 476: | ||
// Initialisiert die gesetzten Option | // Initialisiert die gesetzten Option | ||
// config: Konfiguration der Option | // config: Konfiguration der Option | ||
// return Initialwert der gesetzten Option | // return Initialwert der gesetzten Option | ||
function initOptValue(config | function initOptValue(config) { | ||
let value = | let value = config.Default; // Standard | ||
switch (config.Type) { | switch (config.Type) { | ||
Zeile 1.914: | Zeile 504: | ||
// item: Key der Option | // item: Key der Option | ||
// optSet: Platz fuer die gesetzten Optionen (und Config) | // optSet: Platz fuer die gesetzten Optionen (und Config) | ||
// return Funktion fuer die Option | // return Funktion fuer die Option | ||
function initOptAction(optAction, item = undefined, optSet | function initOptAction(optAction, item = undefined, optSet = undefined) { | ||
var fun; | |||
if (optAction !== undefined) { | if (optAction !== undefined) { | ||
const __CONFIG = | const __CONFIG = getOptConfig(getOptByName(optSet, item)); | ||
const __RELOAD = | const __RELOAD = ((__CONFIG !== undefined) ? __CONFIG.ActionReload : false); | ||
switch (optAction) { | switch (optAction) { | ||
case __OPTACTION.SET : fun = function() { | case __OPTACTION.SET : fun = function() { | ||
return setOptByName(optSet, item, | return setOptByName(optSet, item, optSet.SetValue, __RELOAD); | ||
}; | }; | ||
break; | break; | ||
case __OPTACTION.NXT : fun = function() { | case __OPTACTION.NXT : fun = function() { | ||
return | return setNextOptByName(optSet, item, optSet.SetValue, __RELOAD); | ||
}; | }; | ||
break; | break; | ||
case __OPTACTION.RST : fun = function() { | case __OPTACTION.RST : fun = function() { | ||
return resetOptions(optSet, __RELOAD | return resetOptions(optSet, __RELOAD); | ||
}; | }; | ||
break; | break; | ||
Zeile 1.944: | Zeile 530: | ||
return fun; | return fun; | ||
} | } | ||
Zeile 2.006: | Zeile 535: | ||
// optConfig: Konfiguration der Optionen | // optConfig: Konfiguration der Optionen | ||
// optSet: Platz fuer die gesetzten Optionen | // optSet: Platz fuer die gesetzten Optionen | ||
// return Gefuelltes Objekt mit den gesetzten Optionen | // return Gefuelltes Objekt mit den gesetzten Optionen | ||
function initOptions(optConfig, optSet | function initOptions(optConfig, optSet = undefined) { | ||
var value; | |||
if (optSet === undefined) { | if (optSet === undefined) { | ||
Zeile 2.016: | Zeile 544: | ||
for (let opt in optConfig) { | for (let opt in optConfig) { | ||
const | const __CONFIG = optConfig[opt]; | ||
const | const __ALTACTION = getValue(__CONFIG.AltAction, __CONFIG.Action); | ||
optSet[opt] = { | |||
'Config' : __CONFIG, | |||
'Value' : initOptValue(__CONFIG), | |||
'SetValue' : undefined, | |||
'Action' : initOptAction(__CONFIG.Action, opt, optSet), | |||
'AltAction' : initOptAction(__ALTACTION, opt, optSet) | |||
}; | |||
} | |||
} | } | ||
Zeile 2.142: | Zeile 564: | ||
// value: (Bei allen Typen) Zu setzender Wert | // value: (Bei allen Typen) Zu setzender Wert | ||
// reload: Seite mit neuem Wert neu laden | // reload: Seite mit neuem Wert neu laden | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function setOpt(opt, value, reload = false | function setOpt(opt, value, reload = false) { | ||
return setOptValue(opt, setStored(getOptName(opt), value, reload, getOptConfig(opt).Serial | return setOptValue(opt, setStored(getOptName(opt), value, reload, getOptConfig(opt).Serial)); | ||
} | } | ||
Zeile 2.173: | Zeile 593: | ||
// value: Default fuer ggfs. zu setzenden Wert | // value: Default fuer ggfs. zu setzenden Wert | ||
// reload: Seite mit neuem Wert neu laden | // reload: Seite mit neuem Wert neu laden | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function | function setNextOpt(opt, value = undefined, reload = true) { | ||
const __CONFIG = getOptConfig(opt); | const __CONFIG = getOptConfig(opt); | ||
const __VALUE = getOptValue(opt, value); | const __VALUE = getOptValue(opt, value); | ||
return setOpt(opt, getNextOpt(opt, __VALUE), reload); | |||
} | } | ||
Zeile 2.250: | Zeile 607: | ||
// value: (Bei allen Typen) Zu setzender Wert | // value: (Bei allen Typen) Zu setzender Wert | ||
// reload: Seite mit neuem Wert neu laden | // reload: Seite mit neuem Wert neu laden | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function setOptByName(optSet, item, value, reload = false | function setOptByName(optSet, item, value, reload = false) { | ||
const __OPT = getOptByName(optSet, item); | const __OPT = getOptByName(optSet, item); | ||
return setOpt(__OPT, value, reload | return setOpt(__OPT, value, reload); | ||
} | } | ||
// Ermittelt die naechste moegliche Option (Version mit Key) | // Ermittelt die naechste moegliche Option (Version mit Key) | ||
// opt: Config und Value der Option | |||
// optSet: Platz fuer die gesetzten Optionen (und Config) | // optSet: Platz fuer die gesetzten Optionen (und Config) | ||
// item: Key der Option | // item: Key der Option | ||
// value: | // value: Ggfs. zu setzender Wert | ||
// return Zu setzender Wert | // return Zu setzender Wert | ||
function getNextOptByName(optSet, item, value = undefined) { | function getNextOptByName(optSet, item, value = undefined) { | ||
Zeile 2.271: | Zeile 627: | ||
// Setzt die naechste moegliche Option (Version mit Key) | // Setzt die naechste moegliche Option (Version mit Key) | ||
// opt: Config und Value der Option | |||
// optSet: Platz fuer die gesetzten Optionen (und Config) | // optSet: Platz fuer die gesetzten Optionen (und Config) | ||
// item: Key der Option | // item: Key der Option | ||
// value: | // value: Ggfs. zu setzender Wert | ||
// reload: Seite mit neuem Wert neu laden | // reload: Seite mit neuem Wert neu laden | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function setNextOptByName(optSet, item, value = undefined, reload = | function setNextOptByName(optSet, item, value = undefined, reload = true) { | ||
const __OPT = getOptByName(optSet, item); | const __OPT = getOptByName(optSet, item); | ||
return setNextOpt(__OPT, value, reload | return setNextOpt(__OPT, value, reload); | ||
} | } | ||
// Baut das Benutzermenu auf | |||
// Baut das Benutzermenu auf | |||
// optSet: Gesetzte Optionen | // optSet: Gesetzte Optionen | ||
function buildMenu(optSet) { | |||
console.log("buildMenu()"); | |||
for (let opt in optSet) { | for (let opt in optSet) { | ||
registerOption(optSet[opt]); | |||
} | } | ||
} | } | ||
Zeile 2.352: | Zeile 652: | ||
// opt: Zu ladende Option | // opt: Zu ladende Option | ||
// force: Laedt auch Optionen mit 'AutoReset'-Attribut | // force: Laedt auch Optionen mit 'AutoReset'-Attribut | ||
// return | // return Gesetzter Wert der gelandenen Option | ||
function loadOption(opt, force = false) { | function loadOption(opt, force = false) { | ||
const __CONFIG = getOptConfig(opt); | |||
if (! force && __CONFIG.AutoReset) { | |||
return setOptValue(opt, initOptValue(__CONFIG)); | |||
} else if (__CONFIG.Serial) { | |||
return setOptValue(opt, deserialize(getOptName(opt), getOptValue(opt))); | |||
} else { | |||
return setOptValue(opt, GM_getValue(getOptName(opt), getOptValue(opt))); | |||
} | } | ||
} | } | ||
// Laedt die (ueber Menu) gesetzten Optionen | // Laedt die (ueber Menu) gesetzten Optionen | ||
// optSet: | // optSet: Set mit den Optionen | ||
// force: Laedt auch Optionen mit 'AutoReset'-Attribut | // force: Laedt auch Optionen mit 'AutoReset'-Attribut | ||
// return | // return Set mit den geladenen Optionen | ||
function loadOptions(optSet, force = false) { | function loadOptions(optSet, force = false) { | ||
for (let opt in optSet) { | for (let opt in optSet) { | ||
loadOption(optSet[opt], force); | |||
} | } | ||
return | return optSet; | ||
} | } | ||
Zeile 2.430: | Zeile 680: | ||
// opt: Gesetzte Option | // opt: Gesetzte Option | ||
// force: Entfernt auch Optionen mit 'Permanent'-Attribut | // force: Entfernt auch Optionen mit 'Permanent'-Attribut | ||
// reset: Setzt bei Erfolg auf Initialwert der Option | // reset: Setzt bei Erfolg auf Initialwert der Option | ||
function deleteOption(opt, force = false, reset = true) { | function deleteOption(opt, force = false, reset = true) { | ||
const __CONFIG = getOptConfig(opt); | const __CONFIG = getOptConfig(opt); | ||
if (force || ! __CONFIG.Permanent) { | if (force || ! __CONFIG.Permanent) { | ||
GM_deleteValue(getOptName(opt)); | |||
if (reset) { | |||
setOptValue(opt, initOptValue(__CONFIG)); | |||
} | |||
} | } | ||
} | } | ||
// Entfernt die (ueber Menu) gesetzten Optionen (falls nicht 'Permanent') | // Entfernt die (ueber Menu) gesetzten Optionen (falls nicht 'Permanent') | ||
// optSet: Gesetzte Optionen | // optSet: Gesetzte Optionen | ||
// force: Entfernt auch Optionen mit 'Permanent'-Attribut | // force: Entfernt auch Optionen mit 'Permanent'-Attribut | ||
// reset: Setzt bei Erfolg auf Initialwert der Option | // reset: Setzt bei Erfolg auf Initialwert der Option | ||
function deleteOptions(optSet, force = false, reset = true) { | |||
for (let opt in optSet) { | for (let opt in optSet) { | ||
deleteOption(optSet[opt], force, reset); | |||
} | } | ||
} | } | ||
// | // Entfernt eine (ueber Menu) gesetzte Option | ||
// opt: Gesetzte Option | // opt: Gesetzte Option | ||
// name: Neu zu setzender Name (Speicheradresse) | // name: Neu zu setzender Name (Speicheradresse) | ||
// reload: Wert nachladen statt beizubehalten | // reload: Wert nachladen statt beizubehalten | ||
// return Umbenannte Option | |||
// return | function renameOption(opt, name, reload = false) { | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
if (__NAME !== name) { | if (__NAME !== name) { | ||
deleteOption(opt, true, ! reload); | |||
setOptName(opt, name); | setOptName(opt, name); | ||
if (reload) { | if (reload) { | ||
loadOption(opt); | |||
} | } | ||
} | } | ||
return | return opt; | ||
} | } | ||
// | // Setzt die Optionen in optSet auf die "Werkseinstellungen" des Skripts | ||
// | // reload: Seite mit "Werkseinstellungen" neu laden | ||
// | // optSet: Gesetzte Optionen | ||
// | function resetOptions(optSet, reload = true) { | ||
// Alle (nicht 'Permanent') gesetzten Optionen entfernen... | |||
deleteOptions(optSet, false, true); | |||
if (reload) { | |||
// ... und Seite neu laden (mit "Werkseinstellungen")... | |||
window.location.reload(); | |||
} | |||
} | } | ||
// | // ==================== Spezialisierter Abschnitt fuer Optionen ==================== | ||
// | |||
// Gesetzte Optionen (wird von initOptions() angelegt und von loadOptions() gefuellt): | |||
const __OPTSET = { }; | |||
} | |||
// | // Behandelt die Optionen und laedt das Benutzermenu | ||
// optSet: | // optConfig: Konfiguration der Optionen | ||
// | // optSet: Platz fuer die gesetzten Optionen | ||
// ' | // optParams: Eventuell notwendige Parameter zur Initialisierung | ||
// ' | // 'hideMenu': Optionen werden zwar geladen und genutzt, tauchen aber nicht im Benutzermenu auf | ||
// | // 'menuAnchor': Startpunkt fuer das Optionsmenu auf der Seite | ||
// | // 'showForm': Checkliste der auf der Seite sichtbaren Optionen (true fuer sichtbar) | ||
// | // 'hideForm': Checkliste der auf der Seite unsichtbaren Optionen (true fuer unsichtbar) | ||
// | // 'formWidth': Anzahl der Elemente pro Zeile | ||
// return | // 'formBreak': Elementnummer des ersten Zeilenumbruchs | ||
// return Gefuelltes Objekt mit den gesetzten Optionen | |||
function buildOptions(optConfig, optSet = undefined, optParams = { 'hideMenu' : false }) { | |||
optSet = initOptions(optConfig, optSet); | |||
runStored(optSet, true); | |||
loadOptions(optSet); | |||
if (! optParams.hideMenu) { | |||
buildMenu(optSet); | |||
} | } | ||
if (optParams.menuAnchor !== undefined) { | |||
buildForm(optParams.menuAnchor, optSet, optParams); | |||
} | |||
return optSet; | |||
} | } | ||
Zeile 2.564: | Zeile 777: | ||
// type: Typ der Input-Felder (Default: unsichtbare Daten) | // type: Typ der Input-Felder (Default: unsichtbare Daten) | ||
// return Ergaenztes Form-Konstrukt | // return Ergaenztes Form-Konstrukt | ||
function addInputField(form, props, type = | function addInputField(form, props, type = "hidden") { | ||
for (let fieldName in props) { | for (let fieldName in props) { | ||
let field = form[fieldName]; | let field = form[fieldName]; | ||
if (! field) { | if (! field) { | ||
field = document.createElement( | field = document.createElement("input"); | ||
field.type = type; | field.type = type; | ||
field.name = fieldName; | field.name = fieldName; | ||
Zeile 2.584: | Zeile 797: | ||
// return Ergaenztes Form-Konstrukt | // return Ergaenztes Form-Konstrukt | ||
function addHiddenField(form, props) { | function addHiddenField(form, props) { | ||
return addInputField(form, props, | return addInputField(form, props, "hidden"); | ||
} | } | ||
// | // Helferfunktion fuer alle Browser: Fuegt fuer ein Event eine Reaktion ein | ||
// obj: Betroffenes Objekt, z.B. ein Eingabeelement | // obj: Betroffenes Objekt, z.B. ein Eingabeelement | ||
// type: Name des Events, z.B. "click" | // type: Name des Events, z.B. "click" | ||
Zeile 2.597: | Zeile 810: | ||
return obj.addEventListener(type, callback, capture); | return obj.addEventListener(type, callback, capture); | ||
} else if (obj.attachEvent) { | } else if (obj.attachEvent) { | ||
return obj.attachEvent( | return obj.attachEvent("on" + type, callback); | ||
} else { | } else { | ||
console.log("Could not add " + type + " event:"); | |||
console.log(callback); | |||
return false; | return false; | ||
Zeile 2.606: | Zeile 819: | ||
} | } | ||
// | // Helferfunktion fuer alle Browser: Entfernt eine Reaktion fuer ein Event | ||
// obj: Betroffenes Objekt, z.B. ein Eingabeelement | // obj: Betroffenes Objekt, z.B. ein Eingabeelement | ||
// type: Name des Events, z.B. "click" | // type: Name des Events, z.B. "click" | ||
Zeile 2.616: | Zeile 829: | ||
return obj.removeEventListener(type, callback, capture); | return obj.removeEventListener(type, callback, capture); | ||
} else if (obj.detachEvent) { | } else if (obj.detachEvent) { | ||
return obj.detachEvent( | return obj.detachEvent("on" + type, callback); | ||
} else { | } else { | ||
console.log("Could not remove " + type + " event:"); | |||
console.log(callback); | |||
return false; | return false; | ||
Zeile 2.625: | Zeile 838: | ||
} | } | ||
// | // Helferfunktion fuer alle Browser: Fuegt fuer ein Event eine Reaktion ein | ||
// id: ID des betroffenen Eingabeelements | // id: ID des betroffenen Eingabeelements | ||
// type: Name des Events, z.B. "click" | // type: Name des Events, z.B. "click" | ||
Zeile 2.637: | Zeile 850: | ||
} | } | ||
// | // Helferfunktion fuer alle Browser: Entfernt eine Reaktion fuer ein Event | ||
// id: ID des betroffenen Eingabeelements | // id: ID des betroffenen Eingabeelements | ||
// type: Name des Events, z.B. "click" | // type: Name des Events, z.B. "click" | ||
Zeile 2.649: | Zeile 862: | ||
} | } | ||
// | // Helferfunktion fuer die Ueberpruefung, ob ein Item sichtbar sein soll | ||
// | // item: Name des betroffenen Items | ||
// | // showList: Checkliste der sichtbaren Items (true fuer sichtbar) | ||
// | // hideList: Checkliste der unsichtbaren Items (true fuer unsichtbar) | ||
// return | // return Angabe, ob das Item sichtbar sein soll | ||
function | function checkVisible(item, showList, hideList = undefined) { | ||
let show = true; | |||
if (showList !== undefined) { | |||
show = (showList[item] === true); // gesetzt und true | |||
} | |||
if (hideList !== undefined) { | |||
if (hideList[item] === true) { // gesetzt und true | |||
show = false; // NICHT anzeigen | |||
} | |||
} | |||
return | return show; | ||
} | } | ||
// | // Helferfunktion fuer die Ermittlung eines Elements der Seite (Default: Tabelle) | ||
// index: Laufende Nummer des Elements (0-based) | // index: Laufende Nummer des Elements (0-based) | ||
// tag: Tag des Elements ("table") | // tag: Tag des Elements ("table") | ||
// doc: Dokument (document) | // doc: Dokument (document) | ||
function getTable(index, tag = "table", doc = document) { | |||
function getTable(index, tag = | const __TAGS = document.getElementsByTagName(tag); | ||
const __TAGS = | const __TABLE = __TAGS[index]; | ||
const __TABLE = | |||
return __TABLE; | return __TABLE; | ||
} | } | ||
// | // Helferfunktion fuer die Ermittlung der Zeilen einer Tabelle | ||
// index: Laufende Nummer des Elements (0-based) | // index: Laufende Nummer des Elements (0-based) | ||
// doc: Dokument (document) | // doc: Dokument (document) | ||
function getRows(index, doc = document) { | function getRows(index, doc = document) { | ||
const __TABLE = getTable(index, | const __TABLE = getTable(index, "table", doc); | ||
const __ROWS = (__TABLE | const __ROWS = (__TABLE === undefined) ? undefined : __TABLE.rows; | ||
return __ROWS; | return __ROWS; | ||
Zeile 2.714: | Zeile 910: | ||
// value: Ggfs. zu setzender Wert | // value: Ggfs. zu setzender Wert | ||
// serial: Serialization fuer String-Werte (Select, Textarea) | // serial: Serialization fuer String-Werte (Select, Textarea) | ||
// return String mit dem (reinen) Funktionsaufruf | // return String mit dem (reinen) Funktionsaufruf | ||
function getFormAction(opt, isAlt = false, value = undefined, serial = undefined, | function getFormAction(opt, isAlt = false, value = undefined, serial = undefined) { | ||
const | const __CONFIG = getOptConfig(opt); | ||
const | const __SERIAL = getValue(serial, getValue(__CONFIG.Serial, false)); | ||
const | const __NAMSTR = "'" + getOptName(opt) + "'"; | ||
const | const __THISVAL = ((__CONFIG.ValType === "String") ? "'\\x22' + this.value + '\\x22'" : "this.value"); | ||
const __TVALUE = getValue(__CONFIG.ValType, __THISVAL, "new " + __CONFIG.ValType + '(' + __THISVAL + ')'); | |||
const __VALSTR = ((value !== undefined) ? JSON.stringify(value) : __SERIAL ? "JSON.stringify(" + __TVALUE + ')' : __TVALUE); | |||
const __ACTION = (isAlt ? getValue(__CONFIG.AltAction, __CONFIG.Action) : __CONFIG.Action); | |||
if ( | if (__ACTION !== undefined) { | ||
switch (__ACTION) { | |||
case __OPTACTION.SET : //return "doActionSet('" + getOptName(opt) + "', " + getNextOpt(opt, __VALSTR) + ')'; | |||
return "(sessionStorage.setItem('runcmd', 'SET'), sessionStorage.setItem('runkey', " + __NAMSTR + "), sessionStorage.setItem('runval', " + __VALSTR + "), window.location.reload())"; | |||
case __OPTACTION.NXT : //return "doActionNxt('" + getOptName(opt) + "', " + getNextOpt(opt, __VALSTR) + ')'; | |||
return "(sessionStorage.setItem('runcmd', 'NXT'), sessionStorage.setItem('runkey', " + __NAMSTR + "), sessionStorage.setItem('runval', " + __VALSTR + "), window.location.reload())"; | |||
case __OPTACTION.RST : //return "doActionRst()"; | |||
return "(sessionStorage.setItem('runcmd', 'RST'), window.location.reload())"; | |||
default : break; | |||
} | } | ||
} | } | ||
Zeile 2.760: | Zeile 941: | ||
// type: Event-Typ fuer <input>, z.B. "click" fuer "onclick=" | // type: Event-Typ fuer <input>, z.B. "click" fuer "onclick=" | ||
// serial: Serialization fuer String-Werte (Select, Textarea) | // serial: Serialization fuer String-Werte (Select, Textarea) | ||
// return String mit dem (reinen) Funktionsaufruf | // return String mit dem (reinen) Funktionsaufruf | ||
function getFormActionEvent(opt, isAlt = false, value = undefined, type = | function getFormActionEvent(opt, isAlt = false, value = undefined, type = "click", serial = undefined) { | ||
const __ACTION = getFormAction(opt, isAlt, value, serial | const __ACTION = getFormAction(opt, isAlt, value, serial); | ||
return getValue(__ACTION, "", ' on' + type + '="' + __ACTION + '"'); | return getValue(__ACTION, "", ' on' + type + '="' + __ACTION + '"'); | ||
} | } | ||
Zeile 2.819: | Zeile 955: | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
const __VALUE = getOptValue(opt); | const __VALUE = getOptValue(opt); | ||
const __ACTION = getFormActionEvent(opt, false, undefined, | const __ACTION = getFormActionEvent(opt, false, undefined, "change", undefined); | ||
const __FORMLABEL = | const __FORMLABEL = getValue(__CONFIG.FormLabel, __CONFIG.Label); | ||
const __LABEL = '<label for="' + __NAME + '">' + __FORMLABEL + '</label>'; | const __LABEL = '<label for="' + __NAME + '">' + __FORMLABEL + '</label>'; | ||
let element = '<select name="' + __NAME + '" id="' + __NAME + '"' + __ACTION + '>'; | let element = '<select name="' + __NAME + '" id="' + __NAME + '"' + __ACTION + '>'; | ||
for (let value of __CONFIG.Choice) { | for (let value of __CONFIG.Choice) { | ||
element += '\n<option value="' + value + '"' + | element += '\n<option value="' + value + '"' + | ||
Zeile 2.835: | Zeile 967: | ||
element += '\n</select>'; | element += '\n</select>'; | ||
return | return __LABEL.replace('$', element); | ||
} | } | ||
Zeile 2.845: | Zeile 977: | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
const __VALUE = getOptValue(opt, false); | const __VALUE = getOptValue(opt, false); | ||
const __ACTION = getFormActionEvent(opt, false, true, | const __ACTION = getFormActionEvent(opt, false, true, "click", false); | ||
const __ALTACTION = getFormActionEvent(opt, true, false, | const __ALTACTION = getFormActionEvent(opt, true, false, "click", false); | ||
const __ELEMENTON = '<input type="radio" name="' + __NAME + | const __ELEMENTON = '<input type="radio" name="' + __NAME + | ||
'" id="' + __NAME + 'ON" value="1"' + | '" id="' + __NAME + 'ON" value="1"' + | ||
Zeile 2.861: | Zeile 989: | ||
' /><label for="' + __NAME + 'OFF">' + | ' /><label for="' + __NAME + 'OFF">' + | ||
__CONFIG.AltLabel + '</label>'; | __CONFIG.AltLabel + '</label>'; | ||
return | return [ __ELEMENTON, __ELEMENTOFF ]; | ||
} | } | ||
Zeile 2.877: | Zeile 1.000: | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
const __VALUE = getOptValue(opt, false); | const __VALUE = getOptValue(opt, false); | ||
const __ACTION = getFormActionEvent(opt, __VALUE, ! __VALUE, | const __ACTION = getFormActionEvent(opt, __VALUE, ! __VALUE, "click", false); | ||
const | const __FORMLABEL = getValue(__CONFIG.FormLabel, __CONFIG.Label); | ||
return | return '<input type="checkbox" name="' + __NAME + | ||
'" id="' + __NAME + '" value="' + __VALUE + '"' + | |||
(__VALUE ? ' CHECKED' : "") + __ACTION + ' /><label for="' + | |||
__NAME + '">' + __FORMLABEL + '</label>'; | |||
} | } | ||
Zeile 2.895: | Zeile 1.016: | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
const __VALUE = getOptValue(opt); | const __VALUE = getOptValue(opt); | ||
const __ACTION = getFormActionEvent(opt, false, undefined, | const __ACTION = getFormActionEvent(opt, false, undefined, "submit", undefined); | ||
const __SUBMIT = getValue(__CONFIG.Submit, ""); | const __SUBMIT = getValue(__CONFIG.Submit, ""); | ||
const __ONSUBMIT = ((__SUBMIT.length > 0) ? ' onKeyDown="' + __SUBMIT + '"': ""); | |||
const __FORMLABEL = getValue(__CONFIG.FormLabel, __CONFIG.Label); | |||
const __FORMLABEL = | |||
const __ELEMENTLABEL = '<label for="' + __NAME + '">' + __FORMLABEL + '</label>'; | const __ELEMENTLABEL = '<label for="' + __NAME + '">' + __FORMLABEL + '</label>'; | ||
const __ELEMENTTEXT = '<textarea name="' + __NAME + '" id="' + __NAME + '" cols="' + __CONFIG.Cols + | const __ELEMENTTEXT = '<textarea name="' + __NAME + '" id="' + __NAME + '" cols="' + __CONFIG.Cols + | ||
'" rows="' + __CONFIG.Rows + '"' + __ONSUBMIT + __ACTION + '>' + | '" rows="' + __CONFIG.Rows + '"' + __ONSUBMIT + __ACTION + '>' + | ||
JSON.stringify(__VALUE, __CONFIG.Replace, __CONFIG.Space) + '</textarea>'; | |||
return [ | return [ __ELEMENTLABEL, __ELEMENTTEXT ]; | ||
} | } | ||
Zeile 2.916: | Zeile 1.035: | ||
const __NAME = getOptName(opt); | const __NAME = getOptName(opt); | ||
const __VALUE = getOptValue(opt, false); | const __VALUE = getOptValue(opt, false); | ||
const __ACTION = getFormActionEvent(opt, __VALUE, ! __VALUE, | const __ACTION = getFormActionEvent(opt, __VALUE, ! __VALUE, "click", false); | ||
const __BUTTONLABEL = (__VALUE ? | const __BUTTONLABEL = (__VALUE ? __CONFIG.AltLabel : __CONFIG.Label); | ||
const __FORMLABEL = | const __FORMLABEL = getValue(__CONFIG.FormLabel, __CONFIG.Label); | ||
return '<label for="' + __NAME + '">' + __FORMLABEL + '</label> | return '<label for="' + __NAME + '">' + __FORMLABEL + | ||
'</label><input type="button" name="' + __NAME + | |||
'" id="' + __NAME + '" value="' + __BUTTONLABEL + '"' + | |||
__ACTION + '/>'; | |||
} | } | ||
Zeile 2.954: | Zeile 1.072: | ||
} | } | ||
if ( | if (element.length === 2) { | ||
element = '<div>' + | element = '<div>' + element[0] + '<br />' + element[1] + '</div>'; | ||
} | } | ||
} | } | ||
return element; | return element; | ||
} | } | ||
Zeile 2.997: | Zeile 1.094: | ||
const __FORMBREAK = getValue(optParams.formBreak, __FORMWIDTH); | const __FORMBREAK = getValue(optParams.formBreak, __FORMWIDTH); | ||
const __SHOWFORM = getOptValue(optSet.showForm, true) ? optParams.showForm : { 'showForm' : true }; | const __SHOWFORM = getOptValue(optSet.showForm, true) ? optParams.showForm : { 'showForm' : true }; | ||
let form = __FORM; | let form = __FORM; | ||
let count = 0; // Bisher angezeigte Optionen | let count = 0; // Bisher angezeigte Optionen | ||
let column = 0; // Spalte der letzten Option (1-basierend) | let column = 0; // Spalte der letzten Option (1-basierend) | ||
for (let | for (let opt in optSet) { | ||
if (checkVisible(opt, __SHOWFORM, optParams.hideForm)) { | |||
const __ELEMENT = getOptionElement(optSet[opt]); | |||
const __TDOPT = (__ELEMENT.indexOf('|') < 0) ? ' colspan="2"' : ""; | |||
if (__ELEMENT.length > 0) { | |||
if (++count > __FORMBREAK) { | |||
if (++column > __FORMWIDTH) { | |||
column = 1; | |||
} | } | ||
} | } | ||
if (column === 1) { | |||
form += '</tr><tr>'; | |||
} | |||
form += '\n<td' + __TDOPT + '>' + __ELEMENT.replace('|', '</td><td>') + '</td>'; | |||
} | } | ||
} | } | ||
Zeile 3.053: | Zeile 1.147: | ||
// 'formBreak': Elementnummer des ersten Zeilenumbruchs | // 'formBreak': Elementnummer des ersten Zeilenumbruchs | ||
function buildForm(anchor, optSet, optParams = { }) { | function buildForm(anchor, optSet, optParams = { }) { | ||
console.log("buildForm()"); | |||
const __FORM = getForm(optSet, optParams); | const __FORM = getForm(optSet, optParams); | ||
Zeile 3.073: | Zeile 1.167: | ||
anchor.innerHTML.substring(0, anchor.innerHTML.length - __OLDFORM.Script.length - __OLDFORM.Form.length); | anchor.innerHTML.substring(0, anchor.innerHTML.length - __OLDFORM.Script.length - __OLDFORM.Form.length); | ||
__FORMS[anchor] = { | __FORMS[anchor] = { 'Script' : script, 'Form' : form }; | ||
anchor.innerHTML = __REST + script + form; | anchor.innerHTML = __REST + script + form; | ||
} | } | ||
// ==================== Ende Abschnitt fuer Optionen ==================== | // ==================== Ende Abschnitt fuer Optionen ==================== | ||
// ==================== Hauptprogramm ==================== | // ==================== Hauptprogramm ==================== | ||
Zeile 3.487: | Zeile 1.178: | ||
// Verarbeitet eine Ergebnis-Ansicht | // Verarbeitet eine Ergebnis-Ansicht | ||
function procErgebnisse() { | function procErgebnisse() { | ||
buildOptions(__OPTCONFIG, __OPTSET, { | |||
'menuAnchor' : getTable(0, "div") | |||
}); | |||
// Aktiviere Checkbox "Ergebnisse anzeigen" je nach Einstellung der Option | |||
getTable(0, "input").checked = getOptValue(__OPTSET.showErgs); | |||
} | } | ||
procErgebnisse(); | |||
console.log("SCRIPT END"); | |||
// *** EOF *** | // *** EOF *** | ||
</pre> | </pre> |