diff --git a/src/pages/researcher_console/DatasetSubmissions.jsx b/src/pages/researcher_console/DatasetSubmissions.jsx index e28268d99..5f75dc065 100644 --- a/src/pages/researcher_console/DatasetSubmissions.jsx +++ b/src/pages/researcher_console/DatasetSubmissions.jsx @@ -10,8 +10,9 @@ import DatasetSubmissionsTable from './DatasetSubmissionsTable'; import {Storage} from '../../libs/storage'; import styles from './DatasetTerms.module.css'; -export default function DatasetSubmissions() { +export default function DatasetSubmissions(props) { + const {history} = props; const [terms, setTerms] = useState([]); const [filteredTerms, setFilteredTerms] = useState([]); const [isLoading, setIsLoading] = useState(true); @@ -142,7 +143,7 @@ export default function DatasetSubmissions() {
- +
); diff --git a/src/pages/researcher_console/DatasetSubmissionsTable.jsx b/src/pages/researcher_console/DatasetSubmissionsTable.jsx index d5516dc40..43dd53cb1 100644 --- a/src/pages/researcher_console/DatasetSubmissionsTable.jsx +++ b/src/pages/researcher_console/DatasetSubmissionsTable.jsx @@ -3,8 +3,11 @@ import {useCallback, useEffect, useState} from 'react'; import {Notifications} from '../../libs/utils'; import loadingIndicator from '../../images/loading-indicator.svg'; import SortableTable from '../../components/sortable_table/SortableTable'; -import {concat, isNil, join} from 'lodash/fp'; +import {cloneDeep, concat, findIndex, join, isNil} from 'lodash/fp'; import Button from '@mui/material/Button'; +import { Link } from 'react-router-dom'; +import {DataSet} from '../../libs/ajax'; +import { ConfirmationDialog } from '../..//components/modals/ConfirmationDialog'; export default function DatasetSubmissionsTable(props) { @@ -65,11 +68,39 @@ export default function DatasetSubmissionsTable(props) { ]; const [terms, setTerms] = useState([]); + const [selectedTerm, setSelectedTerm] = useState([]); const [isLoading, setIsLoading] = useState(true); const [rows, setRows] = useState([]); + const [open, setOpen] = useState(false); + + const handleClick = (term) => { + setOpen(true); + setSelectedTerm(term); + }; + + const handleClose = () => { + setOpen(false); + }; + + const removeDataset = async (termToDelete) => { + const termName = termToDelete.datasetName; + const termId = termToDelete.datasetId; + setOpen(false); + try { + DataSet.deleteDataset(termId).then(() => { + Notifications.showSuccess({ + text: `Removed dataset '${termName}' successfully.`, + }); + props.history.push('/datalibrary');}); + } catch (error) { + Notifications.showError({ + text: `Error removing ${termName} as a dataset`, + }); + } + }; // Datasets can be filtered from the parent component and redrawn frequently. - const redrawRows = useCallback(() => { + const redrawRows = useCallback((open, selectedTerm) => { const rows = terms.map((term) => { const status = isNil(term.dacApproval) ? 'Pending' : (term.dacApproval ? 'Accepted' : 'Rejected'); const primaryCodes = term.dataUse?.primary?.map(du => du.code); @@ -89,6 +120,24 @@ export default function DatasetSubmissionsTable(props) { Edit ; + const deleteButton = (status !== 'Accepted' && term.deletable) ? +
+ handleClick(term)} + to={`#`} + /> + removeDataset(selectedTerm)} + description={`Are you sure you want to delete the dataset '${selectedTerm.datasetIdentifier}'?`} + /> +
: +
; const custodians = join(', ')(term.study?.dataCustodianEmail); return { datasetIdentifier: term.datasetIdentifier, @@ -98,7 +147,7 @@ export default function DatasetSubmissionsTable(props) { dac: term.dac?.dacName, dataUse: join(', ')(concat(primaryCodes)(secondaryCodes)), status: status, - actions: editButton + actions: editButton, deleteButton }; }); setRows(rows); @@ -109,13 +158,13 @@ export default function DatasetSubmissionsTable(props) { try { setTerms(props.terms); setIsLoading(props.isLoading); - redrawRows(); + redrawRows(open,selectedTerm); } catch (error) { Notifications.showError({text: 'Error: Unable to retrieve datasets from server'}); } }; init(); - }, [props, redrawRows]); + }, [props, redrawRows, open, selectedTerm]); const sortableTable =