From cddfce7c426db846d3ae8ec6afbb31e532e83d9f Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 15:08:47 +0100 Subject: [PATCH 1/7] Add basic functionality --- images/Component Diagram.PNG | Bin 0 -> 33508 bytes src/App.jsx | 53 +++++++++++++++++++++++++++++++++++ src/CartItem.jsx | 15 ++++++++++ src/Item.jsx | 10 +++++++ 4 files changed, 78 insertions(+) create mode 100644 images/Component Diagram.PNG create mode 100644 src/CartItem.jsx create mode 100644 src/Item.jsx diff --git a/images/Component Diagram.PNG b/images/Component Diagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..af09b0b68e4394dc770b674656a6d7b427efb4f3 GIT binary patch literal 33508 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 (e.name === item.name)) + + if(!element){ + throw new Error("This is not a valid item") + } + + const cartElement = cart.find(e => (e.name === item.name)) + const isInCart = !cartElement + + if(isInCart) { + const newCartElement = structuredClone(element) + newCartElement.quantity = 1 + cart.push(newCartElement) + setCart([...cart]) + } else { + cartElement.quantity++ + setCart([...cart]) + } + + + } + + function decreaseCartCount(element) { + element.quantity-- + if(element.quantity < 1) { + const indexToRemove = cart.findIndex(e => (e.name === element.name)) + cart.splice(indexToRemove, 1) + } + setCart([...cart]) + } + + function increaseCartCount(element) { + element.quantity++ + setCart([...cart]) + } + return ( <>

Greengrocers

    + {storeItems.map( (e, index)=> { + return + })} +

Your Cart

    + {cart.map((e, index) => { + return + })}
diff --git a/src/CartItem.jsx b/src/CartItem.jsx new file mode 100644 index 0000000..53242d0 --- /dev/null +++ b/src/CartItem.jsx @@ -0,0 +1,15 @@ +export default function CartItem({ item , decreaseCartCount, increaseCartCount}) { + return ( +
  • + {item.name} +

    {item.name}

    + + {item.quantity} + +
  • + ) +} diff --git a/src/Item.jsx b/src/Item.jsx new file mode 100644 index 0000000..a5deee8 --- /dev/null +++ b/src/Item.jsx @@ -0,0 +1,10 @@ +export default function Item({ item , addCartItem}) { + return ( +
  • +
    + {item.name +
    + +
  • + ) +} From bcf556c134aeaa5a8bf1ffac4d09299444b4c358 Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 15:14:52 +0100 Subject: [PATCH 2/7] Calculate total function --- src/App.jsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 421c08e..d68a2ee 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -50,6 +50,18 @@ export default function App() { setCart([...cart]) } + function calculateTotal() { + let runningTotal = 0 + + cart.forEach((element, index) => { + runningTotal += element.price * element.quantity + }) + + return '£' + runningTotal.toFixed(2) + + } + + return ( <>
    @@ -75,7 +87,7 @@ export default function App() {

    Total

    - £0.00 + {calculateTotal()}
    From 5c6e3c904ecef5aca5f763aacc1929c633280a6c Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 15:29:56 +0100 Subject: [PATCH 3/7] Update component diagram --- images/Component Diagram.PNG | Bin 33508 -> 57538 bytes src/App.jsx | 33 ++--------------------- src/Cart.jsx | 51 +++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 src/Cart.jsx diff --git a/images/Component Diagram.PNG b/images/Component Diagram.PNG index af09b0b68e4394dc770b674656a6d7b427efb4f3..a258b73ca371e42639dfd865802209865351dcf6 100644 GIT binary patch literal 57538 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Ț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 literal 33508 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 (e.name === element.name)) - cart.splice(indexToRemove, 1) - } - setCart([...cart]) - } - function increaseCartCount(element) { - element.quantity++ - setCart([...cart]) - } function calculateTotal() { let runningTotal = 0 @@ -73,24 +61,7 @@ export default function App() { -
    -

    Your Cart

    -
    -
      - {cart.map((e, index) => { - return - })} -
    -
    -
    -
    -

    Total

    -
    -
    - {calculateTotal()} -
    -
    -
    +
    Icons made by (e.name === element.name)) + cart.splice(indexToRemove, 1) + } + setCart([...cart]) + } + + function increaseCartCount(element) { + element.quantity++ + setCart([...cart]) + } + + function calculateTotal() { + let runningTotal = 0 + + cart.forEach((element, index) => { + runningTotal += element.price * element.quantity + }) + + return '£' + runningTotal.toFixed(2) + + } + + return( +
    +

    Your Cart

    +
    +
      + {cart.map((e, index) => { + return + })} +
    +
    +
    +
    +

    Total

    +
    +
    + {calculateTotal()} +
    +
    +
    + ) +} \ No newline at end of file From 4f7083acb39965278049c5339f06b90613a0c9f3 Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 15:50:11 +0100 Subject: [PATCH 4/7] Add space on line 51 --- src/App.jsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index c4afb7a..c090096 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -38,16 +38,7 @@ export default function App() { - function calculateTotal() { - let runningTotal = 0 - cart.forEach((element, index) => { - runningTotal += element.price * element.quantity - }) - - return '£' + runningTotal.toFixed(2) - - } return ( @@ -61,7 +52,7 @@ export default function App() { - +
    Icons made by Date: Mon, 29 Apr 2024 22:50:20 +0100 Subject: [PATCH 5/7] Add sorting function --- src/App.jsx | 40 +++++++++++++++++++++++++++++++++++++++- src/Cart.jsx | 1 - src/Sort.jsx | 21 +++++++++++++++++++++ src/store-items.js | 16 ++++++++-------- 4 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 src/Sort.jsx diff --git a/src/App.jsx b/src/App.jsx index c090096..0b60558 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -5,6 +5,31 @@ import Item from './Item' import initialStoreItems from './store-items' import Cart from './Cart' +import Sort from './Sort' + + + +function sortingPopular(a, b) { + const firstCompare = Number(a.id.split("-")[0]) + const secondCompare = Number(b.id.split("-")[0]) + + return firstCompare - secondCompare +} + +function sortPriceHighLow(a, b) { + const firstCompare = a.price + const secondCompare = b.price + + return firstCompare - secondCompare +} + +function sortPriceLowHigh(a, b) { + const firstCompare = a.price + const secondCompare = b.price + + return secondCompare - firstCompare +} + @@ -12,6 +37,19 @@ import Cart from './Cart' export default function App() { const [cart, setCart] = useState([]) const [storeItems, setStoreItems] = useState(initialStoreItems) + + function sortCheck(sortSelect) { + if (sortSelect === "default") { + const sorted = storeItems.sort(sortingPopular) + setStoreItems([...sorted]) + } else if (sortSelect === "price-low-high") { + const sorted = storeItems.sort(sortPriceLowHigh) + setStoreItems([...sorted]) + } else if (sortSelect === "price-high-low") { + const sorted = storeItems.sort(sortPriceHighLow) + setStoreItems([...sorted]) + } + } function addCartItem(item) { const element = storeItems.find(e => (e.name === item.name)) @@ -45,11 +83,11 @@ export default function App() { <>

    Greengrocers

    +
      {storeItems.map( (e, index)=> { return })} -
    diff --git a/src/Cart.jsx b/src/Cart.jsx index 65f459d..7eccc9a 100644 --- a/src/Cart.jsx +++ b/src/Cart.jsx @@ -1,4 +1,3 @@ -import { useState } from "react" import CartItem from "./CartItem" diff --git a/src/Sort.jsx b/src/Sort.jsx new file mode 100644 index 0000000..9e35ff9 --- /dev/null +++ b/src/Sort.jsx @@ -0,0 +1,21 @@ +/* eslint-disable react/prop-types */ + + +export default function Sort({sortCheck}) { + + + + function handleChange(e){ + sortCheck(e.currentTarget.value) + } + + + return ( + + + ) +} diff --git a/src/store-items.js b/src/store-items.js index 96dd2ea..4a36591 100644 --- a/src/store-items.js +++ b/src/store-items.js @@ -3,56 +3,56 @@ const storeItems = [ { id: "001-beetroot", name: "beetroot", - price: 0.35, + price: 0.55, description: "The beetroot is the taproot portion of a beet plant, usually known in North America as beets while the vegetable is referred to as beetroot in British English, and also known as the table beet, garden beet, red beet, dinner beet or golden beet.", type: "vegetable" }, { id: "002-carrot", name: "carrot", - price: 0.35, + price: 0.15, description: "The carrot is a root vegetable, typically orange in color, though heirloom variants including purple, black, red, white, and yellow cultivars exist, all of which are domesticated forms of the wild carrot, Daucus carota, native to Europe and Southwestern Asia.", type: "vegetable" }, { id: "003-apple", name: "apple", - price: 0.35, + price: 0.15, description: "An apple is a round, edible fruit produced by an apple tree (Malus spp., among them the domestic or orchard apple; Malus domestica).", type: "fruit" }, { id: "004-apricot", name: "apricot", - price: 0.35, + price: 2.35, description: "An apricot is a fruit, or the tree that bears the fruit, of several species in the genus Prunus.", type: "fruit" }, { id: "005-avocado", name: "avocado", - price: 0.35, + price: 6.35, description: "The avocado, alligator pear or avocado pear (Persea americana) is a medium-sized, evergreen tree in the laurel family (Lauraceae).", type: "fruit" }, { id: "006-bananas", name: "bananas", - price: 0.35, + price: 0.90, description: "A banana is an elongated, edible fruit – botanically a berry – produced by several kinds of large herbaceous flowering plants in the genus Musa.", type: "fruit" }, { id: "007-bell-pepper", name: "bell pepper", - price: 0.35, + price: 0.65, description: "The bell pepper (also known as sweet pepper, pepper, capsicum /ˈkæpsɪkəm/ or in some places, mangoes) is the fruit of plants in the Grossum Group of the species Capsicum annuum.", type: "fruit" }, { id: "008-berry", name: "berry", - price: 0.35, + price: 0.30, description: "A berry is a small, pulpy, and often edible fruit. Typically, berries are juicy, rounded, brightly colored, sweet, sour or tart, and do not have a stone or pit, although many pips or seeds may be present.", type: "fruit" }, From e72582976fc3f748dfd9c8f160f4aed202f4afae Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 23:14:40 +0100 Subject: [PATCH 6/7] Add filter function --- src/App.jsx | 35 +++++++++++++++++++++++++---------- src/Filter.jsx | 15 +++++++++++++++ 2 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 src/Filter.jsx diff --git a/src/App.jsx b/src/App.jsx index 0b60558..73c1df5 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -6,6 +6,7 @@ import Item from './Item' import initialStoreItems from './store-items' import Cart from './Cart' import Sort from './Sort' +import Filter from './Filter' @@ -37,19 +38,33 @@ function sortPriceLowHigh(a, b) { export default function App() { const [cart, setCart] = useState([]) const [storeItems, setStoreItems] = useState(initialStoreItems) + const [displayedItems, setDisplayedItems] = useState(initialStoreItems) - function sortCheck(sortSelect) { - if (sortSelect === "default") { - const sorted = storeItems.sort(sortingPopular) + function sortCheck(selectedSort) { + if (selectedSort === "default") { + const sorted = displayedItems.sort(sortingPopular) setStoreItems([...sorted]) - } else if (sortSelect === "price-low-high") { - const sorted = storeItems.sort(sortPriceLowHigh) + } else if (selectedSort === "price-low-high") { + const sorted = displayedItems.sort(sortPriceLowHigh) setStoreItems([...sorted]) - } else if (sortSelect === "price-high-low") { - const sorted = storeItems.sort(sortPriceHighLow) + } else if (selectedSort === "price-high-low") { + const sorted = displayedItems.sort(sortPriceHighLow) setStoreItems([...sorted]) } } + + function filterCheck(selectedFilter) { + + const filteredItems = [] + + storeItems.forEach(element => { + if(selectedFilter === "all" || selectedFilter === selectedFilter && element.type === selectedFilter){ + filteredItems.push(element) + } + + + setDisplayedItems([...filteredItems]) + })} function addCartItem(item) { const element = storeItems.find(e => (e.name === item.name)) @@ -83,9 +98,10 @@ export default function App() { <>

    Greengrocers

    +
      - {storeItems.map( (e, index)=> { + {displayedItems.map( (e, index)=> { return })}
    @@ -105,5 +121,4 @@ export default function App() {
    - ) -} + )} \ No newline at end of file diff --git a/src/Filter.jsx b/src/Filter.jsx new file mode 100644 index 0000000..0f56d69 --- /dev/null +++ b/src/Filter.jsx @@ -0,0 +1,15 @@ +export default function Filter({filterCheck}) { + + function handleChange(e){ + console.log(e.currentTarget.value) + filterCheck(e.currentTarget.value) + } + + return ( + + ) +} From 05f1201fdf0538b6215d79335fb2c16f39e38f5c Mon Sep 17 00:00:00 2001 From: Angus Townsley Date: Mon, 29 Apr 2024 23:16:54 +0100 Subject: [PATCH 7/7] Fix state related bug --- src/App.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 73c1df5..3887aef 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -43,13 +43,13 @@ export default function App() { function sortCheck(selectedSort) { if (selectedSort === "default") { const sorted = displayedItems.sort(sortingPopular) - setStoreItems([...sorted]) + setDisplayedItems([...sorted]) } else if (selectedSort === "price-low-high") { const sorted = displayedItems.sort(sortPriceLowHigh) - setStoreItems([...sorted]) + setDisplayedItems([...sorted]) } else if (selectedSort === "price-high-low") { const sorted = displayedItems.sort(sortPriceHighLow) - setStoreItems([...sorted]) + setDisplayedItems([...sorted]) } }