diff --git a/backend/routers/catalogs.py b/backend/routers/catalogs.py index d0da03c..b4073f7 100644 --- a/backend/routers/catalogs.py +++ b/backend/routers/catalogs.py @@ -141,9 +141,10 @@ def list_training_styles( cur = get_cursor(conn) query = """ - SELECT ts.*, ps.name as parent_style_name + SELECT ts.*, ps.name as parent_style_name, fa.name as focus_area_name, fa.icon as focus_area_icon FROM style_directions ts LEFT JOIN style_directions ps ON ts.parent_style_id = ps.id + LEFT JOIN focus_areas fa ON ts.focus_area_id = fa.id """ params = [] @@ -173,13 +174,14 @@ def create_training_style(data: dict, session=Depends(require_auth)): cur = get_cursor(conn) cur.execute(""" - INSERT INTO style_directions (name, abbreviation, description, parent_style_id, sort_order, status) - VALUES (%s, %s, %s, %s, %s, %s) + INSERT INTO style_directions (name, abbreviation, description, focus_area_id, parent_style_id, sort_order, status) + VALUES (%s, %s, %s, %s, %s, %s, %s) RETURNING id """, ( name, data.get('abbreviation'), data.get('description'), + data.get('focus_area_id'), data.get('parent_style_id'), data.get('sort_order', 99), data.get('status', 'active') @@ -189,9 +191,10 @@ def create_training_style(data: dict, session=Depends(require_auth)): conn.commit() cur.execute(""" - SELECT ts.*, ps.name as parent_style_name + SELECT ts.*, ps.name as parent_style_name, fa.name as focus_area_name, fa.icon as focus_area_icon FROM style_directions ts LEFT JOIN style_directions ps ON ts.parent_style_id = ps.id + LEFT JOIN focus_areas fa ON ts.focus_area_id = fa.id WHERE ts.id = %s """, (style_id,)) return r2d(cur.fetchone()) @@ -212,6 +215,7 @@ def update_training_style(style_id: int, data: dict, session=Depends(require_aut name = %s, abbreviation = %s, description = %s, + focus_area_id = %s, parent_style_id = %s, sort_order = %s, status = %s, @@ -221,6 +225,7 @@ def update_training_style(style_id: int, data: dict, session=Depends(require_aut data.get('name'), data.get('abbreviation'), data.get('description'), + data.get('focus_area_id'), data.get('parent_style_id'), data.get('sort_order'), data.get('status'), @@ -230,9 +235,10 @@ def update_training_style(style_id: int, data: dict, session=Depends(require_aut conn.commit() cur.execute(""" - SELECT ts.*, ps.name as parent_style_name + SELECT ts.*, ps.name as parent_style_name, fa.name as focus_area_name, fa.icon as focus_area_icon FROM style_directions ts LEFT JOIN style_directions ps ON ts.parent_style_id = ps.id + LEFT JOIN focus_areas fa ON ts.focus_area_id = fa.id WHERE ts.id = %s """, (style_id,)) return r2d(cur.fetchone()) diff --git a/frontend/src/pages/AdminCatalogsPage.jsx b/frontend/src/pages/AdminCatalogsPage.jsx index 5454512..b90d45c 100644 --- a/frontend/src/pages/AdminCatalogsPage.jsx +++ b/frontend/src/pages/AdminCatalogsPage.jsx @@ -11,10 +11,10 @@ export default function AdminCatalogsPage() { const [editingFA, setEditingFA] = useState(null) const [newFA, setNewFA] = useState({ name: '', description: '', color: '#1D9E75', icon: '' }) - // Training Styles + // Style Directions (Stilrichtungen) const [trainingStyles, setTrainingStyles] = useState([]) const [editingTS, setEditingTS] = useState(null) - const [newTS, setNewTS] = useState({ name: '', description: '', parent_style_id: null }) + const [newTS, setNewTS] = useState({ name: '', description: '', focus_area_id: null }) // Training Characters const [trainingCharacters, setTrainingCharacters] = useState([]) @@ -139,7 +139,7 @@ export default function AdminCatalogsPage() { async function createStyleDirection() { try { await api.createStyleDirection(newTS) - setNewTS({ name: '', description: '', parent_style_id: null }) + setNewTS({ name: '', description: '', focus_area_id: null }) loadData() } catch (e) { setError(e.message) @@ -497,15 +497,15 @@ export default function AdminCatalogsPage() { />
+ {ts.focus_area_icon} {ts.focus_area_name} +
+ )} {ts.parent_style_name && (- → {ts.parent_style_name} + → Untergeordnet: {ts.parent_style_name}
)}{ts.description}