All files / components/Commons PagedProfitsTable.jsx

100% Statements 98/98
100% Branches 10/10
100% Functions 6/6
100% Lines 98/98

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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 1211x 1x 1x 1x 1x 1x   1x 72x 72x   72x   72x 72x   72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x   72x   72x   72x 68x 1x 1x 68x   72x 68x 1x 1x 68x   72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x 72x   72x 72x 24x 24x 24x 24x 24x 72x 72x     72x 72x 72x 72x 72x 72x 72x 72x     72x 72x 72x 72x 72x     72x 72x 72x 72x 72x 72x   72x 72x 72x 72x 72x         72x   1x  
import React from "react";
import OurTable from "main/components/OurTable";
import { Button } from "react-bootstrap";
import { useBackend } from "main/utils/useBackend";
import { useParams } from "react-router-dom";
import { timestampToDate } from "main/utils/dateUtils";
 
const PagedProfitsTable = () => {
  const testId = "PagedProfitsTable";
  const refreshJobsIntervalMilliseconds = 5000;
 
  const [selectedPage, setSelectedPage] = React.useState(0);
 
  const PROFIT_PAGE_SIZE = 5;
  const { commonsId } = useParams();
 
  // Stryker disable all
  const { data: page } = useBackend(
    ["/api/profits/paged/commonsid"],
    {
      method: "GET",
      url: "/api/profits/paged/commonsid",
      params: {
        commonsId: commonsId,
        pageNumber: selectedPage,
        pageSize: PROFIT_PAGE_SIZE,
      },
    },
    { content: [], totalPages: 0 },
    { refetchInterval: refreshJobsIntervalMilliseconds },
  );
  // Stryker restore  all
 
  const testid = "PagedProfitsTable";
 
  const previousPageCallback = () => {
    return () => {
      setSelectedPage(selectedPage - 1);
    };
  };
 
  const nextPageCallback = () => {
    return () => {
      setSelectedPage(selectedPage + 1);
    };
  };
 
  const columns = [
    {
      Header: "Profit",
      accessor: "amount",
      Cell: ({ value }) => `$${value.toFixed(2)}`,
      width: 200,
    },
    {
      Header: "Date",
      accessor: "timestamp",
      Cell: ({ value }) => timestampToDate(value),
      width: 200,
    },
    {
      Header: "Health",
      accessor: "avgCowHealth",
      Cell: ({ value }) => `${value.toFixed(2) + "%"}`,
      width: 200,
    },
    {
      Header: "Cows",
      accessor: "numCows",
      width: 200,
    },
  ];
 
  const sortees = React.useMemo(
    () => [
      {
        id: "timestamp",
        desc: true,
      },
    ],
    // Stryker disable next-line all
    [],
  );
 
  return (
    <>
      <p>Page: {selectedPage + 1}</p>
      <Button
        data-testid={`${testId}-previous-button`}
        onClick={previousPageCallback()}
        disabled={selectedPage === 0}
      >
        Previous
      </Button>
      <Button
        data-testid={`${testId}-next-button`}
        onClick={nextPageCallback()}
        disabled={page.totalPages === 0 || selectedPage === page.totalPages - 1}
      >
        Next
      </Button>
      <div
        data-testid="PagedProfitsTable-CSS"
        style={{
          display: "flex",
          overflow: "auto",
        }}
      >
        <OurTable
          data={page.content}
          columns={columns}
          testid={testid}
          initialState={{ sortBy: sortees }}
        />
      </div>
    </>
  );
};
 
export default PagedProfitsTable;