feat: separate backend base URL configurations for release and debug builds
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s

This commit is contained in:
Torsten Schulz (local)
2026-05-17 22:46:07 +02:00
parent f8f1c797e7
commit 6c7ae6860b
20 changed files with 777 additions and 285 deletions

View File

@@ -61,12 +61,18 @@
ref="editInput"
/>
</template>
<template v-else>
<span @click="$emit('start-edit-result', m, r)" class="result-text clickable">
{{ r.pointsPlayer1 }}:{{ r.pointsPlayer2 }}
</span>
<span v-if="!isLastResult(m, r)">, </span>
</template>
<template v-else>
<span @click="$emit('start-edit-result', m, r)" class="result-text clickable">
{{ r.pointsPlayer1 }}:{{ r.pointsPlayer2 }}
</span>
<button v-if="!m.isFinished" @click.stop="onDeleteSet(m, r.set)" class="inline-delete" aria-label="Satz löschen">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<span v-if="!isLastResult(m, r)">, </span>
</template>
</template>
<div class="new-set-line">
<input
@@ -154,12 +160,18 @@
ref="editInput"
/>
</template>
<template v-else>
<span @click="$emit('start-edit-result', m, r)" class="result-text clickable">
{{ r.pointsPlayer1 }}:{{ r.pointsPlayer2 }}
</span>
<span v-if="!isLastResult(m, r)">, </span>
</template>
<template v-else>
<span @click="$emit('start-edit-result', m, r)" class="result-text clickable">
{{ r.pointsPlayer1 }}:{{ r.pointsPlayer2 }}
</span>
<button v-if="!m.isFinished" @click.stop="onDeleteSet(m, r.set)" class="inline-delete" aria-label="Satz löschen">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<span v-if="!isLastResult(m, r)">, </span>
</template>
</template>
<div class="new-set-line">
<input
@@ -218,6 +230,25 @@
</section>
</div>
</template>
<style scoped>
.inline-delete{
background: transparent;
border: none;
padding: 0 6px;
display:inline-flex;
align-items:center;
justify-content:center;
color: #d32f2f; /* warn red */
font-size: 105%;
line-height: 1;
}
.inline-delete svg{
width: 1.05em;
height: 1.05em;
stroke: currentColor;
}
.inline-delete:focus{ outline: none; box-shadow: 0 0 0 3px rgba(211,47,47,0.12); border-radius:3px; }
</style>
<script>
import TournamentClassSelector from './TournamentClassSelector.vue';
@@ -362,6 +393,7 @@ export default {
'cancel-edit',
'start-edit-result',
'save-match-result',
'delete-set',
'finish-match',
'reopen-match',
'set-match-active',
@@ -370,6 +402,12 @@ export default {
'reset-knockout'
],
methods: {
async onDeleteSet(match, set) {
const title = this.$t ? this.$t('tournaments.confirmDeleteSetTitle') : null;
const message = this.$t ? this.$t('tournaments.confirmDeleteSet') : 'Satz wirklich löschen?';
const confirmed = this.$root && this.$root.showConfirm ? await this.$root.showConfirm(title || '', message || '') : confirm(message);
if (confirmed) this.$emit('delete-set', match, set);
},
filterMatchesByClass(matches) {
// Wenn keine Klasse ausgewählt ist (null), zeige alle
if (this.selectedViewClass === null || this.selectedViewClass === undefined) {

View File

@@ -863,6 +863,8 @@
"tournamentName": "Turniername",
"winningSets": "Gewinnsätze",
"numberOfTables": "Anzahl Tische",
"confirmDeleteSetTitle": "Satz löschen",
"confirmDeleteSet": "Soll dieser Satz wirklich gelöscht werden?",
"table": "Tisch",
"playerOne": "Spieler 1",
"playerTwo": "Spieler 2",

View File

@@ -976,6 +976,8 @@
"tabParticipants": "Teilnehmer",
"tabResults": "Ergebnisse",
"tabPlacements": "Platzierungen",
"confirmDeleteSetTitle": "Satz löschen",
"confirmDeleteSet": "Soll dieser Satz wirklich gelöscht werden?",
"finalPlacements": "Endplatzierungen",
"groupPlacements": "Gruppenplatzierungen",
"noPlacementsYet": "Noch keine Platzierungen vorhanden.",

View File

@@ -963,6 +963,8 @@
"tabParticipants": "Participants",
"tabResults": "Results",
"tabPlacements": "Placings",
"confirmDeleteSetTitle": "Delete set",
"confirmDeleteSet": "Delete this set?",
"finalPlacements": "Final placements",
"groupPlacements": "Group Placements",
"noPlacementsYet": "No placements available yet.",

View File

@@ -964,6 +964,8 @@
"tabParticipants": "Participants",
"tabResults": "Results",
"tabPlacements": "Placings",
"confirmDeleteSetTitle": "Delete set",
"confirmDeleteSet": "Delete this set?",
"finalPlacements": "Final placements",
"groupPlacements": "Group Placements",
"noPlacementsYet": "No placements available yet.",

View File

@@ -964,6 +964,8 @@
"tabParticipants": "Participants",
"tabResults": "Results",
"tabPlacements": "Placings",
"confirmDeleteSetTitle": "Delete set",
"confirmDeleteSet": "Delete this set?",
"finalPlacements": "Final placements",
"groupPlacements": "Group Placements",
"noPlacementsYet": "No placements available yet.",

View File

@@ -919,6 +919,8 @@
"tournamentName": "Nombre del torneo",
"winningSets": "Tasas ganadoras",
"numberOfTables": "Número de mesas",
"confirmDeleteSetTitle": "Eliminar set",
"confirmDeleteSet": "¿Está seguro de que desea eliminar este set?",
"table": "Mesa",
"playerOne": "Jugador 1",
"playerTwo": "Jugador 2",

View File

@@ -920,6 +920,8 @@
"tournamentName": "Pangalan ng tournament",
"winningSets": "Mga rate ng panalong",
"numberOfTables": "Bilang ng mesa",
"confirmDeleteSetTitle": "Tanggalin ang set",
"confirmDeleteSet": "Sigurado ka bang tatanggalin ang set na ito?",
"table": "Mesa",
"playerOne": "Manlalaro 1",
"playerTwo": "Manlalaro 2",

View File

@@ -963,6 +963,8 @@
"tabParticipants": "Participants",
"tabResults": "Résultats",
"tabPlacements": "Placements",
"confirmDeleteSetTitle": "Supprimer le set",
"confirmDeleteSet": "Supprimer ce set ?",
"finalPlacements": "Placements finaux",
"groupPlacements": "Placements de groupe",
"noPlacementsYet": "Aucun emplacement disponible pour l'instant.",

View File

@@ -920,6 +920,8 @@
"tournamentName": "Nome del torneo",
"winningSets": "Tariffe vincenti",
"numberOfTables": "Numero di tavoli",
"confirmDeleteSetTitle": "Elimina set",
"confirmDeleteSet": "Eliminare questo set?",
"table": "Tavolo",
"playerOne": "Giocatore 1",
"playerTwo": "Giocatore 2",

View File

@@ -920,6 +920,8 @@
"tournamentName": "大会名",
"winningSets": "勝率",
"numberOfTables": "卓数",
"confirmDeleteSetTitle": "セットを削除",
"confirmDeleteSet": "このセットを本当に削除しますか?",
"table": "卓",
"playerOne": "選手 1",
"playerTwo": "選手 2",

View File

@@ -917,6 +917,8 @@
"tournamentName": "Nazwa turnieju",
"winningSets": "Zwycięskie stawki",
"numberOfTables": "Liczba stołów",
"confirmDeleteSetTitle": "Usuń seta",
"confirmDeleteSet": "Czy na pewno usunąć tego seta?",
"table": "Stół",
"playerOne": "Zawodnik 1",
"playerTwo": "Zawodnik 2",

View File

@@ -919,6 +919,8 @@
"tournamentName": "ชื่อทัวร์นาเมนท์",
"winningSets": "อัตราการชนะ",
"numberOfTables": "จำนวนโต๊ะ",
"confirmDeleteSetTitle": "ลบเซต",
"confirmDeleteSet": "คุณแน่ใจหรือไม่ว่าต้องการลบเซตนี้?",
"table": "โต๊ะ",
"playerOne": "ผู้เล่น 1",
"playerTwo": "ผู้เล่น 2",

View File

@@ -920,6 +920,8 @@
"tournamentName": "Pangalan ng tournament",
"winningSets": "Mga rate ng panalong",
"numberOfTables": "Bilang ng mesa",
"confirmDeleteSetTitle": "Tanggalin ang set",
"confirmDeleteSet": "Sigurado ka bang tatanggalin ang set na ito?",
"table": "Mesa",
"playerOne": "Manlalaro 1",
"playerTwo": "Manlalaro 2",

View File

@@ -920,6 +920,8 @@
"tournamentName": "赛事名称",
"winningSets": "胜率",
"numberOfTables": "球台数量",
"confirmDeleteSetTitle": "删除局",
"confirmDeleteSet": "确定要删除此局吗?",
"table": "球台",
"playerOne": "选手 1",
"playerTwo": "选手 2",

View File

@@ -206,6 +206,7 @@
@cancel-edit="cancelEdit"
@start-edit-result="startEditResult"
@save-match-result="saveMatchResult"
@delete-set="deleteMatchSet"
@finish-match="finishMatch"
@reopen-match="reopenMatch"
@set-match-active="setMatchActive"
@@ -1693,6 +1694,23 @@ export default {
await this.loadTournamentData();
},
async deleteMatchSet(match, set) {
try {
await apiClient.delete('/tournament/match/result', {
data: {
clubId: this.currentClub,
tournamentId: this.selectedDate,
matchId: match.id,
set: set,
}
});
} catch (err) {
const message = safeErrorMessage(err, 'Fehler beim Löschen des Satzes.');
await this.showInfo('Fehler', message, '', 'error');
}
await this.loadTournamentData();
},
async finishMatch(match) {
await apiClient.post('/tournament/match/finish', {
clubId: this.currentClub,