import React from 'react'
import NavStateLink from '../NavStateLink'
import {
frameworkSessionDurationLabel,
splitFrameworkCommaAgg,
splitFrameworkGoalsAgg,
frameworkProgramHasCatalogMeta,
} from '../../utils/frameworkProgramListHelpers'
function CatalogGroup({ label, items, variant }) {
if (!items.length) return null
return (
{label}
{items.map((name) => (
-
{name}
))}
)
}
/**
* Einzelkarte für die Rahmenprogramm-Bibliothek.
*/
export default function FrameworkProgramListCard({ row, returnContext, onDelete }) {
const title = (row.title || '').trim() || `Rahmen #${row.id}`
const description = (row.description || '').trim()
const durationLabel = frameworkSessionDurationLabel(row)
const hasDuration = durationLabel !== 'Dauer nicht angegeben'
const goals = splitFrameworkGoalsAgg(row.goal_titles_agg)
const focusAreas = splitFrameworkCommaAgg(row.focus_area_names_agg)
const styleDirs = splitFrameworkCommaAgg(
row.style_direction_names_agg || row.style_direction_name
)
const trainingTypes = splitFrameworkCommaAgg(row.training_type_names_agg)
const targetGroups = splitFrameworkCommaAgg(row.target_group_names_agg)
const goalsCount = Number(row.goals_count)
const slotsCount = Number(row.slots_count)
const showCatalog = frameworkProgramHasCatalogMeta(row)
return (
{title}
{description ? (
{description}
) : null}
-
Session
{durationLabel}
-
Ziele
{Number.isFinite(goalsCount) ? goalsCount : '—'}
-
Sessions
{Number.isFinite(slotsCount) ? slotsCount : '—'}
{goals.length > 0 ? (
Entwicklungsziele
{goals.map((g) => (
-
{g}
))}
) : null}
{showCatalog ? (
) : null}
)
}