import { useState, useEffect } from "react" import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, PieChart, Pie, Cell, LineChart, Line, } from "recharts" import { financeApi } from "../../api/finance" const COLORS = [ "#0D4F4F", "#F7B538", "#6366f1", "#22c55e", "#ef4444", "#8b5cf6", "#0ea5e9", "#f97316", "#ec4899", "#14b8a6", "#64748b", "#a855f7", "#78716c", ] const fmt = (n) => Number(n).toLocaleString("ru-RU") + " ₽" const MONTH_NAMES = [ "", "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек", ] export default function FinanceAnalytics({ month, year }) { const [analytics, setAnalytics] = useState(null) const [summary, setSummary] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { setLoading(true) Promise.all([ financeApi.getAnalytics({ months: 6 }), financeApi.getSummary({ month, year }), ]) .then(([a, s]) => { setAnalytics(a) setSummary(s) }) .catch(console.error) .finally(() => setLoading(false)) }, [month, year]) if (loading) { return (
Всего расходов
{fmt(summary.total_expense)}
{isUp ? "↑" : "↓"} {diffPct}% vs пред. месяц
В среднем / день
{fmt(Math.round(analytics.avg_daily_expense))}