diff --git a/src/components/basket/AddToBasketCheckBox.js b/src/components/basket/AddToBasketCheckBox.js index 435386fafba74540f16ad235277d8fd3e6bc46e3..55a36b258fc52151d989ffa05109eac5252358f9 100644 --- a/src/components/basket/AddToBasketCheckBox.js +++ b/src/components/basket/AddToBasketCheckBox.js @@ -25,11 +25,7 @@ export default function AddToCheckout(props) { console.log('removeFromBasket: '+[removeFromBasketItem, basketContext]); } - // fake authentication when in 'development' mode. - // let authenticated = isAuthenticated || (process.env.NODE_ENV === "development") - let authenticated = isAuthenticated - - if (authenticated){ + if (isAuthenticated){ //let datasets_in_basket = basketContext.datasets //console.log('datasets_in_basket: '+datasets_in_basket) return ( diff --git a/src/components/basket/EmptyBasketButton.js b/src/components/basket/EmptyBasketButton.js index d45581cff79f83dc02995d9023e0dee2dc2a9dd8..2b5e336db367e28a07f02af6559629c0625f7643 100644 --- a/src/components/basket/EmptyBasketButton.js +++ b/src/components/basket/EmptyBasketButton.js @@ -9,7 +9,7 @@ import { saveBasket } from "./SaveBasketButton" export default function EmptyBasketButton(props) { const { api_host, isAuthenticated, isTokenValid, loginAgain } = useContext(GlobalContext); const basketContext = useContext(BasketContext); - const { setHasChanged } = useContext(BasketContext); + const { setHasChanged, refresh, setRefresh } = useContext(BasketContext); const [show, setShow] = useState(false); const handleClose = () => setShow(false); @@ -18,15 +18,16 @@ export default function EmptyBasketButton(props) { let history = useHistory() function emptyBasket(basketContext , api_host, isTokenValid, loginAgain, history){ - basketContext.setDatasets([]) + basketContext.clear() setHasChanged(true) setShow(false) - saveBasket(basketContext , api_host, isTokenValid, loginAgain, history) + setRefresh(!refresh) } if (isAuthenticated) { - if (basketContext.datasets!==[]) { + //alert(basketContext.datasets) + if (basketContext.datasets.length>0) { return ( <> <Button @@ -41,16 +42,16 @@ export default function EmptyBasketButton(props) { <Modal.Header closeButton> <Modal.Title>{getTrashIcon('black')}{' '}Empty Basket</Modal.Title> </Modal.Header> - <Modal.Body>Are you sure you want to empty the shopping basket?</Modal.Body> + <Modal.Body><h5>Are you sure you want to empty the basket?</h5> + <i>(don't forget to click 'Save Basket' afterward)</i> + </Modal.Body> <Modal.Footer> <Button variant="success" onClick={() => emptyBasket(basketContext, api_host, isTokenValid, loginAgain, history)} > {getOKIcon()}{' '}OK </Button> - <Button variant="warning" onClick={handleClose}> - Cancel - </Button> + </Modal.Footer> </Modal> </> diff --git a/src/components/basket/MyBasketPage.js b/src/components/basket/MyBasketPage.js index c27dddf2e5df7f40cd6bfa1c97d899ad0a4e0590..ca43ca05f67fbb7a452b6477549866c82d0b676b 100644 --- a/src/components/basket/MyBasketPage.js +++ b/src/components/basket/MyBasketPage.js @@ -49,22 +49,12 @@ function renderRow(item) { } } -export default function MyBasketPage() { - const { api_host, isAuthenticated } = useContext(GlobalContext); - const basketContext = useContext(BasketContext); - const { preview } = useContext(QueryContext); - - // work on a local copy of datasets, to be able (un)(re)select items before saving - const [items, setItems] = useState(basketContext.datasets); +function renderBasketPage(items) { if (!items) { return null } - //if (items.length === basketContext.datasets.length) { - // basketContext.changed(false) - //} - // parse the items and build a line to display let my_list = items.map((item, index) => { let id = `${index}` @@ -83,7 +73,7 @@ export default function MyBasketPage() { <> <Container fluid> - <h3>Data Checkout <EmptyBasketButton/> <APIButton/></h3> + <h3>Data Shopping Basket <EmptyBasketButton/> <APIButton/></h3> <Table className="mt-3" responsive> <thead> @@ -105,3 +95,20 @@ export default function MyBasketPage() { </> ); } + +export default function MyBasketPage() { + const { api_host, isAuthenticated } = useContext(GlobalContext); + const basketContext = useContext(BasketContext); + const { refresh } = useContext(BasketContext); + const { preview } = useContext(QueryContext); + + // work on a local copy of datasets, to be able (un)(re)select items before saving + const [items, setItems] = useState(basketContext.datasets); + + useEffect(() => { + //alert('refresh') + setItems(basketContext.datasets) + },[refresh]) + + return renderBasketPage(items) +} diff --git a/src/components/basket/SaveBasketButton.js b/src/components/basket/SaveBasketButton.js index 2d566a516232027ff2c56da02c1a149d4f7fbed8..69f0cea159eca369e8ab5d3dc00dc77f9b99bbb9 100644 --- a/src/components/basket/SaveBasketButton.js +++ b/src/components/basket/SaveBasketButton.js @@ -9,7 +9,7 @@ import { getShoppingIcon } from "../../utils/styling"; export function saveBasket(basketContext, api_host, isTokenValid, loginAgain, history){ const payload = {shopping_cart: basketContext.datasets}; - console.log('saveBasket()') + console.log('saveBasket() '+payload) const profileUrl = api_host + "accounts/user-profiles/"; // check if he token is still valid diff --git a/src/contexts/BasketContext.js b/src/contexts/BasketContext.js index 346f30437709963dfdb0e62b6e60ef590b3ca4e4..bc4742161350d424363f90ffc225ae7d7cf6b7f8 100644 --- a/src/contexts/BasketContext.js +++ b/src/contexts/BasketContext.js @@ -6,6 +6,7 @@ export function BasketContextProvider({ children }) { const [datasets, setDatasets] = useState([]); const [hasChanged, setHasChanged] = useState(false); + const [refresh, setRefresh] = useState(false); function handleAddDataset(dataset) { setDatasets([...datasets, dataset]); @@ -20,16 +21,22 @@ export function BasketContextProvider({ children }) { setHasChanged(true) } + function handleClearDatasets() { + const copy = [] + setDatasets(copy); + setHasChanged(true) + } + return ( <BasketContext.Provider value={{ - datasets, - setDatasets, - hasChanged, - setHasChanged, + datasets, setDatasets, + hasChanged, setHasChanged, + refresh, setRefresh, add: handleAddDataset, remove: handleRemoveDataset, - changed: setHasChanged + clear: handleClearDatasets, + changed: setHasChanged, }} > {children} diff --git a/src/routes/Routes.js b/src/routes/Routes.js index 9c49d4b80f1bea83f14893b46d7bdafb36a7a22f..d74cc0b63420607c946a16b9cc8e4d5eaec30848 100644 --- a/src/routes/Routes.js +++ b/src/routes/Routes.js @@ -87,7 +87,7 @@ export default function Routes() { </Switch> - <footer><small>esap-gui version 27 aug 2021 - 11:00</small></footer> + <footer><small>esap-gui version 27 aug 2021 - 14:00</small></footer> </Router> ); }