import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { api } from "../api"; import { useSettings } from "../settings"; import IconChip from "../components/IconChip"; import Money from "../components/Money"; import { formatMoney, formatAmount } from "../format"; import { tokenFarbe } from "./palette"; import Donut from "./charts/Donut"; import Line from "./charts/Line"; function useData(loader) { const [data, setData] = useState(null); useEffect(() => { let ok = true; loader().then((d) => ok && setData(d)).catch(() => ok && setData({ __error: true })); return () => { ok = false; }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return data; } function Loading() { const { t } = useTranslation(); return