feat(frontend): add ability to delete datasets
This commit is contained in:
@@ -23,6 +23,12 @@ const DatasetEditPage = () => {
|
|||||||
|
|
||||||
const [datasetName, setDatasetName] = useState("");
|
const [datasetName, setDatasetName] = useState("");
|
||||||
|
|
||||||
|
const token = localStorage.getItem("access_token");
|
||||||
|
if (!token) {
|
||||||
|
setHasError(true);
|
||||||
|
setStatusMessage("You must be signed in to save changes.");
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!Number.isInteger(parsedDatasetId) || parsedDatasetId <= 0) {
|
if (!Number.isInteger(parsedDatasetId) || parsedDatasetId <= 0) {
|
||||||
setHasError(true);
|
setHasError(true);
|
||||||
@@ -59,6 +65,7 @@ const DatasetEditPage = () => {
|
|||||||
});
|
});
|
||||||
}, [parsedDatasetId]);
|
}, [parsedDatasetId]);
|
||||||
|
|
||||||
|
|
||||||
const saveDatasetName = async (event: FormEvent<HTMLFormElement>) => {
|
const saveDatasetName = async (event: FormEvent<HTMLFormElement>) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
@@ -100,6 +107,23 @@ const DatasetEditPage = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const deleteDataset = async () => {
|
||||||
|
try{
|
||||||
|
await axios.delete(
|
||||||
|
`${API_BASE_URL}/dataset/${parsedDatasetId}`,
|
||||||
|
{ headers: { Authorization: `Bearer ${token}` } }
|
||||||
|
);
|
||||||
|
navigate("/datasets", { replace: true });
|
||||||
|
} catch (error: unknown) {
|
||||||
|
setHasError(true);
|
||||||
|
if (axios.isAxiosError(error)) {
|
||||||
|
setStatusMessage(String(error.response?.data?.error || error.message || "Save failed."));
|
||||||
|
} else {
|
||||||
|
setStatusMessage("Save failed due to an unexpected error.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={styles.page}>
|
<div style={styles.page}>
|
||||||
<div style={styles.containerNarrow}>
|
<div style={styles.containerNarrow}>
|
||||||
@@ -132,6 +156,15 @@ const DatasetEditPage = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div style={{ display: "flex", gap: 8, justifyContent: "flex-end" }}>
|
<div style={{ display: "flex", gap: 8, justifyContent: "flex-end" }}>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
style={styles.buttonDanger}
|
||||||
|
onClick={deleteDataset}
|
||||||
|
disabled={isSaving}
|
||||||
|
>
|
||||||
|
Delete Dataset
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
style={styles.buttonSecondary}
|
style={styles.buttonSecondary}
|
||||||
|
|||||||
@@ -97,6 +97,16 @@ export const foundationStyles: StyleMap = {
|
|||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
buttonDanger: {
|
||||||
|
padding: "8px 12px",
|
||||||
|
borderRadius: 6,
|
||||||
|
border: `1px solid ${palette.borderDefault}`,
|
||||||
|
background: palette.dangerText,
|
||||||
|
color: palette.textPrimary,
|
||||||
|
fontWeight: 600,
|
||||||
|
cursor: "pointer",
|
||||||
|
},
|
||||||
|
|
||||||
grid: {
|
grid: {
|
||||||
marginTop: 12,
|
marginTop: 12,
|
||||||
display: "grid",
|
display: "grid",
|
||||||
|
|||||||
Reference in New Issue
Block a user