import axios from "axios"; import Header from "../../components/Header"; import Layout from "../../components/Layout"; import Pagination from "../../components/Pagination"; import ProductCard from "../../components/ProductCard"; import FilterIcon from "../../icons/filter.svg"; import { useEffect, useState } from "react"; import Filter from "../../components/Filter"; import { useRouter } from "next/router"; export async function getServerSideProps(context) { const { q, page = 1, brand = '', category = '' } = context.query; let searchResults = await axios(`${process.env.SELF_HOST}/api/shop/search?q=${q}&page=${page}&brand=${brand}&category=${category}`); searchResults = searchResults.data; return { props: { searchResults, q, page, brand, category } }; } export default function ShopSearch({ searchResults, q, page, brand, category }) { const router = useRouter(); const pageCount = Math.ceil(searchResults.response.numFound / searchResults.responseHeader.params.rows); const productStart = searchResults.responseHeader.params.start; const productRows = searchResults.responseHeader.params.rows; const productFound = searchResults.response.numFound; const [activeFilter, setActiveFilter] = useState(false); const [selectedCategory, setSelectedCategory] = useState(category); const [selectedBrand, setSelectedBrand] = useState(brand); const [categories, setCategories] = useState([]); const [brands, setBrands] = useState([]); const filterSubmit = (e) => { e.preventDefault(); setActiveFilter(false); let filterRoute = `/shop/search?q=${q}`; if (selectedBrand) filterRoute += `&brand=${selectedBrand}`; if (selectedCategory) filterRoute += `&category=${selectedCategory}`; router.push(filterRoute, undefined, { scroll: false }); } useEffect(() => { const filterCategory = searchResults.facet_counts.facet_fields.category_name_str.filter((category, index) => { if (index % 2 == 0) { const productCountInCategory = searchResults.facet_counts.facet_fields.category_name_str[index + 1]; if (productCountInCategory > 0) return category; } }); setCategories(filterCategory); const filterBrand = searchResults.facet_counts.facet_fields.brand_str.filter((brand, index) => { if (index % 2 == 0) { const productCountInBrand = searchResults.facet_counts.facet_fields.brand_str[index + 1]; if (productCountInBrand > 0) return brand; } }); setBrands(filterBrand); }, [searchResults]); return ( <>
setSelectedBrand(e.target.value)} selectedCategory={selectedCategory} onChangeCategory={(e) => setSelectedCategory(e.target.value)} brands={brands} categories={categories} isActiveFilter={activeFilter} closeFilter={() => setActiveFilter(false)} onSubmit={filterSubmit} />

Produk

{productFound > 0 ? ( <> Menampilkan  {pageCount > 1 ? ( <> {productStart + 1}-{ (productStart + productRows) > productFound ? productFound : productStart + productRows }  dari  ) : ''} {searchResults.response.numFound}  produk untuk pencarian {q} ) : 'Mungkin yang anda cari'}
{searchResults.response.products.map((product) => ( ))}
) }