import { useEffect, useState } from 'react'; import type { DiseaseSlug, DiseaseCatalogItem, ManualClassificationRequest } from '@zeavis/shared'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; export interface ManualClassificationFormProps { diseases: DiseaseCatalogItem[]; onSubmit: (payload: ManualClassificationRequest) => Promise; isSubmitting: boolean; } export function ManualClassificationForm({ diseases, onSubmit, isSubmitting, }: ManualClassificationFormProps) { const [selectedSlug, setSelectedSlug] = useState(''); const [observation, setObservation] = useState(''); const [location, setLocation] = useState(''); const [error, setError] = useState(null); useEffect(() => { if (diseases.length > 0 && !selectedSlug) { setSelectedSlug(diseases[0].slug); } }, [diseases, selectedSlug]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); if (!selectedSlug || !observation.trim() || !location.trim()) { setError('Semua field harus diisi'); return; } try { await onSubmit({ diseaseSlug: selectedSlug, observation: observation.trim(), location: location.trim(), }); setObservation(''); setLocation(''); if (diseases.length > 0) { setSelectedSlug(diseases[0].slug); } } catch (err) { setError(err instanceof Error ? err.message : 'Terjadi kesalahan saat mengirim data'); } }; const isFormValid = selectedSlug && observation.trim() && location.trim(); return ( Klasifikasi Manual Laporkan penyakit daun jagung yang Anda temukan
{error && (
{error}
)}