Bearbeiten von „OS2.haupt.user.js

Zur Navigation springen Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

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 2: Zeile 2:
// @name        OS2.haupt
// @name        OS2.haupt
// @namespace  http://os.ongapo.com/
// @namespace  http://os.ongapo.com/
// @version    0.31
// @version    0.30
// @copyright  2016+
// @copyright  2016+
// @author      Sven Loges (SLC)
// @author      Sven Loges (SLC)
Zeile 41: Zeile 41:
     'RST' : "reset options"
     'RST' : "reset options"
};
};
const __OPTMEM = {
    'normal' : {
                  'Name'      : "Session",
                  'Value'    : sessionStorage,
                  'Display'  : "sessionStorage",
                  'Prefix'    : 'run'
              },
    'unbegrenzt' : {
                  'Name'      : "Browser",
                  'Value'    : localStorage,
                  'Display'  : "localStorage",
                  'Prefix'    : 'run'
              },
    'inaktiv' : {
                  'Name'      : "inaktiv",
                  'Value'    : undefined,
                  'Display'  : "",
                  'Prefix'    : ""
              }
};
let myOptMem = __OPTMEM.normal;


// Moegliche Optionen (hier die Standardwerte editieren oder ueber das Benutzermenu setzen):
// Moegliche Optionen (hier die Standardwerte editieren oder ueber das Benutzermenu setzen):
Zeile 71: Zeile 48:
                   'Type'      : __OPTTYPES.MC,
                   'Type'      : __OPTTYPES.MC,
                   'ValType'  : "Number",
                   'ValType'  : "Number",
                   'Choice'    : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ],
                   'Choice'    : [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ],
                  'Default'  : 10,
                   'Action'    : __OPTACTION.NXT,
                   'Action'    : __OPTACTION.NXT,
                   'Label'    : "Saison: $",
                   'Label'    : "Saison: $",
Zeile 95: Zeile 71:
                   'Serial'    : true,
                   'Serial'    : true,
                   'Permanent' : true,
                   'Permanent' : true,
                   'Default'  : { 'Team' : undefined, 'Liga' : undefined, 'Land' : undefined, 'LdNr' : 0, 'LgNr' : 0 },
                   'Default'  : { 'Team' : undefined, 'Liga' : undefined, 'Land' : undefined },
                   'Submit'    : undefined,
                   'Submit'    : undefined,
                   'Cols'      : 36,
                   'Cols'      : 36,
                   'Rows'      : 6,
                   'Rows'      : 5,
                   'Replace'  : null,
                   'Replace'  : null,
                   'Space'    : 1,
                   'Space'    : 1,
Zeile 111: Zeile 87:
                   'FormLabel' : ""
                   'FormLabel' : ""
               },
               },
    'storage' : {        // Browserspeicher fuer die Klicks auf Optionen
                  'Name'      : "storage",
                  'Type'      : __OPTTYPES.MC,
                  'ValType'  : "String",
                  'Choice'    : Object.keys(__OPTMEM),
                  'Action'    : __OPTACTION.NXT,
                  'Label'    : "Speicher: $",
                  'Hotkey'    : 'c',
                  'FormLabel' : "Speicher:|$"
              },
    'oldStorage' : {      // Vorheriger Browserspeicher fuer die Klicks auf Optionen
                  'Name'      : "oldStorage",
                  'Type'      : __OPTTYPES.SD,
                  'AutoReset' : true,
                  'Hidden'    : true
              }
              ,
     'showForm' : {        // Optionen auf der Webseite (true = anzeigen, false = nicht anzeigen)
     'showForm' : {        // Optionen auf der Webseite (true = anzeigen, false = nicht anzeigen)
                   'Name'      : "showForm",
                   'Name'      : "showForm",
Zeile 140: Zeile 99:
                   'AltHotkey' : 'v',
                   'AltHotkey' : 'v',
                   'FormLabel' : ""
                   'FormLabel' : ""
               }};
               }
};


// ==================== Invarianter Abschnitt fuer Optionen ====================
// ==================== Invarianter Abschnitt fuer Optionen ====================
Zeile 245: Zeile 205:
function setNextStored(arr, name, value, reload = true, serial = false) {
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);
}
// Kompatibilitaetsfunktion: Testet, ob der uebergebene Speicher genutzt werden kann
// storage: __OPTMEM.normal = bis Browserende gespeichert (sessionStorage), __OPTMEM.unbegrenzt = unbegrenzt gespeichert (localStorage), __OPTMEM.inaktiv
function canUseStorage(storage = undefined) {
    const __STORAGE = getValue(storage, getValue(myOptMem, __OPTMEM.normal));
    const __MEMORY = __STORAGE.Value;
    let ret = false;
    if (__MEMORY !== undefined) {
        const __TESTITEM = 'canUseStorageTest';
        const __TEST = Math.random().toString();
        __MEMORY.setItem(__TESTITEM, __TEST);
        ret = (__MEMORY.getItem(__TESTITEM) === __TEST);
        __MEMORY.removeItem(__TESTITEM);
    }
    console.log("canUseStorage(" + __STORAGE.Name + ") = " + ret);
    return ret;
}
}


