Ergebnisanzeige, Spielerstatistik, und die Spielfolge bleibt schmal

Drei weitere Punkte aus dem Review.

1. ERGEBNISANZEIGE BEI SAETZEN. Im Spielbericht stand je Spiel NUR ergebnis_detailliert. Bei
reinem „Mehrere" ist das derselbe Satzstand — bei Erfassung je Satz sind es die Saetze, und
dann fehlte, wer das Spiel gewonnen hat. Gemessen: die Zeilen lasen „6:3 | 3:6" ohne jede
Angabe des Standes. Jetzt steht der Stand davor und die Saetze in Klammern dahinter:
„1:1 (6:3 | 3:6)", „2:1 (6:3 | 3:6 | 6:4)". Wo beides dasselbe ist („Einer", oder „Mehrere"
ohne Satzerfassung), bleibt es einzeilig — gegengeprueft an einer Begegnung aus der
Einer-Zeit: unveraendert „6:3", nichts doppelt. Ein nicht gespieltes Spiel bleibt leer und
zeigt kein „0:0".

2. SPIELERSTATISTIK. Die Spalten „T +/-" summieren teamspiel_*_punkte, zaehlen also je
punktetyp Tore oder gewonnene Saetze — hiessen aber immer „Tore". Anders als in der Tabelle
gibt es hier nicht einen Modus: eine Bestenliste kann mehrere Wettbewerbe umfassen, sogar
Individualwettbewerbe. spielerstatistikEinheit() liest deshalb den punktetyp der speisenden
Wettbewerbe; sind sie einig, steht die richtige Einheit, sonst „Punkte" — statt eine zu
behaupten, die nicht fuer alle Zeilen gilt. Neuer Schluessel COM_SPORTSMANAGER_SETS_SHORTCUT
in beiden Sprachen. Alle drei Faelle gemessen: nur „Mehrere" -> „S +/-" mit „Saetze",
gemischt -> „P +/-" mit „Punkte", zurueck -> wieder „S".

