Skip to content
Snippets Groups Projects
TransactionList.js 1.64 KiB
Newer Older
  • Learn to ignore specific revisions
  • meskio's avatar
    meskio committed
    import React, { useState } from 'react';
    import { Redirect } from 'react-router-dom';
    import BootstrapTable from 'react-bootstrap-table-next';
    import { FaShoppingBasket, FaMoneyBillAlt } from 'react-icons/fa';
    import Fetcher from './Fetcher';
    import { printMoney, printDate } from './util';
    
    const columns = [
    
    meskio's avatar
    meskio committed
        {dataField: 'type', text: '', align: 'center',
            formatter: cell => {
                switch (cell) {
                    case "purchase":
                        return <FaShoppingBasket />;
                    default:
                        return <FaMoneyBillAlt />;
                };
    
    meskio's avatar
    meskio committed
        }},
        {dataField: 'date', text: 'Fecha', formatter: printDate},
    
        {dataField: 'total', text: 'Cantidad', formatter: cell => printMoney(cell)+""},
    
    meskio's avatar
    meskio committed
    ]
    
    
    function rowStyle(row) {
        if (["purchase"].includes(row.type)) {
            return {
                backgroundColor: "#fcbabf"
            };
        }
        return {
            backgroundColor: "#c4fcba"
        };
    }
    
    
    meskio's avatar
    meskio committed
    function TransactionList() {
        const [transactions, setTransactions] = useState([]);
        const [clickID, setClicID] = useState(null);
    
        if (clickID) {
            return <Redirect to={"/transaction/"+clickID} push />;
        }
    
        return (
            <Fetcher url="/api/transaction" onFetch={setTransactions} >
                <BootstrapTable
                    keyField="ID"
                    data={ transactions }
                    columns={ columns }
                    rowEvents={{
                        onClick: (_, row) => setClicID(row.ID)
                    }}
    
    meskio's avatar
    meskio committed
                    classes="stripped"
                    bordered={ false }
    
    meskio's avatar
    meskio committed
                />
            </Fetcher>
        );
    }
    
    export default TransactionList;