// Fuehrt die in einem Storage gespeicherte Operation aus
// Fuehrt die in einem Storage gespeicherte Operation aus
// optSet: Set mit den Optionen
// optSet: Set mit den Optionen
// storage: __OPTMEM.normal = bis Browserende gespeichert (sessionStorage), __OPTMEM.unbegrenzt = unbegrenzt gespeichert (localStorage), __OPTMEM.inaktiv
// session: true = bis Browserende gespeichert (sessionStorage), false = unbegrenzt gespeichert (localStorage)
function runStored(optSet, storage = undefined) {
function runStored(optSet, session = true) {
     const __STORAGE = getValue(storage, getValue(myOptMem, __OPTMEM.normal));
     const __STORAGE = (session ? sessionStorage : localStorage);
     const __MEMORY = __STORAGE.Value;
     const __CMD = ((__STORAGE !== undefined) ? __STORAGE.getItem('runcmd') : undefined);
    const __RUNPREFIX = __STORAGE.Prefix;


     if (__MEMORY !== undefined) {
     if (__CMD !== undefined) {
         const __GETITEM = function(item) {
         const __KEY = __STORAGE.getItem('runkey');
                              return __MEMORY.getItem(__RUNPREFIX + item);
         let value = __STORAGE.getItem('runval');
                          };
         const __DELITEM = function(item) {
                              return __MEMORY.removeItem(__RUNPREFIX + item);
                          };
        const __CMD = ((__MEMORY !== undefined) ? __GETITEM('cmd') : undefined);


         if (__CMD !== undefined) {
         try {
             const __KEY = __GETITEM('key');
             value = JSON.parse(value);
             let value = __GETITEM('val');
        } catch (ex) {
             console.error("runStored(): " + __CMD + " '" + __KEY + "' hat illegalen Wert '" + value + "'");
            // ... meist kann man den String selber aber speichern, daher kein "return"...
        }


            try {
        const __VAL = value;
                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);
            switch (__OPTACTION[__CMD]) {
                              setStored(__KEY, __VAL, false, false);
            case __OPTACTION.SET : console.log("SET '" + __KEY + "' " + __VAL);
                              break;
                                  setStored(__KEY, __VAL, false, false);
        case __OPTACTION.NXT : console.log("SETNEXT '" + __KEY + "' " + __VAL);
                                  break;
                              //setNextStored(__CONFIG.Choice, __KEY, __VAL, false, false);
            case __OPTACTION.NXT : console.log("SETNEXT '" + __KEY + "' " + __VAL);
                              setStored(__KEY, __VAL, false, false);
                                  //setNextStored(__CONFIG.Choice, __KEY, __VAL, false, false);
                              break;
                                  setStored(__KEY, __VAL, false, false);
        case __OPTACTION.RST : console.log("RESET");
                                  break;
                              resetOptions(optSet, false);
            case __OPTACTION.RST : console.log("RESET");
                              break;
                                  resetOptions(optSet, false);
        default :              break;
                                  break;
            default :              break;
            }
         }
         }
    }


        __DELITEM('cmd');
    __STORAGE.removeItem('runcmd');
        __DELITEM('key');
    __STORAGE.removeItem('runkey');
        __DELITEM('val');
    __STORAGE.removeItem('runval');
    }
}
}


Zeile 564: Zeile 492:
}
}


// Initialisiert die gesetzten Optionen und den Speicher und laedt die Optionen zum Start
// Setzt eine Option auf einen vorgegebenen Wert
// optConfig: Konfiguration der Optionen
// Fuer kontrollierte Auswahl des Values siehe setNextOpt()
// optSet: Platz fuer die gesetzten Optionen
// opt: Config und vorheriger Value der Option
// return Gefuelltes Objekt mit den gesetzten Optionen
// value: (Bei allen Typen) Zu setzender Wert
function startOptions(optConfig, optSet = undefined) {
// reload: Seite mit neuem Wert neu laden
     const __NORMAL = 'normal';
// return Gesetzter Wert
function setOpt(opt, value, reload = false) {
     return setOptValue(opt, setStored(getOptName(opt), value, reload, getOptConfig(opt).Serial));
}


     optSet = initOptions(optConfig, optSet);
// Ermittelt die naechste moegliche Option
// opt: Config und Value der Option
// value: Ggfs. zu setzender Wert
// return Zu setzender Wert
function getNextOpt(opt, value = undefined) {
    const __CONFIG = getOptConfig(opt);
     const __VALUE = getOptValue(opt, value);


     // Memory Storage fuer vorherige Speicherung...
     switch (__CONFIG.Type) {
     const __OLDOPT = optSet.oldStorage;
    case __OPTTYPES.MC : return getValue(value, getNextValue(__CONFIG.Choice, __VALUE));
     const __OLDSTORAGE = loadOption(getOpt(__OLDOPT), true);
     case __OPTTYPES.SW : return getValue(value, ! __VALUE);
     myOptMem = __OPTMEM[getValue(__OLDSTORAGE, __NORMAL)];
     case __OPTTYPES.TF : return getValue(value, ! __VALUE);
     case __OPTTYPES.SD : return getValue(value, __VALUE);
    case __OPTTYPES.SI : break;
    default :            break;
    }


     runStored(optSet);
     return __VALUE;
    loadOptions(optSet);
}


    // Memory Storage fuer naechste Speicherung...
// Setzt die naechste moegliche Option
    const __STORAGE = getOptValue(optSet.storage, __NORMAL);
// opt: Config und Value der Option
     const __NEWSTORAGE = setOpt(__OLDOPT, __STORAGE, false);
// value: Default fuer ggfs. zu setzenden Wert
     if (! canUseStorage(myOptMem = __OPTMEM[getValue(__NEWSTORAGE, __NORMAL)])) {
// reload: Seite mit neuem Wert neu laden
        const __INAKTIV = 'inaktiv';
// return Gesetzter Wert
function setNextOpt(opt, value = undefined, reload = true) {
     const __CONFIG = getOptConfig(opt);
     const __VALUE = getOptValue(opt, value);


        if (__NEWSTORAGE !== __INAKTIV) {
    return setOpt(opt, getNextOpt(opt, __VALUE), reload);
            setOpt(__OLDOPT, __INAKTIV, false);
            myOptMem = __OPTMEM[__INAKTIV];
        }
    }
 
    return optSet;
}
}


