From 21044c6c3404733a011b1fdc57bb1596aca53690 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 24 Oct 2025 15:50:45 +0200 Subject: [PATCH] Implement automatic saving and error handling for results, remarks, categories, and years in 'vereinsmeisterschaften.vue'; enhance user feedback with success and error modals for improved user experience. --- pages/cms/vereinsmeisterschaften.vue | 106 ++++++++++++++++++--------- 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/pages/cms/vereinsmeisterschaften.vue b/pages/cms/vereinsmeisterschaften.vue index 7550157..2619274 100644 --- a/pages/cms/vereinsmeisterschaften.vue +++ b/pages/cms/vereinsmeisterschaften.vue @@ -521,6 +521,14 @@ const saveResult = async () => { } closeModal() + + // Automatisch speichern + try { + await save() + window.showSuccessModal('Erfolg', 'Ergebnis wurde erfolgreich gespeichert') + } catch (error) { + window.showErrorModal('Fehler', 'Fehler beim Speichern des Ergebnisses: ' + error.message) + } } const saveBemerkung = async () => { @@ -548,48 +556,77 @@ const saveBemerkung = async () => { } closeBemerkungModal() -} - -const deleteResult = (jahr, kategorie, index) => { - if (confirm('Möchten Sie dieses Ergebnis wirklich löschen?')) { - const resultToDelete = groupedResults.value[jahr].kategorien[kategorie][index] - const resultIndex = results.value.findIndex(r => - r.jahr === resultToDelete.jahr && - r.kategorie === resultToDelete.kategorie && - r.platz === resultToDelete.platz && - r.spieler1 === resultToDelete.spieler1 && - r.spieler2 === resultToDelete.spieler2 - ) - - if (resultIndex !== -1) { - results.value.splice(resultIndex, 1) - } + + // Automatisch speichern + try { + await save() + window.showSuccessModal('Erfolg', 'Bemerkung wurde erfolgreich gespeichert') + } catch (error) { + window.showErrorModal('Fehler', 'Fehler beim Speichern der Bemerkung: ' + error.message) } } -const deleteKategorie = (jahr, kategorie) => { - if (confirm(`Möchten Sie die Kategorie "${kategorie}" für ${jahr} wirklich löschen?`)) { - const kategorieResults = groupedResults.value[jahr].kategorien[kategorie] - kategorieResults.forEach(result => { +const deleteResult = async (jahr, kategorie, index) => { + window.showConfirmModal('Ergebnis löschen', 'Möchten Sie dieses Ergebnis wirklich löschen?', async () => { + try { + const resultToDelete = groupedResults.value[jahr].kategorien[kategorie][index] const resultIndex = results.value.findIndex(r => - r.jahr === result.jahr && - r.kategorie === result.kategorie && - r.platz === result.platz && - r.spieler1 === result.spieler1 && - r.spieler2 === result.spieler2 + r.jahr === resultToDelete.jahr && + r.kategorie === resultToDelete.kategorie && + r.platz === resultToDelete.platz && + r.spieler1 === resultToDelete.spieler1 && + r.spieler2 === resultToDelete.spieler2 ) if (resultIndex !== -1) { results.value.splice(resultIndex, 1) + // Automatisch speichern nach dem Löschen + await save() + window.showSuccessModal('Erfolg', 'Ergebnis wurde erfolgreich gelöscht') } - }) - } + } catch (error) { + window.showErrorModal('Fehler', 'Fehler beim Löschen des Ergebnisses: ' + error.message) + } + }) } -const deleteYear = (jahr) => { - if (confirm(`Möchten Sie alle Ergebnisse für ${jahr} wirklich löschen?`)) { - results.value = results.value.filter(r => r.jahr !== jahr) - } +const deleteKategorie = async (jahr, kategorie) => { + window.showConfirmModal('Kategorie löschen', `Möchten Sie die Kategorie "${kategorie}" für ${jahr} wirklich löschen?`, async () => { + try { + const kategorieResults = groupedResults.value[jahr].kategorien[kategorie] + kategorieResults.forEach(result => { + const resultIndex = results.value.findIndex(r => + r.jahr === result.jahr && + r.kategorie === result.kategorie && + r.platz === result.platz && + r.spieler1 === result.spieler1 && + r.spieler2 === result.spieler2 + ) + + if (resultIndex !== -1) { + results.value.splice(resultIndex, 1) + } + }) + // Automatisch speichern nach dem Löschen + await save() + window.showSuccessModal('Erfolg', 'Kategorie wurde erfolgreich gelöscht') + } catch (error) { + window.showErrorModal('Fehler', 'Fehler beim Löschen der Kategorie: ' + error.message) + } + }) +} + +const deleteYear = async (jahr) => { + window.showConfirmModal('Jahr löschen', `Möchten Sie alle Ergebnisse für ${jahr} wirklich löschen?`, async () => { + try { + results.value = results.value.filter(r => r.jahr !== jahr) + // Automatisch speichern nach dem Löschen + await save() + window.showSuccessModal('Erfolg', 'Jahr wurde erfolgreich gelöscht') + } catch (error) { + window.showErrorModal('Fehler', 'Fehler beim Löschen des Jahres: ' + error.message) + } + }) } const closeModal = () => { @@ -636,13 +673,14 @@ const save = async () => { }) if (response.ok) { - alert('Vereinsmeisterschaften erfolgreich gespeichert!') + // Erfolgreich gespeichert - keine weitere Nachricht bei automatischem Speichern + return true } else { - alert('Fehler beim Speichern der Vereinsmeisterschaften!') + throw new Error('Fehler beim Speichern') } } catch (error) { console.error('Fehler beim Speichern:', error) - alert('Fehler beim Speichern der Vereinsmeisterschaften!') + throw error } }