import React, { useRef, useState } from "react"; import { uploadCSV, deleteDataset, deleteSchemaDataset } from "../api"; export default function Sidebar({ datasets, schemaDatasets = [], selectedDataset, onSelect, onUploadSuccess, onUploadSchemaClick, onDelete, history, onRunQuestion, addToast }) { const fileInputRef = useRef(null); const [isUploading, setIsUploading] = useState(false); const handleUploadClick = () => { if (fileInputRef.current) { fileInputRef.current.value = ""; // Reset file input fileInputRef.current.click(); } }; const handleFileChange = async (e) => { const file = e.target.files[0]; if (!file) return; if (!file.name.endsWith(".csv")) { addToast("Only .csv files are allowed.", "error"); return; } setIsUploading(true); try { console.log("[Sidebar] Uploading CSV file:", file.name); const result = await uploadCSV(file); setIsUploading(false); if (onUploadSuccess) { onUploadSuccess(result); } } catch (err) { setIsUploading(false); addToast("Upload failed: " + err.message, "error"); } }; const handleDeleteClick = async (e, dbName, mode = "csv") => { e.stopPropagation(); // Avoid selecting the dataset card when deleting if (window.confirm(`Are you sure you want to delete the dataset '${dbName}'?`)) { try { console.log(`[Sidebar] Deleting ${mode} dataset:`, dbName); if (mode === "schema") { await deleteSchemaDataset(dbName); } else { await deleteDataset(dbName); } if (onDelete) { onDelete(dbName, mode); } } catch (err) { addToast("Delete failed: " + err.message, "error"); } } }; // Separate sample vs user datasets const sampleDatasets = datasets.filter((ds) => ds.is_sample); const userDatasets = datasets.filter((ds) => !ds.is_sample); return ( ); }