// Installiert die Visualisierung und Steuerung der Optionen
// Setzt eine Option auf einen vorgegebenen Wert (Version mit Key)
// optSet: Platz fuer die gesetzten Optionen
// Fuer kontrollierte Auswahl des Values siehe setNextOptByName()
// optParams: Eventuell notwendige Parameter zur Initialisierung
// optSet: Platz fuer die gesetzten Optionen (und Config)
// 'hideMenu': Optionen werden zwar geladen und genutzt, tauchen aber nicht im Benutzermenu auf
// item: Key der Option
// '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
// 'formBreak': Elementnummer des ersten Zeilenumbruchs
function showOptions(optSet = undefined, optParams = { 'hideMenu' : false }) {
    if (! optParams.hideMenu) {
        buildMenu(optSet);
    }
 
    if ((optParams.menuAnchor !== undefined) && (myOptMem !== __OPTMEM.inaktiv)) {
        buildForm(optParams.menuAnchor, optSet, optParams);
    }
}
 
// Setzt eine Option auf einen vorgegebenen Wert
// Fuer kontrollierte Auswahl des Values siehe setNextOpt()
// opt: Config und vorheriger Value der Option
// 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 setOptByName(optSet, item, value, reload = false) {
     return setOptValue(opt, setStored(getOptName(opt), value, reload, getOptConfig(opt).Serial));
     const __OPT = getOptByName(optSet, item);
 
    return setOpt(__OPT, value, reload);
}
}


// Ermittelt die naechste moegliche Option
// Ermittelt die naechste moegliche Option (Version mit Key)
// opt: Config und Value der Option
// opt: Config und Value der Option
// optSet: Platz fuer die gesetzten Optionen (und Config)
// item: Key der Option
// value: Ggfs. zu setzender Wert
// value: Ggfs. zu setzender Wert
// return Zu setzender Wert
// return Zu setzender Wert
function getNextOpt(opt, value = undefined) {
function getNextOptByName(optSet, item, value = undefined) {
     const __CONFIG = getOptConfig(opt);
     const __OPT = getOptByName(optSet, item);
    const __VALUE = getOptValue(opt, value);


     switch (__CONFIG.Type) {
     return getNextOpt(__OPT, value);
    case __OPTTYPES.MC : return getValue(value, getNextValue(__CONFIG.Choice, __VALUE));
    case __OPTTYPES.SW : return getValue(value, ! __VALUE);
    case __OPTTYPES.TF : return getValue(value, ! __VALUE);
    case __OPTTYPES.SD : return getValue(value, __VALUE);
    case __OPTTYPES.SI : break;
    default :            break;
    }
 
    return __VALUE;
}
}


// Setzt die naechste moegliche Option
// Setzt die naechste moegliche Option (Version mit Key)
// opt: Config und Value der Option
// opt: Config und Value der Option
// value: Default fuer ggfs. zu setzenden Wert
// optSet: Platz fuer die gesetzten Optionen (und Config)
// item: Key der Option
// 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 setNextOpt(opt, value = undefined, reload = true) {
function setNextOptByName(optSet, item, value = undefined, reload = true) {
     const __CONFIG = getOptConfig(opt);
     const __OPT = getOptByName(optSet, item);


     return setOpt(opt, getNextOpt(opt, value), reload);
     return setNextOpt(__OPT, value, reload);
}
}


// Setzt eine Option auf einen vorgegebenen Wert (Version mit Key)
// Baut das Benutzermenu auf
// Fuer kontrollierte Auswahl des Values siehe setNextOptByName()
// optSet: Gesetzte Optionen
// optSet: Platz fuer die gesetzten Optionen (und Config)
function buildMenu(optSet) {
// item: Key der Option
     console.log("buildMenu()");
// value: (Bei allen Typen) Zu setzender Wert
// reload: Seite mit neuem Wert neu laden
// return Gesetzter Wert
function setOptByName(optSet, item, value, reload = false) {
     const __OPT = getOptByName(optSet, item);


     return setOpt(__OPT, value, reload);
     for (let opt in optSet) {
        registerOption(optSet[opt]);
    }
}
}


// Ermittelt die naechste moegliche Option (Version mit Key)
// Laedt eine (ueber Menu) gesetzte Option
// opt: Config und Value der Option
// opt: Zu ladende Option
// optSet: Platz fuer die gesetzten Optionen (und Config)
// force: Laedt auch Optionen mit 'AutoReset'-Attribut
// item: Key der Option
// return Gesetzter Wert der gelandenen Option
// value: Ggfs. zu setzender Wert
function loadOption(opt, force = false) {
// return Zu setzender Wert
     const __CONFIG = getOptConfig(opt);
function getNextOptByName(optSet, item, value = undefined) {
     const __OPT = getOptByName(optSet, item);


     return getNextOpt(__OPT, value);
     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)));
    }
}
}


// Setzt die naechste moegliche Option (Version mit Key)
// Laedt die (ueber Menu) gesetzten Optionen
// opt: Config und Value der Option
// optSet: Set mit den Optionen
// optSet: Platz fuer die gesetzten Optionen (und Config)
// force: Laedt auch Optionen mit 'AutoReset'-Attribut
// item: Key der Option
// return Set mit den geladenen Optionen
// value: Ggfs. zu setzender Wert
function loadOptions(optSet, force = false) {
// reload: Seite mit neuem Wert neu laden
     for (let opt in optSet) {
// return Gesetzter Wert
        loadOption(optSet[opt], force);
function setNextOptByName(optSet, item, value = undefined, reload = true) {
    }
     const __OPT = getOptByName(optSet, item);


     return setNextOpt(__OPT, value, reload);
     return optSet;
}
}


// Baut das Benutzermenu auf
// Entfernt eine (ueber Menu) gesetzte Option (falls nicht 'Permanent')
// optSet: Gesetzte Optionen
// opt: Gesetzte Option
function buildMenu(optSet) {
// force: Entfernt auch Optionen mit 'Permanent'-Attribut
     console.log("buildMenu()");
// reset: Setzt bei Erfolg auf Initialwert der Option
function deleteOption(opt, force = false, reset = true) {
     const __CONFIG = getOptConfig(opt);
 
    if (force || ! __CONFIG.Permanent) {
        GM_deleteValue(getOptName(opt));


    for (let opt in optSet) {
        if (reset) {
        registerOption(optSet[opt]);
            setOptValue(opt, initOptValue(__CONFIG));
        }
     }
     }
}
}


