From 17f0513821d772146ab67ccfc5dfc1fe4530b0e8 Mon Sep 17 00:00:00 2001 From: Lars Date: Tue, 5 May 2026 11:11:52 +0200 Subject: [PATCH] fix: update versioning and improve routing in TrainingFrameworkProgramEditPage - Incremented version of TrainingFrameworkProgramEditPage to 1.0.1. - Refactored variable names for clarity in TrainingFrameworkProgramEditPage. - Enhanced routing logic to handle new program creation more effectively. - Updated button text and messages in TrainingFrameworkProgramsListPage for better user guidance. --- .../TrainingFrameworkProgramEditPage.jsx | 16 +++++++------- .../TrainingFrameworkProgramsListPage.jsx | 21 ++++++++++++++----- frontend/src/version.js | 2 +- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx b/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx index 5b2d806..08788fd 100644 --- a/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx +++ b/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useState } from 'react' -import { Link, useNavigate, useParams } from 'react-router-dom' +import { Link, useNavigate, useParams, useLocation } from 'react-router-dom' import api from '../utils/api' import ExercisePickerModal from '../components/ExercisePickerModal' import ExercisePeekModal from '../components/ExercisePeekModal' @@ -161,9 +161,11 @@ function buildApiPayload(form) { } export default function TrainingFrameworkProgramEditPage() { - const { id: routeId } = useParams() + const { id: idParam } = useParams() + const location = useLocation() const navigate = useNavigate() - const isNew = routeId === 'new' + /** Route `…/framework-programs/new` hat kein dynamisches `:id` — useParams ist dann leer. */ + const isNew = /\/framework-programs\/new\/?$/.test(location.pathname) const [loading, setLoading] = useState(!isNew) const [saving, setSaving] = useState(false) @@ -226,7 +228,7 @@ export default function TrainingFrameworkProgramEditPage() { setLoading(false) return } - const fid = parseInt(routeId, 10) + const fid = parseInt(idParam, 10) if (Number.isNaN(fid)) { navigate('/planning/framework-programs', { replace: true }) return @@ -250,7 +252,7 @@ export default function TrainingFrameworkProgramEditPage() { return () => { cancelled = true } - }, [isNew, routeId, navigate]) + }, [isNew, idParam, navigate, location.pathname]) const updateField = (key, val) => { setForm((prev) => { @@ -401,7 +403,7 @@ export default function TrainingFrameworkProgramEditPage() { const created = await api.createTrainingFrameworkProgram(payload) navigate(`/planning/framework-programs/${created.id}`, { replace: true }) } else { - const fid = parseInt(routeId, 10) + const fid = parseInt(idParam, 10) await api.updateTrainingFrameworkProgram(fid, payload) const refreshed = await api.getTrainingFrameworkProgram(fid) let next = serverFrameworkToForm(refreshed) @@ -417,7 +419,7 @@ export default function TrainingFrameworkProgramEditPage() { async function handleDelete() { if (isNew) return - const fid = parseInt(routeId, 10) + const fid = parseInt(idParam, 10) if (!confirm('Dieses Rahmenprogramm wirklich löschen?')) return try { await api.deleteTrainingFrameworkProgram(fid) diff --git a/frontend/src/pages/TrainingFrameworkProgramsListPage.jsx b/frontend/src/pages/TrainingFrameworkProgramsListPage.jsx index df89fea..e8d65ad 100644 --- a/frontend/src/pages/TrainingFrameworkProgramsListPage.jsx +++ b/frontend/src/pages/TrainingFrameworkProgramsListPage.jsx @@ -60,8 +60,12 @@ export default function TrainingFrameworkProgramsListPage() { im Kontext einer Gruppe.

- - + Neues Rahmenprogramm + + Rahmenprogramm anlegen @@ -84,10 +88,17 @@ export default function TrainingFrameworkProgramsListPage() { ) : rows.length === 0 ? (
-

- Noch kein Rahmenprogramm angelegt. Über Neues Rahmenprogramm startest du mit Titel, - Zielen und Slots. +

+ Noch kein Rahmenprogramm gespeichert. Lege ein neues an — mit Titel, mindestens einem Ziel und optional + Slots samt Übungen.

+ + Rahmenprogramm anlegen +
) : (