'use client'
import type { TrainingAssignment, ModuleContent, TrainingMedia, InteractiveVideoManifest } from '@/lib/sdk/training/types'
import { getMediaStreamURL } from '@/lib/sdk/training/api'
import InteractiveVideoPlayer from '@/components/training/InteractiveVideoPlayer'
function simpleMarkdownToHtml(md: string): string {
return md
.replace(/^### (.+)$/gm, '
$1
')
.replace(/^## (.+)$/gm, '$1
')
.replace(/^# (.+)$/gm, '$1
')
.replace(/\*\*(.+?)\*\*/g, '$1')
.replace(/\*(.+?)\*/g, '$1')
.replace(/^- (.+)$/gm, '$1')
.replace(/^(\d+)\. (.+)$/gm, '$2')
.replace(/\n\n/g, '
')
}
interface ContentViewProps {
selectedAssignment: TrainingAssignment | null
content: ModuleContent | null
media: TrainingMedia[]
interactiveManifest: InteractiveVideoManifest | null
onStartQuiz: () => void
onAllCheckpointsPassed: () => void
}
export function ContentView({
selectedAssignment, content, media, interactiveManifest, onStartQuiz, onAllCheckpointsPassed,
}: ContentViewProps) {
if (!selectedAssignment) {
return Waehlen Sie eine Schulung aus dem Tab "Meine Schulungen"
}
return (
{selectedAssignment.module_title}
{interactiveManifest && (
Interaktive Video-Schulung
Interaktiv
)}
{media.length > 0 && (
{media.filter(m => m.media_type === 'audio' && m.status === 'completed').map(m => (
Audio-Schulung
))}
{media.filter(m => m.media_type === 'video' && m.status === 'completed' && m.generated_by !== 'tts_ffmpeg_interactive').map(m => (
Video-Schulung
))}
)}
{content ? (
) : (
Kein Schulungsinhalt verfuegbar
)}
)
}