Skip to content
Snippets Groups Projects
MyBasketPage.js 3.56 KiB
Newer Older
Klaas Kliffen's avatar
Klaas Kliffen committed
import React, { useContext, useEffect, useState } from "react";
import { Container, Table } from "react-bootstrap";
import { BasketContext } from "../../contexts/BasketContext";
Klaas Kliffen's avatar
Klaas Kliffen committed
import { renderHeaderApertif, renderRowApertif } from "../services/layout/ApertifResultsLayout";
import { renderHeaderAstronVO, renderRowAstronVO } from "../services/layout/AstronVOLayout";
import { renderHeaderIVOA, renderRowIVOA } from "../services/layout/IVOALayout";
import AddToBasket from "./AddToBasketCheckBox";
Klaas Kliffen's avatar
Klaas Kliffen committed
import APIButton from "./APIButton";
import EmptyBasketButton from "./EmptyBasketButton";
Klaas Kliffen's avatar
Klaas Kliffen committed
    switch (item.archive) {

        case 'apertif':

            return <div>
                <Table className="mt-3" size="sm" responsive>
                    <thead>
Klaas Kliffen's avatar
Klaas Kliffen committed
                        <tr className="bg-light">
                            {renderHeaderApertif()}
                        </tr>
                    </thead>
                    <tbody>
                        {renderRowApertif((item.record))}
                    </tbody>
                </Table>
            </div>

        case 'astron_vo':

            return <div>
                <Table className="mt-3" size="sm" responsive>
                    <thead>
Klaas Kliffen's avatar
Klaas Kliffen committed
                        <tr className="bg-light">
                            {renderHeaderAstronVO()}
                        </tr>
                    </thead>
                    <tbody>
                        {renderRowAstronVO((item.record))}
                    </tbody>
                </Table>
            </div>

        case 'TODO_vo_reg':

            return <div>
                <Table className="mt-3" size="sm" responsive>
                    <thead>
Klaas Kliffen's avatar
Klaas Kliffen committed
                        <tr className="bg-light">
                            {renderHeaderIVOA()}
                        </tr>
                    </thead>
                    <tbody>
                        {renderRowIVOA((item.record))}
                    </tbody>
                </Table>
            </div>

function renderBasketPage(items) {
        return null
    }

    // parse the items and build a line to display
    let my_list = items.map((item, index) => {
        let id = `${index}`
        let archive = item.archive
Klaas Kliffen's avatar
Klaas Kliffen committed
                <AddToBasket id={id} item={item} label="" />
            </td>
            <td>{archive}</td>
Klaas Kliffen's avatar
Klaas Kliffen committed
            <Container fluid>
                &nbsp;
                <h3>Data Shopping Basket &nbsp;&nbsp; <EmptyBasketButton /> <APIButton /></h3>
                <Table className="mt-3" responsive>
                    <thead>
                        <tr className="bg-light">
                            <th>Basket</th>
                            <th>Source</th>
                            <th>Item</th>
                        </tr>
                    </thead>
                    <tbody>
                        {my_list}
                    </tbody>
                </Table>
            </Container>

export default function MyBasketPage() {
    const basketContext = useContext(BasketContext);
    const { refresh } = useContext(BasketContext);

    // work on a local copy of datasets, to be able (un)(re)select items before saving
    const [items, setItems] = useState(basketContext.datasets);

    useEffect(() => {
        setItems(basketContext.datasets)
Klaas Kliffen's avatar
Klaas Kliffen committed
    }, [refresh, basketContext.datasets])

    return renderBasketPage(items)
}