From 21a22d686e71d8eb470d158f93ba80e43b7b221f Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 2 Dec 2022 17:32:29 +0700 Subject: input range filter, sort by ready stock --- src/components/Filter.js | 31 ++++++++++++++++--------------- src/pages/api/shop/search.js | 5 ++++- src/pages/shop/brands/[slug].js | 8 ++++---- src/pages/shop/product/[slug].js | 2 +- src/pages/shop/search.js | 8 ++++---- 5 files changed, 29 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/components/Filter.js b/src/components/Filter.js index d2a5bf1b..4727fb9d 100644 --- a/src/components/Filter.js +++ b/src/components/Filter.js @@ -29,8 +29,8 @@ const Filter = ({ let filterRoutePrefix = '?'; if (selectedBrand) filterRoute.push(`brand=${selectedBrand}`); if (selectedCategory) filterRoute.push(`category=${selectedCategory}`); - if (priceFrom > 0) filterRoute.push(`price_from=${priceFrom}`); - if (priceTo > 0) filterRoute.push(`price_to=${priceTo}`); + if (priceFrom) filterRoute.push(`price_from=${priceFrom}`); + if (priceTo) filterRoute.push(`price_to=${priceTo}`); if (orderBy) filterRoute.push(`order_by=${orderBy}`); if (defaultRoute.includes('?')) filterRoutePrefix = '&'; @@ -70,8 +70,8 @@ const Filter = ({ const reset = () => { setSelectedBrand(''); setSelectedCategory(''); - setPriceFrom(0); - setPriceTo(0); + setPriceFrom(''); + setPriceTo(''); setOrderBy(''); } @@ -92,13 +92,19 @@ const Filter = ({
+ {selectedBrand || selectedCategory || priceFrom || priceTo || orderBy ? ( + + ) : ''} {!disableFilter.includes('orderBy') ? (
-
- - - +
+ + + +
) : ''} @@ -128,20 +134,15 @@ const Filter = ({
- setPriceFrom(e.target.value)}/> + setPriceFrom(e.target.value)}/> - setPriceTo(e.target.value)}/> + setPriceTo(e.target.value)}/>
) : ''} - {selectedBrand || selectedCategory || priceFrom > 0 || priceTo > 0 || orderBy ? ( - - ) : ''}
) diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 2d26205d..ad986c86 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -59,6 +59,9 @@ export default async function handler(req, res) { case 'popular': paramOrderBy = ', search_rank DESC'; break; + case 'stock': + paramOrderBy = ', stock_total DESC'; + break; } let limit = 30; @@ -74,7 +77,7 @@ export default async function handler(req, res) { `start=${offset}`, `rows=${limit}`, `sort=product_rating DESC ${paramOrderBy}`, - `fq=price_discount:[${price_from == 0 ? '*' : price_from} TO ${price_to == 0 ? '*' : price_to}]` + `fq=price_discount:[${price_from == '' ? '*' : price_from} TO ${price_to == '' ? '*' : price_to}]` ]; if (brand) parameter.push(`fq=brand:${brand}`); diff --git a/src/pages/shop/brands/[slug].js b/src/pages/shop/brands/[slug].js index b532e7a7..c0524207 100644 --- a/src/pages/shop/brands/[slug].js +++ b/src/pages/shop/brands/[slug].js @@ -13,8 +13,8 @@ export async function getServerSideProps(context) { slug, page = 1, category = '', - price_from = '0', - price_to = '0', + price_from = '', + price_to = '', order_by = '', } = context.query; @@ -62,8 +62,8 @@ export default function BrandDetail({ const route = () => { let route = `/shop/brands/${slug}`; if (category) route += `&category=${category}`; - if (price_from > 0) route += `&price_from=${price_from}`; - if (price_to > 0) route += `&price_to=${price_to}`; + if (price_from) route += `&price_from=${price_from}`; + if (price_to) route += `&price_to=${price_to}`; if (order_by) route += `&order_by=${order_by}`; return route; } diff --git a/src/pages/shop/product/[slug].js b/src/pages/shop/product/[slug].js index dd554660..1ef693c0 100644 --- a/src/pages/shop/product/[slug].js +++ b/src/pages/shop/product/[slug].js @@ -165,7 +165,7 @@ export default function ProductDetail({ product }) {
-

Produk Lainnya

+

Produk Lainnya

diff --git a/src/pages/shop/search.js b/src/pages/shop/search.js index 2ae3cca4..e365fcf5 100644 --- a/src/pages/shop/search.js +++ b/src/pages/shop/search.js @@ -13,8 +13,8 @@ export async function getServerSideProps(context) { page = 1, brand = '', category = '', - price_from = '0', - price_to = '0', + price_from = '', + price_to = '', order_by = '', } = context.query; @@ -53,8 +53,8 @@ export default function ShopSearch({ let route = `/shop/search?q=${q}`; if (brand) route += `&brand=${brand}`; if (category) route += `&category=${category}`; - if (price_from > 0) route += `&price_from=${price_from}`; - if (price_to > 0) route += `&price_to=${price_to}`; + if (price_from) route += `&price_from=${price_from}`; + if (price_to) route += `&price_to=${price_to}`; if (order_by) route += `&order_by=${order_by}`; return route; } -- cgit v1.2.3