import { ChevronDown, RefreshCw, Truck } from 'lucide-react'; import { useEffect, useRef, useState } from 'react'; import type { HydrogenVehicleScope } from '../../api'; import { formatRefreshTime } from '../model'; interface BiYearSelectProps { value: number; years: number[]; onChange: (year: number) => void; } function BiYearSelect({ value, years, onChange }: BiYearSelectProps) { const [isOpen, setIsOpen] = useState(false); const ref = useRef(null); useEffect(() => { function handleClickOutside(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) { setIsOpen(false); } } if (isOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [isOpen]); return (
{isOpen && (
切换数据年份
{years.map((y) => ( ))}
)}
); } interface OverviewHeaderProps { activeYear: number; availableYears: number[]; vehicleScope: HydrogenVehicleScope; verifyScope?: 'all' | 'verified'; onVerifyScopeChange?: (scope: 'all' | 'verified') => void; selectedStationId?: number | null; selectedStationName?: string | null; stations?: { id: number; name: string }[]; latestLedgerTime?: string | null; lastRefreshAt?: number; refreshing?: boolean; onSelectYear: (year: number) => void; onVehicleScopeChange: (scope: HydrogenVehicleScope) => void; onStationChange?: (stationId: number | null) => void; onRefresh: () => void; } export function OverviewHeader({ activeYear, availableYears, vehicleScope, verifyScope = 'all', onVerifyScopeChange, latestLedgerTime, lastRefreshAt = 0, refreshing = false, onSelectYear, onVehicleScopeChange, onRefresh, }: OverviewHeaderProps) { return (
{latestLedgerTime ? `账本 ${latestLedgerTime.slice(5, 16)}` : lastRefreshAt ? formatRefreshTime(lastRefreshAt) : '已同步'}
); }