Skip to content
Snippets Groups Projects
TransactionList.js 1.64 KiB
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 = [
    {dataField: 'type', text: '', align: 'center',
        formatter: cell => {
            switch (cell) {
                case "purchase":
                    return <FaShoppingBasket />;
                default:
                    return <FaMoneyBillAlt />;
            };
    }},
    {dataField: 'date', text: 'Fecha', formatter: printDate},
    {dataField: 'total', text: 'Cantidad', formatter: cell => printMoney(cell)+" €"},
]

function rowStyle(row) {
    if (["purchase"].includes(row.type)) {
        return {
            backgroundColor: "#fcbabf"
        };
    }
    return {
        backgroundColor: "#c4fcba"
    };
}

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)
                }}
                rowStyle={rowStyle}
                classes="stripped"
                bordered={ false }
            />
        </Fetcher>
    );
}

export default TransactionList;