All files / components/Commons PagedProfitsTable.js

100% Statements 21/21
100% Branches 2/2
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 111 112 113 114 115 116                5x   128x 128x   128x   128x 128x         128x                               128x   128x 128x 1x       128x 128x 1x         128x       36x           36x           36x                     128x 26x                     128x                                                
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;