import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import BudgetVsActualTable from "./BudgetVsActualTable"; import { getBudgetVsActualData } from "../../services/budgetService"; import type { BudgetVsActualRow } from "../../shared/types"; export interface CompareBudgetViewProps { year: number; month: number; } export default function CompareBudgetView({ year, month }: CompareBudgetViewProps) { const { t } = useTranslation(); const [rows, setRows] = useState([]); const [error, setError] = useState(null); useEffect(() => { let cancelled = false; setError(null); getBudgetVsActualData(year, month) .then((data) => { if (!cancelled) setRows(data); }) .catch((e: unknown) => { if (!cancelled) setError(e instanceof Error ? e.message : String(e)); }); return () => { cancelled = true; }; }, [year, month]); if (error) { return (
{error}
); } if (rows.length === 0) { return (
{t("reports.bva.noData")}
); } return ; }