/** * Voller Katalog-Inhalt einer Übung (Lesemodus für Coach/Mobile). * Optional: geplante Variante (`variantId`) — Beschreibung und Durchführungsänderungen oben. */ import React from 'react' import { Link } from 'react-router-dom' import ExerciseRichTextBlock from './ExerciseRichTextBlock' import CombinationCoachSlots from './CombinationCoachSlots' import { effectiveComboMethodProfile } from '../utils/comboPlanningMethodProfile' function TagRow({ exercise }) { const tags = [] ;(exercise.focus_areas || []).forEach((f) => { tags.push({ key: `fa-${f.id}`, label: f.name, accent: !!f.is_primary }) }) ;(exercise.training_styles || []).forEach((t) => { tags.push({ key: `ts-${t.id}`, label: t.name, accent: false }) }) ;(exercise.training_types || []).forEach((t) => { tags.push({ key: `tt-${t.id}`, label: t.name, accent: false }) }) ;(exercise.target_groups || []).forEach((g) => { tags.push({ key: `tg-${g.id}`, label: g.name, accent: !!g.is_primary }) }) if (tags.length === 0) return null return (
Übung aus Katalog laden…
{error}
} if (!exercise) return null const resolvedId = exercise.id ?? exerciseId const meta = metaParts(exercise) const variant = variantId != null && variantId !== '' && Array.isArray(exercise.variants) && exercise.variants.length ? exercise.variants.find((v) => String(v.id) === String(variantId)) || null : null const isCombination = String(exercise.exercise_kind || 'simple').toLowerCase().trim() === 'combination' const catalogFromExercise = exercise.method_profile && typeof exercise.method_profile === 'object' && !Array.isArray(exercise.method_profile) ? exercise.method_profile : {} const catalogFromUnit = catalogMethodProfileSnapshot && typeof catalogMethodProfileSnapshot === 'object' && !Array.isArray(catalogMethodProfileSnapshot) ? catalogMethodProfileSnapshot : {} const coachComboProfile = isCombination ? effectiveComboMethodProfile({ ...catalogFromExercise, ...catalogFromUnit }, planningComboMethodProfile) : null return ({variant.variant_name || `Variante #${variant.id}`}
{variant.description ? ({meta.join(' · ')}
)}Volle Übungsseite im Browser
)}