From: Stephen Cameron Date: Thu, 29 Aug 2019 20:22:30 +0000 (+0200) Subject: WIP #2962 @10 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=45e08a087d743ec1bed5591ecf9121717e592a94;p=pmi.git WIP #2962 @10 --- diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index de423a5..d5e0614 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -206,8 +206,8 @@ class AjaxController extends CubistFrontController public function filtercatalog(Request $request) { $product_type = $request->productType; - $filterValues = $request->filter ?? []; + $filter_values = $request->filter ?? []; - return Product::getFilteredProducts($product_type, $filterValues); + return Product::getFilteredProducts($product_type, $filter_values); } } diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 8232d42..ffdd06c 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -35,6 +35,7 @@ class ProductController extends CubistFrontController // Get available filters $filters = Product::getFilteredProducts($id); $this->data['filters'] = $filters ? $filters['filters'] : []; // To be used by Vue component + $this->data['filter_results'] = $filters ? $filters['results'] : []; return view('pages.products', $this->data); } diff --git a/app/Models/Product.php b/app/Models/Product.php index 64c2840..c6d4f34 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -439,12 +439,12 @@ class Product extends CubistMagicPageModel if ($o) { $nb = $values[$index] ?? 0; if ($nb > 0) { - $options[] = ['label' => $o, 'value' => $index, 'nb_products' => $nb]; + $options[$index] = ['label' => $o, 'value' => $index, 'nb_products' => $nb]; } } } if (isset($values['-'])) { - $options[] = ['label' => __('Non défini'), 'value' => '-', 'nb_products' => $values['-']]; + $options['-'] = ['label' => __('Non défini'), 'value' => '-', 'nb_products' => $values['-']]; } $f['options'] = $options; } else if ($data->type == 'numeric' || $data->type == 'range') { diff --git a/resources/js/components/ProductsFilters.vue b/resources/js/components/ProductsFilters.vue new file mode 100644 index 0000000..de7bd06 --- /dev/null +++ b/resources/js/components/ProductsFilters.vue @@ -0,0 +1,137 @@ + + + diff --git a/resources/views/pages/products.blade.php b/resources/views/pages/products.blade.php index 0075c3c..891fcae 100644 --- a/resources/views/pages/products.blade.php +++ b/resources/views/pages/products.blade.php @@ -4,86 +4,19 @@ @intro(['padding' => 'pb-1v']) - + -
+ {{-- Product Grid --}} + + @foreach($products as $id => $product) -
+ {{-- TODO: find a way to include easily hide products that don't match the filter. Maybe wrap in a