'use client'; import React, { useState, useEffect } from 'react'; import { BarChart2, Clock, Star, Map, Camera, List, Calendar, Eye } from 'lucide-react'; import { StatCard } from '@/components/ui/stat-card'; import { LoadingSpinner } from '@/components/ui/loading-spinner'; import { AppLayout } from '@/components/layout/app-layout'; import { PageLoading } from '@/components/ui/page-loading'; import { MeteorTypePieChart } from '@/components/charts/meteor-type-pie-chart'; import { StationDistributionChart } from '@/components/charts/station-distribution-chart'; import { TimeDistributionChart } from '@/components/charts/time-distribution-chart'; import { BrightnessDistributionChart } from '@/components/charts/brightness-distribution-chart'; import { getStatisticsSummary, getTimeDistribution, getBrightnessAnalysis, getRegionalDistribution, getCameraCorrelation, getMeteorEvents, type AnalysisData, type TimeDistributionData, type BrightnessAnalysisData } from '@/services/analysis'; type ActiveTab = 'time' | 'brightness' | 'regional' | 'correlation' | 'events'; export default function AnalysisPage() { const [activeTab, setActiveTab] = useState('time'); const [timeFrame, setTimeFrame] = useState<'hour' | 'day' | 'month'>('month'); const [loading, setLoading] = useState(true); const [summaryData, setSummaryData] = useState(null); const [timeDistData, setTimeDistData] = useState(null); const [brightnessData, setBrightnessData] = useState(null); const [regionalData, setRegionalData] = useState(null); // 获取分析数据 const fetchAnalysisData = async () => { setLoading(true); try { const [summaryResponse, timeResponse, brightnessResponse, regionalResponse] = await Promise.all([ getStatisticsSummary(), getTimeDistribution(timeFrame), getBrightnessAnalysis(), getRegionalDistribution() ]); setSummaryData(summaryResponse); setTimeDistData(timeResponse); setBrightnessData(brightnessResponse); setRegionalData(regionalResponse); } catch (error) { console.error('获取分析数据失败:', error); // 如果API调用失败,使用空数据 setSummaryData(null); setTimeDistData(null); setBrightnessData(null); setRegionalData(null); } finally { setLoading(false); } }; useEffect(() => { fetchAnalysisData(); }, []); // 渲染统计摘要卡片 const renderStatCards = () => { if (!summaryData) return null; return (
); }; // 渲染时间分布视图 const renderTimeDistributionView = () => { const distribution = timeFrame === 'hour' ? timeDistData?.hourly : timeFrame === 'month' ? timeDistData?.monthly : timeDistData?.yearly; if (!timeDistData || !distribution || !Array.isArray(distribution)) { return (

暂无数据

); } return ( <>

流星时间分布

总计: {distribution.reduce((acc, item) => acc + item.count, 0).toLocaleString()} 颗流星
); }; // 渲染亮度分析视图 const renderBrightnessView = () => { if (!brightnessData || !brightnessData.brightnessDistribution || !brightnessData.brightnessStats) { return (

暂无数据

); } return (

亮度分布

亮度统计

平均亮度

{brightnessData.brightnessStats?.average?.toFixed(1) || '--'}

中位数亮度

{brightnessData.brightnessStats?.median?.toFixed(1) || '--'}

最亮流星

{brightnessData.brightnessStats?.brightest?.toFixed(1) || '--'}

最暗流星

{brightnessData.brightnessStats?.dimmest?.toFixed(1) || '--'}

亮度等级说明

视星等解释:

  • -6及以下: 超级火球
  • -6到-4: 火球
  • -4到-2: 很亮流星
  • -2到0: 亮流星
  • 0到2: 普通流星
  • 2到4: 暗流星
  • 4及以上: 很暗流星
); }; if (loading) { return ; } return (

数据分析

深入分析流星观测数据的各项指标和趋势

{/* 统计摘要卡片 */} {renderStatCards()} {/* 分析标签页 */}
{/* 内容区域 */}
{activeTab === 'time' && renderTimeDistributionView()} {activeTab === 'brightness' && renderBrightnessView()} {activeTab === 'regional' && (
{regionalData && regionalData.regions && Array.isArray(regionalData.regions) ? ( <>

流星类型分布

监测站分布

) : (

正在加载区域分布数据...

)}
)} {activeTab === 'correlation' && (

相机关联分析开发中...

)} {activeTab === 'events' && (

流星事件列表开发中...

)}
); }