From 5338871f3635a34741910fcb0414cab0321712db Mon Sep 17 00:00:00 2001 From: Lars Date: Fri, 15 May 2026 12:21:08 +0200 Subject: [PATCH] Enhance TrainingCoachPage and TrainingUnitRunPage with improved context display and print functionality - Updated TrainingCoachPage to include coach context in timeline entries and section titles, enhancing clarity for users. - Refactored TrainingUnitRunPage to support printing options for parallel streams, allowing for better organization during printouts. - Introduced new CSS styles for page breaks and layout adjustments in app.css, improving print formatting for training plans. - Enhanced utility functions in trainingPlanUtils.js to support new phase and stream management features, streamlining data handling. --- frontend/src/app.css | 15 + frontend/src/pages/TrainingCoachPage.jsx | 26 +- frontend/src/pages/TrainingUnitRunPage.jsx | 655 ++++++++++++++++----- frontend/src/utils/trainingPlanUtils.js | 135 ++++- 4 files changed, 657 insertions(+), 174 deletions(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index bacc69e..a53ce54 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -6658,6 +6658,21 @@ button.combo-coach-cand-link:hover { max-width: none !important; padding: 0 !important; } + /* Split: jede weitere Breakout-Spalte auf neuer Seite (Gesamtplan-Druck) */ + .training-run-breakout-stream--page-break { + break-before: page; + page-break-before: always; + } + .training-run-parallel-columns { + display: block !important; + } + .training-run-breakout-stream { + margin-bottom: 14px; + } + .training-run-phase-schedule { + break-inside: avoid; + page-break-inside: avoid; + } .training-run-section, .training-run-header { break-inside: avoid; diff --git a/frontend/src/pages/TrainingCoachPage.jsx b/frontend/src/pages/TrainingCoachPage.jsx index bd22b50..6df96f4 100644 --- a/frontend/src/pages/TrainingCoachPage.jsx +++ b/frontend/src/pages/TrainingCoachPage.jsx @@ -1,6 +1,6 @@ /** * Coach-Modus: eine Position nach der anderen mit Assistentenhinweisen, Zeitnahme und optionaler Nachbereitung. - * Parallele Streams: Schritte aus flattenPlanTimeline (linear); Stream-/Phasenwahl später einzubinden. + * Timeline: flach in Phasen-/Stream-Reihenfolge (flattenPlanTimeline). */ import React, { useCallback, useEffect, useMemo, useState } from 'react' import { Link, useNavigate, useParams } from 'react-router-dom' @@ -525,7 +525,7 @@ export default function TrainingCoachPage() {
{timeline.map((ent, ix) => { const lbl = summarizeTimelineEntry(ent) - const secTitle = ent.sec.title || `Abschnitt ${ent.si + 1}` + const ctx = ent.coachContext || '' const active = coachDebriefPhase ? ix === timeline.length - 1 : ix === step return ( ) @@ -573,7 +577,10 @@ export default function TrainingCoachPage() { const val = deltas[k]?.actual_duration_min ?? ent.item.actual_duration_min ?? '' return (