diff --git a/apps/frontend/src/routes/_dashboardLayout/assessmentResult/index.lazy.tsx b/apps/frontend/src/routes/_dashboardLayout/assessmentResult/index.lazy.tsx index 392ccd6..23b1c25 100644 --- a/apps/frontend/src/routes/_dashboardLayout/assessmentResult/index.lazy.tsx +++ b/apps/frontend/src/routes/_dashboardLayout/assessmentResult/index.lazy.tsx @@ -1,4 +1,4 @@ -import { SetStateAction, useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import html2pdf from "html2pdf.js"; import useAuth from "@/hooks/useAuth"; import { createLazyFileRoute } from "@tanstack/react-router"; @@ -10,7 +10,6 @@ import { PolarAngleAxis, PolarRadiusAxis, PolarGrid, Radar, RadarChart } from "r import { Card, CardContent, - CardFooter, CardHeader, CardTitle, } from "@/shadcn/components/ui/card" @@ -44,6 +43,7 @@ export default function AssessmentResultPage() { setAssessmentId(id ?? undefined); }, []); + //fetch data from API const { data: aspectsData } = useQuery(aspectQueryOptions(0, 10)); const { data: assessmentResult } = useQuery(getAssessmentResultByIdQueryOptions(assessmentId)); const { data: verifiedAssessmentResult } = useQuery(getVerifiedAssessmentResultByIdQueryOptions(assessmentId)); @@ -74,30 +74,38 @@ export default function AssessmentResultPage() { return !isNaN(parsedScore) ? parsedScore.toFixed(2) : '0'; }; + // Total score const totalScore = parseFloat(formatScore(assessmentResult?.assessmentsResult)); const totalVerifiedScore = parseFloat(formatScore(verifiedAssessmentResult?.verifiedAssessmentsResult)); + // Mengatur warna dan level maturitas berdasarkan skor const getScoreStyleClass = (score: number | undefined, isBg: boolean = false) => { if (score === undefined || score === null) return { color: 'grey' }; let colorVar = '--levelOne-color'; let textColor = 'white'; + let descLevel = '1'; if (score >= 1.50 && score < 2.50) { colorVar = '--levelTwo-color'; + descLevel = '2'; } else if (score >= 2.50 && score < 3.50) { colorVar = '--levelThree-color'; + descLevel = '3'; } else if (score >= 3.50 && score < 4.49) { colorVar = '--levelFour-color'; + descLevel = '4'; } else if (score >= 4.50 && score <= 5) { colorVar = '--levelFive-color'; + descLevel = '5'; } return isBg - ? { backgroundColor: `var(${colorVar})`, color: textColor } - : { color: `var(${colorVar})` }; + ? { backgroundColor: `var(${colorVar})`, color: textColor, descLevel } + : { color: `var(${colorVar})`, descLevel }; }; + // Warna aspek const aspectsColors = [ "#DBED9B", "#FF3F9F", @@ -106,6 +114,7 @@ export default function AssessmentResultPage() { "#5FD4E7", ]; + // Data diagram const chartData = aspectsData?.data?.map((aspect, index) => ({ aspectName: aspect.name, score: Number(formatScore(getAspectScore(aspect.id))), @@ -159,6 +168,7 @@ export default function AssessmentResultPage() { return config; }, {} as ChartConfig) || {}; + // Mengatur tampilan label sumbu X const customizedAxisTick = (props: any) => { const { x, y, payload } = props; return ( @@ -178,6 +188,7 @@ export default function AssessmentResultPage() { ); }; + // Dropdown State const [isOpen, setIsOpen] = useState(false); const [selectedItem, setSelectedItem] = useState('Hasil Sementara'); @@ -189,7 +200,7 @@ export default function AssessmentResultPage() { setSelectedItem(prev => prev === 'Hasil Sementara' ? 'Hasil Terverifikasi' : 'Hasil Sementara' ); - setIsOpen(false); // Tutup dropdown setelah klik item + setIsOpen(false); }; // Pie Chart Component @@ -274,6 +285,7 @@ export default function AssessmentResultPage() { ); } + // Radar Chart Component function RadarChartComponent({ chartData, chartConfig }: { chartData: { aspectName: string, score: number }[], chartConfig: ChartConfig }) { return (
Tingkatan Level Maturitas