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() {
{[ { id: 'focus-areas', label: 'Fokusbereiche' }, - { id: 'training-styles', label: 'Trainingsstile' }, + { id: 'training-styles', label: 'Stilrichtungen' }, + { id: 'training-types', label: 'Trainingsstil' }, { id: 'hierarchy', label: 'Hierarchie' }, { id: 'target-groups', label: 'Zielgruppen' }, { id: 'target-groups-matrix', label: 'Zuordnungen' }, @@ -437,7 +477,7 @@ export default function AdminCatalogsPage() { {activeTab === 'training-styles' && (
-

Neuer Trainingsstil

+

Neue Stilrichtung

)} + {/* Training Types */} + {activeTab === 'training-types' && ( +
+
+

Neuer Trainingsstil

+
+ + setNewTT({ ...newTT, name: e.target.value })} + placeholder="z.B. Breitensport" + /> +
+
+ + setNewTT({ ...newTT, abbreviation: e.target.value })} + placeholder="z.B. BS" + /> +
+
+ +