import React, { useState } from 'react'
import { api } from '../../utils/api'
function DetailPanel({ item, onUpdate, focusAreas }) {
const type = item._type
if (type === 'create_style_direction') {
return
}
if (type === 'create_training_type') {
return
}
if (type === 'focus_area') {
return
}
if (type === 'style_direction') {
return
}
if (type === 'training_type') {
return
}
return
Unbekannter Typ: {type}
}
function FocusAreaDetail({ item, onUpdate }) {
const [form, setForm] = useState({
name: item.name || '',
icon: item.icon || '',
description: item.description || '',
sort_order: item.sort_order || 0,
status: item.status || 'active'
})
const [saving, setSaving] = useState(false)
async function handleSave() {
setSaving(true)
try {
await api.updateFocusArea(item.id, form)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
} finally {
setSaving(false)
}
}
async function handleDelete() {
if (!confirm(`Fokusbereich "${item.name}" wirklich löschen? ACHTUNG: Alle zugeordneten Stilrichtungen und Trainingstypen werden ebenfalls gelöscht!`)) return
try {
await api.deleteFocusArea(item.id)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
}
}
return (
)
}
function StyleDirectionDetail({ item, onUpdate, focusAreas }) {
const [form, setForm] = useState({
name: item.name || '',
abbreviation: item.abbreviation || '',
description: item.description || '',
focus_area_id: item.focus_area_id || null,
sort_order: item.sort_order || 0,
status: item.status || 'active'
})
const [saving, setSaving] = useState(false)
async function handleSave() {
if (!form.focus_area_id) {
alert('Bitte Fokusbereich auswählen')
return
}
setSaving(true)
try {
await api.updateStyleDirection(item.id, form)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
} finally {
setSaving(false)
}
}
async function handleDelete() {
if (!confirm(`Stilrichtung "${item.name}" wirklich löschen?`)) return
try {
await api.deleteStyleDirection(item.id)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
}
}
return (
)
}
function TrainingTypeDetail({ item, onUpdate, focusAreas }) {
const [form, setForm] = useState({
name: item.name || '',
abbreviation: item.abbreviation || '',
description: item.description || '',
focus_area_id: item.focus_area_id || null,
sort_order: item.sort_order || 0,
status: item.status || 'active'
})
const [saving, setSaving] = useState(false)
async function handleSave() {
if (!form.focus_area_id) {
alert('Bitte Fokusbereich auswählen')
return
}
setSaving(true)
try {
await api.updateTrainingType(item.id, form)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
} finally {
setSaving(false)
}
}
async function handleDelete() {
if (!confirm(`Trainingstyp "${item.name}" wirklich löschen?`)) return
try {
await api.deleteTrainingType(item.id)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
}
}
return (
)
}
function CreateStyleDirectionForm({ item, onUpdate }) {
const [form, setForm] = useState({
name: '',
abbreviation: '',
description: '',
focus_area_id: item.focus_area_id,
sort_order: 0,
status: 'active'
})
const [saving, setSaving] = useState(false)
async function handleCreate() {
if (!form.name) {
alert('Bitte Name eingeben')
return
}
setSaving(true)
try {
await api.createStyleDirection(form)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
} finally {
setSaving(false)
}
}
return (
)
}
function CreateTrainingTypeForm({ item, onUpdate }) {
const [form, setForm] = useState({
name: '',
abbreviation: '',
description: '',
focus_area_id: item.focus_area_id,
sort_order: 0,
status: 'active'
})
const [saving, setSaving] = useState(false)
async function handleCreate() {
if (!form.name) {
alert('Bitte Name eingeben')
return
}
setSaving(true)
try {
await api.createTrainingType(form)
onUpdate()
} catch (e) {
alert('Fehler: ' + e.message)
} finally {
setSaving(false)
}
}
return (
)
}
export default DetailPanel