import { useState } from 'react'; import axios from 'axios'; import { Braces } from 'lucide-react'; import { motion } from 'framer-motion'; import { PageHeader, ResultBox, ErrorBox, SubmitButton, UploadZone, SectionLabel } from '../components/UI'; export default function DbscanLab() { const [file, setFile] = useState(null); const [eps, setEps] = useState(0.5); const [minSamples, setMinSamples] = useState(5); const [result, setResult] = useState(null); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleSubmit = async (e) => { e.preventDefault(); if (!file) return setError('Please upload a file'); setLoading(true); setError(''); setResult(null); const fd = new FormData(); fd.append('file', file); fd.append('eps', eps); fd.append('min_samples', minSamples); try { const res = await axios.post('/api/dbscan', fd); setResult(res.data); } catch (err) { setError(err.response?.data?.error || 'Request failed'); } finally { setLoading(false); } }; return (
{v}
Entities