From 9fa64f355d250dc37bbdf67b456e8d7e8925aa67 Mon Sep 17 00:00:00 2001 From: admin <572701190@qq.com> Date: Wed, 1 Jul 2026 13:15:33 +0800 Subject: [PATCH] Inline dataset row actions with modals --- frontend/src/main.tsx | 153 ++++++++++++++++++++++++++++------------ frontend/src/styles.css | 77 +++++++++++++++++--- 2 files changed, 172 insertions(+), 58 deletions(-) diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 14152c0..b8118a8 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -619,6 +619,8 @@ function App() { const [busy, setBusy] = useState(false); const [actionError, setActionError] = useState(""); const [uploadModalOpen, setUploadModalOpen] = useState(false); + const [copyModalOpen, setCopyModalOpen] = useState(false); + const [preprocessModalOpen, setPreprocessModalOpen] = useState(false); const [datasetName, setDatasetName] = useState("demo_dataset"); const [datasetDescription, setDatasetDescription] = useState(""); const [copyDatasetName, setCopyDatasetName] = useState(""); @@ -1004,6 +1006,22 @@ function App() { } } + function selectDataset(dataset: UploadedDataset) { + setSelectedDatasetName(dataset.name); + setDatasetName(dataset.name); + } + + function openCopyDataset(dataset: UploadedDataset) { + selectDataset(dataset); + setCopyDatasetName(`${dataset.name}_copy`); + setCopyModalOpen(true); + } + + function openPreprocessDataset(dataset: UploadedDataset) { + selectDataset(dataset); + setPreprocessModalOpen(true); + } + async function copySelectedDataset() { if (!selectedDataset || !copyDatasetName.trim()) return; if (copyNameExists) { @@ -1019,6 +1037,7 @@ function App() { }); setSelectedDatasetName(copied.name); setDatasetName(copied.name); + setCopyModalOpen(false); await refresh(); } catch (err) { setActionError(String(err)); @@ -1027,15 +1046,16 @@ function App() { } } - async function deleteSelectedDataset() { - if (!selectedDataset) return; - if (!window.confirm(`删除数据集 ${selectedDataset.name}?此操作会删除上传目录。`)) return; + async function deleteDataset(dataset: UploadedDataset) { + if (!window.confirm(`删除数据集 ${dataset.name}?此操作会删除上传目录。`)) return; setBusy(true); try { setActionError(""); - await api(`/api/datasets/${encodeURIComponent(selectedDataset.name)}`, { method: "DELETE" }); - setSelectedDatasetName(""); - setDatasetName("demo_dataset"); + await api(`/api/datasets/${encodeURIComponent(dataset.name)}`, { method: "DELETE" }); + if (selectedDatasetName === dataset.name || datasetName === dataset.name) { + setSelectedDatasetName(""); + setDatasetName("demo_dataset"); + } await refresh(); } catch (err) { setActionError(String(err)); @@ -1054,6 +1074,7 @@ function App() { body: JSON.stringify(jobPayload(next, datasetParamsForTask(next))) }); await inspectJob(job); + setPreprocessModalOpen(false); navigate("training"); await refresh(); } catch (err) { @@ -1430,49 +1451,26 @@ function App() {
Copy
+Preprocess
+