Bearbeiten von „OS2.master“
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 8: | Zeile 8: | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Version''' | | '''Version''' | ||
| '''2. | | '''2.3 (WebExtensions)''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Autoren''' | | '''Autoren''' | ||
| '''Sebastian Klebba''', [[SC Ludza]]<br> '''Andreas Eckes''', [[Strindheim BK | | '''Sebastian Klebba''', [[SC Ludza]]<br> '''Andreas Eckes''', [[Strindheim BK]] | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Beschreibung''' | | '''Beschreibung''' | ||
Zeile 27: | Zeile 27: | ||
|} | |} | ||
== Version 2.3 == | |||
== Version 2. | |||
=== Hinweise === | === Hinweise === | ||
Durch | Durch die Einführung der Geburtstage kam es zu einer Verschiebung der td-Tags, die dazu führte, dass die Primärskills nicht mehr farbig hervorgehoben wurden. Version 2.3 korrigiert das Skript entsprechend. | ||
=== | === Quellcode === | ||
<pre> | <pre> | ||
// ==UserScript== | // ==UserScript== | ||
// @name OS2.master | // @name OS2.master | ||
// @namespace http://os.ongapo.com/ | // @namespace http://os.ongapo.com/ | ||
// @version 2. | // @version 2.3-SLC-WE | ||
// @copyright 2013+ | // @copyright 2013+ | ||
// @author Andreas Eckes (Strindheim BK) | // @author Andreas Eckes (Strindheim BK) | ||
Zeile 76: | Zeile 75: | ||
var osBlue = "#111166"; | var osBlue = "#111166"; | ||
var borderString = "solid white 1px"; | var borderString = "solid white 1px"; | ||
var url = | var url = this.location.href | ||
var pageString = parseURL(url); | var pageString = parseURL(url); | ||
Zeile 92: | Zeile 91: | ||
function procTeamansicht() { | function procTeamansicht() { | ||
// Parameter s auslesen | // Parameter s auslesen | ||
var regexpS = /s=(\d+)/; | |||
var s = -1; | |||
if (regexpS.test(url)) { s = parseInt(regexpS.exec(url)[1]); } | if (regexpS.test(url)) { s = parseInt(regexpS.exec(url)[1]); } | ||
switch (true) { | switch (true) { | ||
// Einzelwerte | // Einzelwerte | ||
case ((s == 2) && einzelwerte): | case ((s == 2) && einzelwerte): | ||
table = document.getElementById("team"); | var table = document.getElementById("team"); | ||
for ( | for (var i = 1; i < table.rows.length - 1; i++) { | ||
var pos = table.rows[i].cells[0].className; | |||
var primarySkills = getIdxPriSkillsGlobalPage(pos); | |||
for ( | for (var j = 0; j < primarySkills.length; j++) { | ||
table.rows[i].cells[primarySkills[j]].style.color = osBlue; | table.rows[i].cells[primarySkills[j]].style.color = osBlue; | ||
table.rows[i].cells[primarySkills[j]].style.backgroundColor = getColor(pos); | table.rows[i].cells[primarySkills[j]].style.backgroundColor = getColor(pos); | ||
Zeile 111: | Zeile 109: | ||
// Statistiken | // Statistiken | ||
case (((s == 3) || (s == 4)) && statistiken): | case (((s == 3) || (s == 4)) && statistiken): | ||
table = document.getElementsByTagName("table")[2]; | var table = document.getElementsByTagName("table")[2]; | ||
procStatistiken(table); | procStatistiken(table); | ||
break; | break; | ||
// Vereinshistorie | // Vereinshistorie | ||
case (s == 7): | case (s == 7): | ||
table = document.getElementsByTagName("table")[2]; | var table = document.getElementsByTagName("table")[2]; | ||
var offsets = [2, 1, 0, 0]; // 2 Zeilen oben, 1 Zeile unten ausschliessen | |||
drawHorizontalLines(table, offsets, 1, 0); | drawHorizontalLines(table, offsets, 1, 0); | ||
break; | break; | ||
Zeile 128: | Zeile 126: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procStatistiken(table) { | function procStatistiken(table) { | ||
var rowOffsetTop = 2; | |||
var rowOffsetBottom = 2; | |||
var colOffset = 4; | |||
var statistics = new Array(); | |||
var maxValues = new Array(); | |||
var numberOfPlayers = table.rows.length - (rowOffsetTop + rowOffsetBottom); | |||
var periodicity = (statistikenUmordnen) ? 6 : 4; | |||
// statistics fuellen | // statistics fuellen | ||
for ( | for (var i = 0; i < numberOfPlayers; i++) { | ||
statistics[i] = | statistics[i] = new Array(); | ||
for ( | for (var j = colOffset; j < table.rows[i + rowOffsetTop].cells.length; j++) { | ||
statistics[i][j - colOffset] = parseInt(table.rows[i + rowOffsetTop].cells[j].textContent); | statistics[i][j - colOffset] = parseInt(table.rows[i + rowOffsetTop].cells[j].textContent); | ||
} | } | ||
Zeile 145: | Zeile 142: | ||
if (statistikenUmordnen) { | if (statistikenUmordnen) { | ||
// Formel zum Index mappen: neu = (alt div 4) + 6 * (alt mod 4) | // Formel zum Index mappen: neu = (alt div 4) + 6 * (alt mod 4) | ||
statisticsNew = | var statisticsNew = new Array(); | ||
var idxNeu = 0; | |||
for ( | for (var i = 0; i < statistics.length; i++) { | ||
statisticsNew[i] = | statisticsNew[i] = new Array(); | ||
for ( | for (var j = 0; j < statistics[i].length; j++) { | ||
idxNeu = Math.floor(j / 4) + 6 * (j % 4); | idxNeu = Math.floor(j / 4) + 6 * (j % 4); | ||
statisticsNew[i][idxNeu] = statistics[i][j]; | statisticsNew[i][idxNeu] = statistics[i][j]; | ||
Zeile 155: | Zeile 152: | ||
} | } | ||
// Umgeordnete Werte eintragen | // Umgeordnete Werte eintragen | ||
for ( | for (var i = 0; i < statistics.length; i++) { | ||
for ( | for (var j = 0; j < statistics[i].length; j++) { | ||
table.rows[i + rowOffsetTop].cells[j + colOffset].textContent = statisticsNew[i][j]; | table.rows[i + rowOffsetTop].cells[j + colOffset].textContent = statisticsNew[i][j]; | ||
} | } | ||
Zeile 166: | Zeile 163: | ||
changeTitleRow2(table.rows[table.rows.length - 2]); | changeTitleRow2(table.rows[table.rows.length - 2]); | ||
} else { | } else { | ||
statisticsNew = statistics; | var statisticsNew = statistics; | ||
} | } | ||
// Linien zeichen. Offsets rechts = 1, um keinen Rand bei letzter Spalte zu haben | // Linien zeichen. Offsets rechts = 1, um keinen Rand bei letzter Spalte zu haben | ||
var offsets = new Array(rowOffsetTop, rowOffsetBottom, colOffset, 1); | |||
var offsetsTitleRowTop = new Array(1, table.rows.length - 2, 3, 1); | |||
var offsetsTitleRowBottom = new Array(table.rows.length - 2, 1, 3, 1); | |||
drawVerticalLines(table, offsets, periodicity); | drawVerticalLines(table, offsets, periodicity); | ||
drawVerticalLines(table, offsetsTitleRowTop, periodicity); | drawVerticalLines(table, offsetsTitleRowTop, periodicity); | ||
drawVerticalLines(table, offsetsTitleRowBottom, periodicity); | drawVerticalLines(table, offsetsTitleRowBottom, periodicity); | ||
// maxValues ermitteln. Initialisierung mit 1, um keine Nullen zu markieren | // maxValues ermitteln. Initialisierung mit 1, um keine Nullen zu markieren | ||
for ( | for (var j = 0; j < 24; j++) { | ||
maxValues[j] = 1; | maxValues[j] = 1; | ||
for ( | for (var i = 0; i < numberOfPlayers; i++) { | ||
if (statisticsNew[i][j] > maxValues[j]) { maxValues[j] = statisticsNew[i][j]; } | if (statisticsNew[i][j] > maxValues[j]) { maxValues[j] = statisticsNew[i][j]; } | ||
} | } | ||
} | } | ||
// Hoechstwerte hervorheben | // Hoechstwerte hervorheben | ||
for ( | for (var i = 0; i < numberOfPlayers; i++) { | ||
var pos = table.rows[i + rowOffsetTop].cells[0].className; | |||
for ( | for (var j = 0; j < maxValues.length; j++) { | ||
if (statisticsNew[i][j] >= maxValues[j]) { | if (statisticsNew[i][j] >= maxValues[j]) { | ||
table.rows[i + rowOffsetTop].cells[j + colOffset].style.color = osBlue; | table.rows[i + rowOffsetTop].cells[j + colOffset].style.color = osBlue; | ||
Zeile 200: | Zeile 197: | ||
function procSpielerprofil() { | function procSpielerprofil() { | ||
// Primaerskills hervorheben | // Primaerskills hervorheben | ||
var tdTags = document.getElementsByTagName("td"); | |||
var pos = tdTags[21].textContent; | |||
var color = getColor(pos); | |||
var skills = getIdxPriSkillsDetailsPage(pos); | |||
for ( | for (var i = 0; i < skills.length; i++) { | ||
tdTags[skills[i]].style.color = color; | tdTags[skills[i]].style.color = color; | ||
} | } | ||
// Saisons in Spielerhistorie trennen | // Saisons in Spielerhistorie trennen | ||
var table = document.getElementById("e").getElementsByTagName("table")[0]; | |||
var offsets = [1, 1, 0, 0]; // Je 1 Zeile oben und unten ausschliessen | |||
drawHorizontalLines(table, offsets, 1, 5); | drawHorizontalLines(table, offsets, 1, 5); | ||
} | } | ||
Zeile 217: | Zeile 214: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procKontoauszug() { | function procKontoauszug() { | ||
var table = document.getElementsByTagName("table")[0]; | |||
var season = 1; | |||
var optionTags = document.getElementsByTagName("select")[0].getElementsByTagName("option"); | |||
for ( | for (var i = 0; i < optionTags.length; i++) { | ||
if (optionTags[i].selected) { season = parseInt(optionTags[i].textContent); } | if (optionTags[i].selected) { season = parseInt(optionTags[i].textContent); } | ||
} | } | ||
for ( | for (var i = 2; i < table.rows.length; i++) { | ||
// Pruefen ob Zat-Abrechnung | // Pruefen ob Zat-Abrechnung | ||
var postingText = table.rows[i].cells[3].textContent; | |||
var regexpPostingText = /Abrechnung ZAT (\d+)/; | |||
if (regexpPostingText.test(postingText)) { | if (regexpPostingText.test(postingText)) { | ||
var zat = regexpPostingText.exec(postingText)[1]; | |||
// Pruefen ob Ende von Abrechnungszeitraum | // Pruefen ob Ende von Abrechnungszeitraum | ||
var zatPerMonth = (season == 1) ? 7 : 6; | |||
if (zat % zatPerMonth == 0) { | if (zat % zatPerMonth == 0) { | ||
for ( | for (var j = 0; j < table.rows[i].cells.length; j++) { | ||
table.rows[i].cells[j].style.borderTop = borderString; | table.rows[i].cells[j].style.borderTop = borderString; | ||
} | } | ||
Zeile 244: | Zeile 241: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procTraining() { | function procTraining() { | ||
var warningTable = document.getElementsByTagName("table")[1]; | |||
var table = document.getElementsByTagName("table")[2]; | |||
var titleBankeinsatz = "Bankeinsatz"; | |||
var titleTeilweise = "Teilweise"; | |||
var titleDurchgehend = "Durchgehend"; | |||
// Warnungen hinzufuegen | // Warnungen hinzufuegen | ||
var warning1 = "Die Wahrscheinlichkeiten in den Spalten \"" + titleBankeinsatz + "\", \"" + titleTeilweise + "\" und \"" + titleDurchgehend + "\" dienen nur zur Information!" | |||
var warning2 = "Die maximale Wahrscheinlichkeit einer Aufwertung ist immer 99.00 %!"; | |||
// | //var newCell1 = appendCell(warningTable.insertRow(-1), warning1); | ||
//newCell1.setAttribute("colspan", 4, false); | //newCell1.setAttribute("colspan", 4, false); | ||
// | //var newCell2 = appendCell(warningTable.insertRow(-1), warning2); | ||
//newCell2.setAttribute("colspan", 3, false); | //newCell2.setAttribute("colspan", 3, false); | ||
// Ueberschriften hinzufuegen | // Ueberschriften hinzufuegen | ||
var colWidth = 80; | |||
var titleRow = table.rows[0]; | |||
appendCell(titleRow, titleBankeinsatz).setAttribute("width", colWidth, false); | appendCell(titleRow, titleBankeinsatz).setAttribute("width", colWidth, false); | ||
appendCell(titleRow, titleTeilweise).setAttribute("width", colWidth, false); | appendCell(titleRow, titleTeilweise).setAttribute("width", colWidth, false); | ||
appendCell(titleRow, titleDurchgehend).setAttribute("width", colWidth, false); | appendCell(titleRow, titleDurchgehend).setAttribute("width", colWidth, false); | ||
// Wahrscheinlichkeiten berechnen und hinzufuegen | // Wahrscheinlichkeiten berechnen und hinzufuegen | ||
var colIdxChance = 7; | |||
for ( | for (var i = 1; i < table.rows.length; i++) { | ||
var currentRow = table.rows[i]; | |||
var probabilityString = currentRow.cells[colIdxChance].textContent; | |||
// Schleife verlassen, wenn Berechnung irrelevant ist | // Schleife verlassen, wenn Berechnung irrelevant ist | ||
if ((probabilityString == "0.00 %") || (probabilityString == "Trainerskill zu niedrig!")) { continue; } | if ((probabilityString == "0.00 %") || (probabilityString == "Trainerskill zu niedrig!")) { continue; } | ||
var color = getColor(currentRow.cells[colIdxChance].className); | |||
for ( | for (var j = 1; j <= 3; j++) { | ||
// Wert von j entscheidet, welcher Faktor zur Berechnung benutzt wird (Art des Einsatzes) | // Wert von j entscheidet, welcher Faktor zur Berechnung benutzt wird (Art des Einsatzes) | ||
var factor = 1; | |||
switch (j) { | switch (j) { | ||
case 1: factor = 1.1; break; | case 1: factor = 1.1; break; | ||
Zeile 278: | Zeile 275: | ||
case 3: factor = 1.35; break; | case 3: factor = 1.35; break; | ||
} | } | ||
var newProbabilityString = decimalNumberToString(factor * stringToNumber(probabilityString), 2, true); | |||
appendCell(currentRow, newProbabilityString, color); | appendCell(currentRow, newProbabilityString, color); | ||
} | } | ||
Zeile 290: | Zeile 287: | ||
// Fuer Teamansicht - Statistiken: Aendert die erste Titelzeile von "Spiele", ... auf "Liga", ... | // Fuer Teamansicht - Statistiken: Aendert die erste Titelzeile von "Spiele", ... auf "Liga", ... | ||
function changeTitleRow1(row) { | function changeTitleRow1(row) { | ||
var offsetLeft = 1; | |||
row.deleteCell(-1); row.deleteCell(-1); | row.deleteCell(-1); row.deleteCell(-1); | ||
for ( | for (var i = offsetLeft; i < row.cells.length; i++) { | ||
row.cells[i].colSpan = 6; | row.cells[i].colSpan = 6; | ||
switch (i) { | switch (i) { | ||
Zeile 305: | Zeile 302: | ||
// Fuer Teamansicht - Statistiken: Aendert die zweite Titelzeile von "LI", "LP", ... auf "SP", "TO", ... | // Fuer Teamansicht - Statistiken: Aendert die zweite Titelzeile von "LI", "LP", ... auf "SP", "TO", ... | ||
function changeTitleRow2(row) { | function changeTitleRow2(row) { | ||
var offsetLeft = 3; | |||
var cell; | |||
for ( | for (var i = offsetLeft; i < row.cells.length; i++) { | ||
cell = row.cells[i]; | cell = row.cells[i]; | ||
row.cells[i].align = "center"; | row.cells[i].align = "center"; | ||
Zeile 326: | Zeile 323: | ||
// periodicity: Jede periodicity-te Spalte mit Linie versehen | // periodicity: Jede periodicity-te Spalte mit Linie versehen | ||
function drawVerticalLines(table, offsets, periodicity) { | function drawVerticalLines(table, offsets, periodicity) { | ||
for ( | for (var i = offsets[0]; i < table.rows.length - offsets[1]; i++) { | ||
for ( | for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | ||
if (((j - offsets[2] + 1) % periodicity) == 0) { | if (((j - offsets[2] + 1) % periodicity) == 0) { | ||
table.rows[i].cells[j].style.borderRight = borderString; | table.rows[i].cells[j].style.borderRight = borderString; | ||
Zeile 343: | Zeile 340: | ||
// colIdx: Index der Spalte, die die zu vergleichenden Werte enthaelt | // colIdx: Index der Spalte, die die zu vergleichenden Werte enthaelt | ||
function drawHorizontalLines(table, offsets, mode, colIdx) { | function drawHorizontalLines(table, offsets, mode, colIdx) { | ||
for ( | for (var i = offsets[0]; i < table.rows.length - offsets[1]; i++) { | ||
switch (mode) { | switch (mode) { | ||
case 1: // Saisons trennen | case 1: // Saisons trennen | ||
var value1 = parseInt(table.rows[i].cells[colIdx].textContent); | |||
var value2 = parseInt(table.rows[i + 1].cells[colIdx].textContent); | |||
if (value1 != value2) { | if (value1 != value2) { | ||
for ( | for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | ||
table.rows[i].cells[j].style.borderBottom = borderString; | table.rows[i].cells[j].style.borderBottom = borderString; | ||
} | } | ||
Zeile 355: | Zeile 352: | ||
break; | break; | ||
case 2: // Abrechnungsperioden trennen (Saison 1) | case 2: // Abrechnungsperioden trennen (Saison 1) | ||
var value = parseInt(table.rows[i].cells[colIdx].textContent); | |||
if ( | if (value % 7 == 0) { | ||
for ( | for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | ||
table.rows[i].cells[j].style.borderBottom = borderString; | table.rows[i].cells[j].style.borderBottom = borderString; | ||
} | } | ||
Zeile 363: | Zeile 360: | ||
break; | break; | ||
case 3: // Abrechnungsperioden trennen (Saisons > 1) | case 3: // Abrechnungsperioden trennen (Saisons > 1) | ||
var value = parseInt(table.rows[i].cells[colIdx].textContent); | |||
if ( | if (value % 6 == 0) { | ||
for ( | for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | ||
table.rows[i].cells[j].style.borderBottom = borderString; | table.rows[i].cells[j].style.borderBottom = borderString; | ||
} | } | ||
Zeile 380: | Zeile 377: | ||
// Bei Aufruf ohne Farbe wird die Standardfarbe benutzt | // Bei Aufruf ohne Farbe wird die Standardfarbe benutzt | ||
function appendCell(row, content, color) { | function appendCell(row, content, color) { | ||
var returnValue = row.insertCell(-1); | |||
returnValue.textContent = content; | returnValue.textContent = content; | ||
returnValue.style.color = color; | returnValue.style.color = color; | ||
Zeile 411: | Zeile 408: | ||
// percent: Ob die Zahl als Prozentwert dargestellt werden soll | // percent: Ob die Zahl als Prozentwert dargestellt werden soll | ||
function decimalNumberToString(number, decimalDigits, percent) { | function decimalNumberToString(number, decimalDigits, percent) { | ||
var returnValue = ""; | |||
if (percent) { number *= 100; } | if (percent) { number *= 100; } | ||
number = number.toFixed(decimalDigits); | number = number.toFixed(decimalDigits); | ||
Zeile 422: | Zeile 419: | ||
// number: Die Zahl, die umgewandelt werden soll | // number: Die Zahl, die umgewandelt werden soll | ||
function wholeNumberToString(number) { | function wholeNumberToString(number) { | ||
var returnValue = ""; | |||
var temp = ""; | |||
for ( | for (var i = number.toString().length - 1; i >= 0; i--) { | ||
temp += number.toString().charAt(i); | temp += number.toString().charAt(i); | ||
if ((i % 3 == 0) && (i > 0)) { temp += "."; } | if ((i % 3 == 0) && (i > 0)) { temp += "."; } | ||
} | } | ||
for ( | for (var i = temp.length - 1; i >= 0; i--) { | ||
returnValue += temp.charAt(i); | returnValue += temp.charAt(i); | ||
} | } | ||
Zeile 441: | Zeile 438: | ||
function stringToNumber(string) { | function stringToNumber(string) { | ||
// parseXXX interpretiert einen Punkt immer als Dezimaltrennzeichen | // parseXXX interpretiert einen Punkt immer als Dezimaltrennzeichen | ||
var returnValue = ""; | |||
var percent = false; | |||
// Buchstaben und Whitespaces entfernen | // Buchstaben und Whitespaces entfernen | ||
string = string.replace(/[\sa-zA-Z]/g, ""); | string = string.replace(/[\sa-zA-Z]/g, ""); | ||
Zeile 450: | Zeile 447: | ||
string = string.replace(/%/g, ""); | string = string.replace(/%/g, ""); | ||
} | } | ||
var regexpWholeSimple = /^\d+$/; | |||
var regexpWholeWithDots = /^\d+(\.\d{3}){1,}$/; | |||
var regexpDecimal = /^\d*\.\d{1,}$/; | |||
if (regexpWholeSimple.test(string)) { | if (regexpWholeSimple.test(string)) { | ||
// Einfache ganze Zahl | // Einfache ganze Zahl | ||
Zeile 478: | Zeile 475: | ||
// Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | // Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | ||
function getIdxPriSkillsDetailsPage(pos) { | function getIdxPriSkillsDetailsPage(pos) { | ||
var tdOffset = 0; | |||
switch (pos) { | switch (pos) { | ||
case "TOR": return | case "TOR": return new Array(tdOffset + 38,tdOffset + 40,tdOffset + 42,tdOffset + 44); | ||
case "ABW": return | case "ABW": return new Array(tdOffset + 38,tdOffset + 40,tdOffset + 42,tdOffset + 64); | ||
case "DMI": return | case "DMI": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 42,tdOffset + 36); | ||
case "MIT": return | case "MIT": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 40,tdOffset + 36); | ||
case "OMI": return | case "OMI": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 36,tdOffset + 44); | ||
case "STU": return | case "STU": return new Array(tdOffset + 34,tdOffset + 38,tdOffset + 44,tdOffset + 40); | ||
default: return | default: return new Array(); | ||
} | } | ||
} | } | ||
Zeile 494: | Zeile 491: | ||
function getIdxPriSkillsGlobalPage(pos) { | function getIdxPriSkillsGlobalPage(pos) { | ||
switch (pos) { | switch (pos) { | ||
case "TOR": return | case "TOR": return new Array(6,7,8,9); | ||
case "ABW": return | case "ABW": return new Array(6,7,8,19); | ||
case "DMI": return | case "DMI": return new Array(13,15,8,5); | ||
case "MIT": return | case "MIT": return new Array(13,15,7,5); | ||
case "OMI": return | case "OMI": return new Array(13,15,9,5); | ||
case "STU": return | case "STU": return new Array(4,6,7,9); | ||
default: return | default: return new Array(); | ||
} | } | ||
} | } | ||
Zeile 518: | Zeile 515: | ||
} | } | ||
</pre> | </pre> | ||
<!-- Vor Umstellung auf Greasemonkey 4.0/Firefox 57.0 Quantum mit WebExtensions | |||
<pre> | |||
// ==UserScript== | // ==UserScript== | ||
// @name | // @name OS2.master | ||
// @namespace | // @namespace http://os.ongapo.com/ | ||
// @version | // @version 2.3 | ||
// @description OS 2.0 - Master-Skript | |||
// @include http://os.ongapo.com/showteam.php?s=* | |||
// @description | // @include http://os.ongapo.com/st.php?s=* | ||
// @include | // @include http://os.ongapo.com/sp.php?* | ||
// @include | // @include http://os.ongapo.com/training.php | ||
// @include | // @include http://os.ongapo.com/ka.php | ||
// @include | // @include http://online-soccer.eu/showteam.php?s=* | ||
// @include | // @include http://online-soccer.eu/st.php?s=* | ||
// @grant | // @include http://online-soccer.eu/sp.php?* | ||
// @include http://online-soccer.eu/training.php | |||
// @include http://online-soccer.eu/ka.php | |||
// @include http://www.online-soccer.eu/showteam.php?s=* | |||
// @include http://www.online-soccer.eu/st.php?s=* | |||
// @include http://www.online-soccer.eu/sp.php?* | |||
// @include http://www.online-soccer.eu/training.php | |||
// @include http://www.online-soccer.eu/ka.php | |||
// @grant none | |||
// ==/UserScript== | // ==/UserScript== | ||
// Dieses Skript ist in der Lage, folgendes zu machen: | // Dieses Skript ist in der Lage, folgendes zu machen: | ||
Zeile 573: | Zeile 567: | ||
// Je nach URL in die Verarbeitungsfunktionen verzweigen | // Je nach URL in die Verarbeitungsfunktionen verzweigen | ||
switch (pageString) { | switch (pageString) { | ||
case "teamansicht": procTeamansicht(); break; | |||
case "spielerprofil": if (spielerprofil) { procSpielerprofil(); } break; | |||
case "training": if (training) { procTraining(); } break; | |||
case "kontoauszug": if (kontoauszug) { procKontoauszug(); } break; | |||
} | } | ||
Zeile 583: | Zeile 577: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procTeamansicht() { | function procTeamansicht() { | ||
// Parameter s auslesen | |||
var regexpS = /s=(\d+)/; | |||
var s = -1; | |||
if (regexpS.test(url)) { s = parseInt(regexpS.exec(url)[1]); } | |||
switch (true) { | |||
// Einzelwerte | |||
case ((s == 2) && einzelwerte): | |||
var table = document.getElementById("team"); | |||
for (var i = 1; i < table.rows.length - 1; i++) { | |||
var pos = table.rows[i].cells[0].className; | |||
var primarySkills = getIdxPriSkillsGlobalPage(pos); | |||
for (var j = 0; j < primarySkills.length; j++) { | |||
table.rows[i].cells[primarySkills[j]].style.color = osBlue; | |||
table.rows[i].cells[primarySkills[j]].style.backgroundColor = getColor(pos); | |||
} | |||
} | |||
break; | |||
// Statistiken | |||
case (((s == 3) || (s == 4)) && statistiken): | |||
var table = document.getElementsByTagName("table")[2]; | |||
procStatistiken(table); | |||
break; | |||
// Vereinshistorie | |||
case (s == 7): | |||
var table = document.getElementsByTagName("table")[2]; | |||
var offsets = [2, 1, 0, 0]; // 2 Zeilen oben, 1 Zeile unten ausschliessen | |||
drawHorizontalLines(table, offsets, 1, 0); | |||
break; | |||
} | |||
} | } | ||
Zeile 619: | Zeile 613: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procStatistiken(table) { | function procStatistiken(table) { | ||
var rowOffsetTop = 2; | |||
var rowOffsetBottom = 2; | |||
var colOffset = 4; | |||
var statistics = new Array(); | |||
var maxValues = new Array(); | |||
var numberOfPlayers = table.rows.length - (rowOffsetTop + rowOffsetBottom); | |||
var periodicity = (statistikenUmordnen) ? 6 : 4; | |||
// statistics fuellen | |||
for (var i = 0; i < numberOfPlayers; i++) { | |||
statistics[i] = new Array(); | |||
for (var j = colOffset; j < table.rows[i + rowOffsetTop].cells.length; j++) { | |||
statistics[i][j - colOffset] = parseInt(table.rows[i + rowOffsetTop].cells[j].textContent); | |||
} | |||
} | |||
if (statistikenUmordnen) { | |||
// Formel zum Index mappen: neu = (alt div 4) + 6 * (alt mod 4) | |||
var statisticsNew = new Array(); | |||
var idxNeu = 0; | |||
for (var i = 0; i < statistics.length; i++) { | |||
statisticsNew[i] = new Array(); | |||
for (var j = 0; j < statistics[i].length; j++) { | |||
idxNeu = Math.floor(j / 4) + 6 * (j % 4); | |||
statisticsNew[i][idxNeu] = statistics[i][j]; | |||
} | |||
} | |||
// Umgeordnete Werte eintragen | |||
for (var i = 0; i < statistics.length; i++) { | |||
for (var j = 0; j < statistics[i].length; j++) { | |||
table.rows[i + rowOffsetTop].cells[j + colOffset].textContent = statisticsNew[i][j]; | |||
} | |||
} | |||
// Titelzeilen aendern | |||
changeTitleRow1(table.rows[0]); | |||
changeTitleRow1(table.rows[table.rows.length - 1]); | |||
changeTitleRow2(table.rows[1]); | |||
changeTitleRow2(table.rows[table.rows.length - 2]); | |||
} else { | |||
var statisticsNew = statistics; | |||
} | |||
// Linien zeichen. Offsets rechts = 1, um keinen Rand bei letzter Spalte zu haben | |||
var offsets = new Array(rowOffsetTop, rowOffsetBottom, colOffset, 1); | |||
var offsetsTitleRowTop = new Array(1, table.rows.length - 2, 3, 1); | |||
var offsetsTitleRowBottom = new Array(table.rows.length - 2, 1, 3, 1); | |||
drawVerticalLines(table, offsets, periodicity); | |||
drawVerticalLines(table, offsetsTitleRowTop, periodicity); | |||
drawVerticalLines(table, offsetsTitleRowBottom, periodicity); | |||
// maxValues ermitteln. Initialisierung mit 1, um keine Nullen zu markieren | |||
for (var j = 0; j < 24; j++) { | |||
maxValues[j] = 1; | |||
for (var i = 0; i < numberOfPlayers; i++) { | |||
if (statisticsNew[i][j] > maxValues[j]) { maxValues[j] = statisticsNew[i][j]; } | |||
} | |||
} | |||
// Hoechstwerte hervorheben | |||
for (var i = 0; i < numberOfPlayers; i++) { | |||
var pos = table.rows[i + rowOffsetTop].cells[0].className; | |||
for (var j = 0; j < maxValues.length; j++) { | |||
if (statisticsNew[i][j] >= maxValues[j]) { | |||
table.rows[i + rowOffsetTop].cells[j + colOffset].style.color = osBlue; | |||
table.rows[i + rowOffsetTop].cells[j + colOffset].style.backgroundColor = getColor(pos); | |||
table.rows[i + rowOffsetTop].cells[j + colOffset].style.fontWeight = "bold"; | |||
} | |||
} | |||
} | |||
} | } | ||
Zeile 689: | Zeile 683: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procSpielerprofil() { | function procSpielerprofil() { | ||
// Primaerskills hervorheben | |||
var tdTags = document.getElementsByTagName("td"); | |||
var pos = tdTags[21].textContent; | |||
var color = getColor(pos); | |||
var skills = getIdxPriSkillsDetailsPage(pos); | |||
for (var i = 0; i < skills.length; i++) { | |||
tdTags[skills[i]].style.color = color; | |||
} | |||
// Saisons in Spielerhistorie trennen | |||
var table = document.getElementById("e").getElementsByTagName("table")[0]; | |||
var offsets = [1, 1, 0, 0]; // Je 1 Zeile oben und unten ausschliessen | |||
drawHorizontalLines(table, offsets, 1, 5); | |||
} | } | ||
Zeile 707: | Zeile 701: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procKontoauszug() { | function procKontoauszug() { | ||
var table = document.getElementsByTagName("table")[0]; | |||
var season = 1; | |||
var optionTags = document.getElementsByTagName("select")[0].getElementsByTagName("option"); | |||
for (var i = 0; i < optionTags.length; i++) { | |||
if (optionTags[i].selected) { season = parseInt(optionTags[i].textContent); } | |||
} | |||
for (var i = 2; i < table.rows.length; i++) { | |||
// Pruefen ob Zat-Abrechnung | |||
var postingText = table.rows[i].cells[3].textContent; | |||
var regexpPostingText = /Abrechnung ZAT (\d+)/; | |||
if (regexpPostingText.test(postingText)) { | |||
var zat = regexpPostingText.exec(postingText)[1]; | |||
// Pruefen ob Ende von Abrechnungszeitraum | |||
var zatPerMonth = (season == 1) ? 7 : 6; | |||
if (zat % zatPerMonth == 0) { | |||
for (var j = 0; j < table.rows[i].cells.length; j++) { | |||
table.rows[i].cells[j].style.borderTop = borderString; | |||
} | |||
} | |||
} | |||
} | |||
} | } | ||
Zeile 734: | Zeile 728: | ||
// ************************************************************************************** | // ************************************************************************************** | ||
function procTraining() { | function procTraining() { | ||
var warningTable = document.getElementsByTagName("table")[1]; | |||
var table = document.getElementsByTagName("table")[2]; | |||
var titleBankeinsatz = "Bankeinsatz"; | |||
var titleTeilweise = "Teilweise"; | |||
var titleDurchgehend = "Durchgehend"; | |||
// Warnungen hinzufuegen | |||
var warning1 = "Die Wahrscheinlichkeiten in den Spalten \"" + titleBankeinsatz + "\", \"" + titleTeilweise + "\" und \"" + titleDurchgehend + "\" dienen nur zur Information!" | |||
var warning2 = "Die maximale Wahrscheinlichkeit einer Aufwertung ist immer 99.00 %!"; | |||
//var newCell1 = appendCell(warningTable.insertRow(-1), warning1); | |||
//newCell1.setAttribute("colspan", 4, false); | |||
//var newCell2 = appendCell(warningTable.insertRow(-1), warning2); | |||
//newCell2.setAttribute("colspan", 3, false); | |||
// Ueberschriften hinzufuegen | |||
var colWidth = 80; | |||
var titleRow = table.rows[0]; | |||
appendCell(titleRow, titleBankeinsatz).setAttribute("width", colWidth, false); | |||
appendCell(titleRow, titleTeilweise).setAttribute("width", colWidth, false); | |||
appendCell(titleRow, titleDurchgehend).setAttribute("width", colWidth, false); | |||
// Wahrscheinlichkeiten berechnen und hinzufuegen | |||
var colIdxChance = 7; | |||
for (var i = 1; i < table.rows.length; i++) { | |||
var currentRow = table.rows[i]; | |||
var probabilityString = currentRow.cells[colIdxChance].textContent; | |||
// Schleife verlassen, wenn Berechnung irrelevant ist | |||
if ((probabilityString == "0.00 %") || (probabilityString == "Trainerskill zu niedrig!")) { continue; } | |||
var color = getColor(currentRow.cells[colIdxChance].className); | |||
for (var j = 1; j <= 3; j++) { | |||
// Wert von j entscheidet, welcher Faktor zur Berechnung benutzt wird (Art des Einsatzes) | |||
var factor = 1; | |||
switch (j) { | |||
case 1: factor = 1.1; break; | |||
case 2: factor = 1.25; break; | |||
case 3: factor = 1.35; break; | |||
} | |||
var newProbabilityString = decimalNumberToString(factor * stringToNumber(probabilityString), 2, true); | |||
appendCell(currentRow, newProbabilityString, color); | |||
} | |||
} | |||
} | } | ||
Zeile 780: | Zeile 774: | ||
// Fuer Teamansicht - Statistiken: Aendert die erste Titelzeile von "Spiele", ... auf "Liga", ... | // Fuer Teamansicht - Statistiken: Aendert die erste Titelzeile von "Spiele", ... auf "Liga", ... | ||
function changeTitleRow1(row) { | function changeTitleRow1(row) { | ||
var offsetLeft = 1; | |||
row.deleteCell(-1); row.deleteCell(-1); | |||
for (var i = offsetLeft; i < row.cells.length; i++) { | |||
row.cells[i].colSpan = 6; | |||
switch (i) { | |||
case offsetLeft: row.cells[i].textContent = "Liga"; break; | |||
case offsetLeft + 1: row.cells[i].textContent = "Landespokal"; break; | |||
case offsetLeft + 2: row.cells[i].textContent = "International"; break; | |||
case offsetLeft + 3: row.cells[i].textContent = "Friendly"; break; | |||
} | |||
} | |||
} | } | ||
// Fuer Teamansicht - Statistiken: Aendert die zweite Titelzeile von "LI", "LP", ... auf "SP", "TO", ... | // Fuer Teamansicht - Statistiken: Aendert die zweite Titelzeile von "LI", "LP", ... auf "SP", "TO", ... | ||
function changeTitleRow2(row) { | function changeTitleRow2(row) { | ||
var offsetLeft = 3; | |||
var cell; | |||
for (var i = offsetLeft; i < row.cells.length; i++) { | |||
cell = row.cells[i]; | |||
row.cells[i].align = "center"; | |||
switch ((i - offsetLeft) % 6) { | |||
case 0: cell.textContent = "SP"; break; | |||
case 1: cell.textContent = "TO"; break; | |||
case 2: cell.textContent = "VL"; break; | |||
case 3: cell.textContent = "SC"; break; | |||
case 4: cell.textContent = "GK"; break; | |||
case 5: cell.textContent = "RK"; break; | |||
} | |||
} | |||
} | } | ||
Zeile 816: | Zeile 810: | ||
// periodicity: Jede periodicity-te Spalte mit Linie versehen | // periodicity: Jede periodicity-te Spalte mit Linie versehen | ||
function drawVerticalLines(table, offsets, periodicity) { | function drawVerticalLines(table, offsets, periodicity) { | ||
for (var i = offsets[0]; i < table.rows.length - offsets[1]; i++) { | |||
for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | |||
if (((j - offsets[2] + 1) % periodicity) == 0) { | |||
table.rows[i].cells[j].style.borderRight = borderString; | |||
} | |||
} | |||
} | |||
} | } | ||
Zeile 833: | Zeile 827: | ||
// colIdx: Index der Spalte, die die zu vergleichenden Werte enthaelt | // colIdx: Index der Spalte, die die zu vergleichenden Werte enthaelt | ||
function drawHorizontalLines(table, offsets, mode, colIdx) { | function drawHorizontalLines(table, offsets, mode, colIdx) { | ||
for (var i = offsets[0]; i < table.rows.length - offsets[1]; i++) { | |||
switch (mode) { | |||
case 1: // Saisons trennen | |||
var value1 = parseInt(table.rows[i].cells[colIdx].textContent); | |||
var value2 = parseInt(table.rows[i + 1].cells[colIdx].textContent); | |||
if (value1 != value2) { | |||
for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | |||
table.rows[i].cells[j].style.borderBottom = borderString; | |||
} | |||
} | |||
break; | |||
case 2: // Abrechnungsperioden trennen (Saison 1) | |||
var value = parseInt(table.rows[i].cells[colIdx].textContent); | |||
if (value % 7 == 0) { | |||
for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | |||
table.rows[i].cells[j].style.borderBottom = borderString; | |||
} | |||
} | |||
break; | |||
case 3: // Abrechnungsperioden trennen (Saisons > 1) | |||
var value = parseInt(table.rows[i].cells[colIdx].textContent); | |||
if (value % 6 == 0) { | |||
for (var j = offsets[2]; j < table.rows[i].cells.length - offsets[3]; j++) { | |||
table.rows[i].cells[j].style.borderBottom = borderString; | |||
} | |||
} | |||
break; | |||
} | |||
} | |||
} | } | ||
Zeile 870: | Zeile 864: | ||
// Bei Aufruf ohne Farbe wird die Standardfarbe benutzt | // Bei Aufruf ohne Farbe wird die Standardfarbe benutzt | ||
function appendCell(row, content, color) { | function appendCell(row, content, color) { | ||
var returnValue = row.insertCell(-1); | |||
returnValue.textContent = content; | |||
returnValue.style.color = color; | |||
return returnValue; | |||
} | } | ||
Zeile 879: | Zeile 873: | ||
// url: Der URL, der geparst werden soll | // url: Der URL, der geparst werden soll | ||
function parseURL(url) { | function parseURL(url) { | ||
if (url.match(/\/showteam\.php\?s=/)) { return "teamansicht"; } | |||
if (url.match(/\/st\.php\?s=/)) { return "teamansicht"; } | |||
if (url.match(/\/tplatz\.php\?/)) { return "tabellenplatz"; } | |||
if (url.match(/\/spielpreview\.php\?/)) { return "vorschau"; } | |||
if (url.match(/\/sp\.php\?/)) { return "spielerprofil"; } | |||
if (url.match(/\/training\.php/)) { return "training"; } | |||
if (url.match(/\/ju\.php/)) { return "jugend"; } | |||
if (url.match(/\/ka\.php/)) { return "kontoauszug"; } | |||
return ""; | |||
} | } | ||
Zeile 901: | Zeile 895: | ||
// percent: Ob die Zahl als Prozentwert dargestellt werden soll | // percent: Ob die Zahl als Prozentwert dargestellt werden soll | ||
function decimalNumberToString(number, decimalDigits, percent) { | function decimalNumberToString(number, decimalDigits, percent) { | ||
var returnValue = ""; | |||
if (percent) { number *= 100; } | |||
number = number.toFixed(decimalDigits); | |||
returnValue = number.toString(); | |||
if (percent) { returnValue += " %"; } | |||
return returnValue; | |||
} | } | ||
Zeile 912: | Zeile 906: | ||
// number: Die Zahl, die umgewandelt werden soll | // number: Die Zahl, die umgewandelt werden soll | ||
function wholeNumberToString(number) { | function wholeNumberToString(number) { | ||
var returnValue = ""; | |||
var temp = ""; | |||
for (var i = number.toString().length - 1; i >= 0; i--) { | |||
temp += number.toString().charAt(i); | |||
if ((i % 3 == 0) && (i > 0)) { temp += "."; } | |||
} | |||
for (var i = temp.length - 1; i >= 0; i--) { | |||
returnValue += temp.charAt(i); | |||
} | |||
return returnValue; | |||
} | } | ||
Zeile 930: | Zeile 924: | ||
// Da zuerst auf ganze Zahlen geprueft wird, koennen Dezimalzahlen nicht 3 Nachkommaziffern haben. | // Da zuerst auf ganze Zahlen geprueft wird, koennen Dezimalzahlen nicht 3 Nachkommaziffern haben. | ||
function stringToNumber(string) { | function stringToNumber(string) { | ||
// parseXXX interpretiert einen Punkt immer als Dezimaltrennzeichen | |||
var returnValue = ""; | |||
var percent = false; | |||
// Buchstaben und Whitespaces entfernen | |||
string = string.replace(/[\sa-zA-Z]/g, ""); | |||
// Auf % pruefen und % entfernen | |||
if (string.lastIndexOf("%") != -1) { | |||
percent = true; | |||
string = string.replace(/%/g, ""); | |||
} | |||
var regexpWholeSimple = /^\d+$/; | |||
var regexpWholeWithDots = /^\d+(\.\d{3}){1,}$/; | |||
var regexpDecimal = /^\d*\.\d{1,}$/; | |||
if (regexpWholeSimple.test(string)) { | |||
// Einfache ganze Zahl | |||
returnValue = parseInt(string); | |||
} else if (regexpWholeWithDots.test(string)) { | |||
// Ganze Zahl mit Tausenderpunkten | |||
returnValue = parseInt(string.replace(/\./g, "")); | |||
} else if (regexpDecimal.test(string)) { | |||
// Dezimalzahl mit Punkt als Trennzeichen | |||
returnValue = parseFloat(string); | |||
} else { | |||
// Kein gueltiger String | |||
percent = false; | |||
returnValue = ""; | |||
} | |||
if (percent) { returnValue /= 100; } | |||
return returnValue; | |||
} | } | ||
Zeile 968: | Zeile 962: | ||
// Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | // Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | ||
function getIdxPriSkillsDetailsPage(pos) { | function getIdxPriSkillsDetailsPage(pos) { | ||
var tdOffset = 0; | |||
switch (pos) { | switch (pos) { | ||
case "TOR": return new Array(tdOffset + 38,tdOffset + 40,tdOffset + 42,tdOffset + 44); | case "TOR": return new Array(tdOffset + 38,tdOffset + 40,tdOffset + 42,tdOffset + 44); | ||
case "ABW": return new Array(tdOffset + 38,tdOffset + 40,tdOffset + 42,tdOffset + 64); | |||
case "DMI": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 42,tdOffset + 36); | case "DMI": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 42,tdOffset + 36); | ||
case "MIT": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 40,tdOffset + 36); | case "MIT": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 40,tdOffset + 36); | ||
case "OMI": return new Array(tdOffset + 52,tdOffset + 56,tdOffset + 36,tdOffset + 44); | |||
case "STU": return new Array(tdOffset + 34,tdOffset + 38,tdOffset + 44,tdOffset + 40); | |||
default: return new Array(); | default: return new Array(); | ||
} | } | ||
Zeile 996: | Zeile 990: | ||
// Liefert die zur Position gehoerige Farbe, | // Liefert die zur Position gehoerige Farbe, | ||
function getColor(pos) { | function getColor(pos) { | ||
switch (pos) { | |||
case "TOR": return "#FFFF00"; | |||
case "ABW": return "#00FF00"; | |||
case "DMI": return "#3366FF"; | |||
case "MIT": return "#66FFFF"; | |||
case "OMI": return "#FF66FF"; | |||
case "STU": return "#FF0000"; | |||
case "LEI": return "#FFFFFF"; | |||
default: return ""; | |||
} | |||
} | } | ||
</pre>--> | </pre>--> | ||
<pre> | == Version 2.2 == | ||
=== Hinweise === | |||
Durch die Einführung der OS-Faces im Spielerprofil kam es zu einer Verschiebung der td-Tags, die dazu führte, dass die Primärskills nicht mehr farbig hervorgehoben wurden. Version 2.2 korrigiert das Skript entsprechend. | |||
=== Quellcode === | |||
Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | |||
<!--<pre> | |||
// ==UserScript== | // ==UserScript== | ||
// @name | // @name OS2.master | ||
// @version 2.2 | |||
// @version | |||
// @description OS 2.0 - Master-Skript | // @description OS 2.0 - Master-Skript | ||
// @include | // @include http://os.ongapo.com/showteam.php?s=* | ||
// @include | // @include http://os.ongapo.com/st.php?s=* | ||
// @include | // @include http://os.ongapo.com/tplatz.php?t=* | ||
// @include | // @include http://os.ongapo.com/spielpreview.php?* | ||
// @include | // @include http://os.ongapo.com/sp.php?* | ||
// @include | // @include http://os.ongapo.com/training.php | ||
// @include | // @include http://os.ongapo.com/ka.php | ||
// @include | // @include http://online-soccer.eu/showteam.php?s=* | ||
// @include | // @include http://online-soccer.eu/st.php?s=* | ||
// @include | // @include http://online-soccer.eu/tplatz.php?t=* | ||
// @include | // @include http://online-soccer.eu/spielpreview.php?* | ||
// @include | // @include http://online-soccer.eu/sp.php?* | ||
// @include | // @include http://online-soccer.eu/training.php | ||
// @include | // @include http://online-soccer.eu/ka.php | ||
// @include | // @include http://www.online-soccer.eu/showteam.php?s=* | ||
// @ | // @include http://www.online-soccer.eu/st.php?s=* | ||
// @include http://www.online-soccer.eu/tplatz.php?t=* | |||
// @include http://www.online-soccer.eu/spielpreview.php?* | |||
// @include http://www.online-soccer.eu/sp.php?* | |||
// @include http://www.online-soccer.eu/training.php | |||
// @include http://www.online-soccer.eu/ka.php | |||
// ==/UserScript== | // ==/UserScript== | ||
// Dieses Skript ist in der Lage, folgendes zu machen: | // Dieses Skript ist in der Lage, folgendes zu machen: | ||
// Teamansicht - Einzelwerte: Primaerskills hervorheben | // Teamansicht - Einzelwerte: Primaerskills hervorheben | ||
// Teamansicht - Saisonplan: Runde eintragen, Abrechnungen trennen | |||
// Teamansicht - Tabellenplaetze: Fenster vergroessern | |||
// Teamansicht - Statistik Saison / Gesamt: Spalten umordnen, Hoechstwerte markieren, Wettbewerbe bzw. Kategorien trennen | // Teamansicht - Statistik Saison / Gesamt: Spalten umordnen, Hoechstwerte markieren, Wettbewerbe bzw. Kategorien trennen | ||
// Teamansicht - Vereinshistorie: Saisons trennen | // Teamansicht - Vereinshistorie: Saisons trennen | ||
// Vorschau: Fenster vergroessern | |||
// Spielerprofil: Primaerskills hervorheben, Saisons in Historie trennen | // Spielerprofil: Primaerskills hervorheben, Saisons in Historie trennen | ||
// Training: Trainingswahrscheinlichkeiten je nach Einsatzdauer berechnen | // Training: Trainingswahrscheinlichkeiten je nach Einsatzdauer berechnen | ||
Zeile 1.045: | Zeile 1.053: | ||
// Konfiguration ************************************************************************ | // Konfiguration ************************************************************************ | ||
var einzelwerte = true; // Teamansicht - Einzelwerte bearbeiten? | var einzelwerte = true; // Teamansicht - Einzelwerte bearbeiten? | ||
var tabellenplaetze = true; // Tabellenplatz-Fenster vergroessern? | |||
var statistiken = true; // Teamansicht - Statistik Saison/Gesamt bearbeiten? | var statistiken = true; // Teamansicht - Statistik Saison/Gesamt bearbeiten? | ||
var statistikenUmordnen = true; // In Teamansicht - Statistik Saison/Gesamt Wettbewerbe und Kategorien vertauschen? | var statistikenUmordnen = true; // In Teamansicht - Statistik Saison/Gesamt Wettbewerbe und Kategorien vertauschen? | ||
Zeile 1.050: | Zeile 1.059: | ||
var spielerprofil = true; // Spielerprofil bearbeiten? | var spielerprofil = true; // Spielerprofil bearbeiten? | ||
var training = true; // Training bearbeiten? | var training = true; // Training bearbeiten? | ||
var vorschau = true; // Vorschau-Fenster vergroessern? | |||
var kontoauszug = true; // Kontoauszug bearbeiten? | var kontoauszug = true; // Kontoauszug bearbeiten? | ||
// Konfiguration Ende ******************************************************************* | // Konfiguration Ende ******************************************************************* | ||
Zeile 1.061: | Zeile 1.071: | ||
switch (pageString) { | switch (pageString) { | ||
case "teamansicht": procTeamansicht(); break; | case "teamansicht": procTeamansicht(); break; | ||
case "tabellenplatz": if (tabellenplaetze) { procTabellenplaetze(); } break; | |||
case "vorschau": if (vorschau) { procVorschau(); } break; | |||
case "spielerprofil": if (spielerprofil) { procSpielerprofil(); } break; | case "spielerprofil": if (spielerprofil) { procSpielerprofil(); } break; | ||
case "training": if (training) { procTraining(); } break; | case "training": if (training) { procTraining(); } break; | ||
Zeile 1.097: | Zeile 1.109: | ||
var offsets = [2, 1, 0, 0]; // 2 Zeilen oben, 1 Zeile unten ausschliessen | var offsets = [2, 1, 0, 0]; // 2 Zeilen oben, 1 Zeile unten ausschliessen | ||
drawHorizontalLines(table, offsets, 1, 0); | drawHorizontalLines(table, offsets, 1, 0); | ||
// Fenster verbreitern | |||
if (isPopupWindow(this)) { this.resizeBy(this.innerWidth * 0.1, 0); } | |||
break; | break; | ||
} | } | ||
Zeile 1.178: | Zeile 1.192: | ||
// Primaerskills hervorheben | // Primaerskills hervorheben | ||
var tdTags = document.getElementsByTagName("td"); | var tdTags = document.getElementsByTagName("td"); | ||
var pos = tdTags[ | var pos = tdTags[14].textContent; | ||
var color = getColor(pos); | var color = getColor(pos); | ||
//alert(color); | |||
var skills = getIdxPriSkillsDetailsPage(pos); | var skills = getIdxPriSkillsDetailsPage(pos); | ||
for (var i = 0; i < skills.length; i++) { | for (var i = 0; i < skills.length; i++) { | ||
Zeile 1.259: | Zeile 1.274: | ||
} | } | ||
} | } | ||
} | |||
// ************************************************************************************** | |||
// Tabellenplaetze: Fenster vergroessern | |||
// ************************************************************************************** | |||
function procTabellenplaetze() { | |||
if (isPopupWindow(this)) { this.resizeBy(this.innerWidth * 0.1, this.innerHeight * 0.1); } | |||
} | |||
// ************************************************************************************** | |||
// Vorschau: Fenster vergroessern | |||
// ************************************************************************************** | |||
function procVorschau() { | |||
if (isPopupWindow(this)) { this.resizeBy(0, this.innerHeight * 1.45); } | |||
} | } | ||
Zeile 1.349: | Zeile 1.378: | ||
} | } | ||
} | } | ||
} | |||
// Gibt true zurueck, wenn das uebergebene Fenster keine sichtbare Menueleiste hat. | |||
// Im Allgemeinen ist das Fenster dann ein Popupfenster. | |||
function isPopupWindow(aWindow) { | |||
return !(aWindow.menubar && aWindow.menubar.visible); | |||
} | } | ||
Zeile 1.455: | Zeile 1.490: | ||
// Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | // Liefert je nach Position die Indizes der Primaerskills im Spielerprofil. | ||
function getIdxPriSkillsDetailsPage(pos) { | function getIdxPriSkillsDetailsPage(pos) { | ||
switch (pos) { | switch (pos) { | ||
case "TOR": return new Array( | case "TOR": return new Array(36,38,40,42); | ||
case "ABW": return new Array(36,38,40,62); | |||
case "DMI": return new Array( | case "DMI": return new Array(50,54,40,34); | ||
case "MIT": return new Array( | case "MIT": return new Array(50,54,38,34); | ||
case "OMI": return new Array(50,54,34,42); | |||
case "STU": return new Array(32,36,42,38); | |||
default: return new Array(); | default: return new Array(); | ||
} | } | ||
Zeile 1.496: | Zeile 1.529: | ||
</pre>--> | </pre>--> | ||
== Version 2.1 == | == Version 2.1 == | ||
Zeile 2.028: | Zeile 1.536: | ||
Ansonsten bleibt alles beim Alten. | Ansonsten bleibt alles beim Alten. | ||
=== | === Quellcode === | ||
Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | ||
<!--<pre> | <!--<pre> | ||
Zeile 2.561: | Zeile 2.069: | ||
Welche Funktionen das Skript ausführt, kann in Grenzen gesteuert werden, indem Variablen im Konfigurations-Abschnitt am Anfang des Codes auf <code>true</code> bzw. <code>false</code> gesetzt werden. Siehe hierzu die Kommentare im Quellcode. | Welche Funktionen das Skript ausführt, kann in Grenzen gesteuert werden, indem Variablen im Konfigurations-Abschnitt am Anfang des Codes auf <code>true</code> bzw. <code>false</code> gesetzt werden. Siehe hierzu die Kommentare im Quellcode. | ||
=== | === Quellcode === | ||
Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | ||
<!--<pre> | <!--<pre> | ||
Zeile 3.279: | Zeile 2.787: | ||
== Version 1.0 == | == Version 1.0 == | ||
Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | Der Quellcode ist aus Gründen der Übersichtlichkeit auskommentiert. | ||
<!--<pre> | <!--<pre> |