import { FiArrowUp, FiArrowDown } from 'react-icons/fi'; import { TbRipple } from 'react-icons/tb'; import { type Language, t } from '../translations'; import { useState, useEffect } from 'react'; import { CircularProgress } from './CircularProgress'; interface KpiData { level: number; levelDiff24h?: number; levelDiff7d?: number; levelDiff30d?: number; inflow: number; outflow: number; volume: number; currentVolume?: number; fullness: number; storageDiff?: number; minDiff?: number; minDiffLabelCs?: string; minDiffLabelEn?: string; avgInflow24h?: number; avgOutflow24h?: number; } interface Props { data: KpiData; language: Language; lakeName?: string; isRiver?: boolean; } const KpiCards = ({ data, language, lakeName = 'Lipno 1', isRiver = false }: Props) => { const [showTooltip, setShowTooltip] = useState(false); const [showMinTooltip, setShowMinTooltip] = useState(false); const dict = t[language].kpi; const flowDiff = data.inflow - data.outflow; // Graf: pokud přibývá → přítok vs průměr přítoku; pokud ubývá → odtok vs průměr odtoku let visualFlowValue = 0; if (flowDiff >= 0) { // Voda přibývá → jak velký je přítok vůči průměru if (data.avgInflow24h && data.avgInflow24h > 0) { visualFlowValue = Math.min(100, (data.inflow / data.avgInflow24h) * 100); } else if (data.inflow > 0) { visualFlowValue = 50; } } else { // Voda ubývá → jak velký je odtok vůči průměru if (data.avgOutflow24h && data.avgOutflow24h > 0) { visualFlowValue = Math.min(100, (data.outflow / data.avgOutflow24h) * 100); } else if (data.outflow > 0) { visualFlowValue = 50; } } useEffect(() => { if (showTooltip) { const timer = setTimeout(() => { setShowTooltip(false); }, 3500); return () => clearTimeout(timer); } }, [showTooltip]); useEffect(() => { if (showMinTooltip) { const timer = setTimeout(() => { setShowMinTooltip(false); }, 3500); return () => clearTimeout(timer); } }, [showMinTooltip]); if (isRiver) { return ( <> {/* CARD 1: WATER LEVEL */}