Optimiert die Spieleranzahl-Berechnung im MatchReportApiDialog, um die Braunschweiger Regel zu berücksichtigen. Implementiert die Methode getEffectivePlayerCount, die die Spieleranzahl für 2er-Mannschaften als 3 zählt. Aktualisiert die Logik zur Überprüfung der verfügbaren Spieler für Positionen und verbessert die Benutzeroberfläche durch präzisere Rückmeldungen.
This commit is contained in:
@@ -735,8 +735,8 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr
|
||||
|
||||
// Spezielle Behandlung für Braunschweiger System
|
||||
if (matrixConfig && typeof matrixConfig === 'object' && matrixConfig.matrices) {
|
||||
const homePlayerCount = this.getSelectedPlayerCount('home');
|
||||
const guestPlayerCount = this.getSelectedPlayerCount('guest');
|
||||
const homePlayerCount = this.getEffectivePlayerCount('home');
|
||||
const guestPlayerCount = this.getEffectivePlayerCount('guest');
|
||||
|
||||
// Erstelle Key basierend auf Spielerzahlen (z.B. "3-4", "4-4")
|
||||
const playerCountKey = `${homePlayerCount}-${guestPlayerCount}`;
|
||||
@@ -750,6 +750,7 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr
|
||||
// Standard-Verhalten für andere Systeme
|
||||
return matrixConfig || [];
|
||||
},
|
||||
|
||||
// Prüfe ob das Match bereits abgeschlossen ist
|
||||
isMatchCompleted() {
|
||||
return this.match && this.match.isCompleted === true;
|
||||
@@ -761,6 +762,20 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr
|
||||
this.initializeFinalPins();
|
||||
},
|
||||
methods: {
|
||||
// Effektive Spieleranzahl (berücksichtigt Braunschweiger-Regel)
|
||||
getEffectivePlayerCount(team) {
|
||||
const actualCount = this.getSelectedPlayerCount(team);
|
||||
const playMode = this.getPlayMode();
|
||||
|
||||
// Spezieller Fall für Braunschweiger System: 2er-Mannschaften werden als 3er-Mannschaften gewertet
|
||||
if (playMode && playMode.toLowerCase().includes('braunschweiger') && actualCount === 2) {
|
||||
console.log(`🎯 Braunschweiger System: ${team} hat ${actualCount} Spieler, wird als 3er-Mannschaft gewertet`);
|
||||
return 3;
|
||||
}
|
||||
|
||||
return actualCount;
|
||||
},
|
||||
|
||||
// Methoden für Abschluss-Seite
|
||||
getHomeDoublePairs() {
|
||||
if (!this.results || this.results.length === 0) return [];
|
||||
@@ -1577,6 +1592,20 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr
|
||||
const key = team === 'home' ? 'teamLineupHomePlayers' : 'teamLineupGuestPlayers';
|
||||
const list = (this.meetingDetails && this.meetingDetails[key]) ? this.meetingDetails[key] : [];
|
||||
|
||||
// Prüfe zuerst, ob überhaupt genügend Spieler für diese Position vorhanden sind
|
||||
const selectedPlayers = list.filter(p => p.isSelected);
|
||||
|
||||
// Für Braunschweiger System: 2er-Mannschaften werden als 3er-Mannschaften gewertet
|
||||
let effectivePlayerCount = selectedPlayers.length;
|
||||
const playMode = this.getPlayMode();
|
||||
if (playMode && playMode.toLowerCase().includes('braunschweiger') && selectedPlayers.length === 2) {
|
||||
effectivePlayerCount = 3;
|
||||
}
|
||||
|
||||
if (effectivePlayerCount < rank) {
|
||||
// Nicht genügend Spieler für diese Position → Position bleibt leer
|
||||
return '';
|
||||
}
|
||||
|
||||
// Suche nach Spieler mit entsprechender Position
|
||||
// Zuerst nach A1, A2, etc. in positions Array (für Standard-Aufstellungen)
|
||||
@@ -1589,21 +1618,18 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr
|
||||
|
||||
// Falls immer noch nicht gefunden, nach Reihenfolge in der Liste der ausgewählten Spieler
|
||||
if (!player) {
|
||||
const selectedPlayers = list.filter(p => p.isSelected);
|
||||
// Sortiere nach der Reihenfolge, in der sie in der UI angezeigt werden
|
||||
// (zuerst die mit Positionen, dann die ohne)
|
||||
// Da wir bereits oben geprüft haben, dass genügend Spieler vorhanden sind,
|
||||
// können wir sicher den entsprechenden Spieler verwenden
|
||||
const sortedPlayers = selectedPlayers.sort((a, b) => {
|
||||
const aPos = (a.positions && a.positions.length > 0) ? a.positions[0] : 'Z';
|
||||
const bPos = (b.positions && b.positions.length > 0) ? b.positions[0] : 'Z';
|
||||
return aPos.localeCompare(bPos);
|
||||
});
|
||||
|
||||
// Verwende modulo, um bei mehr Positionen als Spielern zu zirkulieren
|
||||
const playerIndex = (rank - 1) % sortedPlayers.length;
|
||||
player = sortedPlayers[playerIndex];
|
||||
player = sortedPlayers[rank - 1];
|
||||
}
|
||||
|
||||
if (!player) return token;
|
||||
if (!player) return '';
|
||||
const result = [player.firstname || player.firstName || '', player.lastname || player.lastName || ''].filter(Boolean).join(' ').trim();
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user