import { useCallback, useEffect, useRef, useState } from "react"; import { EChart } from "../charts/EChart.jsx"; import { createMetricTrendOption } from "../charts/options/createMetricTrendOption.js"; const MODAL_TRANSITION_MS = 180; export function MetricTrendModal({ item, onClose }) { const [closing, setClosing] = useState(false); const closeTimerRef = useRef(null); const requestClose = useCallback(() => { if (closing) { return; } setClosing(true); closeTimerRef.current = window.setTimeout(onClose, MODAL_TRANSITION_MS); }, [closing, onClose]); useEffect(() => () => { if (closeTimerRef.current) { window.clearTimeout(closeTimerRef.current); } }, []); useEffect(() => { const closeOnEscape = (event) => { if (event.key === "Escape") { requestClose(); } }; window.addEventListener("keydown", closeOnEscape); return () => window.removeEventListener("keydown", closeOnEscape); }, [requestClose]); return (
{ if (event.target === event.currentTarget) { requestClose(); } }} >

{item.label}

每日折线图
{hasTrend(item) ? :
暂无趋势数据
}
); } function hasTrend(item) { return Array.isArray(item?.trend) && item.trend.some((line) => Array.isArray(line.data) && line.data.length); }