import { useTranslation } from 'react-i18next' import WaypointList from './WaypointList' import AltitudeChart from './AltitudeChart' import WindEffect from './WindEffect' import type { FlightPoint, CalculatedPointInfo, ActionMode, WindParams } from './types' import type { Aircraft } from '../../types' interface Props { points: FlightPoint[] calculatedPointInfo: CalculatedPointInfo[] aircrafts: Aircraft[] initialAltitude: number actionMode: ActionMode wind: WindParams locationInput: string currentPosition: { lat: number; lng: number } totalDistance: string totalTime: string batteryStatus: { label: string; color: string } onInitialAltitudeChange: (v: number) => void onActionModeChange: (mode: ActionMode) => void onWindChange: (w: WindParams) => void onLocationInputChange: (v: string) => void onLocationSearch: () => void onReorderPoints: (points: FlightPoint[]) => void onEditPoint: (point: FlightPoint) => void onRemovePoint: (id: string) => void onSave: () => void onUpload: () => void onEditJson: () => void onExport: () => void } export default function FlightParamsPanel({ points, calculatedPointInfo, aircrafts, initialAltitude, actionMode, wind, locationInput, currentPosition, totalDistance, totalTime, batteryStatus, onInitialAltitudeChange, onActionModeChange, onWindChange, onLocationInputChange, onLocationSearch, onReorderPoints, onEditPoint, onRemovePoint, onSave, onUpload, onEditJson, onExport, }: Props) { const { t } = useTranslation() const modeBtn = (mode: ActionMode, label: string, color: 'orange' | 'green' | 'red') => { const active = actionMode === mode const colorMap = { orange: { border: 'border-az-orange', text: 'text-az-orange', bg: 'bg-az-orange/20', hover: 'hover:bg-az-orange/10' }, green: { border: 'border-az-green', text: 'text-az-green', bg: 'bg-az-green/20', hover: 'hover:bg-az-green/10' }, red: { border: 'border-az-red', text: 'text-az-red', bg: 'bg-az-red/20', hover: 'hover:bg-az-red/10' }, }[color] return ( ) } return (
{modeBtn('points', t('flights.planner.addPoints'), 'orange')} {modeBtn('workArea', t('flights.planner.workArea'), 'green')} {modeBtn('prohibitedArea', t('flights.planner.prohibitedArea'), 'red')}
onLocationInputChange(e.target.value)} onKeyDown={e => e.key === 'Enter' && onLocationSearch()} placeholder="47.242, 35.024" className="w-full bg-az-bg border border-az-border rounded px-2 py-1 text-az-text outline-none focus:border-az-orange" />
{t('flights.planner.currentLocation')}: {currentPosition.lat.toFixed(6)}, {currentPosition.lng.toFixed(6)}
onInitialAltitudeChange(Number(e.target.value))} className="w-full bg-az-bg border border-az-border rounded px-2 py-1 text-az-text outline-none focus:border-az-orange" />
{points.length > 1 && (
{totalDistance} {totalTime} {batteryStatus.label}
)}
) }