// Laedt eine (ueber Menu) gesetzte Option
// Entfernt die (ueber Menu) gesetzten Optionen (falls nicht 'Permanent')
// opt: Zu ladende Option
// optSet: Gesetzte Optionen
// force: Laedt auch Optionen mit 'AutoReset'-Attribut
// force: Entfernt auch Optionen mit 'Permanent'-Attribut
// return Gesetzter Wert der gelandenen Option
// reset: Setzt bei Erfolg auf Initialwert der Option
function loadOption(opt, force = false) {
function deleteOptions(optSet, force = false, reset = true) {
    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
// optSet: Set mit den Optionen
// force: Laedt auch Optionen mit 'AutoReset'-Attribut
// return Set mit den geladenen Optionen
function loadOptions(optSet, force = false) {
     for (let opt in optSet) {
     for (let opt in optSet) {
        loadOption(optSet[opt], force);
         deleteOption(optSet[opt], force, reset);
    }
 
    return optSet;
}
 
// Entfernt eine (ueber Menu) gesetzte Option (falls nicht 'Permanent')
// opt: Gesetzte Option
// force: Entfernt auch Optionen mit 'Permanent'-Attribut
// reset: Setzt bei Erfolg auf Initialwert der Option
function deleteOption(opt, force = false, reset = true) {
    const __CONFIG = getOptConfig(opt);
 
    if (force || ! __CONFIG.Permanent) {
        GM_deleteValue(getOptName(opt));
 
        if (reset) {
            setOptValue(opt, initOptValue(__CONFIG));
        }
    }
}
 
// Entfernt die (ueber Menu) gesetzten Optionen (falls nicht 'Permanent')
// optSet: Gesetzte Optionen
// force: Entfernt auch Optionen mit 'Permanent'-Attribut
// reset: Setzt bei Erfolg auf Initialwert der Option
function deleteOptions(optSet, force = false, reset = true) {
    for (let opt in optSet) {
         deleteOption(optSet[opt], force, reset);
     }
     }
}
}
Zeile 762: Zeile 640:
// name: Neu zu setzender Name (Speicheradresse)
// name: Neu zu setzender Name (Speicheradresse)
// reload: Wert nachladen statt beizubehalten
// reload: Wert nachladen statt beizubehalten
// force: Laedt auch Optionen mit 'AutoReset'-Attribut
// return Umbenannte Option
// return Umbenannte Option
function renameOption(opt, name, reload = false, force = false) {
function renameOption(opt, name, reload = false) {
     const __NAME = getOptName(opt);
     const __NAME = getOptName(opt);


Zeile 773: Zeile 650:


         if (reload) {
         if (reload) {
             loadOption(opt, force);
             loadOption(opt);
         }
         }
     }
     }
Zeile 781: Zeile 658:


// Setzt die Optionen in optSet auf die "Werkseinstellungen" des Skripts
// Setzt die Optionen in optSet auf die "Werkseinstellungen" des Skripts
// reload: Seite mit "Werkseinstellungen" neu laden
// optSet: Gesetzte Optionen
// optSet: Gesetzte Optionen
// reload: Seite mit "Werkseinstellungen" neu laden
function resetOptions(optSet, reload = true) {
function resetOptions(optSet, reload = true) {
     // Alle (nicht 'Permanent') gesetzten Optionen entfernen...
     // Alle (nicht 'Permanent') gesetzten Optionen entfernen...
     deleteOptions(optSet, false, ! reload);
     deleteOptions(optSet, false, true);


     if (reload) {
     if (reload) {
Zeile 799: Zeile 676:


// Teamparameter fuer getrennte Speicherung der Optionen fuer Erst- und Zweitteam...
// Teamparameter fuer getrennte Speicherung der Optionen fuer Erst- und Zweitteam...
const __MYTEAM = { 'Team' : undefined, 'Liga' : undefined, 'Land' : undefined, 'LdNr' : 0, 'LgNr' : 0 };
const __MYTEAM = { 'Team' : undefined, 'Liga' : undefined, 'Land' : undefined };


// Behandelt die Optionen und laedt das Benutzermenu
// Behandelt die Optionen und laedt das Benutzermenu
Zeile 806: Zeile 683:
// optParams: Eventuell notwendige Parameter zur Initialisierung
// optParams: Eventuell notwendige Parameter zur Initialisierung
// 'hideMenu': Optionen werden zwar geladen und genutzt, tauchen aber nicht im Benutzermenu auf
// 'hideMenu': Optionen werden zwar geladen und genutzt, tauchen aber nicht im Benutzermenu auf
// 'teamParams': Getrennte "ligaSize"-Option wird genutzt, hier: __MYTEAM mit 'LdNr'/'LgNr' des Erst- bzw. Zweitteams
// 'teamParams': Getrennte "ligaSize"-Option wird genutzt, hier: __MYTEAM mit 'Land' des Erst- bzw. Zweitteams
// 'menuAnchor': Startpunkt fuer das Optionsmenu auf der Seite
// 'menuAnchor': Startpunkt fuer das Optionsmenu auf der Seite
// 'showForm': Checkliste der auf der Seite sichtbaren Optionen (true fuer sichtbar)
// 'showForm': Checkliste der auf der Seite sichtbaren Optionen (true fuer sichtbar)
Zeile 816: Zeile 693:
     const __TEAMPARAMS = optParams.teamParams;  // Ermittelte Parameter
     const __TEAMPARAMS = optParams.teamParams;  // Ermittelte Parameter


     optSet = startOptions(optConfig, optSet);
     optSet = initOptions(optConfig, optSet);
 
    runStored(optSet, true);
    loadOptions(optSet);


     if (__TEAMPARAMS !== undefined) {
     if (__TEAMPARAMS !== undefined) {
Zeile 822: Zeile 702:
         __MYTEAM.Liga = __TEAMPARAMS.Liga;
         __MYTEAM.Liga = __TEAMPARAMS.Liga;
         __MYTEAM.Land = __TEAMPARAMS.Land;
         __MYTEAM.Land = __TEAMPARAMS.Land;
        __MYTEAM.LdNr = __TEAMPARAMS.LdNr;
        __MYTEAM.LgNr = __TEAMPARAMS.LgNr;
         console.log("Ermittelt: " + JSON.stringify(__MYTEAM));
         console.log("Ermittelt: " + JSON.stringify(__MYTEAM));
         // ... und abspeichern...
         // ... und abspeichern...
         setOpt(optSet.team, __MYTEAM, false);
         setOpt(optSet.team, __MYTEAM, false);
    } else {
        const __TEAM = getOptValue(optSet.team);  // Gespeicherte Parameter
        if ((__TEAM !== undefined) && (__TEAM.Land !== undefined)) {
            __MYTEAM.Team = __TEAM.Team;
            __MYTEAM.Liga = __TEAM.Liga;
            __MYTEAM.Land = __TEAM.Land;
            __MYTEAM.LdNr = __TEAM.LdNr;
            __MYTEAM.LgNr = __TEAM.LgNr;
            console.log("Gespeichert: " + JSON.stringify(__MYTEAM));
        } else {
            console.error("Unbekannt: " + JSON.stringify(__TEAM));
        }
     }
     }


     if (__MYTEAM.LdNr !== undefined) {
     if (__MYTEAM.Land !== undefined) {
         // Prefix fuer die Option "ligaSize"...
         // Prefix fuer die Option "ligaSize"...
        const __PREFIX = __MYTEAM.LdNr.toString() + __MYTEAM.LgNr.toString();
         renameOption(optSet.ligaSize, __MYTEAM.Land + getOptName(optSet.ligaSize), true);
 
         renameOption(optSet.ligaSize, __PREFIX + getOptName(optSet.ligaSize), true);
 
         // ... und nachladen...
         // ... und nachladen...
         loadOption(optSet.ligaSize, true);
         loadOption(optSet.ligaSize, true);
     }
     }


     showOptions(optSet, optParams);
     if (! optParams.hideMenu) {
        buildMenu(optSet);
    }
 
    if (optParams.menuAnchor !== undefined) {
        buildForm(optParams.menuAnchor, optSet, optParams);
    }


     return optSet;
     return optSet;
Zeile 997: Zeile 865:
// value: Ggfs. zu setzender Wert
// value: Ggfs. zu setzender Wert
// serial: Serialization fuer String-Werte (Select, Textarea)
// serial: Serialization fuer String-Werte (Select, Textarea)
// storage: __OPTMEM.normal = bis Browserende gespeichert (sessionStorage), __OPTMEM.unbegrenzt = unbegrenzt gespeichert (localStorage), __OPTMEM.inaktiv
// return String mit dem (reinen) Funktionsaufruf
// return String mit dem (reinen) Funktionsaufruf
function getFormAction(opt, isAlt = false, value = undefined, serial = undefined, storage = undefined) {
function getFormAction(opt, isAlt = false, value = undefined, serial = undefined) {
     const __STORAGE = getValue(storage, getValue(myOptMem, __OPTMEM.normal));
    const __CONFIG = getOptConfig(opt);
     const __MEMORY = __STORAGE.Value;
     const __SERIAL = getValue(serial, getValue(__CONFIG.Serial, false));
     const __MEMSTR = __STORAGE.Display;
    const __NAMSTR = "'" + getOptName(opt) + "'";
     const __RUNPREFIX = __STORAGE.Prefix;
    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 (__MEMORY !== undefined) {
     if (__ACTION !== undefined) {
         const __RELOAD = "window.location.reload()";
         switch (__ACTION) {
         const __SETITEM = function(item, val, quotes = true) {
         case __OPTACTION.SET : //return "doActionSet('" + getOptName(opt) + "', " + getNextOpt(opt, __VALSTR) + ')';
                              return (__MEMSTR + ".setItem('" + __RUNPREFIX + item + "', " + (quotes ? "'" + val + "'" : val) + "),");
                              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) + ')';
        const __SETITEMS = function(cmd, key = undefined, val = undefined) {
                              return "(sessionStorage.setItem('runcmd', 'NXT'), sessionStorage.setItem('runkey', " + __NAMSTR + "), sessionStorage.setItem('runval', " + __VALSTR + "), window.location.reload())";
                              return ('(' + __SETITEM('cmd', cmd) + ((key === undefined) ? "" :
        case __OPTACTION.RST : //return "doActionRst()";
                                      __SETITEM('key', key) + __SETITEM('val', val, false)) + __RELOAD + ')');
                              return "(sessionStorage.setItem('runcmd', 'RST'), window.location.reload())";
                          };
        default :              break;
        const __CONFIG = getOptConfig(opt);
        const __SERIAL = getValue(serial, getValue(__CONFIG.Serial, false));
        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 (__ACTION !== undefined) {
            switch (__ACTION) {
            case __OPTACTION.SET : //return "doActionSet('" + getOptName(opt) + "', " + getNextOpt(opt, __VALSTR) + ')';
                                  return __SETITEMS('SET', getOptName(opt), __VALSTR);
            case __OPTACTION.NXT : //return "doActionNxt('" + getOptName(opt) + "', " + getNextOpt(opt, __VALSTR) + ')';
                                  return __SETITEMS('NXT', getOptName(opt), __VALSTR);
            case __OPTACTION.RST : //return "doActionRst()";
                                  return __SETITEMS('RST');
            default :              break;
            }
         }
         }
     }
     }
Zeile 1.043: Zeile 896:
// 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)
// storage: __OPTMEM.normal = bis Browserende gespeichert (sessionStorage), __OPTMEM.unbegrenzt = unbegrenzt gespeichert (localStorage), __OPTMEM.inaktiv
// return String mit dem (reinen) Funktionsaufruf
// return String mit dem (reinen) Funktionsaufruf
function getFormActionEvent(opt, isAlt = false, value = undefined, type = "click", serial = undefined, storage = undefined) {
function getFormActionEvent(opt, isAlt = false, value = undefined, type = "click", serial = undefined) {
     const __ACTION = getFormAction(opt, isAlt, value, serial, storage);
     const __ACTION = getFormAction(opt, isAlt, value, serial);


     return getValue(__ACTION, "", ' on' + type + '="' + __ACTION + '"');
     return getValue(__ACTION, "", ' on' + type + '="' + __ACTION + '"');
Zeile 1.459: Zeile 1.311:
         }
         }
         prop = '?' + 'erganzeigen' + '=' + 1 + '&' + 'saauswahl' + '=' + currZAT.saison +
         prop = '?' + 'erganzeigen' + '=' + 1 + '&' + 'saauswahl' + '=' + currZAT.saison +
               '&' + 'landauswahl' + '=' + __MYTEAM.LdNr + '&' + 'ligaauswahl' + '=' + __MYTEAM.LgNr + prop +
               '&' + 'landauswahl' + '=' + 20 + '&' + 'ligaauswahl' + '=' + 1 + prop +
               '&' + 'stataktion' + '=' + "Statistik+ausgeben";
               '&' + 'stataktion' + '=' + "Statistik+ausgeben";
         zusatz = '<a href="' + __NAMESPACE + href + '.php' + prop + '" target="_blank">' + zusatz + '</a>';
         zusatz = '<a href="' + __NAMESPACE + href + '.php' + prop + '" target="_blank">' + zusatz + '</a>';
Zeile 1.469: Zeile 1.321:
// ==================== Abschnitt fuer Statistiken des Spielplans ====================
// ==================== Abschnitt fuer Statistiken des Spielplans ====================


// ==================== Abschnitt fuer interne IDs auf den Seiten ====================
// ==================== Abschnitt fuer Daten des Spielplans ====================


const __GAMETYPES = {    // "Blind FSS gesucht!"
// Ermittelt den Spielgegner aus einer Tabellenzelle und liefert den Namen zurueck
        'unbekannt'  : -1,
// cell: Tabellenzelle mit dem Namen des Gegners
        "reserviert" :  0,
// return Der Name des Gegners
        "Frei"      :  0,
        "spielfrei"  :  0,
        "Friendly"  :  1,
        "Liga"      :  2,
        "LP"        :  3,
        "OSEQ"      :  4,
        "OSE"        :  5,
        "OSCQ"      :  6,
        "OSC"        :  7
    };
 
const __LIGANRN = {
        'unbekannt'  :  0,
        '1. Liga'    :  1,
        '2. Liga A'  :  2,
        '2. Liga B'  :  3,
        '3. Liga A'  :  4,
        '3. Liga B'  :  5,
        '3. Liga C'  :  6,
        '3. Liga D'  :  7
    };
 
const __LANDNRN = {
        'unbekannt'              :  0,
        'Albanien'              :  45,
        'Andorra'                :  95,
        'Armenien'              :  83,
        'Aserbaidschan'          : 104,
        'Belgien'                :  12,
        'Bosnien-Herzegowina'    :  66,
        'Bulgarien'              :  42,
        'Dänemark'              :  8,
        'Deutschland'            :  6,
        'England'                :  1,
        'Estland'                :  57,
        'Faröer'                :  68,
        'Finnland'              :  40,
        'Frankreich'            :  32,
        'Georgien'              :  49,
        'Griechenland'          :  30,
        'Irland'                :  5,
        'Island'                :  29,
        'Israel'                :  23,
        'Italien'                :  10,
        'Kasachstan'            : 105,
        'Kroatien'              :  24,
        'Lettland'              :  97,
        'Liechtenstein'          :  92,
        'Litauen'                :  72,
        'Luxemburg'              :  93,
        'Malta'                  :  69,
        'Mazedonien'            :  86,
        'Moldawien'              :  87,
        'Niederlande'            :  11,
        'Nordirland'            :  4,
        'Norwegen'              :  9,
        'Österreich'            :  14,
        'Polen'                  :  25,
        'Portugal'              :  17,
        'Rumänien'              :  28,
        'Russland'              :  19,
        'San Marino'            :  98,
        'Schottland'            :  2,
        'Schweden'              :  27,
        'Schweiz'                :  37,
        'Serbien und Montenegro' :  41,
        'Slowakei'              :  70,
        'Slowenien'              :  21,
        'Spanien'                :  13,
        'Tschechien'            :  18,
        'Türkei'                :  39,
        'Ukraine'                :  20,
        'Ungarn'                :  26,
        'Wales'                  :  3,
        'Weissrussland'          :  71,
        'Zypern'                :  38
    };
 
// ==================== Abschnitt fuer Daten des Spielplans ====================
 
// Gibt die ID fuer den Namen eines Wettbewerbs zurueck
// gameType: Name des Wettbewerbs eines Spiels
// return OS2-ID fuer den Spieltyp (1 bis 7), 0 fuer spielfrei/Frei/reserviert, -1 fuer ungueltig
function getGameTypeID(gameType) {
    return getValue(__GAMETYPES[gameType], __GAMETYPES.unbekannt);
}
 
// Gibt die ID des Landes mit dem uebergebenen Namen zurueck.
// land: Name des Landes
// return OS2-ID des Landes, 0 fuer ungueltig
function getLandNr(land) {
    return getValue(__LANDNRN[land], __LANDNRN.unbekannt);
}
 
// Gibt die ID der Liga mit dem uebergebenen Namen zurueck.
// land: Name der Liga
// return OS2-ID der Liga, 0 fuer ungueltig
function getLigaNr(liga) {
    return getValue(__LIGANRN[liga], __LIGANRN.unbekannt);
}
 
// Ermittelt den Spielgegner aus einer Tabellenzelle und liefert den Namen zurueck
// cell: Tabellenzelle mit dem Namen des Gegners
// return Der Name des Gegners
function getGegnerFromCell(cell) {
function getGegnerFromCell(cell) {
     const __GEGNER = cell.textContent;
     const __GEGNER = cell.textContent;
Zeile 1.617: Zeile 1.365:
}
}


// Ermittelt das Spiel-Ergebnis aus einer Tabellenzelle und setzt tore/gtore im Spielplanzeiger
// Ermittelt das Spiel-Ergebnis aus einer Tabellenzelle und setzt tore/gtore im Spielplanzeiger
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT
// cell: Tabellenzelle mit Eintrag "2 : 1"
// cell: Tabellenzelle mit Eintrag "2 : 1"
function setErgebnisFromCell(currZAT, cell) {
function setErgebnisFromCell(currZAT, cell) {
     const __ERGEBNIS = getErgebnisFromCell(cell);
     const __ERGEBNIS = getErgebnisFromCell(cell);
 
    if (__ERGEBNIS.length === 2) {
        currZAT.gFor = parseInt(__ERGEBNIS[0], 10);
        currZAT.gAga = parseInt(__ERGEBNIS[1], 10);
    } else {
        currZAT.gFor = -1;
        currZAT.gAga = -1;
    }
}
 
// Ermittelt die Spielart aus einer Tabellenzelle und setzt gameType/heim im Spielplanzeiger
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT
// cell: Tabellenzelle mit Eintrag "Liga : Heim" oder "Liga Heim"
function setSpielArtFromCell(currZAT, cell) {
    const __SPIELART = getSpielArtFromCell(cell);
 
    currZAT.gameType = __SPIELART[0];
    currZAT.heim    = (__SPIELART.length < 2) || (__SPIELART[1] === "Heim");
}
 
const __GAMETYPES = {    // "Blind FSS gesucht!"
    "reserviert" : 0,
    "Frei"      : 0,
    "spielfrei"  : 0,
    "Friendly"  : 1,
    "Liga"      : 2,
    "LP"        : 3,
    "OSEQ"      : 4,
    "OSE"        : 5,
    "OSCQ"      : 6,
    "OSC"        : 7
};
 
// Gibt die ID fuer den Namen eines Wettbewerbs zurueck
// gameType: Name des Wettbewerbs eines Spiels
// return OS2-ID fuer den Spieltyp (1 bis 7), 0 fuer spielfrei/Frei/reserviert, -1 fuer ungueltig
function getGameTypeID(gameType) {
    const __ID = __GAMETYPES[gameType];


     if (__ERGEBNIS.length === 2) {
     return (__ID === undefined) ? -1 : __ID;
        currZAT.gFor = parseInt(__ERGEBNIS[0], 10);
        currZAT.gAga = parseInt(__ERGEBNIS[1], 10);
    } else {
        currZAT.gFor = -1;
        currZAT.gAga = -1;
    }
}
 
// Ermittelt die Spielart aus einer Tabellenzelle und setzt gameType/heim im Spielplanzeiger
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT
// cell: Tabellenzelle mit Eintrag "Liga : Heim" oder "Liga Heim"
function setSpielArtFromCell(currZAT, cell) {
    const __SPIELART = getSpielArtFromCell(cell);
 
    currZAT.gameType = __SPIELART[0];
    currZAT.heim    = (__SPIELART.length < 2) || (__SPIELART[1] === "Heim");
}
}


Zeile 1.652: Zeile 1.422:


     if (cell.textContent !== "Vorschau") {  // Nur falls Link nicht bereits vorhanden
     if (cell.textContent !== "Vorschau") {  // Nur falls Link nicht bereits vorhanden
         if (__GAMETYPEID > 1) {             // nicht moeglich fuer "Friendly" bzw. "spielfrei"/"Frei"/"reserviert"
         if (__GAMETYPEID > 1) {             // nicht moeglich fuer "Friendly" bzw. "spielfrei"/"Frei"/"reserviert"
             const __SEARCHFUN = ":os_bericht(";
             const __SEARCHFUN = ":os_bericht(";
             let paarung = cell.innerHTML.substr(cell.innerHTML.indexOf(__SEARCHFUN) + __SEARCHFUN.length);
             let paarung = cell.innerHTML.substr(cell.innerHTML.indexOf(__SEARCHFUN) + __SEARCHFUN.length);
Zeile 1.679: Zeile 1.449:


// ==================== Abschnitt fuer sonstige Parameter des Spielplans ====================
// ==================== Abschnitt fuer sonstige Parameter des Spielplans ====================
const __TEAMSEARCHHAUPT = {  // Parameter zum Team "<b>Willkommen im Managerb&uuml;ro von TEAM</b><br>LIGA LAND<a href=..."
        'Zeile'  : 0,
        'Spalte' : 1,
        'start'  : " von ",
        'middle' : "</b><br>",
        'liga'  : ". Liga",
        'land'  : ' ',
        'end'    : "<a href="
    };
const __TEAMSEARCHTEAM = {  // Parameter zum Team "<b>TEAM - LIGA <a href=...>LAND</a></b>"
        'Zeile'  : 0,
        'Spalte' : 0,
        'start'  : "<b>",
        'middle' : " - ",
        'liga'  : ". Liga",
        'land'  : 'target="_blank">',
        'end'    : "</a></b>"
    };


// Ermittelt, wie das eigene Team heisst und aus welchem Land bzw. Liga es kommt (zur Unterscheidung von Erst- und Zweitteam)
// Ermittelt, wie das eigene Team heisst und aus welchem Land bzw. Liga es kommt (zur Unterscheidung von Erst- und Zweitteam)
// cell: Tabellenzelle mit den Parametern zum Team "startTEAMmiddleLIGA...landLANDend", LIGA = "#liga[ (A|B|C|D)]"
// cell: Tabellenzelle mit den Parametern zum Team "<b>Willkommen im Managerb&uuml;ro von TEAM</b><br>LIGA LAND<a href=..."
// teamSeach: Muster fuer die Suche, die Eintraege fuer 'start', 'middle', 'liga', 'land' und 'end' enthaelt
// return Im Beispiel { 'Team' : "TEAM", 'Liga' : "LIGA", 'Land' : "LAND" },
// return Im Beispiel { 'Team' : "TEAM", 'Liga' : "LIGA", 'Land' : "LAND", 'LdNr' : LAND-NUMMER, 'LgNr' : LIGA-NUMMER },
//        z.B. { 'Team' : "Choromonets Odessa", 'Liga' : "1. Liga", 'Land' : "Ukraine" }
//        z.B. { 'Team' : "Choromonets Odessa", 'Liga' : "1. Liga", 'Land' : "Ukraine", 'LdNr' : 20, 'LgNr' : 1 }
function getTeamParamsFromCell(cell) {
function getTeamParamsFromTable(table, teamSearch = undefined) {
     const __SEARCHSTART = " von ";
    const __TEAMSEARCH  = getValue(teamSearch, __TEAMSEARCHHAUPT);
     const __SEARCHMIDDLE = "</b><br>";
    const __TEAMCELLROW  = getValue(__TEAMSEARCH.Zeile, 0);
     const __SEARCHLIGA = ". Liga ";
    const __TEAMCELLCOL  = getValue(__TEAMSEARCH.Spalte, 0);
     const __SEARCHEND = "<a href=";
    const __TEAMCELLSTR  = table.rows[__TEAMCELLROW].cells[__TEAMCELLCOL].innerHTML;
     const __INDEXSTART = cell.innerHTML.indexOf(__SEARCHSTART);
     const __SEARCHSTART = __TEAMSEARCH.start;
     const __INDEXEND = cell.innerHTML.indexOf(__SEARCHEND);
     const __SEARCHMIDDLE = __TEAMSEARCH.middle;
     const __SEARCHLIGA   = __TEAMSEARCH.liga;
     const __SEARCHLAND  = __TEAMSEARCH.land;
    const __SEARCHEND    = __TEAMSEARCH.end;
     const __INDEXSTART   = __TEAMCELLSTR.indexOf(__SEARCHSTART);
     const __INDEXEND     = __TEAMCELLSTR.indexOf(__SEARCHEND);


     let teamParams = __TEAMCELLSTR.substring(__INDEXSTART + __SEARCHSTART.length, __INDEXEND);
     let teamParams = cell.innerHTML.substring(__INDEXSTART + __SEARCHSTART.length, __INDEXEND);
     const __INDEXLIGA = teamParams.indexOf(__SEARCHLIGA);
     const __INDEXLIGA = teamParams.indexOf(__SEARCHLIGA);
     const __INDEXMIDDLE = teamParams.indexOf(__SEARCHMIDDLE);
     const __INDEXMIDDLE = teamParams.indexOf(__SEARCHMIDDLE);
Zeile 1.727: Zeile 1.471:


     if (land !== undefined) {
     if (land !== undefined) {
         if (land.charAt(2) === ' ') {    // Land z.B. hinter "2. Liga A " statt "1. Liga "
         if (land.charAt(1) === ' ') {    // Land z.B. hinter "2. Liga A " statt "1. Liga "
             land = land.substr(2);
             land = land.substr(2);
         }
         }
         if (liga !== undefined) {
         if (liga !== undefined) {
             liga = liga.substring(0, liga.length - land.length);
             liga = liga.substring(0, liga.length - land.length - 1);
        }
        const __INDEXLAND = land.indexOf(__SEARCHLAND);
        if (__INDEXLAND > -1) {
            land = land.substr(__INDEXLAND + __SEARCHLAND.length);
         }
         }
     }
     }
Zeile 1.742: Zeile 1.482:
         'Team' : __TEAM,
         'Team' : __TEAM,
         'Liga' : liga,
         'Liga' : liga,
         'Land' : land,
         'Land' : land
        'LdNr' : getLandNr(land),
        'LgNr' : getLigaNr(liga)
     };
     };


Zeile 1.830: Zeile 1.568:
// Verarbeitet Ansicht "Haupt" (Managerbuero)
// Verarbeitet Ansicht "Haupt" (Managerbuero)
function procHaupt() {
function procHaupt() {
     const __TEAMPARAMS = getTeamParamsFromTable(getTable(1), __TEAMSEARCHHAUPT); // Link mit Team, Liga, Land...
     const __TEAMPARAMS = getTeamParamsFromCell(getRows(1)[0].cells[1]); // Link mit Team, Liga, Land...


     buildOptions(__OPTCONFIG, __OPTSET, {
     buildOptions(__OPTCONFIG, __OPTSET, {
Zeile 1.836: Zeile 1.574:
                     'menuAnchor' : getTable(1, "div"),
                     'menuAnchor' : getTable(1, "div"),
                     'hideForm' : {
                     'hideForm' : {
                                     'team'        : true
                                     'team'        : true,
                                   }
                                   },
                 });
                 });


     const __ZAT = firstZAT(getOptValue(__OPTSET.saison), getOptValue(__OPTSET.ligaSize));
     const __ZAT = firstZAT(getOptValue(__OPTSET.saison), getOptValue(__OPTSET.ligaSize));
     const __NEXTZAT = getZATNrFromCell(getRows(0)[2].cells[0]); // "Der naechste ZAT ist ZAT xx und ..."
     const __NEXTZAT = getZATNrFromCell(getRows(0)[2].cells[0]); // "Der naechste ZAT ist ZAT xx und ..."
     const __CURRZAT = __NEXTZAT - 1;
     const __CURRZAT = __NEXTZAT - 1;


     addZusatz(getRows(2)[0], __ZAT, __CURRZAT, true);           // "Dein letztes Spiel:" (+ __CURRZAT)
     addZusatz(getRows(2)[0], __ZAT, __CURRZAT, true);           // "Dein letztes Spiel:" (+ __CURRZAT)
     addZusatz(getRows(3)[0], __ZAT);                             // "Dein naechstes Spiel:" (+ 1 ZAT)
     addZusatz(getRows(3)[0], __ZAT);                           // "Dein naechstes Spiel:" (+ 1 ZAT)
}
}


Bitte beachte, dass alle Beiträge zu Online-Soccer-Wiki von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Online-Soccer-Wiki:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)