From 2f644bfc67bb0b8baedba6daf3a0d76c5c0c3f1d Mon Sep 17 00:00:00 2001 From: Sahil Mane <148791198+sahilmane69@users.noreply.github.com> Date: Mon, 5 Jan 2026 18:30:04 +0530 Subject: [PATCH] ui: improve dataset upload loading & feedback --- .gitignore | 1 + .../Dashboard/V1/Component/DatasetUpload.tsx | 93 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 .gitignore create mode 100644 LocalMind-Frontend/src/features/Dashboard/V1/Component/DatasetUpload.tsx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/LocalMind-Frontend/src/features/Dashboard/V1/Component/DatasetUpload.tsx b/LocalMind-Frontend/src/features/Dashboard/V1/Component/DatasetUpload.tsx new file mode 100644 index 0000000..4751d51 --- /dev/null +++ b/LocalMind-Frontend/src/features/Dashboard/V1/Component/DatasetUpload.tsx @@ -0,0 +1,93 @@ +import React, { useState } from 'react' + +const DatasetUpload: React.FC = () => { + const [file, setFile] = useState(null) + const [isUploading, setIsUploading] = useState(false) + const [status, setStatus] = useState<{ type: 'success' | 'error'; message: string } | null>(null) + + const handleFileChange = (e: React.ChangeEvent) => { + if (e.target.files && e.target.files[0]) { + setFile(e.target.files[0]) + setStatus(null) + } + } + + const handleSubmit = async () => { + if (!file) return + + if (isUploading) return + + setIsUploading(true) + setStatus(null) + + const formData = new FormData() + formData.append('file', file) + + try { + const response = await fetch('/api/v1/training-datasets/upload', { + method: 'POST', + body: formData, + }) + + if (response.ok) { + setStatus({ type: 'success', message: 'Dataset uploaded successfully!' }) + setFile(null) + } else { + setStatus({ type: 'error', message: 'Failed to upload dataset. Please try again.' }) + } + } catch (error) { + setStatus({ type: 'error', message: 'Network error. Please check your connection.' }) + } finally { + setIsUploading(false) + } + } + + return ( +
+

Upload Training Data

+ +
+ + + {status && ( +
+ {status.message} +
+ )} + + +
+
+ ) +} + +export default DatasetUpload