import { Cell } from "recharts"; import { PRData } from "@/app/Interfaces/interface"; import { useSharedContext } from "@/lib/shared-context"; import { useEffect, useState } from "react"; import { Pie, PieChart, Tooltip } from "recharts"; export function PRPieData({ args }: any) { const [userPRData, setUserPRData] = useState([]); const { prData } = useSharedContext(); const status = [ { name: "approved", color: "bg-green-300", value: "rgb(134 239 172)", }, { name: "needs_revision", color: "bg-yellow-300", value: "rgb(253 224 71)", }, { name: "merged", color: "bg-purple-300", value: "rgb(216 180 254)", }, { name: "in_review", color: "bg-blue-300", value: "rgb(147 197 253)", }, ]; useEffect(() => { console.log( args?.userId, prData.filter((pr: PRData) => pr.userId === args?.userId), ); console.log(args?.userId); const pieData = Object.entries( getStatusCounts( prData.filter((pr: PRData) => pr.userId === args?.userId), ), ).map(([status, count]) => ({ name: status, value: count, })); setUserPRData(pieData); }, [args]); const getStatusCounts = (data: PRData[]) => { return data.reduce((acc: any, pr: PRData) => { acc[pr.status] = (acc[pr.status] || 0) + 1; return acc; }, {}); }; return (

PR Status Distribution

value} > {userPRData.map((entry, index: number) => ( s.name === entry.name)?.value} /> ))} } /> {/* */}
{chunkArray(status, 2).map((row, rowIdx) => (
{row.map((entry: any) => (
{entry.name.split("_").join(" ")}
))}
))}
); } export const CustomPieTooltip = ({ active, payload }: any) => { if (active && payload && payload.length) { const { name } = payload[0].payload; return (
{name.split("_").join(" ")}
); } return null; }; export function chunkArray(array: any, size: number) { const result = []; for (let i = 0; i < array.length; i += size) { result.push(array.slice(i, i + size)); } return result; }