import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, } from "recharts"; import { Card, CardContent, CardHeader, CardTitle } from "@pram/ui/components/card"; import { formatTime } from "@/lib/time"; import { formatLabel } from "@/lib/format"; export interface SectionTimeItem { sectionTypeName: string; avgTimeSpentSec: number; totalTimeSpentSec: number; } export interface FormatTimeItem { format: string; avgTimeSpentSec: number; totalTimeSpentSec: number; } export interface TimeTrendItem { date: string; avgTimeSpentSec: number; } interface TimeAnalyticsPanelProps { sectionTime: SectionTimeItem[] | undefined; formatTimeData: FormatTimeItem[] | undefined; timeTrend: TimeTrendItem[] | undefined; } export function TimeAnalyticsPanel({ sectionTime, formatTimeData, timeTrend }: TimeAnalyticsPanelProps) { return (
Waktu per Section {sectionTime && sectionTime.length > 0 ? (
{sectionTime.map((item) => (
{item.sectionTypeName}
{formatTime(item.avgTimeSpentSec)}
))}
) : (
Belum ada data.
)} Waktu per Format Soal {formatTimeData && formatTimeData.length > 0 ? (
{formatTimeData.map((item) => (
{formatLabel(item.format)}
{formatTime(item.avgTimeSpentSec)}
))}
) : (
Belum ada data.
)} Tren Waktu per Hari {timeTrend && timeTrend.length > 0 ? ( { const d = new Date(v); return `${d.getDate()}/${d.getMonth() + 1}`; }} tick={{ fontSize: 12, fill: "var(--warm-charcoal)" }} axisLine={{ stroke: "var(--oat-border)" }} tickLine={false} /> `${Math.round(v / 60)}m`} /> [formatTime(typeof value === "number" ? value : 0), "Rata-rata Waktu"]} /> ) : (
Belum ada data.
)}
); }