Skip to content

Commit ec0f46c

Browse files
authored
Create grach.tsx
1 parent aa6dc4c commit ec0f46c

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed

scr/grach.tsx

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import React from 'react';
2+
import {
3+
BarChart,
4+
Bar,
5+
XAxis,
6+
YAxis,
7+
CartesianGrid,
8+
Tooltip,
9+
Legend,
10+
ResponsiveContainer
11+
} from 'recharts';
12+
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
13+
14+
const JavaDownloadStats = () => {
15+
const data = [
16+
{
17+
name: 'AdoptOpenJDK',
18+
downloads: 8500,
19+
percentageOfTotal: 28,
20+
info: 'Популярен среди разработчиков',
21+
},
22+
{
23+
name: 'Oracle Java',
24+
downloads: 7200,
25+
percentageOfTotal: 24,
26+
info: 'Официальный источник',
27+
},
28+
{
29+
name: 'Amazon Corretto',
30+
downloads: 4800,
31+
percentageOfTotal: 16,
32+
info: 'Выбор AWS пользователей',
33+
},
34+
{
35+
name: 'Microsoft OpenJDK',
36+
downloads: 4200,
37+
percentageOfTotal: 14,
38+
info: 'Популярен среди Windows пользователей',
39+
},
40+
{
41+
name: 'Azul Zulu',
42+
downloads: 3000,
43+
percentageOfTotal: 10,
44+
info: 'Корпоративный выбор',
45+
},
46+
{
47+
name: 'Red Hat OpenJDK',
48+
downloads: 2400,
49+
percentageOfTotal: 8,
50+
info: 'Выбор Linux пользователей',
51+
},
52+
];
53+
54+
const CustomTooltip = ({ active, payload }) => {
55+
if (active && payload && payload.length) {
56+
const data = payload[0].payload;
57+
return (
58+
<div className="bg-white p-4 border rounded-lg shadow-lg">
59+
<p className="font-bold">{data.name}</p>
60+
<p className="text-sm">Скачиваний: {data.downloads.toLocaleString()}</p>
61+
<p className="text-sm">Доля: {data.percentageOfTotal}%</p>
62+
<p className="text-sm text-gray-600">{data.info}</p>
63+
</div>
64+
);
65+
}
66+
return null;
67+
};
68+
69+
return (
70+
<Card className="w-full max-w-4xl">
71+
<CardHeader>
72+
<CardTitle>Распределение скачиваний Java по источникам</CardTitle>
73+
</CardHeader>
74+
<CardContent>
75+
<div className="h-96 w-full">
76+
<ResponsiveContainer width="100%" height="100%">
77+
<BarChart
78+
data={data}
79+
margin={{
80+
top: 20,
81+
right: 30,
82+
left: 20,
83+
bottom: 5,
84+
}}
85+
>
86+
<CartesianGrid strokeDasharray="3 3" />
87+
<XAxis
88+
dataKey="name"
89+
angle={-45}
90+
textAnchor="end"
91+
height={60}
92+
interval={0}
93+
/>
94+
<YAxis />
95+
<Tooltip content={<CustomTooltip />} />
96+
<Legend />
97+
<Bar
98+
dataKey="downloads"
99+
name="Количество скачиваний"
100+
fill="#3b82f6"
101+
radius={[4, 4, 0, 0]}
102+
/>
103+
</BarChart>
104+
</ResponsiveContainer>
105+
</div>
106+
<div className="mt-4 text-sm text-gray-600">
107+
* Данные показывают относительную популярность различных источников Java для Minecraft
108+
</div>
109+
</CardContent>
110+
</Card>
111+
);
112+
};
113+
114+
export default JavaDownloadStats;

0 commit comments

Comments
 (0)