// ui
import { PieGraph } from "components/ui";
// types
import { IUserStateDistribution, TStateGroups } from "types";
// constants
import { STATE_GROUP_COLORS } from "constants/state";

type Props = {
  groupedIssues: IUserStateDistribution[] | undefined;
};

export const IssuesPieChart: React.FC<Props> = ({ groupedIssues }) => (
  <div>
    <h3 className="mb-2 font-semibold">Issues by States</h3>
    <div className="rounded-[10px] border border-custom-border-200 bg-custom-background-100 p-4">
      <div className="grid grid-cols-1 sm:grid-cols-4">
        <div className="sm:col-span-3">
          <PieGraph
            data={
              groupedIssues?.map((cell) => ({
                id: cell.state_group,
                label: cell.state_group,
                value: cell.state_count,
                color: STATE_GROUP_COLORS[cell.state_group.toLowerCase() as TStateGroups],
              })) ?? []
            }
            height="320px"
            innerRadius={0.6}
            cornerRadius={5}
            padAngle={2}
            enableArcLabels
            arcLabelsTextColor="#000000"
            enableArcLinkLabels={false}
            activeInnerRadiusOffset={5}
            colors={(datum) => datum.data.color}
            tooltip={(datum) => (
              <div className="flex items-center gap-2 rounded-md border border-custom-border-200 bg-custom-background-90 p-2 text-xs">
                <span className="text-custom-text-200 capitalize">{datum.datum.label} issues:</span> {datum.datum.value}
              </div>
            )}
            margin={{
              top: 32,
              right: 0,
              bottom: 32,
              left: 0,
            }}
            theme={{
              background: "transparent",
            }}
          />
        </div>
        <div className="flex sm:block items-center gap-3 flex-wrap justify-center sm:space-y-2 sm:self-end sm:justify-self-end sm:px-8 sm:pb-8">
          {groupedIssues?.map((cell) => (
            <div key={cell.state_group} className="flex items-center gap-2">
              <div className="h-2 w-2" style={{ backgroundColor: STATE_GROUP_COLORS[cell.state_group] }} />
              <div className="capitalize text-custom-text-200 text-xs whitespace-nowrap">
                {cell.state_group}- {cell.state_count}
              </div>
            </div>
          ))}
        </div>
      </div>
    </div>
  </div>
);