diff --git a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php index c46bdf271..845acc865 100644 --- a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php @@ -51,7 +51,7 @@ class ProductDataGrid extends DataGrid ->select( 'product_flat.locale', 'product_flat.channel', - 'product_flat.product_id as product_id', + 'product_flat.product_id', 'products.sku as product_sku', 'product_flat.name as product_name', 'products.type as product_type', @@ -61,17 +61,9 @@ class ProductDataGrid extends DataGrid DB::raw('SUM(DISTINCT ' . DB::getTablePrefix() . 'product_inventories.qty) as quantity') ); - if ($this->locale !== 'all') { - $queryBuilder->where('product_flat.locale', $this->locale); - } - - if ($this->channel !== 'all') { - $queryBuilder->where('product_flat.channel', $this->channel); - } - - $queryBuilder->groupBy('product_flat.product_id'); - $queryBuilder->having('locale', $this->locale !== 'all' ? $this->locale : 'en'); - $queryBuilder->having('channel', $this->channel !== 'all' ? $this->channel : 'default'); + $queryBuilder->groupBy('product_flat.product_id', 'product_flat.locale', 'product_flat.channel'); + $queryBuilder->where('locale', $this->locale !== 'all' ? $this->locale : 'en'); + $queryBuilder->where('channel', $this->channel !== 'all' ? $this->channel : 'default'); $this->addFilter('product_id', 'product_flat.product_id'); $this->addFilter('product_name', 'product_flat.name'); diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php index 9f770e03a..461b7962e 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php @@ -1,6 +1,10 @@ @php $attributeRepository = app('\Webkul\Attribute\Repositories\AttributeRepository'); $comparableAttributes = $attributeRepository->findByField('is_comparable', 1); + + $locale = request()->get('locale') ?: app()->getLocale(); + + $attributeOptionTranslations = DB::table(DB::getTablePrefix() . 'attribute_option_translations')->where('locale', $locale)->get()->toJson(); @endphp @push('css') @@ -116,7 +120,17 @@ arrow_downward - __ + __ + @break; + + @case('checkbox') + + __ + @break; + + @case('select') + + __ @break; @default @@ -148,6 +162,7 @@ return { 'products': [], 'isProductListLoaded': false, + 'attributeOptions': JSON.parse(@json($attributeOptionTranslations)), 'isCustomer': '{{ auth()->guard('customer')->user() ? "true" : "false" }}' == "true", } }, @@ -238,6 +253,42 @@ this.$root.headerItemsCount++; }, + + 'getAttributeOptions': function (productDetails, attributeValues, type) { + var attributeOptions = '__'; + + if (productDetails && attributeValues) { + var attributeItems; + + if (type == "multiple") { + attributeItems = productDetails[attributeValues].split(','); + } else if (type == "single") { + attributeItems = productDetails[attributeValues]; + } + + attributeOptions = this.attributeOptions.filter(option => { + if (type == "multiple") { + if (attributeItems.indexOf(option.attribute_option_id.toString()) > -1) { + return true; + } + } else if (type == "single") { + if (attributeItems == option.attribute_option_id.toString()) { + return true; + } + } + + return false; + }); + + attributeOptions = attributeOptions.map(option => { + return option.label; + }); + + attributeOptions = attributeOptions.join(', '); + } + + return attributeOptions; + } } });