Massive/AppPieChart.tsx

58 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-10-24 08:32:31 +00:00
import { useWindowDimensions } from "react-native";
import { PieChart } from "react-native-chart-kit";
2023-10-26 05:53:01 +00:00
import { useTheme } from "react-native-paper";
2023-10-24 08:32:31 +00:00
export interface Option {
value: number;
label: string;
}
export default function AppPieChart({ options }: { options: Option[] }) {
2023-10-24 08:32:31 +00:00
const { width } = useWindowDimensions();
2023-10-26 05:53:01 +00:00
const { colors } = useTheme();
2023-10-24 08:32:31 +00:00
const pieChartColors = [
2023-10-28 02:18:47 +00:00
"#FF7F50", // Coral
"#1E90FF", // Dodger Blue
"#32CD32", // Lime Green
"#BA55D3", // Medium Orchid
"#FFD700", // Gold
"#48D1CC", // Medium Turquoise
"#FF69B4", // Hot Pink
2023-10-24 08:32:31 +00:00
];
const data = options.map((option, index) => ({
name: option.label,
value: option.value,
2023-10-24 08:32:31 +00:00
color: pieChartColors[index],
2023-10-26 05:53:01 +00:00
legendFontColor: colors.onSurface,
2023-10-24 08:32:31 +00:00
legendFontSize: 15,
}));
return (
<PieChart
data={data}
paddingLeft="0"
width={width}
height={220}
chartConfig={{
backgroundColor: "#e26a00",
backgroundGradientFrom: "#fb8c00",
backgroundGradientTo: "#ffa726",
color: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`,
labelColor: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`,
style: {
borderRadius: 16,
},
propsForDots: {
r: "6",
strokeWidth: "2",
stroke: "#ffa726",
},
}}
accessor={"value"}
backgroundColor={"transparent"}
/>
);
}