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 | 1x 1x 1x 1x 1x 1x 1x 1x 22x 22x 22x 22x 22x 22x 1x 1x 22x 22x 22x 22x 22x 2x 2x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 20x 20x 20x 20x 20x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x | import React from "react";
import OurTable, { ButtonColumn } from "main/components/OurTable";
import { useBackendMutation } from "main/utils/useBackend";
import {
cellToAxiosParamsDelete,
onDeleteSuccess,
} from "main/utils/announcementUtils";
import { useNavigate } from "react-router";
import { hasRole } from "main/utils/currentUser";
import { formatDateTime } from "main/utils/dateUtils";
export default function AnnouncementTable({
announcements,
currentUser,
commonsId,
}) {
const navigate = useNavigate();
const editCallback = (cell) => {
navigate(`/admin/announcements/${commonsId}/edit/${cell.row.values.id}`);
};
const deleteMutation = useBackendMutation(
cellToAxiosParamsDelete,
{ onSuccess: onDeleteSuccess },
[`/api/announcements/getbycommonsid?commonsId=${commonsId}`],
);
const deleteCallback = async (cell) => {
deleteMutation.mutate(cell);
};
const columns = [
{
Header: "id",
accessor: "id",
},
{
Header: "Start Date",
accessor: "startDate",
Cell: ({ value }) => formatDateTime(value),
},
{
Header: "End Date",
accessor: "endDate",
Cell: ({ value }) => formatDateTime(value),
},
];
if (hasRole(currentUser, "ROLE_ADMIN")) {
columns.push(
ButtonColumn("Edit", "primary", editCallback, "AnnouncementTable"),
);
columns.push(
ButtonColumn("Delete", "danger", deleteCallback, "AnnouncementTable"),
);
}
columns.push({
Header: "Announcement",
accessor: "announcementText",
width: 400,
Cell: ({ value }) => (
// Stryker disable all - styles that don't need to be mut tested
<div
style={{
whiteSpace: "normal",
wordBreak: "break-word",
maxWidth: "400px",
}}
>
{value}
</div>
),
});
return (
<OurTable
data={announcements}
columns={columns}
testid={"AnnouncementTable"}
/>
);
}
|