import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { api } from '../api/client' import type { DetectionClass } from '../types' interface Props { selectedClassNum: number onSelect: (classNum: number) => void photoMode: number onPhotoModeChange: (mode: number) => void } export default function DetectionClasses({ selectedClassNum, onSelect, photoMode, onPhotoModeChange }: Props) { const { t } = useTranslation() const [classes, setClasses] = useState([]) useEffect(() => { api.get('/api/annotations/classes').then(setClasses).catch(() => {}) }, []) useEffect(() => { const handler = (e: KeyboardEvent) => { const num = parseInt(e.key) if (num >= 1 && num <= 9) { const idx = num - 1 const cls = classes[idx + photoMode] if (cls) onSelect(cls.id) } } window.addEventListener('keydown', handler) return () => window.removeEventListener('keydown', handler) }, [classes, photoMode, onSelect]) const modes = [ { value: 0, label: t('annotations.regular') }, { value: 20, label: t('annotations.winter') }, { value: 40, label: t('annotations.night') }, ] return (
{t('annotations.classes')}
{modes.map(m => ( ))}
{classes.filter(c => c.photoMode === photoMode).map((c, i) => ( ))}
) }