-
{{ allowsExternal ? 'Offene Turniere' : 'Interne Turniere' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ classItem.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Vereinsmitglied hinzufĂŒgen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GruppenĂŒbersicht
-
-
-
-
-
-
Gruppe {{ group.groupNumber }}
-
-
-
- | Index |
- Platz |
- Spieler |
- Punkte |
- Satz |
- Diff |
-
- G{{ String.fromCharCode(96 + group.groupNumber) }}{{ idx + 1 }}
- |
- Live-Platz |
-
-
-
-
- | G{{ String.fromCharCode(96 + group.groupNumber) }}{{ idx + 1 }} |
- {{ pl.position }}. |
- â
{{ pl.name }} |
- {{ pl.points }} |
- {{ pl.setsWon }}:{{ pl.setsLost }} |
-
- {{ pl.setDiff >= 0 ? '+' + pl.setDiff : pl.setDiff }}
- |
-
-
-
- {{ getMatchDisplayText(pl.id, opponent.id, group.groupId) }}
-
- -
- |
- {{ getLivePosition(pl.id, group.groupId) }}. |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rangliste
-
-
- {{ getClassName(classKey) }}
-
-
-
- | Platz |
- Spieler |
-
-
-
-
- | {{ entry.position }}. |
-
- {{ entry.member.firstName }}
- {{ entry.member.lastName }}
- |
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
-.tournament-info input[type="text"],
-.tournament-info input[type="date"],
-.tournament-info input[type="number"] {
- padding: 0.4rem;
- border: 1px solid #ccc;
- border-radius: 4px;
- font-size: 1em;
+
-.participants,
-.group-controls,
-.groups-overview,
-.ko-round,
-.ko-start {
- margin-top: 1.5rem;
-}
-
-.class-section {
- margin-top: 2rem;
- margin-bottom: 1rem;
-}
-
-.class-section:first-child {
- margin-top: 0;
-}
-
-.class-header {
- font-size: 1.2em;
- font-weight: bold;
- color: #333;
- margin-bottom: 0.5rem;
- padding-bottom: 0.5rem;
- border-bottom: 2px solid #ddd;
-}
-
-.group-table {
- margin-bottom: 2rem;
-}
-
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
-th,
-td {
- padding: 0.5em;
- border: 1px solid #ccc;
- text-align: left;
-}
-
-button {
- margin-left: 0.5em;
-}
-
-.match-cell.diagonal-cell {
- position: relative;
- padding: 0;
-}
-
-.diagonal {
- background-color: #bbb;
- color: #bbb;
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- width: 100%;
- height: 100%;
-}
-
-.match-result {
- font-weight: bold;
- padding: 2px 4px;
- border-radius: 3px;
-}
-
-.match-result.win {
- background-color: #d4edda;
- color: #155724;
-}
-
-.match-result.loss {
- background-color: #f8d7da;
- color: #721c24;
-}
-
-/* Live-Ergebnisse wÀhrend des Spiels */
-.match-live-win {
- background-color: #d1eca1; /* HellgrĂŒn */
- color: #0c5460;
- font-weight: bold;
-}
-
-.match-live-loss {
- background-color: #ffeaa7; /* Orange */
- color: #d63031;
- font-weight: bold;
-}
-
-.match-live-tie {
- background-color: #f8f9fa; /* Neutral */
- color: #6c757d;
- font-weight: bold;
-}
-
-/* Beendete Spiele */
-.match-finished-win {
- background-color: #28a745; /* DunkelgrĂŒn */
- color: white;
- font-weight: bold;
-}
-
-.match-finished-loss {
- background-color: #fd7e14; /* Dunkelorange */
- color: white;
- font-weight: bold;
-}
-
-.match-finished-tie {
- background-color: #6c757d; /* Grau */
- color: white;
- font-weight: bold;
-}
-
-/* Kollabierbare Teilnehmerliste */
-.participants-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- cursor: pointer;
- padding: 0.5rem 0;
- border-bottom: 1px solid #dee2e6;
- margin-bottom: 1rem;
-}
-
-.participants-header:hover {
- background-color: #f8f9fa;
- border-radius: 4px;
-}
-
-.participants-header h4 {
- margin: 0;
- color: #495057;
-}
-
-.collapse-icon {
- font-size: 0.8em;
- color: #6c757d;
- transition: transform 0.3s ease;
- user-select: none;
-}
-
-.collapse-icon.expanded {
- transform: rotate(180deg);
-}
-
-.participants-content {
- animation: slideDown 0.3s ease;
-}
-
-@keyframes slideDown {
- from {
- opacity: 0;
- max-height: 0;
- }
- to {
- opacity: 1;
- max-height: 1000px;
- }
-}
-
-.participants-table-container {
- border: 1px solid #dee2e6;
- border-radius: 4px;
- overflow: hidden;
- display: inline-block;
- width: auto;
-}
-
-.participants-table {
- width: auto;
- border-collapse: collapse;
- font-size: 0.9em;
-}
-
-.participants-table-header {
- margin: 0;
- border-bottom: none;
-}
-
-.participants-table-header th {
- font-weight: bold;
- font-size: 0.85em;
- color: #495057;
- padding: 0.15rem 0.5rem;
- text-align: left;
- white-space: nowrap;
- background-color: white;
-}
-
-.participants-table-body-wrapper {
- max-height: 400px;
- overflow-y: auto;
- overflow-x: auto;
- margin: 0;
-}
-
-.participants-table-body td {
- padding: 0.1rem 0.5rem;
- white-space: nowrap;
-}
-
-/* Synchronisiere Spaltenbreiten zwischen Header und Body */
-.participants-table-header .participant-seeded-cell,
-.participants-table-body .participant-seeded-cell {
- width: 60px;
-}
-
-.participants-table-header .participant-name,
-.participants-table-body .participant-name {
- min-width: 150px;
-}
-
-.participants-table-header .participant-club-cell,
-.participants-table-body .participant-club-cell {
- min-width: 120px;
-}
-
-.participants-table-header .participant-class-cell,
-.participants-table-body .participant-class-cell {
- min-width: 120px;
-}
-
-.participants-table-header .participant-group-cell,
-.participants-table-body .participant-group-cell {
- width: 80px;
-}
-
-.participants-table-header .participant-action-cell,
-.participants-table-body .participant-action-cell {
- width: 50px;
-}
-
-.participant-item {
- line-height: 1.2;
-}
-
-.participant-seeded-cell {
- white-space: nowrap;
-}
-
-.seeded-checkbox-label {
- display: flex;
- align-items: center;
- cursor: pointer;
- user-select: none;
-}
-
-.seeded-checkbox-label input[type="checkbox"] {
- cursor: pointer;
- margin: 0;
-}
-
-.participant-name {
- white-space: nowrap;
-}
-
-.participant-group-cell {
- white-space: nowrap;
-}
-
-.participant-action-cell {
- white-space: nowrap;
-}
-
-.participant-class-cell {
- white-space: nowrap;
-}
-
-.class-select-small {
- font-size: 0.85em;
- padding: 2px 4px;
- min-width: 100px;
- border: 1px solid #ccc;
- border-radius: 3px;
-}
-
-.group-select-small {
- font-size: 0.85em;
- padding: 2px 4px;
- width: 50px;
- border: 1px solid #ccc;
- border-radius: 3px;
-}
-
-.trash-btn-small {
- background: none;
- border: none;
- cursor: pointer;
- font-size: 0.9em;
- padding: 0;
- opacity: 0.7;
- transition: opacity 0.2s;
-}
-
-.trash-btn-small:hover {
- opacity: 1;
-}
-
-.add-participant {
- margin-top: 1rem;
- padding-top: 1rem;
- border-top: 1px solid #dee2e6;
- display: flex;
- flex-direction: column;
- gap: 1rem;
-}
-
-.add-participant-section {
- display: flex;
- flex-direction: column;
- gap: 0.5rem;
-}
-
-.add-participant-section h5 {
- margin: 0;
- font-size: 0.9em;
- color: #495057;
-}
-
-.add-participant-row {
- display: flex;
- gap: 0.5rem;
- align-items: center;
- flex-wrap: wrap;
-}
-
-.external-input {
- padding: 0.4rem;
- border: 1px solid #ccc;
- border-radius: 4px;
- font-size: 0.9em;
- min-width: 120px;
-}
-
-.member-select {
- flex: 1;
- min-width: 200px;
- padding: 0.4rem;
- border: 1px solid #ccc;
- border-radius: 4px;
-}
-
-.btn-add {
- padding: 0.4rem 0.8rem;
- background-color: #007bff;
- color: white;
- border: none;
- border-radius: 4px;
- cursor: pointer;
- font-size: 0.9em;
- white-space: nowrap;
-}
-
-.btn-add:hover {
- background-color: #0056b3;
-}
-
-.training-btn {
- background-color: #28a745;
- color: white;
- border: none;
- padding: 0.5rem 1rem;
- border-radius: 4px;
- cursor: pointer;
- font-size: 0.9em;
- transition: background-color 0.2s ease;
-}
-
-.training-btn:hover {
- background-color: #218838;
-}
-
-.training-btn:active {
- background-color: #1e7e34;
-}
-
-.tournament-classes {
- margin-top: 1.5rem;
-}
-
-.classes-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- cursor: pointer;
- padding: 0.5rem 0;
- border-bottom: 1px solid #dee2e6;
- margin-bottom: 1rem;
-}
-
-.classes-header:hover {
- background-color: #f8f9fa;
- border-radius: 4px;
-}
-
-.classes-header h4 {
- margin: 0;
- color: #495057;
-}
-
-.classes-content {
- animation: slideDown 0.3s ease;
-}
-
-.classes-list {
- margin-bottom: 1rem;
-}
-
-.class-item {
- display: flex;
- gap: 0.5rem;
- align-items: center;
- margin-bottom: 0.5rem;
-}
-
-.class-name-label {
- flex: 1;
- padding: 0.4rem;
- font-size: 0.9em;
- min-width: 200px;
-}
-
-.class-name-input {
- flex: 1;
- padding: 0.4rem;
- border: 1px solid #ccc;
- border-radius: 4px;
- font-size: 0.9em;
- min-width: 200px;
-}
-
-.btn-edit-small,
-.btn-save-small,
-.btn-cancel-small {
- background: none;
- border: none;
- cursor: pointer;
- font-size: 0.9em;
- padding: 0;
- opacity: 0.7;
- transition: opacity 0.2s;
- margin-left: 0.25rem;
-}
-
-.btn-edit-small:hover,
-.btn-save-small:hover,
-.btn-cancel-small:hover {
- opacity: 1;
-}
-
-.btn-save-small {
- color: #28a745;
-}
-
-.btn-cancel-small {
- color: #dc3545;
-}
-
-.add-class {
- display: flex;
- gap: 0.5rem;
- align-items: center;
- padding-top: 0.5rem;
- border-top: 1px solid #dee2e6;
-}
-
-.no-match {
- color: #ccc;
-}
-
-.group-table table {
- font-size: 0.9em;
-}
-
-.group-table th,
-.group-table td {
- padding: 0.3em 0.5em;
- text-align: center;
-}
-
-.group-table th:first-child,
-.group-table td:first-child {
- text-align: left;
- font-weight: bold;
-}
-
-.group-table th:nth-child(3),
-.group-table td:nth-child(3) {
- text-align: left;
- min-width: 120px;
-}
-
-.seeded-star {
- color: #ffd700;
- margin-right: 0.25em;
-}
-
-.match-cell.clickable {
- cursor: pointer;
- transition: all 0.2s ease;
- position: relative;
-}
-
-.match-cell.clickable:hover {
- background-color: #f8f9fa;
- transform: scale(1.02);
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
-}
-
-.match-highlight {
- background-color: #fff3cd !important;
- border: 2px solid #ffc107 !important;
- animation: highlight-pulse 0.5s ease-in-out;
-}
-
-@keyframes highlight-pulse {
- 0% { transform: scale(1); }
- 50% { transform: scale(1.02); }
- 100% { transform: scale(1); }
-}
-
-/* Container fĂŒr neue Satzeingabe - inline */
-.new-set-line {
- display: inline-block;
- margin-left: 0.5rem;
-}
-
-/* Eingabefeld fĂŒr SĂ€tze - nur so breit wie nötig fĂŒr die Eingabe */
-.inline-input {
- width: 5ch; /* 5 Zeichen breit */
- padding: calc(0.2rem + 2px) calc(0.4rem + 2px);
- font-family: inherit;
- text-align: center;
- border: 1px solid #dee2e6;
- border-radius: 3px;
- box-sizing: border-box;
- line-height: 1.5;
- font-size: inherit;
-}
-
-/* Klickbare Ergebnis-Texte */
-.result-text.clickable {
- cursor: pointer;
- padding: 0.2rem 0.4rem;
- border-radius: 3px;
- border: 1px solid transparent;
- transition: all 0.2s ease;
- line-height: 1.5;
- display: inline-block;
-}
-
-.result-text.clickable:hover {
- background-color: #f8f9fa;
- border-color: #dee2e6;
-}
-
-/* Aktive Begegnung hervorheben */
-tr.active-match {
- background-color: #fff3cd !important;
- border-left: 3px solid #ffc107;
- cursor: pointer;
-}
-
-tr.active-match:hover {
- background-color: #ffe69c !important;
-}
-
-/* Tabellenzeilen klickbar machen */
-tbody tr {
- cursor: pointer;
- transition: background-color 0.2s ease;
-}
-
-tbody tr:hover:not(.active-match) {
- background-color: #f8f9fa;
-}
-
-/* Aktive Gruppentabellen-Zellen hervorheben */
-.match-cell.active-group-cell {
- background-color: #fff3cd !important;
- border: 2px solid #ffc107 !important;
- font-weight: bold;
-}
-
-/* Abgeschlossene Spiele in grauer Schrift */
-.match-finished {
- color: #626262 !important;
- background-color: #e9ecef !important;
-}
-
-.match-finished td {
- color: #828a91 !important;
-}
-
-/* Laufende Spiele farblich hervorheben - nur wenn nicht abgeschlossen */
-.match-live:not(.match-finished) {
- background-color: #d4edda !important;
- border-left: 4px solid #28a745 !important;
-}
-
-.match-live:not(.match-finished) td {
- color: #155724;
- font-weight: 500;
-}
-
-/* Button fĂŒr "LĂ€uft gerade" */
-.btn-live {
- margin-left: 0.5rem;
- padding: 0.25rem 0.5rem;
- font-size: 0.9em;
- background-color: #f8f9fa;
- border: 1px solid #dee2e6;
- border-radius: 3px;
- cursor: pointer;
- transition: all 0.2s ease;
-}
-
-.btn-live:hover {
- background-color: #e9ecef;
- border-color: #adb5bd;
-}
-
-.btn-live.active {
- background-color: #28a745;
- border-color: #28a745;
- color: white;
-}
-
-.btn-live.active:hover {
- background-color: #218838;
- border-color: #1e7e34;
-}
-
-/* Button fĂŒr "Korrigieren" - weiĂer Hintergrund mit grĂŒner Schrift */
-.match-finished td .btn-correct,
-.btn-correct {
- background: white !important;
- background-color: white !important;
- background-image: none !important;
- color: #4CAF50 !important;
- border: 1px solid #4CAF50 !important;
- padding: 0.25rem 0.5rem;
- font-size: 0.9em;
- border-radius: 3px;
- cursor: pointer;
- transition: all 0.2s ease;
- box-shadow: none !important;
- min-height: auto !important;
-}
-
-.match-finished td .btn-correct::before,
-.btn-correct::before {
- display: none !important;
-}
-
-.match-finished td .btn-correct:hover,
-.btn-correct:hover {
- background: #f8f9fa !important;
- background-color: #f8f9fa !important;
- background-image: none !important;
- border-color: #45a049 !important;
- color: #45a049 !important;
- transform: none !important;
-}
-
\ No newline at end of file
diff --git a/frontend/src/views/TrainingGroupsView.vue b/frontend/src/views/TrainingGroupsView.vue
deleted file mode 100644
index 9341bfc..0000000
--- a/frontend/src/views/TrainingGroupsView.vue
+++ /dev/null
@@ -1,569 +0,0 @@
-
-
-
Trainingsgruppen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ group.members ? group.members.length : 0 }} Mitglieder
-
-
-
- {{ member.firstName }} {{ member.lastName }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Gruppe bearbeiten
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-