Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 1x 1x 1x 1x 1x 1x 1x 14x 14x 14x 14x 14x 14x 1x 1x 14x 14x 14x 14x 14x 14x 14x 14x 2x 2x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 8x 8x 8x 8x 14x 14x 14x 14x 14x 14x | import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import { useBackendMutation } from "main/utils/useBackend";
import {
cellToAxiosParamsDelete,
onDeleteSuccess,
} from "main/utils/recommendationRequestUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/useCurrentUser";
export default function RecommendationRequestTable({
recommendationRequests,
currentUser,
testIdPrefix = "RecommendationRequestTable",
}) {
const navigate = useNavigate();
const editCallback = (cell) => {
navigate(`/recommendationRequests/edit/${cell.row.original.id}`);
};
// Stryker disable all : hard to test for query caching
const deleteMutation = useBackendMutation(
cellToAxiosParamsDelete,
{ onSuccess: onDeleteSuccess },
["/api/recommendationrequests/all"],
);
// Stryker restore all
// Stryker disable next-line all : TODO try to make a good test for this
const deleteCallback = async (cell) => {
deleteMutation.mutate(cell);
};
const columns = [
{
header: "id",
accessorKey: "id", // accessor is the "key" in the data
},
{
header: "Requester Email",
accessorKey: "requesterEmail",
},
{
header: "Professor Email",
accessorKey: "professorEmail",
},
{
header: "Explanation",
accessorKey: "explanation",
},
{
header: "Date Requested",
accessorKey: "dateRequested",
},
{
header: "Date Needed",
accessorKey: "dateNeeded",
},
{
header: "Done",
accessorKey: "done",
},
];
if (hasRole(currentUser, "ROLE_ADMIN")) {
columns.push(ButtonColumn("Edit", "primary", editCallback, testIdPrefix));
columns.push(
ButtonColumn("Delete", "danger", deleteCallback, testIdPrefix),
);
}
return (
<OurTable
data={recommendationRequests}
columns={columns}
testid={testIdPrefix}
/>
);
}
|