"use client"; import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, } from "@/components/ui/chart"; import { Progress } from "@/components/ui/progress"; import { cn } from "@/lib/utils"; interface ChartGroup10Props { className?: string; } const timeLabel = (hour: number) => { const formattedHour = hour.toLocaleString("fa-IR", { minimumIntegerDigits: 2, useGrouping: false, }); const formattedMinute = (0).toLocaleString("fa-IR", { minimumIntegerDigits: 2, useGrouping: false, }); return `${formattedHour}:${formattedMinute}`; }; const numberFormatter = new Intl.NumberFormat("fa-IR", { maximumFractionDigits: 0, }); const compactNumberFormatter = new Intl.NumberFormat("fa-IR", { notation: "compact", maximumFractionDigits: 1, }); const percentFormatter = new Intl.NumberFormat("fa-IR", { maximumFractionDigits: 2, minimumFractionDigits: 0, }); const formatPercent = (value: number) => `${percentFormatter.format(value)}٪`; const chartData = [ { hour: timeLabel(0), requests: 1200, errors: 12 }, { hour: timeLabel(4), requests: 800, errors: 8 }, { hour: timeLabel(8), requests: 2400, errors: 24 }, { hour: timeLabel(12), requests: 3200, errors: 48 }, { hour: timeLabel(16), requests: 2800, errors: 28 }, { hour: timeLabel(20), requests: 1800, errors: 18 }, ]; const chartConfig = { requests: { label: "درخواست‌ها", color: "var(--chart-1)" }, } satisfies ChartConfig; const services = [ { name: "دروازه اتصال هوشمند", status: "healthy" as const, uptime: 99.99 }, { name: "پایگاه داده", status: "healthy" as const, uptime: 99.95 }, { name: "کش", status: "degraded" as const, uptime: 98.5 }, { name: "ذخیره‌سازی", status: "healthy" as const, uptime: 99.98 }, ]; const ChartGroup10 = ({ className }: ChartGroup10Props) => { const totalRequests = chartData.reduce((sum, item) => sum + item.requests, 0); const totalErrors = chartData.reduce((sum, item) => sum + item.errors, 0); const errorRate = (totalErrors / totalRequests) * 100; return (
حجم درخواست‌ها درخواست‌ها در ۲۴ ساعت گذشته

مجموع درخواست‌ها

{numberFormatter.format(totalRequests)}

مجموع خطاها

{numberFormatter.format(totalErrors)}

نرخ خطا

{formatPercent(errorRate)}

compactNumberFormatter.format(Number(v)) } /> numberFormatter.format(Number(value)) } /> } cursor={{ stroke: "var(--border)", strokeDasharray: "4 4" }} />
سلامت سرویس‌ها وضعیت فعلی سرویس‌ها {services.map((service, index) => (
{formatPercent(service.uptime)}
div]:bg-yellow-500", )} />
))}
); }; export { ChartGroup10 };