diff --git a/frontend/src/pages/AdminCatalogsPage.jsx b/frontend/src/pages/AdminCatalogsPage.jsx index 8bd78af..f5ae466 100644 --- a/frontend/src/pages/AdminCatalogsPage.jsx +++ b/frontend/src/pages/AdminCatalogsPage.jsx @@ -21,6 +21,11 @@ export default function AdminCatalogsPage() { const [editingTC, setEditingTC] = useState(null) const [newTC, setNewTC] = useState({ name: '', description: '' }) + // Training Types (Breitensport, Leistungssport, etc.) + const [trainingTypes, setTrainingTypes] = useState([]) + const [editingTT, setEditingTT] = useState(null) + const [newTT, setNewTT] = useState({ name: '', abbreviation: '', description: '' }) + // Skill Categories const [skillCategories, setSkillCategories] = useState([]) const [editingSC, setEditingSC] = useState(null) @@ -61,6 +66,9 @@ export default function AdminCatalogsPage() { } else if (activeTab === 'training-characters') { const data = await api.listTrainingCharacters() setTrainingCharacters(data) + } else if (activeTab === 'training-types') { + const data = await api.listTrainingTypes() + setTrainingTypes(data) } else if (activeTab === 'skill-categories') { const data = await api.listSkillCategories() setSkillCategories(data) @@ -189,6 +197,37 @@ export default function AdminCatalogsPage() { } } + // Training Types + async function createTrainingType() { + try { + await api.createTrainingType(newTT) + setNewTT({ name: '', abbreviation: '', description: '' }) + loadData() + } catch (e) { + setError(e.message) + } + } + + async function updateTrainingType(id, data) { + try { + await api.updateTrainingType(id, data) + setEditingTT(null) + loadData() + } catch (e) { + setError(e.message) + } + } + + async function deleteTrainingType(id) { + if (!confirm('Trainingsstil wirklich löschen?')) return + try { + await api.deleteTrainingType(id) + loadData() + } catch (e) { + setError(e.message) + } + } + // Skill Categories async function createSkillCategory() { try { @@ -280,7 +319,8 @@ export default function AdminCatalogsPage() {
{tt.description}
} +