Bearbeiten von „OS2.spielplan“
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.spielplan''' | | colspan="2" style="padding:0.3em; background-color:#9C1818; font-size: 18px; color:#FFFFFF" align=center| '''OS2.spielplan''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Dateiname''' | | '''Dateiname''' | ||
| ''' | | '''os2.spielplan.user.js''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Version''' | | '''Version''' | ||
| '''0. | | '''0.51''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Autor''' | | '''Autor''' | ||
Zeile 20: | Zeile 19: | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Funktionalität''' | | '''Funktionalität''' | ||
| '''Trennstriche zwischen den Abrechnungsmonaten'''<br> '''Verkürzung von "Vorbericht(e)" und "Kommentar(e)"'''<br> '''Details zu den Spielen'''<br> '''Ergebnisse aufaddieren'''<br> '''Nachträgliche Vorschau: Bilanz'''<br> '''Benutzermenü für Optionen | | '''Trennstriche zwischen den Abrechnungsmonaten'''<br> '''Verkürzung von "Vorbericht(e)" und "Kommentar(e)"'''<br> '''Details zu den Spielen'''<br> '''Ergebnisse aufaddieren'''<br> '''Nachträgliche Vorschau: Bilanz'''<br> '''Benutzermenü für Optionen''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Letzte Änderung''' | | '''Letzte Änderung''' | ||
Zeile 26: | Zeile 25: | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
|} | |} | ||
<pre> | <pre> | ||
// ==UserScript== | // ==UserScript== | ||
// @name | // @name OS2.spielplan | ||
// @namespace | // @namespace http://os.ongapo.com/ | ||
// @version | // @version 0.51 | ||
// @copyright | // @copyright 2013+ | ||
// @author | // @author Sven Loges (SLC) | ||
// @description | // @description Spielplan-Abschnitt aus dem Master-Script fuer Online Soccer 2.0 | ||
// @include | // @include http://os.ongapo.com/st.php?s=* | ||
// @ | // @include http://os.ongapo.com/showteam.php?s=* | ||
// @ | // @include http://www.os.ongapo.com/st.php?s=* | ||
// @ | // @include http://www.os.ongapo.com/showteam.php?s=* | ||
// @ | // @include http://online-soccer.eu/st.php?s=* | ||
// @ | // @include http://online-soccer.eu/showteam.php?s=* | ||
// @ | // @include http://www.online-soccer.eu/st.php?s=* | ||
// @grant | // @include http://www.online-soccer.eu/showteam.php?s=* | ||
// @grant | // @grant GM_getValue | ||
// @grant | // @grant GM_setValue | ||
// @grant | // @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 */ | ||
// | // Moegliche Optionen | ||
//const __SAISONS = [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]; | |||
const __LIGASIZES = [ 10, 18, 20 ]; | |||
const | // Trennlinie zwischen den Monaten | ||
const __BORDERSTYLE = [ "solid", "hidden", "dotted", "dashed", "double", "groove", "ridge", | |||
"inset", "outset", "none" ]; // Stil der Trennlinie | |||
const __BORDERCOLOR = [ "white", "yellow", "black", "blue", "cyan", "gold", "grey", "green", | |||
"lime", "magenta", "maroon", "navy", "olive", "orange", "purple", | |||
"red", "teal", "transparent" ]; // Farbe der Trennlinie | |||
const __BORDERWIDTH = [ "thin", "medium", "thick" ]; // Dicke der Trennlinie | |||
// | // Optionen (hier die Standardwerte editieren oder ueber das Benutzermenu setzen): | ||
const | const __SEPMONTHS = true; // Im Spielplan Trennstriche zwischen den Monaten | ||
const __SHORTKOM = true; // "Vorbericht(e) & Kommentar(e)" nicht ausschreiben | |||
const __SHOWSTATS = true; // Ergebnisse aufaddieren und Stand anzeigen | |||
const __LONGSTATS = false; // Detailliertere Ausgabe des Stands | |||
// | const __SEPSTYLE = __BORDERSTYLE[0]; // Stil der Trennlinie | ||
const | const __SEPCOLOR = __BORDERCOLOR[0]; // Farbe der Trennlinie | ||
const __SEPWIDTH = __BORDERWIDTH[0]; // Dicke der Trennlinie | |||
const | //const __SAISON = __SAISONS[0]; | ||
const __LIGASIZE = __LIGASIZES[0]; | |||
// | // Verarbeitet die URL der Seite und ermittelt die Nummer der gewuenschten Unterseite | ||
// url: Adresse der Seite | |||
function getPageIdFromURL(url) { | |||
// Variablen zur Identifikation der Seite | |||
const __INDEXS = url.lastIndexOf("s="); | |||
const __ST = url.match(/st\.php/); // Teamansicht Popupfenster | |||
const __SHOWTEAM = url.match(/showteam\.php/); // Teamansicht Hauptfenster | |||
let s = -1; // Seitenindex (Rueckgabewert) | |||
// | // Wert von s (Seitenindex) ermitteln... | ||
// Annahme: Entscheidend ist jeweils das letzte Vorkommnis von "s=" und ggf. von '&' | |||
if (__INDEXS < 0) { | |||
s = 0; | |||
} else if (__ST || __SHOWTEAM) { | |||
// Wert von s setzt sich aus allen Zeichen hinter "s=" zusammen | |||
s = parseInt(url.substring(__INDEXS + 2, url.length), 10); | |||
} else { | |||
// Wert von s setzt sich aus allen Zeichen zwischen "s=" und '&' zusammen | |||
s = parseInt(url.substring(__INDEXS + 2, url.indexOf('&', __INDEXS)), 10); | |||
if ( | |||
// | |||
} | |||
// | |||
} | } | ||
return s; | |||
return | |||
} | } | ||
// | // Verarbeitet die URL der Seite und ermittelt die Nummer der gewuenschten Unterseite | ||
// saisons: Alle "option"-Eintraege der Combo-Box | |||
// | function getSaisonFromComboBox(saisons) { | ||
let saison = 0; | |||
function | |||
/ | /* | ||
for (let entry of saisons) { | |||
if (entry.outerHTML.match(/selected/)) { | |||
saison = entry.textContent; | |||
} | } | ||
} | } | ||
*/ | |||
for (i = 0; i < saisons.length; i++) { | |||
if (saisons[i].outerHTML.match(/selected/)) { | |||
saison = saisons[i].textContent; | |||
// | |||
} | } | ||
} | } | ||
return saison; | |||
} | } | ||
// | // Optionen (mit Standardwerten initialisiert und per loadSpielplanOptions() geladen): | ||
let sepMonths = __SEPMONTHS; // Im Spielplan Trennstriche zwischen den Monaten | |||
// | let shortKom = __SHORTKOM; // "Vorbericht(e) & Kommentar(e)" nicht ausschreiben | ||
// | let showStats = __SHOWSTATS; // Ergebnisse aufaddieren und Stand anzeigen | ||
let longStats = __LONGSTATS; // Detailliertere Ausgabe des Stands | |||
// | |||
// | |||
// | let sepStyle = __SEPSTYLE; // Stil der Trennlinie | ||
// | let sepColor = __SEPCOLOR; // Farbe der Trennlinie | ||
// | let sepWidth = __SEPWIDTH; // Dicke der Trennlinie | ||
// | //let saison = __SAISON; | ||
let ligaSize = __LIGASIZE; | |||
// Setzt eine Option dauerhaft und laedt die Seite neu | // Setzt eine Option dauerhaft und laedt die Seite neu | ||
// name: Name der Option als Speicherort | // name: Name der Option als Speicherort | ||
// value: Zu setzender Wert | // value: Zu setzender Wert | ||
// return Gesetzter Wert | |||
function setOption(name, value) { | |||
GM_setValue(name, value); | |||
window.location.reload(); | |||
// return | |||
function | |||
return value; | return value; | ||
Zeile 1.414: | Zeile 148: | ||
// arr: Array-Liste mit den moeglichen Optionen | // arr: Array-Liste mit den moeglichen Optionen | ||
// name: Name der Option als Speicherort | // name: Name der Option als Speicherort | ||
// value | // value: Zu setzender Wert | ||
// return Gesetzter Wert | // return Gesetzter Wert | ||
function | function setNextOption(arr, name, value) { | ||
const __POS = arr.indexOf(value) + 1; | |||
return setOption(name, arr[(__POS < arr.length) ? __POS : 0]); | |||
} | } | ||
// | // Setzt das Stats-Format neu auf short/long | ||
/ | function setLongStatsFormat(long) { | ||
longStats = setOption("longStats", long); | |||
function | |||
} | } | ||
// | // Setzt das Stats-Format neu auf an/aus | ||
function setStatsShown(visible) { | |||
showStats = setOption("showStats", visible); | |||
function | |||
} | } | ||
// Setzt | // Setzt das Kommentar-Link neu auf gekuerzt/lang | ||
/ | function setKomLength(isShort) { | ||
function | shortKom = setOption("shortKom", isShort); | ||
} | } | ||
// | // Setzt die Trennung der Monate neu auf an/aus | ||
/ | function setMonthsSeparated(on) { | ||
sepMonths = setOption("sepMonths", on); | |||
function | |||
} | } | ||
// 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.894: | Zeile 184: | ||
// 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 (opt) { | |||
if ( | 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 | // menu: Text zum Setzen im Menu | ||
// 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( | let options = "OPTION " + menu; | ||
let options = "OPTION " + | |||
for (let value of arr) { | for (let value of arr) { | ||
if (value === | if (value === opt) { | ||
options += " / *" + value + '*'; | options += " / *" + value + '*'; | ||
} else { | } else { | ||
Zeile 1.926: | Zeile 212: | ||
} | } | ||
} | } | ||
console.log(options); | |||
GM_registerMenuCommand(menu, fun, key); | |||
} | } | ||
// | // Baut das Benutzermenu fuer den Spielplan auf | ||
function registerSpielplanMenu() { | |||
console.log("registerSpielplanMenu()"); | |||
registerMenuOption(longStats, "Lange Stats", setLongStats, 'L', "Kurze Stats", setShortStats, 'K'); | |||
registerMenuOption(showStats, "Stats ein", setShowStats, 'S', "Stats aus", setShowNoStats, 'S'); | |||
registerMenuOption(shortKom, "Kurze Texte", setShortKom, 'T', "Lange Texte", setFullKom, 'T'); | |||
registerMenuOption(sepMonths, "Monate trennen", setSepMonths, 'M', "Keine Monate", setNoSepMonths, 'M'); | |||
registerNextMenuOption(sepStyle, __BORDERSTYLE, "Stil: " + sepStyle, setNextSepStyle, 'i'); | |||
registerNextMenuOption(sepColor, __BORDERCOLOR, "Farbe: " + sepColor, setNextSepColor, 'F'); | |||
registerNextMenuOption(sepWidth, __BORDERWIDTH, "Dicke: " + sepWidth, setNextSepWidth, 'D'); | |||
// | // registerNextMenuOption(saison, __SAISONS, "Saison: " + saison, setNextSaison, 'a'); | ||
registerNextMenuOption(ligaSize, __LIGASIZES, "Liga: " + ligaSize + "er", setNextLigaSize, 'i'); | |||
GM_registerMenuCommand("Standard-Optionen", resetSpielplanOptions, 'O'); | |||
} | } | ||
// | // Setzt die Optionen fuer Spielplan auf die "Werkseinstellungen" des Skripts | ||
function resetSpielplanOptions() { | |||
GM_deleteValue("longStats"); | |||
GM_deleteValue("showStats"); | |||
GM_deleteValue("shortKom"); | |||
GM_deleteValue("sepMonths"); | |||
GM_deleteValue("sepStyle"); | |||
GM_deleteValue("sepColor"); | |||
GM_deleteValue("sepWidth"); | |||
GM_deleteValue("saison"); | |||
GM_deleteValue("ligaSize"); | |||
window.location.reload(); | |||
} | } | ||
// | // Laedt die permament (ueber Menu) gesetzten Optionen fuer Spielplan | ||
function loadSpielplanOptions() { | |||
sepMonths = GM_getValue("sepMonths", sepMonths); // Im Spielplan Trennstriche zwischen den Monaten | |||
shortKom = GM_getValue("shortKom", shortKom); // "Vorbericht(e) & Kommentar(e)" nicht ausschreiben | |||
showStats = GM_getValue("showStats", showStats); // Ergebnisse aufaddieren und Stand anzeigen | |||
longStats = GM_getValue("longStats", longStats); // Detailliertere Ausgabe des Stands | |||
function | |||
// | |||
// | |||
sepStyle = GM_getValue("sepStyle", sepStyle); // Stil der Trennlinie | |||
sepColor = GM_getValue("sepColor", sepColor); // Farbe der Trennlinie | |||
sepWidth = GM_getValue("sepWidth", sepWidth); // Dicke der Trennlinie | |||
// saison = GM_getValue("saison", saison); | |||
ligaSize = GM_getValue("ligaSize", ligaSize); | |||
} | } | ||
// | // Setzt das Stats-Format neu auf short | ||
function setShortStats() { | |||
setLongStatsFormat(false); | |||
function | |||
} | } | ||
// | // Setzt das Stats-Format neu auf long | ||
function setLongStats() { | |||
setLongStatsFormat(true); | |||
function | |||
} | } | ||
// | // Setzt das Stats-Format neu auf aus | ||
function setShowNoStats() { | |||
setStatsShown(false); | |||
function | |||
} | } | ||
// | // Setzt das Stats-Format neu auf an | ||
function setShowStats() { | |||
setStatsShown(true); | |||
function | |||
} | } | ||
// | // Setzt das Kommentar-Link neu auf kurz | ||
function setShortKom() { | |||
setKomLength(true); | |||
} | } | ||
// | // Setzt das Kommentar-Link neu auf lang | ||
function setFullKom() { | |||
setKomLength(false); | |||
function | |||
} | } | ||
// | // Setzt Trennungslinien zwischen die Monate | ||
function setSepMonths() { | |||
setMonthsSeparated(true); | |||
function | |||
} | } | ||
// | // Entfernt die Trennungslinien zwischen den Monaten | ||
function setNoSepMonths() { | |||
setMonthsSeparated(false); | |||
function | |||
} | } | ||
// | // Setzt den naechsten Stil der Trennlinie als Option | ||
function setNextSepStyle() { | |||
sepStyle = setNextOption(__BORDERSTYLE, "sepStyle", sepStyle); | |||
function | |||
} | } | ||
// | // Setzt die naechste Farbe der Trennlinie als Option | ||
function setNextSepColor() { | |||
sepColor = setNextOption(__BORDERCOLOR, "sepColor", sepColor); | |||
function | |||
} | } | ||
// Setzt die naechste Dicke der Trennlinie als Option | |||
function setNextSepWidth() { | |||
sepWidth = setNextOption(__BORDERWIDTH, "sepWidth", sepWidth); | |||
} | } | ||
// Setzt die naechste moegliche Saison als Option | |||
function setNextSaison() { | |||
// saison = setNextOption(__SAISONS, "saison", saison); | |||
} | } | ||
// | // Setzt die naechste moegliche Ligagroesse als Option | ||
function setNextLigaSize() { | |||
ligaSize = setNextOption(__LIGASIZES, "ligaSize", ligaSize); | |||
function | |||
} | } | ||
// Beschreibungstexte aller Runden | // Beschreibungstexte aller Runden | ||
const __POKALRUNDEN = [ | const __POKALRUNDEN = [ "1. Runde", "2. Runde", "3. Runde", "Achtelfinale", "Viertelfinale", "Halbfinale", "Finale" ]; | ||
const __QUALIRUNDEN = [ | const __QUALIRUNDEN = [ "Quali 1", "Quali 2", "Quali 3" ]; | ||
const __OSCRUNDEN = [ | const __OSCRUNDEN = [ "Viertelfinale", "Halbfinale", "Finale" ]; | ||
const __OSERUNDEN = [ | const __OSERUNDEN = [ "Runde 1", "Runde 2", "Runde 3", "Runde 4", "Achtelfinale", "Viertelfinale", "Halbfinale", "Finale" ]; | ||
const __HINRUECK = [ " Hin", " R\xFCck", "" ]; | const __HINRUECK = [ " Hin", " R\xFCck", "" ]; | ||
// Liefert einen vor den ersten ZAT zurueckgesetzten Spielplanzeiger | // Liefert einen vor den ersten ZAT zurueckgesetzten Spielplanzeiger | ||
// saison: Enthaelt die Nummer der laufenden Saison | // saison: Enthaelt die Nummer der laufenden Saison | ||
// ligaSize: Anzahl der Teams in dieser Liga (Gegner + 1) | // ligaSize: Anzahl der Teams in dieser Liga (Gegner + 1) | ||
// - | // - ZAT pro Abrechnungsmonat | ||
// - Saison | // - Saison | ||
// - ZAT | // - ZAT | ||
Zeile 3.478: | Zeile 361: | ||
'saison' : saison, | 'saison' : saison, | ||
'ZAT' : 0, | 'ZAT' : 0, | ||
'gameType' : | 'gameType' : "spielfrei", | ||
'heim' : true, | 'heim' : true, | ||
'gegner' : "", | 'gegner' : "", | ||
Zeile 3.485: | Zeile 368: | ||
'ligaSize' : ligaSize, | 'ligaSize' : ligaSize, | ||
'ligaSpieltag' : 0, | 'ligaSpieltag' : 0, | ||
'pokalRunde' : | 'pokalRunde' : 0, | ||
'euroRunde' : | 'euroRunde' : -1, | ||
'hinRueck' : 2, // 0: Hin, 1: Rueck, 2: unbekannt | 'hinRueck' : 2, // 0: Hin, 1: Rueck, 2: unbekannt | ||
'ZATrueck' : 0, | 'ZATrueck' : 0, | ||
Zeile 3.505: | Zeile 388: | ||
} | } | ||
// Spult die Daten um anzZAT ZAT vor und schreibt Parameter | |||
// Spult die Daten um anzZAT | |||
// anhand des Spielplans fort. Also Spieltag, Runde, etc. | // anhand des Spielplans fort. Also Spieltag, Runde, etc. | ||
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT | // currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT | ||
// anzZAT: Anzahl der ZAT, um die vorgespult wird | // anzZAT: Anzahl der ZAT, um die vorgespult wird | ||
function incZAT(currZAT, anzZAT = 1) { | function incZAT(currZAT, anzZAT = 1) { | ||
const | const __LIGAFIRST = (currZAT.saison < 3) ? 3 : 2; | ||
const | const __LIGAEXTRA = (currZAT.saison < 3) ? [ 8, 64, 32, 46 ] : [ 9, 65, 33, 57 ]; | ||
let zusatz = ""; | |||
for (let i = anzZAT; i > 0; i--) { | for (let i = anzZAT; i > 0; i--) { | ||
Zeile 3.531: | Zeile 404: | ||
const __POS = __LIGAEXTRA.indexOf(currZAT.ZAT); | const __POS = __LIGAEXTRA.indexOf(currZAT.ZAT); | ||
if ( | if (__POS > -1) { | ||
if (__POS < 2 * (currZAT.ligaSize % 9)) { | if (__POS < 2 * (currZAT.ligaSize % 9)) { | ||
currZAT.ligaSpieltag++; | currZAT.ligaSpieltag++; | ||
Zeile 3.537: | Zeile 410: | ||
} | } | ||
} | } | ||
if ((currZAT.ZAT > 12) && | if ((currZAT.ZAT > 12) && (currZAT.ZAT % 10 == 5)) { // passt fuer alle Saisons: 12, 20, 30, 40, 48, 58, 68 / 3, 15, 27, 39, 51, 63, 69 | ||
currZAT.pokalRunde++; | currZAT.pokalRunde++; | ||
} | } | ||
if | if ((currZAT.ZAT + currZAT.ZATkorr) % 6 == 4) { | ||
if (currZAT.ZAT < 63) { | if (currZAT.ZAT < 63) { | ||
currZAT.ZATrueck = currZAT.ZAT + 2; | currZAT.ZATrueck = currZAT.ZAT + 2; | ||
Zeile 3.546: | Zeile 419: | ||
currZAT.hinRueck = 0; | currZAT.hinRueck = 0; | ||
} else { | } else { | ||
currZAT.euroRunde = | currZAT.euroRunde = 10; // Finale | ||
currZAT.hinRueck = 2; | currZAT.hinRueck = 2; | ||
} | } | ||
} | } | ||
if (currZAT.ZAT | if (currZAT.ZAT == currZAT.ZATrueck) { | ||
currZAT.hinRueck = 1; // 5, 7; 11, 13; (17, 19) / 23, 25; 29, 31; 35, 37; 41, 43; 47, 49; 53, 55; 59, 61; 69 | currZAT.hinRueck = 1; // 5, 7; 11, 13; (17, 19) / 23, 25; 29, 31; 35, 37; 41, 43; 47, 49; 53, 55; 59, 61; 69 | ||
if (currZAT.saison < 3) { // 4, 6; 10, 14*; (16, 22*) / 24**, 26; 34, 36; 38*, 42; 44*, 50; 52, 54; 56*, 60; 62*, 66; 70 | if (currZAT.saison < 3) { // 4, 6; 10, 14*; (16, 22*) / 24**, 26; 34, 36; 38*, 42; 44*, 50; 52, 54; 56*, 60; 62*, 66; 70 | ||
if (currZAT.ZAT | if (currZAT.ZAT == 22) { | ||
currZAT.ZATkorr = 4; | currZAT.ZATkorr = 4; | ||
} else if ((currZAT.ZAT - 6) % 20 > 6) { | } else if ((currZAT.ZAT - 6) % 20 > 6) { | ||
Zeile 3.560: | Zeile 433: | ||
currZAT.ZATkorr = 0; | currZAT.ZATkorr = 0; | ||
} | } | ||
if ((currZAT.ZAT | if ((currZAT.ZAT == 22) || (currZAT.ZAT == 30)) { | ||
currZAT.euroRunde--; // Frueher: 3. Quali-Rueckspiel erst knapp vor 1. Hauptrunde | currZAT.euroRunde--; // Frueher: 3. Quali-Rueckspiel erst knapp vor 1. Hauptrunde | ||
} | } | ||
Zeile 3.570: | Zeile 443: | ||
// Liefert die Beschreibung des Spiels am aktuellen ZAT | // Liefert die Beschreibung des Spiels am aktuellen ZAT | ||
// currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT | // currZAT: Enthaelt den Spielplanzeiger auf den aktuellen ZAT | ||
// return Beschreibung des Spiels | // return Beschreibung des Spiels | ||
function getZusatz(currZAT | function getZusatz(currZAT) { | ||
let zusatz = ""; | |||
if (currZAT.gameType == | if (currZAT.gameType == "Liga") { | ||
if (currZAT.ZAT < 70) { | if (currZAT.ZAT < 70) { | ||
zusatz = currZAT.ligaSpieltag + ". Spieltag"; | |||
} else { | } else { | ||
zusatz = "Relegation"; | |||
} | } | ||
} else if (currZAT.gameType == | } else if (currZAT.gameType == "LP") { | ||
zusatz = __POKALRUNDEN[currZAT.pokalRunde]; | |||
} else if ((currZAT.gameType == "OSCQ") || (currZAT.gameType == "OSEQ")) { | |||
} else if ((currZAT.gameType == | zusatz = __QUALIRUNDEN[currZAT.euroRunde] + __HINRUECK[currZAT.hinRueck]; | ||
} else if (currZAT.gameType == "OSC") { | |||
if (currZAT.euroRunde < 8) { | |||
} else if (currZAT.gameType == | const __GRUPPENPHASE = ((currZAT.euroRunde < 5) ? "HR-Grp. " : "ZR-Grp. "); | ||
if (currZAT.euroRunde < | zusatz = __GRUPPENPHASE + "Spiel " + (((currZAT.euroRunde - 2) % 3) * 2 + 1 + currZAT.hinRueck); | ||
const __GRUPPENPHASE = ((currZAT.euroRunde < | |||
} else { | } else { | ||
zusatz = __OSCRUNDEN[currZAT.euroRunde - 8] + __HINRUECK[currZAT.hinRueck]; | |||
} | } | ||
} else if (currZAT.gameType == | } else if (currZAT.gameType == "OSE") { | ||
zusatz = __OSERUNDEN[currZAT.euroRunde - 3] + __HINRUECK[currZAT.hinRueck]; | |||
} else { | } else { | ||
zusatz = ""; // irgendwie besser lesbar! ("Friendly" bzw. "spielfrei"/"Frei"/"reserviert") | |||
} | } | ||
return | return zusatz; | ||
} | } | ||
// Liefert eine auf 0 zurueckgesetzte Ergebnissumme | // Liefert eine auf 0 zurueckgesetzte Ergebnissumme | ||
Zeile 3.652: | Zeile 513: | ||
stats.S++; | stats.S++; | ||
p = 3; | p = 3; | ||
} else if (currZAT.gFor | } else if (currZAT.gFor == currZAT.gAga) { | ||
stats.U++; | stats.U++; | ||
p = 1; | p = 1; | ||
Zeile 3.668: | Zeile 529: | ||
} | } | ||
// Ermittelt das Spiel-Ergebnis aus einer Tabellenzelle, etwa "2 : 1" und liefert zwei Werte zurueck | |||
// Ermittelt das Spiel-Ergebnis aus einer Tabellenzelle, etwa "2 : 1" | |||
// cell: Tabellenzelle mit Eintrag "2 : 1" | // cell: Tabellenzelle mit Eintrag "2 : 1" | ||
// return { '2', '1' } im Beispiel | // return { '2', '1' } im Beispiel | ||
Zeile 4.007: | Zeile 538: | ||
} | } | ||
// Ermittelt die Spielart aus einer Tabellenzelle, etwa "Liga : Heim" | // Ermittelt die Spielart aus einer Tabellenzelle, etwa "Liga : Heim" und liefert zwei Werte zurueck | ||
// cell: Tabellenzelle mit Eintrag "Liga : Heim" | // cell: Tabellenzelle mit Eintrag "Liga : Heim" oder "Liga Heim" | ||
// return { "Liga", "Heim" } im Beispiel | // return { "Liga", "Heim" } im Beispiel | ||
function getSpielArtFromCell(cell) { | function getSpielArtFromCell(cell) { | ||
const __TEXT = cell.textContent.replace( | const __TEXT = cell.textContent.replace(" ", "").replace(':', "").replace(" ", " "); | ||
const __SPIELART = __TEXT.split(' ', 2); | const __SPIELART = __TEXT.split(' ', 2); | ||
return __SPIELART; | return __SPIELART; | ||
} | } | ||
Zeile 4.029: | Zeile 551: | ||
// 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 | if (__ERGEBNIS.length == 2) { | ||
currZAT.gFor = parseInt(__ERGEBNIS[0], 10); | currZAT.gFor = parseInt(__ERGEBNIS[0], 10); | ||
currZAT.gAga = parseInt(__ERGEBNIS[1], 10); | currZAT.gAga = parseInt(__ERGEBNIS[1], 10); | ||
Zeile 4.040: | Zeile 561: | ||
currZAT.gAga = -1; | currZAT.gAga = -1; | ||
} | } | ||
} | } | ||
Zeile 4.051: | Zeile 570: | ||
currZAT.gameType = __SPIELART[0]; | currZAT.gameType = __SPIELART[0]; | ||
currZAT.heim = (__SPIELART.length < 2) || (__SPIELART[1] === | currZAT.heim = (__SPIELART.length < 2) || (__SPIELART[1] === "Heim"); | ||
} | |||
const __GAMETYPES = { | |||
"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]; | |||
return (__ID === undefined) ? -1 : __ID; | |||
} | } | ||
Zeile 4.063: | Zeile 604: | ||
let ret = ""; | let ret = ""; | ||
if (cell.textContent != | if (cell.textContent != "Vorschau") { // Nur falls Link nicht bereits vorhanden | ||
if (__GAMETYPEID > 1) { | 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 4.089: | Zeile 630: | ||
} | } | ||
} | } | ||
// Verarbeitet Ansicht "Saisonplan" | // Verarbeitet Ansicht "Saisonplan" | ||
function procSpielplan() { | function procSpielplan() { | ||
const __ROWOFFSETUPPER = 1; | const __TABLE = document.getElementsByTagName("table")[2]; | ||
const __SAISONS = document.getElementsByTagName("option"); | |||
const __SAISON = getSaisonFromComboBox(__SAISONS); | |||
const __ROWOFFSETUPPER = 1; | |||
const __ROWOFFSETLOWER = 0; | const __ROWOFFSETLOWER = 0; | ||
const __COLUMNINDEX = { | const __COLUMNINDEX = { | ||
'Art' : 1, | 'Art' : 1, | ||
'Geg' : 2, | 'Geg' : 2, | ||
Zeile 4.254: | Zeile 649: | ||
}; | }; | ||
loadSpielplanOptions(); | |||
const __ZAT = firstZAT(__SAISON, ligaSize); | |||
let ligaStats = emptyStats(); | |||
let euroStats = emptyStats(); | |||
registerSpielplanMenu(); | |||
for (let i = __ROWOFFSETUPPER; i < __TABLE.rows.length - __ROWOFFSETLOWER; i++) { | |||
const __CELLS = __TABLE.rows[i].cells; // Aktuelle Eintraege | |||
incZAT(__ZAT); | |||
__ZAT.gegner = __CELLS[__COLUMNINDEX.Geg].textContent; | |||
setSpielArtFromCell(__ZAT, __CELLS[__COLUMNINDEX.Art]); | |||
setErgebnisFromCell(__ZAT, __CELLS[__COLUMNINDEX.Erg]); | |||
let zusatz = getZusatz(__ZAT); | |||
if (shortKom) { | |||
let kommentar = __CELLS[__COLUMNINDEX.Kom].innerHTML; | |||
let spielArt = __CELLS[__COLUMNINDEX.Art].innerHTML; | |||
kommentar = kommentar.replace("Vorbericht(e)", 'V').replace("Kommentar(e)", 'K').replace("&amp;", '/').replace('&', '/'); | |||
spielArt = spielArt.replace(": Heim", "(H)").replace(": Ausw\xE4rts", "(A)").replace("Friendly", "FSS"); | |||
__CELLS[__COLUMNINDEX.Kom].innerHTML = kommentar; | |||
__CELLS[__COLUMNINDEX.Art].innerHTML = spielArt; | |||
} | |||
__CELLS[__COLUMNINDEX.Zus].className = __CELLS[__COLUMNINDEX.Art].className; | |||
if (__CELLS[__COLUMNINDEX.Zus].textContent === "") { | |||
const __CELLBER = __CELLS[__COLUMNINDEX.Ber]; | |||
let stats = ""; | |||
addBilanzLinkToCell(__CELLBER, __ZAT.gameType, "Bilanz"); | |||
if (shortKom) { | |||
__CELLBER.innerHTML = __CELLBER.innerHTML.replace("Klick", "(*)").replace("Bilanz", 'V').replace("Vorschau", 'V'); | |||
} | |||
if (__ZAT.gameType == "Liga") { | |||
if (__ZAT.ZAT < 70) { | |||
stats = addResultToStats(ligaStats, longStats, __ZAT); | |||
} | |||
} else if ((__ZAT.gameType == "OSCQ") || (__ZAT.gameType == "OSEQ") || (__ZAT.gameType == "OSE")) { | |||
if (__ZAT.hinRueck != 1) { | |||
euroStats = emptyStats(); | |||
} | |||
stats = addResultToStats(euroStats, longStats, __ZAT); | |||
} else if (__ZAT.gameType == "OSC") { | |||
if ((__ZAT.hinRueck != 1) && ((__ZAT.euroRunde >= 8) || ((__ZAT.euroRunde - 2) % 3 === 0))) { | |||
euroStats = emptyStats(); | |||
} | } | ||
stats = addResultToStats(euroStats, longStats, __ZAT); | |||
} | |||
if (showStats && (stats !== "")) { | |||
zusatz = zusatz + ' ' + stats; | |||
} | |||
__CELLS[__COLUMNINDEX.Zus].textContent = zusatz; | |||
} | |||
if (sepMonths && (__ZAT.ZAT % __ZAT.anzZATpMonth === 0) && (i < __TABLE.rows.length - __ROWOFFSETLOWER - 1)) { | |||
const __BORDERSTRING = sepStyle + ' ' + sepColor + ' ' + sepWidth; // Format der Trennlinie zwischen den Monaten | |||
/* | /* | ||
for (let entry of __CELLS) { | |||
entry.style.borderBottom = __BORDERSTRING; | |||
} | |||
*/ | */ | ||
for (let j = 0; j < __CELLS.length; j++) { | |||
__CELLS[j].style.borderBottom = __BORDERSTRING; | |||
} | } | ||
} | } | ||
} | |||
} | } | ||
// URL-Legende: | |||
// s=0: Teamuebersicht | |||
// s=1: Vertragsdaten | |||
// s=2: Einzelwerte | |||
// s=3: Statistik Saison | |||
// s=4: Statistik Gesamt | |||
// s=5: Teaminfo | |||
// s=6: Saisonplan | |||
// s=7: Vereinshistorie | |||
// s=8: Transferhistorie | |||
// s=9: Leihhistorie | |||
// Verzweige in unterschiedliche Verarbeitungen je nach Wert von s: | |||
switch (getPageIdFromURL(window.location.href)) { | |||
case 6: procSpielplan(); break; | |||
} | |||
// *** EOF *** | // *** EOF *** | ||
</pre> | </pre> |