32 lines
694 B
TypeScript
32 lines
694 B
TypeScript
import { CLabelProps } from "@/src/types";
|
|
|
|
const renderCustomLabel = ({
|
|
cx = 0,
|
|
cy = 0,
|
|
midAngle = 0,
|
|
innerRadius = 0,
|
|
outerRadius = 0,
|
|
percent = 0,
|
|
}: CLabelProps) => {
|
|
if (percent < 0.05) return null;
|
|
const RADIAN = Math.PI / 180;
|
|
const radius = innerRadius + (outerRadius - innerRadius) * 0.5;
|
|
const x = cx + radius * Math.cos(-midAngle * RADIAN);
|
|
const y = cy + radius * Math.sin(-midAngle * RADIAN);
|
|
|
|
return (
|
|
<text
|
|
x={x}
|
|
y={y}
|
|
fill="white"
|
|
textAnchor="middle"
|
|
dominantBaseline="central"
|
|
className="text-sm font-semibold"
|
|
>
|
|
{`${(percent * 100).toFixed(0)}%`}
|
|
</text>
|
|
);
|
|
};
|
|
|
|
export default renderCustomLabel;
|