From edb8125e562de2ba564f350f29bcb83a50e4ebf6 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 20 Feb 2026 11:57:18 +0100 Subject: [PATCH] Implement collapse functionality in EvaluationDetailPage and DimensionCard components, allowing users to collapse all dimension cards simultaneously for improved usability and organization. --- src/app/evaluations/[id]/page.tsx | 31 ++++++++++++++++++++++++------- src/components/DimensionCard.tsx | 11 ++++++++++- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/app/evaluations/[id]/page.tsx b/src/app/evaluations/[id]/page.tsx index 5d18544..b8646e5 100644 --- a/src/app/evaluations/[id]/page.tsx +++ b/src/app/evaluations/[id]/page.tsx @@ -54,6 +54,7 @@ export default function EvaluationDetailPage() { const [templates, setTemplates] = useState<{ id: string; name: string }[]>([]); const [exportOpen, setExportOpen] = useState(false); const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false); + const [collapseAllTrigger, setCollapseAllTrigger] = useState(0); const fetchEval = useCallback(() => { setLoading(true); @@ -214,16 +215,22 @@ export default function EvaluationDetailPage() { const dimensions = evaluation.template?.dimensions ?? []; const dimensionScores = evaluation.dimensionScores ?? []; const scoreMap = new Map(dimensionScores.map((ds) => [ds.dimensionId, ds])); - const radarData = dimensionScores - .filter((ds) => ds.score != null) - .map((ds) => { - const title = ds.dimension?.title ?? ""; + const radarData = dimensions + .filter((dim) => !(dim.title ?? "").startsWith("[Optionnel]")) + .map((dim) => { + const ds = scoreMap.get(dim.id); + const score = ds?.score; + if (score == null) return null; + const title = dim.title ?? ""; + const s = Number(score); + if (Number.isNaN(s) || s < 0 || s > 5) return null; return { dimension: title.length > 12 ? title.slice(0, 12) + "…" : title, - score: ds.score ?? 0, + score: s, fullMark: 5, }; - }); + }) + .filter((d): d is { dimension: string; score: number; fullMark: number } => d != null); const avgScore = computeAverageScore(dimensionScores); return ( @@ -275,7 +282,16 @@ export default function EvaluationDetailPage() {
-

Dimensions

+
+

Dimensions

+ +