All files / components/Commons PagedProfitsTable.js

100% Statements 21/21
100% Branches 4/4
100% Functions 9/9
100% Lines 21/21

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                5x   130x 130x   130x   130x 130x         130x                               130x   130x 5x 1x       130x 5x 1x         130x       51x         51x         51x                 130x 27x                   130x                                              
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)}`,
            },
            {
                Header: "Date",
                accessor: "timestamp",
                Cell: ({ value }) => timestampToDate(value),
            },
            {
                Header: "Health",
                accessor: "avgCowHealth",
                Cell: ({value}) => `${value.toFixed(2) + '%'}`
            },
            {
                Header: "Cows",
                accessor: "numCows",
            },
        ];
 
 
    const sortees = React.useMemo(
        () => [
            {
                id: "timestamp",
                desc: true
            }
        ],
        // Stryker disable next-line all
        []
    );
    
    return (
        <>
            <p>Page: {selectedPage + 1}</p>
            {page.totalPages > 1 && <Button data-testid={`${testId}-previous-button`}onClick={previousPageCallback()} disabled={ selectedPage === 0}>Previous</Button>}
            {page.totalPages > 1 && <Button data-testid={`${testId}-next-button`} onClick={nextPageCallback()} disabled={selectedPage === page.totalPages-1}>Next</Button>}
 
            <div 
                data-testid="PagedProfitsTable-container" 
                style={{display: "flex", overflowX:"auto"}}
            >
 
            < OurTable
                data={page.content}
                columns={columns}
                testid={testid}
                initialState={{ sortBy: sortees }}
 
            />
            </div>
        </>
    );
}; 
 
export default PagedProfitsTable;