All files / components/Commons PagedProfitsTable.js

100% Statements 22/22
100% Branches 2/2
100% Functions 10/10
100% Lines 22/22

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   131x 131x   131x   131x 131x         131x                               131x   131x 131x 1x       131x 131x 1x         131x         46x               46x           46x                 46x               131x 28x                     131x                              
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}) => (
                    <div style={{ textAlign: "right" }}>
                        ${value.toFixed(2)}
                    </div>
                ),
            },
            {
                Header: "Date",
                accessor: "timestamp",
                Cell: ({ value }) => timestampToDate(value),
            },
            {
                Header: "Health",
                accessor: "avgCowHealth",
                Cell: ({value}) => (
                    <div style={{ textAlign: "right" }}>
                        {value.toFixed(2)}%
                    </div>
                ),
            },
            {
                Header: "Cows",
                accessor: "numCows",
                Cell: ({value}) => (
                    <div style={{ textAlign: "right" }}>
                        {value}
                    </div>
                ),
            },
        ];
 
 
    const sortees = React.useMemo(
        () => [
            {
                id: "timestamp",
                desc: true
            }
        ],
        // Stryker disable next-line all
        []
    );
 
 
    return (
        <div style={{ display: "inline-block"}} data-testid={`${testId}-style-inline`}>
            <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>
            < OurTable
                data={page.content}
                columns={columns}
                testid={testid}
                initialState={{ sortBy: sortees }}
            />
        </div>
    );
}; 
 
export default PagedProfitsTable;