Skip to content
Snippets Groups Projects
OrderList.js 1.39 KiB
Newer Older
  • Learn to ignore specific revisions
  • meskio's avatar
    meskio committed
    import React, { useState } from "react";
    
    meskio's avatar
    meskio committed
    import { Table, OverlayTrigger, Popover } from "react-bootstrap";
    
    import { LinkContainer } from "react-router-bootstrap";
    import Fetcher from "../Fetcher";
    
    meskio's avatar
    meskio committed
    import { printDate } from "../util";
    
    function orderOverlay(order) {
      const content = order.products.map((p) => {
        if (p.product === null) {
          return null;
        }
    
        return (
          <div key={"OL" + order.ID + "-" + p.ID}>
            {p.product.name}
            <br />
          </div>
        );
      });
    
      return (
        <Popover>
    
    meskio's avatar
    meskio committed
          <Popover.Header>{order.description}</Popover.Header>
          <Popover.Body>{content}</Popover.Body>
    
    meskio's avatar
    meskio committed
        </Popover>
      );
    }
    
    meskio's avatar
    meskio committed
    
    function OrderList() {
    
    meskio's avatar
    meskio committed
      const [orders, setOrders] = useState([]);
    
    meskio's avatar
    meskio committed
    
      const entries = orders.map((order) => (
        <OverlayTrigger key={order.ID} overlay={orderOverlay(order)}>
          <LinkContainer to={"/order/" + order.ID}>
            <tr className={order.active ? "table-primary" : "table-secondary"}>
              <td>{printDate(order.deadline)}</td>
              <td>{order.name}</td>
            </tr>
          </LinkContainer>
        </OverlayTrigger>
    
    meskio's avatar
    meskio committed
      ));
    
    meskio's avatar
    meskio committed
    
    
    meskio's avatar
    meskio committed
      return (
    
    meskio's avatar
    meskio committed
        <Fetcher url="/api/order" onFetch={setOrders}>
          <Table className="text-center" responsive>
            <thead>
              <tr>
                <th>Fecha</th>
                <th>Nombre</th>
              </tr>
            </thead>
            <tbody>{entries}</tbody>
          </Table>
    
    meskio's avatar
    meskio committed
      );
    
    meskio's avatar
    meskio committed
    }
    
    export default OrderList;