PassesPieChart.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // components
  2. import Spring from '@components/Spring';
  3. import TabButton from '@ui/TabButton';
  4. import {PieChart, Pie, Cell, ResponsiveContainer, Tooltip} from 'recharts';
  5. import ChartTooltip from '@ui/ChartTooltip';
  6. // hooks
  7. import {useState} from 'react';
  8. const data = {
  9. first: [
  10. {name: 'Group A', value: 400},
  11. {name: 'Group B', value: 300},
  12. {name: 'Group C', value: 300}
  13. ],
  14. second: [
  15. {name: 'Group A', value: 500},
  16. {name: 'Group B', value: 800},
  17. {name: 'Group C', value: 200}
  18. ]
  19. }
  20. const COLORS = ['var(--azure)', 'var(--grass)', 'var(--accent)'];
  21. const PassesPieChart = () => {
  22. const [selectedHalf, setSelectedHalf] = useState('first');
  23. return (
  24. <Spring className="card d-flex flex-column justify-content-between">
  25. <h3 className="card_header">Passes stats</h3>
  26. <div style={{height: 300}}>
  27. <ResponsiveContainer width="100%" height="100%">
  28. <PieChart>
  29. <Pie
  30. data={data[selectedHalf]}
  31. cx="50%"
  32. cy="50%"
  33. innerRadius={0}
  34. outerRadius={130}
  35. dataKey="value"
  36. stroke="var(--widget)"
  37. strokeWidth={5}
  38. >
  39. {data[selectedHalf].map((entry, index) => (
  40. <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]}/>
  41. ))}
  42. </Pie>
  43. <Tooltip content={<ChartTooltip/>}/>
  44. </PieChart>
  45. </ResponsiveContainer>
  46. </div>
  47. <div className="card_footer" style={{paddingTop: 0}}>
  48. <div className="tab-nav col-2">
  49. <TabButton title="First half"
  50. active={selectedHalf === 'first'}
  51. onClick={() => setSelectedHalf('first')}/>
  52. <TabButton title="Second half"
  53. active={selectedHalf === 'second'}
  54. onClick={() => setSelectedHalf('second')}/>
  55. </div>
  56. </div>
  57. </Spring>
  58. )
  59. }
  60. export default PassesPieChart