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:
Torsten Schulz (local)
2025-10-04 00:45:45 +02:00
parent e354d82969
commit fd82efdcee

View File

@@ -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;
}