Bearbeiten von „OS2.jugend“
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''' | ||
| '''0. | | '''0.54 (WebExtensions)''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Autor''' | | '''Autor''' | ||
Zeile 27: | Zeile 27: | ||
| '''ju.php?page=2''' | | '''ju.php?page=2''' | ||
| '''Jugendteam-Spielereinzelwerte''' | | '''Jugendteam-Spielereinzelwerte''' | ||
|} | |} | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
| '''Funktionalität''' | | '''Funktionalität''' | ||
| '''Trennstriche zwischen den Jahrgängen'''<br> '''Aktueller Skill, Opti und MW'''<br> '''Prognose von Opti und MW für Ende Jahrgang 18'''<br> '''Optionen und Menu'''<br> '''Neue Marktwertformel'''<br> '''Automatische Ermittlung des ZATs'''<br> '''Hidden-Optionen und Datenspeicher'''<br> '''Geburtstage und dezimales Alter'''<br> '''Erweiterte Optionen auch auf der Seite'''<br> '''Zusatzspalten Talent/Quote/Aufw./Geb./Alter'''<br> '''Zusatzspalten Quote/Alter/Pos in der Übersicht'''<br> '''Zusatzspalten Alter ersetzen/Aufwertungen kurz+TOR'''<br> '''Zusatzspalten fix/tr./%H/%N/Prios jetzt und Ende'''<br> '''Interaktive Menü-Optionen'''<br> '''Gemeinsame Code- und Datenbasis'''<br> '''Qualitätsbalken'''<br> '''Markierung der Primärskills bei Einzelwerten und Aufwertungen'''<br> '''Beachtung von Jugendförderung und Doppelpositionen'''<br> '''Warnung vor Ende 18 in | | '''Trennstriche zwischen den Jahrgängen'''<br> '''Aktueller Skill, Opti und MW'''<br> '''Prognose von Opti und MW für Ende Jahrgang 18'''<br> '''Optionen und Menu'''<br> '''Neue Marktwertformel'''<br> '''Automatische Ermittlung des ZATs'''<br> '''Hidden-Optionen und Datenspeicher'''<br> '''Geburtstage und dezimales Alter'''<br> '''Erweiterte Optionen auch auf der Seite'''<br> '''Zusatzspalten Talent/Quote/Aufw./Geb./Alter'''<br> '''Zusatzspalten Quote/Alter/Pos in der Übersicht'''<br> '''Zusatzspalten Alter ersetzen/Aufwertungen kurz+TOR'''<br> '''Zusatzspalten fix/tr./%H/%N/Prios jetzt und Ende'''<br> '''Interaktive Menü-Optionen'''<br> '''Gemeinsame Code- und Datenbasis'''<br> '''Qualitätsbalken'''<br> '''Markierung der Primärskills bei Einzelwerten und Aufwertungen'''<br> '''Beachtung von Jugendförderung und Doppelpositionen'''<br> '''Warnung vor Ende 18 in letzer Periode und mehr am letzten ZAT'''<br> '''Reguläre Ausdrücke im @include''' | ||
|- bgcolor="#FFCC00" | |- bgcolor="#FFCC00" | ||
Zeile 48: | Zeile 42: | ||
// @name OS2.jugend | // @name OS2.jugend | ||
// @namespace http://os.ongapo.com/ | // @namespace http://os.ongapo.com/ | ||
// @version 0. | // @version 0.54+WE+ | ||
// @copyright 2013+ | // @copyright 2013+ | ||
// @author Sven Loges (SLC) / Andreas Eckes (Strindheim BK) | // @author Sven Loges (SLC) / Andreas Eckes (Strindheim BK) | ||
Zeile 124: | Zeile 118: | ||
'AltHotkey' : 'k', | 'AltHotkey' : 'k', | ||
'FormLabel' : "Prognose Einzelwerte" | 'FormLabel' : "Prognose Einzelwerte" | ||
}, | }, | ||
'zeigeBalken' : { // Spaltenauswahl fuer den Qualitaetsbalken des Talents (true = anzeigen, false = nicht anzeigen) | 'zeigeBalken' : { // Spaltenauswahl fuer den Qualitaetsbalken des Talents (true = anzeigen, false = nicht anzeigen) | ||
Zeile 224: | Zeile 130: | ||
'FormLabel' : "Balken Qualit\xE4t" | 'FormLabel' : "Balken Qualit\xE4t" | ||
}, | }, | ||
'absBalken' : { | 'absBalken' : { // Spaltenauswahl fuer den Guetebalken des Talents absolut statt nach Foerderung (true = absolut, false = relativ nach Foerderung) | ||
'Name' : "absBar", | 'Name' : "absBar", | ||
'Type' : __OPTTYPES.SW, | 'Type' : __OPTTYPES.SW, | ||
Zeile 585: | Zeile 491: | ||
'FreeValue' : true, | 'FreeValue' : true, | ||
'SelValue' : false, | 'SelValue' : false, | ||
'Choice' : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 | 'Choice' : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ], | ||
'Default' : | 'Default' : 12, | ||
'Action' : __OPTACTION.NXT, | 'Action' : __OPTACTION.NXT, | ||
'Label' : "Saison: $", | 'Label' : "Saison: $", | ||
Zeile 732: | Zeile 638: | ||
'Label' : "Aufwertungen:" | 'Label' : "Aufwertungen:" | ||
}, | }, | ||
' | 'zatAges' : { // Datenspeicher fuer (gebrochene) Alter der Jugendspieler | ||
'Name' : " | 'Name' : "zatAges", | ||
'Type' : __OPTTYPES.SD, | 'Type' : __OPTTYPES.SD, | ||
'Hidden' : true, | 'Hidden' : true, | ||
'Serial' : true, | 'Serial' : true, | ||
'AutoReset' : | 'AutoReset' : true, | ||
'Permanent' : true, | 'Permanent' : true, | ||
'Default' : [], | 'Default' : [], | ||
'Submit' : undefined, | 'Submit' : undefined, | ||
'Cols' : | 'Cols' : 36, | ||
'Rows' : | 'Rows' : 2, | ||
'Replace' : null, | 'Replace' : null, | ||
'Space' : 0, | 'Space' : 0, | ||
'Label' : " | 'Label' : "ZAT-Alter:" | ||
}, | }, | ||
'trainiert' : { // Datenspeicher fuer Trainingsquoten der Jugendspieler | |||
'Name' : "numProgresses", | |||
'trainiert' : { // Datenspeicher fuer Trainingsquoten der Jugendspieler | |||
'Name' : "numProgresses", | |||
'Type' : __OPTTYPES.SD, | 'Type' : __OPTTYPES.SD, | ||
'Hidden' : true, | 'Hidden' : true, | ||
Zeile 915: | Zeile 790: | ||
console.log, // [5] Log: Verbose | console.log, // [5] Log: Verbose | ||
console.log, // [6] Log: Very verbose | console.log, // [6] Log: Very verbose | ||
console. | console.log // [7] Log: Testing | ||
], | ], | ||
'init' : function(win, logLevel = 1) { | 'init' : function(win, logLevel = 1) { | ||
Zeile 3.952: | Zeile 3.827: | ||
// Optionen mit Daten, die ZAT- und Team-bezogen gemerkt werden... | // Optionen mit Daten, die ZAT- und Team-bezogen gemerkt werden... | ||
__TEAMCLASS.optSelect = { | __TEAMCLASS.optSelect = { | ||
'datenZat' | 'datenZat' : true, | ||
'oldDatenZat' | 'oldDatenZat' : true, | ||
'fingerprints' | 'fingerprints' : true, | ||
'birthdays' | 'birthdays' : true, | ||
'tClasses' | 'tClasses' : true, | ||
'progresses' | 'progresses' : true, | ||
'zatAges' : true, | |||
'trainiert' : true, | |||
'zatAges' | 'positions' : true, | ||
'trainiert' | 'skills' : true, | ||
'positions' | 'foerderung' : true | ||
'skills' | |||
'foerderung' | |||
}; | }; | ||
Zeile 4.034: | Zeile 3.907: | ||
// Erschafft die Spieler-Objekte und fuellt sie mit Werten | // Erschafft die Spieler-Objekte und fuellt sie mit Werten | ||
// | // reloadData: true = Teamuebersicht, false = Spielereinzelwerte | ||
function init(playerRows, optSet, colIdx, offsetUpper = 1, offsetLower = 0, reloadData = false) { | |||
storePlayerDataFromHTML(playerRows, optSet, colIdx, offsetUpper, offsetLower, reloadData); | |||
function init(playerRows, optSet, colIdx, offsetUpper = 1, offsetLower = 0, | |||
storePlayerDataFromHTML(playerRows, optSet, colIdx, offsetUpper, offsetLower, | |||
const __SAISON = getOptValue(optSet.saison); | const __SAISON = getOptValue(optSet.saison); | ||
Zeile 4.047: | Zeile 3.915: | ||
const __GEALTERT = ((__AKTZAT >= 72) ? (getIntFromHTML(playerRows[playerRows.length - offsetLower - 1].cells, colIdx.Age) < 13) : false); | const __GEALTERT = ((__AKTZAT >= 72) ? (getIntFromHTML(playerRows[playerRows.length - offsetLower - 1].cells, colIdx.Age) < 13) : false); | ||
const __CURRZAT = (__GEALTERT ? 0 : __AKTZAT); | const __CURRZAT = (__GEALTERT ? 0 : __AKTZAT); | ||
const __DONATION = getOptValue(optSet.foerderung); | const __DONATION = getOptValue(optSet.foerderung); | ||
const __BIRTHDAYS = getOptValue(optSet.birthdays, []); | const __BIRTHDAYS = getOptValue(optSet.birthdays, []); | ||
Zeile 4.057: | Zeile 3.923: | ||
const __POSITIONS = getOptValue(optSet.positions, []); | const __POSITIONS = getOptValue(optSet.positions, []); | ||
const __SKILLS = getOptValue(optSet.skills, []); | const __SKILLS = getOptValue(optSet.skills, []); | ||
const __BASEDATA = [ __BIRTHDAYS, __TCLASSES, __PROGRESSES ]; // fuer initPlayer | const __BASEDATA = [ __BIRTHDAYS, __TCLASSES, __PROGRESSES ]; // fuer initPlayer | ||
const __DATA = ( | const __DATA = (reloadData ? [ __BASEDATA, __SKILLS ] : [ __SKILLS, __BASEDATA ]); // fuer initPlayer: [0] = von HTML-Seite, [1] = aus gespeicherten Daten | ||
const __IDMAP = getPlayerIdMap(optSet); | const __IDMAP = getPlayerIdMap(optSet); | ||
const __CATIDS = __IDMAP.catIds; | const __CATIDS = __IDMAP.catIds; | ||
Zeile 4.066: | Zeile 3.931: | ||
__LOG[5](__IDMAP); | __LOG[5](__IDMAP); | ||
for (let i = offsetUpper, j = 0; i < playerRows.length - offsetLower; i++) { | for (let i = offsetUpper, j = 0; i < playerRows.length - offsetLower; i++, j++) { | ||
const __CELLS = playerRows[i].cells; | const __CELLS = playerRows[i].cells; | ||
const __LAND = getStringFromHTML(__CELLS, colIdx.Land); | |||
const __AGE = getIntFromHTML(__CELLS, colIdx.Age); | |||
const __ISGOALIE = isGoalieFromHTML(__CELLS, colIdx.Age); | |||
const __NEWPLAYER = new PlayerRecord(__LAND, __AGE, __ISGOALIE, __SAISON, __CURRZAT, __DONATION); | |||
__NEWPLAYER.initPlayer(__DATA[0], j, ! reloadData); | |||
const __IDX = selectPlayerIndex(__NEWPLAYER, j, __CATIDS); | |||
__NEWPLAYER.initPlayer(__DATA[1], __IDX, reloadData); | |||
__NEWPLAYER.prognoseSkills(); | |||
if (reloadData) { | |||
__NEWPLAYER.setZusatz(__ZATAGES[__IDX], __TRAINIERT[__IDX], __POSITIONS[__IDX]); | |||
} | |||
__PLAYERS[j] = __NEWPLAYER; | |||
} | } | ||
if ( | if (reloadData) { | ||
setPlayerData(__PLAYERS, optSet); | |||
} else { | |||
calcPlayerData(__PLAYERS, optSet); | calcPlayerData(__PLAYERS, optSet); | ||
} | } | ||
Zeile 4.136: | Zeile 3.994: | ||
// Berechnet die Identifikations-IDs (Fingerprints) der Spieler neu und speichert diese | // Berechnet die Identifikations-IDs (Fingerprints) der Spieler neu und speichert diese | ||
function storePlayerIds(players, optSet) { | function storePlayerIds(players, optSet) { | ||
const __FINGERPRINTS = []; | const __FINGERPRINTS = []; | ||
Zeile 4.153: | Zeile 4.009: | ||
// Sucht fuer den Spieler den Eintrag aus catIds heraus und gibt den (geloeschten) Index zurueck | // Sucht fuer den Spieler den Eintrag aus catIds heraus und gibt den (geloeschten) Index zurueck | ||
function selectPlayerIndex(player, index, catIds) { | function selectPlayerIndex(player, index, catIds) { | ||
const __MYCAT = player.getCat(); | const __MYCAT = player.getCat(); | ||
Zeile 4.172: | Zeile 4.024: | ||
// Speichtert die abgeleiteten Werte in den Spieler-Objekten | // Speichtert die abgeleiteten Werte in den Spieler-Objekten | ||
function setPlayerData(players, optSet) { | function setPlayerData(players, optSet) { | ||
const __ZATAGES = []; | const __ZATAGES = []; | ||
const __TRAINIERT = []; | const __TRAINIERT = []; | ||
Zeile 4.185: | Zeile 4.033: | ||
if (__ZUSATZ.zatAge !== undefined) { // braucht Geburtstag fuer gueltige Werte! | if (__ZUSATZ.zatAge !== undefined) { // braucht Geburtstag fuer gueltige Werte! | ||
__ZATAGES[i] = __ZUSATZ.zatAge; | |||
__ZATAGES[i] = __ZUSATZ.zatAge | |||
} | } | ||
__TRAINIERT[i] = __ZUSATZ.trainiert; | __TRAINIERT[i] = __ZUSATZ.trainiert; | ||
__POSITIONS[i] = __ZUSATZ.bestPos; | __POSITIONS[i] = __ZUSATZ.bestPos; | ||
} | } | ||
setOpt(optSet.zatAges, __ZATAGES, false); | setOpt(optSet.zatAges, __ZATAGES, false); | ||
setOpt(optSet.trainiert, __TRAINIERT, false); | setOpt(optSet.trainiert, __TRAINIERT, false); | ||
Zeile 4.208: | Zeile 4.045: | ||
// Berechnet die abgeleiteten Werte in den Spieler-Objekten neu und speichert diese | // Berechnet die abgeleiteten Werte in den Spieler-Objekten neu und speichert diese | ||
function calcPlayerData(players, optSet) { | function calcPlayerData(players, optSet) { | ||
const __ZATAGES = []; | const __ZATAGES = []; | ||
Zeile 4.219: | Zeile 4.054: | ||
if (__ZUSATZ.zatAge !== undefined) { // braucht Geburtstag fuer gueltige Werte! | if (__ZUSATZ.zatAge !== undefined) { // braucht Geburtstag fuer gueltige Werte! | ||
__ZATAGES[i] = __ZUSATZ.zatAge; | __ZATAGES[i] = __ZUSATZ.zatAge; | ||
} | } | ||
__TRAINIERT[i] = __ZUSATZ.trainiert; | __TRAINIERT[i] = __ZUSATZ.trainiert; | ||
__POSITIONS[i] = __ZUSATZ.bestPos; | __POSITIONS[i] = __ZUSATZ.bestPos; | ||
} | } | ||
Zeile 4.230: | Zeile 4.065: | ||
} | } | ||
// Ermittelt die | // Ermittelt die Werte in den Spieler-Objekten aus den Daten der Seite und speichert diese | ||
// | // reloadData: true = Teamuebersicht, false = Spielereinzelwerte | ||
function storePlayerDataFromHTML(playerRows, optSet, colIdx, offsetUpper = 1, offsetLower = 0, reloadData = false) { | |||
if (reloadData) { | |||
const __BIRTHDAYS = []; | |||
const __TCLASSES = []; | |||
const __PROGRESSES = []; | |||
function storePlayerDataFromHTML(playerRows, optSet, colIdx, offsetUpper = 1, offsetLower = 0, | |||
const | |||
for (let i = offsetUpper, j = 0; i < playerRows.length - offsetLower; i++, j++) { | |||
const __CELLS = playerRows[i].cells; | |||
__BIRTHDAYS[j] = getIntFromHTML(__CELLS, colIdx.Geb); | |||
__TCLASSES[j] = getTalentFromHTML(__CELLS, colIdx.Tal); | |||
__PROGRESSES[j] = getAufwertFromHTML(__CELLS, colIdx.Auf, getOptValue(optSet.shortAufw, true)); | |||
} | |||
setOpt(optSet.birthdays, __BIRTHDAYS, false); | |||
setOpt(optSet.tClasses, __TCLASSES, false); | |||
setOpt(optSet.progresses, __PROGRESSES, false); | |||
} else { | |||
const __SKILLS = []; | |||
for (let i = offsetUpper, j = 0; i < playerRows.length - offsetLower; i++, j++) { | |||
const __CELLS = playerRows[i].cells; | |||
__SKILLS[j] = getSkillsFromHTML(__CELLS, colIdx); | |||
} | |||
setOpt(optSet.skills, __SKILLS, false); | |||
} | |||
setOpt(optSet | |||
} | } | ||
} | } | ||
Zeile 4.290: | Zeile 4.101: | ||
} | } | ||
for (let i = offsetUpper, newVal, oldVal = formatFun | for (let i = offsetUpper, newVal, oldVal = formatFun(rows[i].cells[colIdxSort].textContent); i < rows.length - offsetLower - 1; i++, oldVal = newVal) { | ||
newVal = formatFun | newVal = formatFun(rows[i + 1].cells[colIdxSort].textContent); | ||
if (newVal !== oldVal) { | if (newVal !== oldVal) { | ||
for (let j = offsetLeft; j < rows[i].cells.length - offsetRight; j++) { | for (let j = offsetLeft; j < rows[i].cells.length - offsetRight; j++) { | ||
Zeile 4.322: | Zeile 4.133: | ||
this.colIdx = colIdx; | this.colIdx = colIdx; | ||
this.fpId = (__BIRTHDAYS && __TCLASSES && __POSITIONS && getValue(__SHOWCOL.zeigeId, __SHOWALL) && getOptValue(optSet.zeigeId)); | this.fpId = (__BIRTHDAYS && __TCLASSES && __POSITIONS && getValue(__SHOWCOL.zeigeId, __SHOWALL) && getOptValue(optSet.zeigeId)); | ||
this.bar = (__PROJECTION && getValue(__SHOWCOL.zeigeBalken, __SHOWALL) && getOptValue(optSet.zeigeBalken)); | this.bar = (__PROJECTION && getValue(__SHOWCOL.zeigeBalken, __SHOWALL) && getOptValue(optSet.zeigeBalken)); | ||
this.barAbs = getOptValue(optSet.absBalken); | this.barAbs = getOptValue(optSet.absBalken); | ||
Zeile 4.515: | Zeile 4.316: | ||
}, // Ende addTitles() | }, // Ende addTitles() | ||
'addValues' : function(player, playerRow, color = "#FFFFFF") { | 'addValues' : function(player, playerRow, color = "#FFFFFF") { | ||
const __IDXPRI = getIdxPriSkills(player.getPos()); | const __IDXPRI = getIdxPriSkills(player.getPos()); | ||
const __COLOR = | const __COLALERT = getColor('STU'); // rot | ||
const __COLOR = ((player.zatLeft < 1) ? __COLALERT : player.isGoalie ? getColor('TOR') : color); | |||
const __POS1COLOR = getColor((player.getPosPercent() > 99.99) ? 'LEI' : player.getPos()); | const __POS1COLOR = getColor((player.getPosPercent() > 99.99) ? 'LEI' : player.getPos()); | ||
const __OSBLAU = getColor(""); | const __OSBLAU = getColor(""); | ||
Zeile 4.560: | Zeile 4.358: | ||
this.addAndFillCell(playerRow, player.getAge(), __COLOR, null, 2); | this.addAndFillCell(playerRow, player.getAge(), __COLOR, null, 2); | ||
} | } | ||
if ( | if (player.zatLeft < 6) { // Abrechnungszeitraum vor dem letztmoeglichen Ziehen... | ||
formatCell(playerRow.cells[this.colIdx.Age], true, | formatCell(playerRow.cells[this.colIdx.Age], true, __COLALERT, null); | ||
} | } | ||
if (this.fix) { | if (this.fix) { | ||
Zeile 4.611: | Zeile 4.409: | ||
} | } | ||
// | // Werte mit Ende 18 | ||
if (this.colIdx.Einz) { | if (this.substSkills) { | ||
convertArrayFromHTML(playerRow.cells, this.colIdx.Einz, player.skillsEnd, function(value, cell, unused, index) { | |||
if (~ __IDXPRI.indexOf(index)) { | |||
formatCell(cell, true, __OSBLAU, __POS1COLOR); | |||
} | |||
return value; | |||
}); | |||
} else if (this.colIdx.Einz) { | |||
convertArrayFromHTML(playerRow.cells, this.colIdx.Einz, player.skills.length, function(value, cell, unused, index) { | |||
if (~ __IDXPRI.indexOf(index)) { | if (~ __IDXPRI.indexOf(index)) { | ||
formatCell(cell, true | formatCell(cell, true); | ||
} | } | ||
return value; | return value; | ||
}); | }); | ||
} | } | ||
if (this.trE) { | if (this.trE) { | ||
Zeile 4.670: | Zeile 4.466: | ||
} | } | ||
} | } | ||
} | } // Ende addValues(player, playerRow) | ||
}); | }); | ||
Zeile 4.723: | Zeile 4.508: | ||
// this.trainiert: Anzahl der erfolgreichen Trainingspunkte | // this.trainiert: Anzahl der erfolgreichen Trainingspunkte | ||
// indirekt this.zatAge und this.bestPos | // indirekt this.zatAge und this.bestPos | ||
// in this.getPos() definiert: | // in this.getPos() definiert: | ||
Zeile 4.768: | Zeile 4.549: | ||
return result; | return result; | ||
}, // Ende this.toString() | }, // Ende this.toString() | ||
'initPlayer' : function(data, index, | 'initPlayer' : function(data, index, skillData = false) { // skillData: true = Skilldaten, false = Basiswerte (Geb., Talent, Aufwertungen) | ||
if (data !== undefined) { | if (data !== undefined) { | ||
if ( | if (skillData) { | ||
this.setSkills(data[index]); | this.setSkills(data[index]); | ||
} else | } else { | ||
this.setGeb(data[0][index]); | this.setGeb(data[0][index]); | ||
this.talent = data[1][index]; | this.talent = data[1][index]; | ||
this.aufwert = data[2][index]; | this.aufwert = data[2][index]; | ||
} | } | ||
} | } | ||
}, // Ende this.initPlayer() | }, // Ende this.initPlayer() | ||
'setSkills' : function(skills) { | 'setSkills' : function(skills) { | ||
// Berechnet die Opti-Werte, sortiert das Positionsfeld und berechnet die Einzelskills mit Ende 18 | // Berechnet die Opti-Werte, sortiert das Positionsfeld und berechnet die Einzelskills mit Ende 18 | ||
Zeile 4.887: | Zeile 4.647: | ||
if (when === this.__TIME.end) { | if (when === this.__TIME.end) { | ||
return (18 - 12) * 72 - 1; // (max.) Trainings-ZATs bis Ende 18 | return (18 - 12) * 72 - 1; // (max.) Trainings-ZATs bis Ende 18 | ||
} else | } else { | ||
return this.zatAge; | return this.zatAge; | ||
} | } | ||
}, | }, | ||
Zeile 4.904: | Zeile 4.660: | ||
return this.zatLeft; | return this.zatLeft; | ||
}, | }, | ||
'getAge' : function(when = this.__TIME.now) { | 'getAge' : function(when = this.__TIME.now) { | ||
Zeile 5.130: | Zeile 4.877: | ||
}); | }); | ||
// | // Funktionen fuer die HTML-Seite ******************************************************* | ||
// Liest eine Zahl aus der Spalte einer Zeile der Tabelle aus (z.B. Alter, Geburtsdatum) | |||
// cells: Die Zellen einer Zeile | |||
// colIdxInt: Spaltenindex der gesuchten Werte | |||
// return Spalteneintrag als Zahl (-1 fuer "keine Zahl", undefined fuer "nicht gefunden") | |||
function getIntFromHTML(cells, colIdxInt) { | |||
const __CELL = getValue(cells[colIdxInt], { }); | |||
const __TEXT = __CELL.textContent; | |||
if (__TEXT !== undefined) { | |||
try { | |||
const __VALUE = parseInt(__TEXT, 10); | |||
if (! isNaN(__VALUE)) { | |||
return __VALUE; | |||
} | |||
} catch (ex) { } | |||
return -1; | |||
} | } | ||
return undefined; | |||
} | } | ||
// Liest eine Dezimalzahl aus der Spalte einer Zeile der Tabelle aus | |||
// cells: Die Zellen einer Zeile | |||
// colIdxInt: Spaltenindex der gesuchten Werte | |||
// return Spalteneintrag als Dezimalzahl (undefined fuer "keine Zahl" oder "nicht gefunden") | |||
function getFloatFromHTML(cells, colIdxFloat) { | |||
const __CELL = getValue(cells[colIdxFloat], { }); | |||
const __TEXT = __CELL.textContent; | |||
if (__TEXT !== undefined) { | |||
try { | |||
return parseFloat(__TEXT); | |||
} catch (ex) { } | |||
} | |||
return undefined; | |||
} | |||
// Liest einen String aus der Spalte einer Zeile der Tabelle aus | |||
// cells: Die Zellen einer Zeile | |||
// colIdxStr: Spaltenindex der gesuchten Werte | |||
// return Spalteneintrag als String ("" fuer "nicht gefunden") | |||
function getStringFromHTML(cells, colIdxStr) { | |||
const __CELL = getValue(cells[colIdxStr], { }); | |||
const __TEXT = __CELL.textContent; | |||
return getValue(__TEXT.toString(), ""); | |||
} | |||
// | // Liest die Talentklasse ("wenig", "normal", "hoch") aus der Spalte einer Zeile der Tabelle aus | ||
// cells: Die Zellen einer Zeile | |||
// colIdxStr: Spaltenindex der gesuchten Werte | |||
// return Talent als Zahl (-1=wenig, 0=normal, +1=hoch) | |||
function getTalentFromHTML(cells, colIdxTal) { | |||
const __TEXT = getStringFromHTML(cells, colIdxTal); | |||
return parseInt((__TEXT === 'wenig') ? -1 : (__TEXT === 'hoch') ? +1 : 0, 10); | |||
} | } | ||
// Liest die Einzelskills aus der Spalte einer Zeile der Tabelle aus | |||
// cells: Die Zellen einer Zeile | |||
// colIdx: Liste von Spaltenindices der gesuchten Werte mit den Eintraegen | |||
// 'Einz' (erste Spalte) und 'Zus' (Spalte hinter dem letzten Eintrag) | |||
// return Skills als Array von Zahlen | |||
function getSkillsFromHTML(cells, colIdx) { | |||
const __RESULT = []; | |||
for (let i = colIdx.Einz; i < colIdx.Zus; i++) { | |||
__RESULT[i - colIdx.Einz] = getIntFromHTML(cells, i); | |||
} | |||
return __RESULT; | |||
} | |||
// Liest aus, ob der Spieler Torwart oder Feldspieler ist | |||
// cells: Die Zellen einer Zeile | |||
// colIdxClass: Spaltenindex einer fuer TOR eingefaerbten Zelle | |||
// return Angabe, der Spieler Torwart oder Feldspieler ist | |||
function isGoalieFromHTML(cells, colIdxClass) { | |||
return (cells[colIdxClass].className === 'TOR'); | |||
} | |||
// Liest einen String aus der Spalte einer Zeile der Tabelle aus, nachdem dieser konvertiert wurde | |||
// cells: Die Zellen einer Zeile | |||
// colIdxStr: Spaltenindex der gesuchten Werte | |||
// convertFun: Funktion, die den Wert konvertiert | |||
// return Spalteneintrag als String ("" fuer "nicht gefunden") | |||
function convertStringFromHTML(cells, colIdxStr, convertFun = sameValue) { | |||
const __CELL = getValue(cells[colIdxStr], { }); | |||
const __TEXT = convertFun(__CELL.textContent, __CELL, colIdxStr, 0); | |||
if (__TEXT !== undefined) { | |||
__CELL.innerHTML = __TEXT; | |||
} | |||
return getValue(__TEXT.toString(), ""); | |||
} | |||
// Liest ein Array von String-Werten aus den Spalten ab einer Zeile der Tabelle aus, nachdem diese konvertiert wurden | |||
// cells: Die Zellen einer Zeile | |||
// colIdxArr: Erster Spaltenindex der gesuchten Werte | |||
// arrOrLength: Entweder ein Datenarray zum Fuellen oder die Anzahl der zu lesenden Werte | |||
// convertFun: Funktion, die die Werte konvertiert | |||
// return Array mit Spalteneintraegen als String ("" fuer "nicht gefunden") | |||
function convertArrayFromHTML(cells, colIdxArr, arrOrLength = 1, convertFun = sameValue) { | |||
const __ARR = ((typeof arrOrSize === 'number') ? { } : arrOrLength); | |||
const __LENGTH = getValue(__ARR.length, arrOrLength); | |||
const __RET = []; | |||
for (let index = 0, colIdx = colIdxArr; index < __LENGTH; index++, colIdx++) { | |||
const __CELL = getValue(cells[colIdx], { }); | |||
const __TEXT = convertFun(getValue(__ARR[index], __CELL.textContent), __CELL, colIdx, index); | |||
if (__TEXT !== undefined) { | |||
__CELL.innerHTML = __TEXT; | |||
} | |||
__RET.push(getValue(__TEXT, "").toString()); | |||
} | |||
} | |||
return __RET; | |||
} | } | ||
// Konvertiert den Aufwertungstext einer Zelle auf der Jugend-Teamuebersicht | |||
// value: Der Inhalt dieser Zeile ("+1 SKI +1 OPT" bzw. "+2 SKI) | |||
// cell: Zelle, in der der Text stand (optional) | |||
// return Der konvertierte String ("SKI OPT" bzw. "SKI SKI") | |||
function convertAufwertung(value, cell = undefined) { | |||
if (value !== undefined) { | |||
value = value.replace(/\+2 (\w+)/, "$1 $1").replace(/\+1 /g, ""); | |||
if (cell) { | |||
if (cell.className === 'TOR') { | |||
value = convertGoalieSkill(value); | |||
} | } | ||
cell.align = 'left'; | |||
} | |||
} | } | ||
return | return value; | ||
} | } | ||
// | // Formatiert eine Zelle um (mit einfachen Parametern) | ||
// | // cell: Zu formatierende Zelle | ||
// | // bold: Inhalt fett darstellen (true = ja, false = nein) | ||
// return | // color: Falls angegeben, die Schriftfarbe | ||
function | // bgColor: Falls angegeben, die Hintergrundfarbe | ||
// return Die formatierte Zelle | |||
function formatCell(cell, bold = true, color = undefined, bgColor = undefined) { | |||
if (cell) { | |||
if (bold) { | |||
cell.style.fontWeight = 'bold'; | |||
} | |||
} | if (color) { | ||
cell.style.color = color; | |||
} | |||
if (bgColor) { | |||
cell.style.backgroundColor = bgColor; | |||
} | |||
} | } | ||
return | return cell; | ||
} | } | ||
// | // Konvertiert die allgemeinen Skills in die eines Torwarts | ||
// | // value: Ein Text, der die Skillnamen enthaelt | ||
// return Der konvertierte String mit Aenderungen (z.B. "FAN" statt "KOB") oder unveraendert | |||
// return | function convertGoalieSkill(value) { | ||
function | if (value !== undefined) { | ||
value = value.replace(/\w+/g, getGoalieSkill); | |||
} | |||
return | return value; | ||
} | } | ||
// | // Konvertiert einen Aufwertungstext fuer einen Skillnamen in den fuer einen Torwart | ||
// | // name: Allgemeiner Skillname (abgeleitet von den Feldspielern) | ||
// return Der konvertierte String (z.B. "FAN" statt "KOB") oder unveraendert | |||
// return | function getGoalieSkill(name) { | ||
function | const __GOALIESKILLS = { | ||
const | 'SCH' : 'ABS', | ||
'BAK' : 'STS', | |||
'KOB' : 'FAN', | |||
'ZWK' : 'STB', | |||
'DEC' : 'SPL', | |||
'GES' : 'REF' | |||
}; | |||
return | return getValue(__GOALIESKILLS[name], name); | ||
} | } | ||
// Liest die | // Liest die Aufwertungen eines Spielers aus und konvertiert je nachdem, ob der Spieler Torwart oder Feldspieler ist | ||
// cells: Die Zellen einer Zeile | // cells: Die Zellen einer Zeile | ||
// | // colIdxAuf: Spaltenindex der gesuchten Aufwertungen | ||
// | // shortForm: true = abgekuerzt, false = Originalform | ||
function | // return Konvertierte Aufwertungen (kurze oder lange Form, aber in jedem Fall fuer Torwart konvertiert) | ||
const | function getAufwertFromHTML(cells, colIdxAuf, shortForm = true) { | ||
const __ISGOALIE = isGoalieFromHTML(cells, colIdxAuf); | |||
return convertStringFromHTML(cells, colIdxAuf, (shortForm ? convertAufwertung : __ISGOALIE ? convertGoalieSkill : undefined)); | |||
} | |||
// Identitaetsfunktion. Konvertiert nichts, sondern liefert einfach den Wert zurueck | |||
// value: Der uebergebene Wert | |||
// return Derselbe Wert | |||
function sameValue(value) { | |||
return value; | |||
} | } | ||
// | // Liefert den ganzzeiligen Anteil einer Zahl zurueck, indem alles hinter einem Punkt abgeschnitten wird | ||
// | // value: Eine uebergebene Dezimalzahl | ||
// | // return Der ganzzeilige Anteil dieser Zahl | ||
function floorValue(value, dot = '.') { | |||
if ((value === 0) || (value && isFinite(value))) { | |||
const __VALUE = value.toString(); | |||
const __INDEXDOT = (__VALUE ? __VALUE.indexOf(dot) : -1); | |||
return Number((~ __INDEXDOT) ? __VALUE.substring(0, __INDEXDOT) : __VALUE); | |||
} else { | |||
return value; | |||
} | } | ||
} | } | ||
// | // Liefert einen rechtsbuendigen Text zurueck, der links aufgefuellt wird | ||
// | // value: Ein uebergebener Wert | ||
// | // size: Zielbreite (clipping fuer < 0: Abschneiden, falls zu lang) | ||
// return | // char: Zeichen zum Auffuellen | ||
function | // return Ein String, der mindestens |size| lang ist (oder genau, falls size < 0, also clipping) | ||
function padLeft(value, size = 4, char = ' ') { | |||
const __SIZE = Math.abs(size); | |||
const __CLIP = (size < 0); | |||
const __VALUE = (value ? value.toString() : ""); | |||
let i = __VALUE.length; | |||
let str = ""; | |||
while (i < __SIZE) { | |||
str += char; | |||
i += char.length; | |||
} | } | ||
str = ((i > __SIZE) ? str.slice(0, __SIZE - __VALUE.length - 1) : str) + __VALUE; | |||
return | return (__CLIP ? str.slice(size) : str); | ||
} | } | ||
// | // Liefert eine rechtsbuendigen Zahl zurueck, der links (mit Nullen) aufgefuellt wird | ||
// | // value: Eine uebergebene Zahl | ||
// | // size: Zielbreite (Default: 2) | ||
// | // char: Zeichen zum Auffuellen (Default: '0') | ||
// | // forceClip: Abschneiden erzwingen, falls zu lang? | ||
// return | // return Eine Zahl als String, der mindestens 'size' lang ist (oder genau, falls size < 0, also clipping) | ||
function | function padNumber(value, size = 2, char = '0') { | ||
if ((value === 0) || (value && isFinite(value))) { | |||
return padLeft(value, size, char); | |||
} else { | |||
return value; | |||
} | |||
} | |||
// Hilfsfunktionen ********************************************************************** | |||
// Sortiert das Positionsfeld per BubbleSort | |||
function sortPositionArray(array) { | |||
const __TEMP = []; | |||
let transposed = true; | |||
// TOR soll immer die letzte Position im Feld sein, deshalb - 1 | |||
let length = array.length - 1; | |||
while (transposed && (length > 1)) { | |||
transposed = false; | |||
for (let i = 0; i < length - 1; i++) { | |||
// Vergleich Opti-Werte: | |||
if (array[i][1] < array[i + 1][1]) { | |||
// vertauschen | |||
__TEMP[0] = array[i][0]; | |||
__TEMP[1] = array[i][1]; | |||
// | array[i][0] = array[i + 1][0]; | ||
// | array[i][1] = array[i + 1][1]; | ||
array[i + 1][0] = __TEMP[0]; | |||
array[i + 1][1] = __TEMP[1]; | |||
transposed = true; | |||
} | } | ||
} | } | ||
length--; | |||
} | } | ||
} | } | ||
// | // Fuegt in die uebergebene Zahl Tausender-Trennpunkte ein | ||
// | // Wandelt einen etwaig vorhandenen Dezimalpunkt in ein Komma um | ||
function getNumberString(numberString) { | |||
function | if (numberString.lastIndexOf('.') !== -1) { | ||
if ( | // Zahl enthaelt Dezimalpunkt | ||
const __VORKOMMA = numberString.substring(0, numberString.lastIndexOf('.')); | |||
const __NACHKOMMA = numberString.substring(numberString.lastIndexOf('.') + 1, numberString.length); | |||
return getNumberString(__VORKOMMA) + ',' + __NACHKOMMA; | |||
} | } else { | ||
// Kein Dezimalpunkt, fuege Tausender-Trennpunkte ein: | |||
// String umdrehen, nach jedem dritten Zeichen Punkt einfuegen, dann wieder umdrehen: | |||
const __TEMP = reverseString(numberString); | |||
let result = ""; | |||
for (let i = 0; i < __TEMP.length; i++) { | |||
if ((i > 0) && (i % 3 === 0)) { | |||
result += '.'; | |||
} | |||
result += __TEMP.substr(i, 1); | |||
} | |||
return reverseString(result); | |||
} | |||
} | } | ||
// | // Dreht den uebergebenen String um | ||
function reverseString(string) { | |||
let result = ""; | |||
for (let i = string.length - 1; i >= 0; i--) { | |||
result += string.substr(i, 1); | |||
} | |||
return | return result; | ||
} | } | ||
// | // Schaut nach, ob der uebergebene Index zu einem trainierbaren Skill gehoert | ||
// Die Indizes gehen von 0 (SCH) bis 16 (EIN) | |||
// | function isTrainableSkill(idx) { | ||
function | const __TRAINABLESKILLS = getIdxTrainableSkills(); | ||
const __IDX = parseInt(idx, 10); | |||
} | let result = false; | ||
for (let idxTrainable of __TRAINABLESKILLS) { | |||
if (__IDX === idxTrainable) { | |||
result = true; | |||
break; | |||
} | |||
} | |||
return result; | |||
return | |||
} | } | ||
// | // Gibt alle Skill-Namen zurueck | ||
function getAllSkillNames(isGoalie = false) { | |||
if (isGoalie) { | |||
function | return [ 'ABS', 'STS', 'FAN', 'STB', 'SPL', 'REF', 'FUQ', 'ERF', 'AGG', 'PAS', 'AUS', 'UEB', 'WID', 'SEL', 'DIS', 'ZUV', 'EIN' ]; | ||
if ( | |||
return | |||
} else { | } else { | ||
return | return [ 'SCH', 'BAK', 'KOB', 'ZWK', 'DEC', 'GES', 'FUQ', 'ERF', 'AGG', 'PAS', 'AUS', 'UEB', 'WID', 'SEL', 'DIS', 'ZUV', 'EIN' ]; | ||
} | } | ||
} | } | ||
// | // Gibt den Skill-Namen zu einem Index zurueck | ||
function getSkillName(idx, isGoalie = false) { | |||
const __ALLNAMES = getAllSkillNames(isGoalie); | |||
function | |||
const | |||
return __ALLNAMES[idx]; | |||
} | |||
return ( | // Gibt den Skill-Namen zu einem Index-Array zurueck | ||
function getSkillNameArray(idxArr, isGoalie = false) { | |||
return (idxArr ? idxArr.map(function(item) { | |||
return getSkillName(item, isGoalie); | |||
}) : idxArr); | |||
} | } | ||
// | // Gibt die Indizes aller Skills zurueck | ||
function getIdxAllSkills() { | |||
return [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ]; | |||
} | } | ||
// | // Gibt die Indizes der trainierbaren Skills zurueck | ||
function getIdxTrainableSkills() { | |||
return [ 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 15 ]; | |||
} | |||
// Gibt die Indizes der Fixskills zurueck | |||
function getIdxFixSkills() { | |||
return [ 6, 7, 12, 13, 14, 16 ]; | |||
} | |||
// Gibt die Indizes der Fixskills zurueck | |||
function getIdxFixSkills() { | |||
return [ 6, 7, 12, 13, 14, 16 ]; | |||
} | |||
// Gibt die Indizes der Primaerskills zurueck | // Gibt die Indizes der Primaerskills zurueck | ||
Zeile 6.036: | Zeile 5.538: | ||
// color: Falls angegeben, die Schriftfarbe | // color: Falls angegeben, die Schriftfarbe | ||
// bgColor: Falls angegeben, die Hintergrundfarbe | // bgColor: Falls angegeben, die Hintergrundfarbe | ||
// return Die formatierte Zelle | // return Die formatierte Zelle | ||
function formatCell(cell, bold = true, color = undefined, bgColor | function formatCell(cell, bold = true, color = undefined, bgColor = undefined) { | ||
if (cell) { | if (cell) { | ||
if (bold) { | if (bold) { | ||
Zeile 6.048: | Zeile 5.549: | ||
if (bgColor) { | if (bgColor) { | ||
cell.style.backgroundColor = bgColor; | cell.style.backgroundColor = bgColor; | ||
} | } | ||
} | } | ||
Zeile 6.237: | Zeile 5.735: | ||
return buildOptions(__OPTCONFIG, __OPTSET, { | return buildOptions(__OPTCONFIG, __OPTSET, { | ||
'teamParams' : __TEAMPARAMS, | 'teamParams' : __TEAMPARAMS, | ||
'hideMenu' : true | |||
'hideMenu' : true | |||
}).then(async optSet => { | }).then(async optSet => { | ||
const __ZATCELL = getProp(getProp(getRows(0), 2), 'cells', { })[0]; | const __ZATCELL = getProp(getProp(getRows(0), 2), 'cells', { })[0]; | ||
Zeile 6.267: | Zeile 5.754: | ||
__LOG[2](__LOG.changed(__DATAZAT, __CURRZAT)); | __LOG[2](__LOG.changed(__DATAZAT, __CURRZAT)); | ||
// ... und ZAT-bezogene Daten als veraltet markieren (ausser 'skills' | // ... und ZAT-bezogene Daten als veraltet markieren (ausser 'skills' und 'positions') | ||
await __TEAMCLASS.deleteOptions({ | await __TEAMCLASS.deleteOptions({ | ||
'skills' : true, | 'skills' : true, | ||
'positions' : true, | 'positions' : true, | ||
'datenZat' : true, | 'datenZat' : true, | ||
'oldDatenZat' : true | 'oldDatenZat' : true | ||
}).catch(defaultCatch); | }).catch(defaultCatch); | ||
Zeile 6.280: | Zeile 5.766: | ||
} | } | ||
} | } | ||
}); | }); | ||
} | } | ||
Zeile 6.298: | Zeile 5.776: | ||
'getDonation' : true, | 'getDonation' : true, | ||
'showForm' : { | 'showForm' : { | ||
'foerderung | 'foerderung' : true, | ||
'showForm' : true | |||
'showForm' | |||
} | } | ||
}); | }); | ||
Zeile 6.337: | Zeile 5.808: | ||
'menuAnchor' : getTable(0, 'div'), | 'menuAnchor' : getTable(0, 'div'), | ||
'showForm' : { | 'showForm' : { | ||
'kennzeichenEnde' | 'kennzeichenEnde' : true, | ||
'shortAufw' | 'shortAufw' : true, | ||
'sepStyle' | 'sepStyle' : true, | ||
'sepColor' | 'sepColor' : true, | ||
'sepWidth' | 'sepWidth' : true, | ||
'saison' | 'saison' : true, | ||
'aktuellerZat' | 'aktuellerZat' : true, | ||
'foerderung' | 'foerderung' : true, | ||
'team' | 'team' : true, | ||
' | 'zeigeBalken' : true, | ||
' | 'absBalken' : true, | ||
'zeigeId' : true, | |||
'ersetzeAlter' : true, | |||
'zeigeAlter' : true, | |||
'zeigeQuote' : true, | |||
'zeigePosition' : true, | |||
'zeigeZatDone' : true, | |||
'zeigeZatLeft' : true, | |||
' | 'zeigeFixSkills' : true, | ||
'zeigeTrainiert' : true, | |||
'ersetzeAlter' | 'zeigeAnteilPri' : true, | ||
'zeigeAlter' | 'zeigeAnteilSec' : true, | ||
'zeigeQuote' | 'zeigePrios' : true, | ||
'zeigePosition' | 'zeigeSkill' : true, | ||
'zeigeZatDone' | 'anzahlOpti' : true, | ||
'zeigeZatLeft' | 'anzahlMW' : true, | ||
'zeigeFixSkills' | 'zeigeTrainiertEnde' : true, | ||
'zeigeTrainiert' | 'zeigeAnteilPriEnde' : true, | ||
'zeigeAnteilPri' | 'zeigeAnteilSecEnde' : true, | ||
'zeigeAnteilSec' | 'zeigePriosEnde' : true, | ||
'zeigePrios' | 'zeigeSkillEnde' : true, | ||
'anzahlOpti' | 'anzahlOptiEnde' : true, | ||
'anzahlMW' | 'anzahlMWEnde' : true, | ||
'zeigeTrainiertEnde' | 'zatAges' : true, | ||
'zeigeAnteilPriEnde' | 'trainiert' : true, | ||
'zeigeAnteilSecEnde' | 'positions' : true, | ||
'zeigePriosEnde' | 'skills' : true, | ||
'zeigeSkillEnde' | 'reset' : true, | ||
'anzahlOptiEnde' | 'showForm' : true | ||
'anzahlMWEnde' | |||
'zatAges' | |||
'trainiert' | |||
'positions' | |||
'skills' | |||
'reset' | |||
'showForm' | |||
}, | }, | ||
'formWidth' : 1 | 'formWidth' : 1 | ||
Zeile 6.391: | Zeile 5.854: | ||
const __TITLECOLOR = getColor('LEI'); // "#FFFFFF" | const __TITLECOLOR = getColor('LEI'); // "#FFFFFF" | ||
const __PLAYERS = init(__ROWS, __OPTSET, __COLUMNINDEX, __ROWOFFSETUPPER, __ROWOFFSETLOWER, | const __PLAYERS = init(__ROWS, __OPTSET, __COLUMNINDEX, __ROWOFFSETUPPER, __ROWOFFSETLOWER, true); | ||
const __COLMAN = new ColumnManager(__OPTSET, __COLUMNINDEX, { | const __COLMAN = new ColumnManager(__OPTSET, __COLUMNINDEX, { | ||
'Default' : true, | 'Default' : true, | ||
Zeile 6.403: | Zeile 5.866: | ||
__COLMAN.addTitles(__HEADERS, __TITLECOLOR); | __COLMAN.addTitles(__HEADERS, __TITLECOLOR); | ||
for (let i | for (let i = 0; i < __PLAYERS.length; i++) { | ||
__COLMAN.addValues(__PLAYERS[i], __ROWS[i + __ROWOFFSETUPPER], __TITLECOLOR); | |||
} | } | ||
// Format der Trennlinie zwischen den | // Format der Trennlinie zwischen den Monaten... | ||
const __BORDERSTRING = getOptValue(__OPTSET.sepStyle) + ' ' + getOptValue(__OPTSET.sepColor) + ' ' + getOptValue(__OPTSET.sepWidth); | |||
separateGroups(__ROWS, __BORDERSTRING, __COLUMNINDEX.Age, __ROWOFFSETUPPER, __ROWOFFSETLOWER, -1, 0, floorValue); | |||
}); | }); | ||
} | } | ||
} | } | ||
Zeile 6.450: | Zeile 5.883: | ||
const __ROWOFFSETLOWER = 0; | const __ROWOFFSETLOWER = 0; | ||
const __COLUMNINDEX = { | const __COLUMNINDEX = { | ||
'Flg' : 0, | 'Flg' : 0, | ||
'Land' : 1, | 'Land' : 1, | ||
'U' : 2 | 'U' : 2, | ||
'Age' : 3, | |||
'Age' : | 'Einz' : 4, // ab hier die Einzelskills | ||
'Einz' : | 'SCH' : 4, | ||
'SCH' : | 'ABS' : 4, // TOR | ||
'ABS' : | 'BAK' : 5, | ||
'BAK' : | 'STS' : 5, // TOR | ||
'STS' : | 'KOB' : 6, | ||
'KOB' : | 'FAN' : 6, // TOR | ||
'FAN' : | 'ZWK' : 7, | ||
'ZWK' : | 'STB' : 7, // TOR | ||
'STB' : | 'DEC' : 8, | ||
'DEC' : | 'SPL' : 8, // TOR | ||
'SPL' : | 'GES' : 9, | ||
'GES' : | 'REF' : 9, // TOR | ||
'REF' : | 'FUQ' : 10, | ||
'FUQ' : | 'ERF' : 11, | ||
'ERF' : | 'AGG' : 12, | ||
'AGG' : | 'PAS' : 13, | ||
'PAS' : | 'AUS' : 14, | ||
'AUS' : | 'UEB' : 15, | ||
'UEB' : | 'WID' : 16, | ||
'WID' : | 'SEL' : 17, | ||
'SEL' : | 'DIS' : 18, | ||
'DIS' : | 'ZUV' : 19, | ||
'ZUV' : | 'EIN' : 20, | ||
'EIN' : | 'Zus' : 21 // Zusaetze hinter den Einzelskills | ||
'Zus' : | |||
}; | }; | ||
Zeile 6.489: | Zeile 5.921: | ||
'menuAnchor' : getTable(0, 'div'), | 'menuAnchor' : getTable(0, 'div'), | ||
'hideForm' : { | 'hideForm' : { | ||
'zatAges' : true, | |||
'trainiert' : true, | |||
'positions' : true, | |||
'skills' : true, | |||
'shortAufw' : true | |||
'zatAges' | |||
'trainiert' | |||
'positions' | |||
'skills' | |||
'shortAufw' | |||
}, | }, | ||
'formWidth' : 1 | 'formWidth' : 1 | ||
Zeile 6.508: | Zeile 5.933: | ||
const __TITLECOLOR = getColor('LEI'); // "#FFFFFF" | const __TITLECOLOR = getColor('LEI'); // "#FFFFFF" | ||
const __PLAYERS = init(__ROWS, __OPTSET, __COLUMNINDEX, __ROWOFFSETUPPER, __ROWOFFSETLOWER, | const __PLAYERS = init(__ROWS, __OPTSET, __COLUMNINDEX, __ROWOFFSETUPPER, __ROWOFFSETLOWER, false); | ||
const __COLMAN = new ColumnManager(__OPTSET, __COLUMNINDEX, true); | const __COLMAN = new ColumnManager(__OPTSET, __COLUMNINDEX, true); | ||
__COLMAN.addTitles(__HEADERS, __TITLECOLOR); | __COLMAN.addTitles(__HEADERS, __TITLECOLOR); | ||
for (let i | for (let i = 0; i < __PLAYERS.length; i++) { | ||
__COLMAN.addValues(__PLAYERS[i], __ROWS[i + __ROWOFFSETUPPER], __TITLECOLOR); | |||
} | } | ||
// Format der Trennlinie zwischen den | // Format der Trennlinie zwischen den Monaten... | ||
const __BORDERSTRING = getOptValue(__OPTSET.sepStyle) + ' ' + getOptValue(__OPTSET.sepColor) + ' ' + getOptValue(__OPTSET.sepWidth); | |||
separateGroups(__ROWS, __BORDERSTRING, __COLUMNINDEX.Age, __ROWOFFSETUPPER, __ROWOFFSETLOWER, -1, 0, floorValue); | |||
}); | }); | ||
} | } | ||
} | } | ||
Zeile 6.652: | Zeile 5.957: | ||
// page=1: Teamuebersicht | // page=1: Teamuebersicht | ||
// page=2: Spielereinzelwerte | // page=2: Spielereinzelwerte | ||
// page=3 | // page=3: Optionen | ||
// Verzweige in unterschiedliche Verarbeitungen je nach Wert von page: | // Verzweige in unterschiedliche Verarbeitungen je nach Wert von page: | ||
Zeile 6.663: | Zeile 5.967: | ||
case 1 : await procTeamuebersicht().catch(defaultCatch); break; | case 1 : await procTeamuebersicht().catch(defaultCatch); break; | ||
case 2 : await procSpielereinzelwerte().catch(defaultCatch); break; | case 2 : await procSpielereinzelwerte().catch(defaultCatch); break; | ||
case 3 | case 3 : await procOptionen().catch(defaultCatch); break; | ||
default : break; | default : break; | ||
} | } |