Und der Tooltip der Tabellenspalte hiess COM_SPORTSMANAGER_DIFFERENCE = „Differenz Tore",
widersprach also der neuen Beschriftung „Saetze". Er nennt jetzt nur die Rechenart
(„Differenz"), wie sein Geschwister „Verhaeltnis" schon immer; die Einheit steht in der
Spalte. Einzige Verwendungsstelle.

3. SPIELFOLGE. Die sechs Auswahlfelder der Spielfolge und der Verknuepfungen stehen wieder
auf medium — sie tragen kurze Werte und sollten nicht mitwachsen. Breit bleiben nur die 33
Felder der Einstellungen, wo die langen Beschriftungen stehen.
This commit is contained in:
svennickel
2026-09-07 18:01:58 +02:00
parent 099174c0ef
commit 84211e9f9e
5 changed files with 67 additions and 16 deletions
@@ -7786,6 +7786,31 @@ function turniervoranmeldungen(): void
administrationFooter(); administrationFooter();
} }
/// Die Einheit der Spalten „T +/-" einer Bestenliste: 0 = Tore, 1 = Saetze, null = gemischt
/// oder unbekannt. Die Werte sind die Summe der teamspiel_*_punkte, und die zaehlen je
/// punktetyp Tore oder gewonnene Saetze. Eine Bestenliste kann mehrere Wettbewerbe umfassen —
/// dann gibt es keine gemeinsame Einheit.
function spielerstatistikEinheit($bestenliste_id): ?int
{
$db = getDatabase();
$query = "SELECT DISTINCT punktetyp"
. "\n FROM #__sportsmanager_bestenliste_veranstaltung"
. "\n INNER JOIN #__sportsmanager_veranstaltung USING (veranstaltung_id)"
. "\n INNER JOIN #__sportsmanager_teamspiel_modus ON teamspiel_modus_id = modus_id"
. "\n WHERE bestenliste_id = " . (int)$bestenliste_id;
$rows = loadObjectList($db, $query);
if (count($rows) != 1) {
return null;
}
// Individualwettbewerbe kennen keinen punktetyp; sind welche dabei, ist die Einheit offen.
$query = "SELECT COUNT(*) FROM #__sportsmanager_bestenliste_individualwettbewerb"
. "\n WHERE bestenliste_id = " . (int)$bestenliste_id;
if (!empty(loadResult($db, $query))) {
return null;
}
return (int)$rows[0]->punktetyp;
}
function spielerstatistiken(): void function spielerstatistiken(): void
{ {
$db = getDatabase(); $db = getDatabase();
@@ -7870,7 +7895,7 @@ function spielerstatistiken(): void
$query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname";
$spielerstatistik_punkte = loadObjectList($db, $query); $spielerstatistik_punkte = loadObjectList($db, $query);
HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, 0, $details_anzeigen); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, 0, $details_anzeigen, spielerstatistikEinheit($spielerstatistik->bestenliste_id));
} }
administrationFooter(); administrationFooter();
@@ -8030,7 +8055,7 @@ function spielerstatistik(): void
JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte); JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte);
} else { } else {
HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele, $teams, $filter_teams); HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele, $teams, $filter_teams);
HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen, spielerstatistikEinheit($spielerstatistik->bestenliste_id));
} }
} }
@@ -1597,7 +1597,21 @@ if (count($spiele) > 0) {
</td> </td>
<td style="text-align: center" nowrap> <td style="text-align: center" nowrap>
<?php echo str_replace(" ", " | ", $spiel->ergebnis_detailliert); ?> <?php
// Der Stand des Spiels, und die Satzergebnisse dahinter, wo sie einzeln
// erfasst sind. Bisher stand hier NUR ergebnis_detailliert: bei reinem
// „Mehrere" ist das derselbe Stand, bei Erfassung je Satz sind es die
// Saetze — und dann fehlte, wer das Spiel gewonnen hat.
$stand = $spiel->teamspiel_heim_punkte . ':' . $spiel->teamspiel_gast_punkte;
$saetze = str_replace(" ", " | ", (string)$spiel->ergebnis_detailliert);
if ($saetze === '' && $spiel->teamspiel_heim_punkte == 0 && $spiel->teamspiel_gast_punkte == 0) {
// Nicht gespielt: wie bisher leer, kein „0:0".
} else if ($saetze === '' || $saetze === $stand) {
echo htmlentities_utf8($saetze !== '' ? $saetze : $stand);
} else {
echo htmlentities_utf8($stand) . ' <small>(' . htmlentities_utf8($saetze) . ')</small>';
}
?>
</td> </td>
<td> <td>
@@ -6780,7 +6794,7 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte
} }
} }
static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $allein_angezeigt, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen): void static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $allein_angezeigt, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen, ?int $einheit = null): void
{ {
global $params; global $params;
if ($allein_angezeigt) { if ($allein_angezeigt) {
@@ -6934,13 +6948,23 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
<th nowrap title="<?php echo Text::_('COM_SPORTSMANAGER_DEFEATS'); ?>"> <th nowrap title="<?php echo Text::_('COM_SPORTSMANAGER_DEFEATS'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_DEFEATS_SHORTCUT'); ?></strong> <strong><?php echo Text::_('COM_SPORTSMANAGER_DEFEATS_SHORTCUT'); ?></strong>
</th> </th>
<?php
// Die Spalten summieren teamspiel_*_punkte — je punktetyp also Tore oder
// gewonnene Saetze. Umfasst die Bestenliste beides (oder auch
// Individualwettbewerbe), gibt es keine gemeinsame Einheit; dann steht
// „Punkte", statt eine zu behaupten.
$einheit_lang = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS'
: ($einheit === 1 ? 'COM_SPORTSMANAGER_SETS' : 'COM_SPORTSMANAGER_POINTS');
$einheit_kurz = $einheit === 0 ? 'COM_SPORTSMANAGER_GOALS_SHORTCUT'
: ($einheit === 1 ? 'COM_SPORTSMANAGER_SETS_SHORTCUT' : 'COM_SPORTSMANAGER_POINTS_SHORTCUT');
?>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GOALS'); ?>"> title="<?php echo Text::_($einheit_lang); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GOALS_SHORTCUT'); ?> +</strong> <strong><?php echo Text::_($einheit_kurz); ?> +</strong>
</th> </th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GOALS'); ?>"> title="<?php echo Text::_($einheit_lang); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GOALS_SHORTCUT'); ?> -</strong> <strong><?php echo Text::_($einheit_kurz); ?> -</strong>
</th> </th>
</tr> </tr>
<?php <?php
@@ -5774,7 +5774,7 @@ class HTML_sportsmanager_admin
<table> <table>
<tr> <tr>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="spiel_<?php echo $spiel_nr; ?>_heim" size="1" name="spiel_<?php echo $spiel_nr; ?>_heim" size="1"
onChange="zeilen_anzeigen();" onChange="zeilen_anzeigen();"
aria-label="<?php echo Text::sprintf('COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_HOME', $spiel_nr); ?>"> aria-label="<?php echo Text::sprintf('COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_HOME', $spiel_nr); ?>">
@@ -5786,7 +5786,7 @@ class HTML_sportsmanager_admin
</select> </select>
</td> </td>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="spiel_<?php echo $spiel_nr; ?>_gast" size="1" name="spiel_<?php echo $spiel_nr; ?>_gast" size="1"
onChange="zeilen_anzeigen();" onChange="zeilen_anzeigen();"
aria-label="<?php echo Text::sprintf('COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_GUEST', $spiel_nr); ?>"> aria-label="<?php echo Text::sprintf('COM_SPORTSMANAGER_ARIA_LABEL_GAME_NUMBER_GUEST', $spiel_nr); ?>">
@@ -5799,7 +5799,7 @@ class HTML_sportsmanager_admin
<label <label
for="match_<?php echo $spiel_nr; ?>_starting_team"><?php echo Text::_('COM_SPORTSMANAGER_EDITION'); ?> for="match_<?php echo $spiel_nr; ?>_starting_team"><?php echo Text::_('COM_SPORTSMANAGER_EDITION'); ?>
:</label> :</label>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="spiel_<?php echo $spiel_nr; ?>_auflage" name="spiel_<?php echo $spiel_nr; ?>_auflage"
id="match_<?php echo $spiel_nr; ?>_starting_team" id="match_<?php echo $spiel_nr; ?>_starting_team"
size="1"> size="1">
@@ -5855,7 +5855,7 @@ class HTML_sportsmanager_admin
<table> <table>
<tr> <tr>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="verknuepfung_<?php echo $verknuepfung_nr; ?>_doppel" name="verknuepfung_<?php echo $verknuepfung_nr; ?>_doppel"
size="1" size="1"
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_DOUBLE'); ?>"> aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_DOUBLE'); ?>">
@@ -5868,7 +5868,7 @@ class HTML_sportsmanager_admin
</select> </select>
</td> </td>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="verknuepfung_<?php echo $verknuepfung_nr; ?>_einzel1" name="verknuepfung_<?php echo $verknuepfung_nr; ?>_einzel1"
size="1" size="1"
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE'); ?>"> aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE'); ?>">
@@ -5881,7 +5881,7 @@ class HTML_sportsmanager_admin
</select> </select>
</td> </td>
<td nowrap> <td nowrap>
<select class="uk-select uk-form-width-large" <select class="uk-select uk-form-width-medium"
name="verknuepfung_<?php echo $verknuepfung_nr; ?>_einzel2" name="verknuepfung_<?php echo $verknuepfung_nr; ?>_einzel2"
size="1" size="1"
aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE'); ?>"> aria-label="<?php echo Text::_('COM_SPORTSMANAGER_ARIA_LABEL_GAME_LINK_SINGLE'); ?>">
@@ -161,6 +161,7 @@ COM_SPORTSMANAGER_GOALS_SHORTCUT="T"
COM_SPORTSMANAGER_SETS="Sätze" COM_SPORTSMANAGER_SETS="Sätze"
COM_SPORTSMANAGER_POINT="Punkt" COM_SPORTSMANAGER_POINT="Punkt"
COM_SPORTSMANAGER_POINTS="Punkte" COM_SPORTSMANAGER_POINTS="Punkte"
COM_SPORTSMANAGER_SETS_SHORTCUT="S"
COM_SPORTSMANAGER_POINTS_SHORTCUT="P" COM_SPORTSMANAGER_POINTS_SHORTCUT="P"
COM_SPORTSMANAGER_ONE_POINT="1 Punkt" COM_SPORTSMANAGER_ONE_POINT="1 Punkt"
COM_SPORTSMANAGER_NUMBER_POINTS="%d Punkte" COM_SPORTSMANAGER_NUMBER_POINTS="%d Punkte"
@@ -170,7 +171,7 @@ COM_SPORTSMANAGER_GAME_POINTS="Spielpunkte"
COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="SP" COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="SP"
COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (eine Mannschaft)" COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (eine Mannschaft)"
COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (Mannschaften zusammen)" COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (Mannschaften zusammen)"
COM_SPORTSMANAGER_DIFFERENCE="Differenz Tore" COM_SPORTSMANAGER_DIFFERENCE="Differenz"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Differenz Spielpunkte" COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Differenz Spielpunkte"
COM_SPORTSMANAGER_POINTS_RATIO="Verh&auml;ltnis Spielpunkte" COM_SPORTSMANAGER_POINTS_RATIO="Verh&auml;ltnis Spielpunkte"
COM_SPORTSMANAGER_SCHEDULE_DATE="Zeitpunkt" COM_SPORTSMANAGER_SCHEDULE_DATE="Zeitpunkt"
@@ -161,6 +161,7 @@ COM_SPORTSMANAGER_GOALS_SHORTCUT="G"
COM_SPORTSMANAGER_SETS="Sets" COM_SPORTSMANAGER_SETS="Sets"
COM_SPORTSMANAGER_POINT="Point" COM_SPORTSMANAGER_POINT="Point"
COM_SPORTSMANAGER_POINTS="Points" COM_SPORTSMANAGER_POINTS="Points"
COM_SPORTSMANAGER_SETS_SHORTCUT="S"
COM_SPORTSMANAGER_POINTS_SHORTCUT="P" COM_SPORTSMANAGER_POINTS_SHORTCUT="P"
COM_SPORTSMANAGER_ONE_POINT="1 point" COM_SPORTSMANAGER_ONE_POINT="1 point"
COM_SPORTSMANAGER_NUMBER_POINTS="%d points" COM_SPORTSMANAGER_NUMBER_POINTS="%d points"
@@ -170,7 +171,7 @@ COM_SPORTSMANAGER_GAME_POINTS="Game points"
COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="GP" COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT="GP"
COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (one team)" COM_SPORTSMANAGER_SUFFIX_ONE_TEAM=" (one team)"
COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (teams together)" COM_SPORTSMANAGER_SUFFIX_TEAMS_TOGETHER=" (teams together)"
COM_SPORTSMANAGER_DIFFERENCE="Goal difference" COM_SPORTSMANAGER_DIFFERENCE="Difference"
COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in game points" COM_SPORTSMANAGER_DIFFERENCE_IN_POINTS="Difference in game points"
COM_SPORTSMANAGER_POINTS_RATIO="Game points ratio" COM_SPORTSMANAGER_POINTS_RATIO="Game points ratio"
COM_SPORTSMANAGER_SCHEDULE_DATE="Appointment date" COM_SPORTSMANAGER_SCHEDULE_DATE="Appointment date"