import { useState, useEffect } from "react"; import { Telescope, Clock, Calendar, TrendingUp, Moon, Sun, Activity } from "lucide-react"; import { fetchDataDisplay } from "../api/kioskApi"; import { PAGE_CONTENT_INSET } from "../pageContentInset"; type RealtimeRow = { id: number; name: string; time: string; telescope: string; exposure: string; image: string; }; const FALLBACK_REALTIME: RealtimeRow[] = [ { id: 1, name: "M42 猎户座大星云", time: "2026-03-27 20:15:32", telescope: "2.5米主镜", exposure: "300秒", image: "https://images.unsplash.com/photo-1628632642012-290ae1f4b1ac?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHxtaWxreSUyMHdheSUyMG5pZ2h0JTIwc2t5JTIwb2JzZXJ2YXRvcnl8ZW58MXx8fHwxNzc0NTg3MDQyfDA&ixlib=rb-4.1.0&q=80&w=400", }, { id: 2, name: "NGC 7293 螺旋星云", time: "2026-03-27 21:30:45", telescope: "1.8米副镜", exposure: "450秒", image: "https://images.unsplash.com/photo-1631594274394-279ab758c1ed?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHxtb3VudGFpbiUyMGxha2UlMjByZWZsZWN0aW9uJTIwdGliZXR8ZW58MXx8fHwxNzc0NTg3MDQxfDA&ixlib=rb-4.1.0&q=80&w=400", }, { id: 3, name: "木星及其卫星系统", time: "2026-03-27 22:05:18", telescope: "0.5米行星镜", exposure: "0.1秒", image: "https://images.unsplash.com/photo-1615653058464-841639bb85ba?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHx0ZWxlc2NvcGUlMjBhc3Ryb25vbXklMjBuaWdodHxlbnwxfHx8fDE3NzQ1ODcwNDJ8MA&ixlib=rb-4.1.0&q=80&w=400", }, ]; const FALLBACK_HISTORICAL = [ { date: "2026-03-27", observations: 45, quality: "优秀", weather: "晴朗" }, { date: "2026-03-26", observations: 38, quality: "良好", weather: "多云" }, { date: "2026-03-25", observations: 52, quality: "优秀", weather: "晴朗" }, { date: "2026-03-24", observations: 28, quality: "一般", weather: "薄云" }, { date: "2026-03-23", observations: 0, quality: "-", weather: "阴天" }, { date: "2026-03-22", observations: 41, quality: "良好", weather: "晴朗" }, { date: "2026-03-21", observations: 63, quality: "优秀", weather: "晴朗" }, ]; const FALLBACK_STATUS = { weather: "晴朗", seeing: `0.8" (优秀)`, transparency: "95%", moonPhase: "下弦月 45%", }; export function DataDisplayPage() { const [realtimeImages, setRealtimeImages] = useState(FALLBACK_REALTIME); const [historicalData, setHistoricalData] = useState(FALLBACK_HISTORICAL); const [status, setStatus] = useState(FALLBACK_STATUS); const [selectedImage, setSelectedImage] = useState(FALLBACK_REALTIME[0]!); useEffect(() => { let cancelled = false; void (async () => { const data = await fetchDataDisplay(); if (cancelled || !data) { if (!cancelled && !data) { console.warn("[kiosk] data-display 接口不可用,使用本地演示数据"); } return; } const rt = data.realtimeImages; if (rt.length > 0) { setRealtimeImages(rt); setSelectedImage(rt[0]!); } setStatus({ weather: data.status.weather, seeing: data.status.seeing, transparency: data.status.transparency, moonPhase: data.status.moonPhase, }); if (data.historicalData.length > 0) { setHistoricalData(data.historicalData); } })(); return () => { cancelled = true; }; }, []); return (
{/* 页面标题 */}

数据展示中心

实时观测图像与历史数据记录

{/* 左侧:实时图像列表 */}

实时观测图像

{realtimeImages.map((img) => (
setSelectedImage(img)} className={`p-4 rounded-lg cursor-pointer transition-all ${ selectedImage.id === img.id ? "bg-sky-500/20 border-2 border-sky-400" : "bg-white/5 border border-white/10 hover:bg-white/10" }`} >

{img.name}

{img.time}
{img.telescope} · 曝光 {img.exposure}
))}
{/* 观测状态 */}

当前观测状态

天气状况
{status.weather}
视宁度 {status.seeing}
透明度 {status.transparency}
月相
{status.moonPhase}
{/* 中间:大图显示 */}
{selectedImage.name}

{selectedImage.name}

{selectedImage.time} {selectedImage.telescope} 曝光时间: {selectedImage.exposure}
{/* 历史观测记录 */}

历史观测记录

{historicalData.map((record, index) => ( ))}
日期 观测次数 数据质量 天气状况
{record.date} {index === 0 && ( 今天 )} {record.observations} {record.quality} {record.weather}
); }