import { useEffect, useState } from "react"; import { CartesianGrid, Legend, Line, LineChart, Tooltip, XAxis, YAxis, } from "recharts"; import { useSharedContext } from "@/lib/shared-context"; import { PRData, WeeklyCount } from "@/app/Interfaces/interface"; export function PRLineChartData({ args }: any) { const { prData } = useSharedContext(); const [lineData, setLineData] = useState([]); useEffect(() => { console.log(args); let weeklyData; if (args?.userId) { weeklyData = groupPRsByWeek( prData.filter((pr: PRData) => pr.userId === args.userId), ); } else { weeklyData = groupPRsByWeek(prData); } weeklyData = weeklyData.map((item: WeeklyCount) => ({ ...item, week: item.week.split("-").slice(1, 3).join("/"), })); console.log(weeklyData); setLineData(weeklyData); }, [args]); function groupPRsByWeek(prs: PRData[]): WeeklyCount[] { const weekMap: Record = {}; prs.forEach((pr) => { const date = new Date(pr.createdAt); const day = date.getUTCDay(); // 0 (Sun) to 6 (Sat) const diffToMonday = (day + 6) % 7; // get difference to previous Monday const monday = new Date(date); monday.setUTCDate(date.getUTCDate() - diffToMonday); monday.setUTCHours(0, 0, 0, 0); // normalize to midnight const mondayStr = monday.toISOString().split("T")[0]; weekMap[mondayStr] = (weekMap[mondayStr] || 0) + 1; }); return Object.entries(weekMap) .map(([week, count]) => ({ week, count })) .sort((a, b) => a.week.localeCompare(b.week)); } return (

Weekly PR Trends

{/* } /> */} {/* */} {/* */}
); } const CustomPieTooltip = ({ active, payload }: any) => { if (active && payload && payload.length) { const { week, count } = payload[0].payload; return (
{`${week} - ${count}`}
); } return null; };