diff --git a/backend/version.py b/backend/version.py index b3e05cf..9e7a6d1 100644 --- a/backend/version.py +++ b/backend/version.py @@ -1,6 +1,6 @@ # Shinkan Jinkendo Version Information -APP_VERSION = "0.8.128" +APP_VERSION = "0.8.129" BUILD_DATE = "2026-05-12" DB_SCHEMA_VERSION = "20260514062" @@ -36,6 +36,13 @@ MODULE_VERSIONS = { } CHANGELOG = [ + { + "version": "0.8.129", + "date": "2026-05-13", + "changes": [ + "Frontend Phase 3: TrainingPlanningTrainerAssignModal (Trainer zuweisen) aus Trainingsplanungsseite; Handler per useCallback.", + ], + }, { "version": "0.8.128", "date": "2026-05-13", diff --git a/frontend/src/components/planning/TrainingPlanningTrainerAssignModal.jsx b/frontend/src/components/planning/TrainingPlanningTrainerAssignModal.jsx new file mode 100644 index 0000000..ac861fc --- /dev/null +++ b/frontend/src/components/planning/TrainingPlanningTrainerAssignModal.jsx @@ -0,0 +1,155 @@ +import React from 'react' + +/** + * Modal: organisatorische Trainer-Zuweisung (Leitung + Co) für eine bestehende Einheit. + */ +export default function TrainingPlanningTrainerAssignModal({ + open, + unit, + leadTrainerProfileId, + onLeadChange, + sessionAssistantsInherit, + onSessionAssistantsInheritChange, + sessionAssistantProfileIds, + onCoTrainerToggle, + clubDirectory, + coTrainerOptions, + saving, + onBackdropRequestClose, + onCancel, + onSave, +}) { + if (!open || !unit) return null + + return ( +
+ {(unit.planned_date || '').toString().slice(0, 10)} + {unit.planned_time_start ? ` · ${String(unit.planned_time_start).slice(0, 5)}` : ''} + {(unit.group_name || '').trim() ? ` · ${(unit.group_name || '').trim()}` : null} +
++ Mitgliederverzeichnis konnte nicht geladen werden. +
+ ) : null} +- {(assignDraft.unit.planned_date || '').toString().slice(0, 10)} - {assignDraft.unit.planned_time_start - ? ` · ${String(assignDraft.unit.planned_time_start).slice(0, 5)}` - : ''} - {(assignDraft.unit.group_name || '').trim() - ? ` · ${(assignDraft.unit.group_name || '').trim()}` - : null} -
-- Mitgliederverzeichnis konnte nicht geladen werden. -
- ) : null} -