// ui import { IDefaultAnalyticsUser } from "@plane/types"; import { BarGraph, ProfileEmptyState } from "@/components/ui"; // image import emptyBarGraph from "public/empty-state/empty_bar_graph.svg"; // types type Props = { pendingUnAssignedIssuesUser: IDefaultAnalyticsUser | undefined; pendingAssignedIssues: IDefaultAnalyticsUser[]; }; export const AnalyticsScope: React.FC<Props> = ({ pendingUnAssignedIssuesUser, pendingAssignedIssues }) => ( <div className="rounded-[10px] border border-custom-border-200 p-3"> <div className="divide-y divide-custom-border-200"> <div> <div className="flex items-center justify-between"> <h6 className=" text-base font-medium">Pending issues</h6> {pendingUnAssignedIssuesUser && ( <div className="relative flex items-center py-1 px-3 rounded-md gap-2 text-xs text-custom-primary-100 bg-custom-primary-100/10"> Unassigned: {pendingUnAssignedIssuesUser.count} </div> )} </div> {pendingAssignedIssues && pendingAssignedIssues.length > 0 ? ( <BarGraph data={pendingAssignedIssues} indexBy="assignees__id" keys={["count"]} height="250px" colors={() => `#f97316`} customYAxisTickValues={pendingAssignedIssues.map((d) => (d.count > 0 ? d.count : 50))} tooltip={(datum) => { const assignee = pendingAssignedIssues.find((a) => a.assignees__id === `${datum.indexValue}`); return ( <div className="rounded-md border border-custom-border-200 bg-custom-background-80 p-2 text-xs"> <span className="font-medium text-custom-text-200"> {assignee ? assignee.assignees__display_name : "No assignee"}:{" "} </span> {datum.value} </div> ); }} axisBottom={{ renderTick: (datum) => { const assignee = pendingAssignedIssues[datum.tickIndex] ?? ""; if (assignee && assignee?.assignees__avatar && assignee?.assignees__avatar !== "") return ( <g transform={`translate(${datum.x},${datum.y})`}> <image x={-8} y={10} width={16} height={16} xlinkHref={assignee?.assignees__avatar} style={{ clipPath: "circle(50%)" }} /> </g> ); else return ( <g transform={`translate(${datum.x},${datum.y})`}> <circle cy={18} r={8} fill="#374151" /> <text x={0} y={21} textAnchor="middle" fontSize={9} fill="#ffffff"> {datum.value ? `${assignee.assignees__display_name}`.toUpperCase()[0] : "?"} </text> </g> ); }, }} margin={{ top: 20 }} theme={{ axis: {}, }} /> ) : ( <div className="px-7 py-4"> <ProfileEmptyState title="No Data yet" description="Analysis of pending issues by co-workers appears here." image={emptyBarGraph} /> </div> )} </div> </div> </div> );