From c5dace224323287f927ba352712743fe2eaca241 Mon Sep 17 00:00:00 2001 From: IT Fixcomart Date: Fri, 4 Nov 2022 11:40:55 +0700 Subject: Add popular product and ready stock product in home --- src/components/ProductCard.js | 5 ++++ src/components/product/ProductSlider.js | 44 +++++++++++++++++++++++++++++++++ src/pages/index.js | 36 +++++++++++++++++++++------ 3 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 src/components/product/ProductSlider.js (limited to 'src') diff --git a/src/components/ProductCard.js b/src/components/ProductCard.js index 250a5c7d..360e11ff 100644 --- a/src/components/ProductCard.js +++ b/src/components/ProductCard.js @@ -32,6 +32,11 @@ export default function ProductCard({ data }) { ) : ''}

{product.lowest_price.price_discount > 0 ? currencyFormat(product.lowest_price.price_discount) : 'Tanya harga'}

+ {product.stock_total > 0 ? ( +
Ready Stock
+ ) : ( +
+ )} diff --git a/src/components/product/ProductSlider.js b/src/components/product/ProductSlider.js new file mode 100644 index 00000000..26584d8a --- /dev/null +++ b/src/components/product/ProductSlider.js @@ -0,0 +1,44 @@ +import { Swiper, SwiperSlide } from "swiper/react"; +import ProductCard from "../ProductCard"; +import ImagePlaceholderIcon from "../../icons/image-placeholder.svg"; +import "swiper/css"; + +export default function ProductSlider({ products }) { + return ( + <> + + {products?.products?.map((product, index) => ( + + + + ))} + + {products == null ? ( +
+
+
+ +
+
+
+
+
+
+ Loading... +
+
+
+ +
+
+
+
+
+
+ Loading... +
+
+ ) : ''} + + ) +} \ No newline at end of file diff --git a/src/pages/index.js b/src/pages/index.js index 899626f5..dc8f5617 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -5,29 +5,41 @@ import { Pagination, Autoplay } from "swiper"; import Header from "../components/Header"; import { getOdoo } from "../helpers/apiOdoo"; import "react-lazy-load-image-component/src/effects/blur.css"; - import "swiper/css"; import "swiper/css/pagination"; import "swiper/css/autoplay"; +import ProductSlider from "../components/product/ProductSlider"; export default function Home() { - const [heroBanners, setHeroBanners] = useState([]); - const [manufactures, setManufactures] = useState([]); + const [heroBanners, setHeroBanners] = useState(null); + const [manufactures, setManufactures] = useState(null); + const [readyStockProducts, setReadyStockProducts] = useState(null); + const [popularProducts, setPopularProducts] = useState(null); useEffect(() => { - setHeroBanners([]); const getHeroBanners = async () => { const dataHeroBanners = await getOdoo(`/api/v1/banner?type=index-a-1`); setHeroBanners(dataHeroBanners); } getHeroBanners(); - setManufactures([]); const getManufactures = async () => { const dataManufactures = await getOdoo(`/api/v1/manufacture?level=prioritas`); setManufactures(dataManufactures); } getManufactures(); + + const getReadyStockProducts = async () => { + const dataReadyStockProducts = await getOdoo(`/api/v1/product?ready_stock=1&limit=30`); + setReadyStockProducts(dataReadyStockProducts); + } + getReadyStockProducts(); + + const getPopularProducts = async () => { + const dataPopularProducts = await getOdoo(`/api/v1/product?manufactures=10&limit=30`); + setPopularProducts(dataPopularProducts); + } + getPopularProducts(); }, []); return ( @@ -42,13 +54,13 @@ export default function Home() { )) } -
-

Brand Pilihan

+
+

Brand Pilihan

{ manufactures?.manufactures?.map((manufacture, index) => ( -
+
@@ -56,6 +68,14 @@ export default function Home() { }
+
+

Produk Ready Stock

+ +
+
+

Produk Populer

+ +
) } -- cgit v1.2.3