import { useState } from 'react' import { useVesselTracks } from '../hooks/useVesselTracks' import { useTrackStore } from '../stores/trackStore' interface TrackQueryPanelProps { /** 최근위치에서 클릭하여 넘어온 MMSI */ initialMmsi?: string } /** 기본 시간 범위: 지금부터 24시간 전 */ function getDefaultTimeRange(): { start: string; end: string } { const now = new Date() const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000) return { start: toLocalISOString(yesterday), end: toLocalISOString(now), } } function toLocalISOString(d: Date): string { const pad = (n: number) => String(n).padStart(2, '0') return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}` } export default function TrackQueryPanel({ initialMmsi }: TrackQueryPanelProps) { const { start, end } = getDefaultTimeRange() const [mmsiInput, setMmsiInput] = useState(initialMmsi || '') const [startTime, setStartTime] = useState(start) const [endTime, setEndTime] = useState(end) const { fetchTracks, clearTracks } = useVesselTracks() const loading = useTrackStore((s) => s.loading) const tracks = useTrackStore((s) => s.tracks) const handleQuery = () => { const mmsiList = mmsiInput .split(/[,\s]+/) .map((s) => s.trim()) .filter(Boolean) if (mmsiList.length === 0) return const startISO = startTime.replace('T', ' ') + ':00' const endISO = endTime.replace('T', ' ') + ':00' fetchTracks(mmsiList, startISO, endISO) } return (