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 =