diff --git a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee index 34c8941836..fec1974e34 100644 --- a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee @@ -11,6 +11,8 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product $scope.supplied_taxons = null $scope.supplied_properties = null $scope.showFilterSidebar = false + $scope.activeTaxons = [] + $scope.activeProperties = [] # Update filters after initial load of shop tab $timeout => @@ -20,6 +22,7 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product $rootScope.$on "orderCycleSelected", -> $scope.update_filters() $scope.clearAll() + $scope.page = 1 $scope.update_filters = -> order_cycle_id = OrderCycle.order_cycle.order_cycle_id diff --git a/app/views/shop/messages/_select_oc.html.haml b/app/views/shop/messages/_select_oc.html.haml index 2f44ed827f..6256789d32 100644 --- a/app/views/shop/messages/_select_oc.html.haml +++ b/app/views/shop/messages/_select_oc.html.haml @@ -1,4 +1,4 @@ -.content.footer-pad{ "darker-background" => true, "ng-controller" => "ProductsCtrl", "ng-show" => "order_cycle.order_cycle_id == null" } +.content.footer-pad{ "darker-background" => true, "ng-show" => "order_cycle.order_cycle_id == null" } .row .small-12.columns .select-oc-message diff --git a/app/views/shop/products/_form.html.haml b/app/views/shop/products/_form.html.haml index 3fbdb1c43f..cb60087bf5 100644 --- a/app/views/shop/products/_form.html.haml +++ b/app/views/shop/products/_form.html.haml @@ -1,5 +1,5 @@ %form{action: main_app.cart_path} - %products{"ng-controller" => "ProductsCtrl", "ng-init" => "refreshStaleData()", "ng-show" => "order_cycle.order_cycle_id != null", "ng-cloak" => true } + %products{"ng-init" => "refreshStaleData()", "ng-show" => "order_cycle.order_cycle_id != null", "ng-cloak" => true } = render partial: "shop/products/searchbar" @@ -9,7 +9,7 @@ .medium-12.large-9.columns.full = render partial: "shop/products/search_feedback" - %div.pad-top{ "infinite-scroll" => "loadMore()", "infinite-scroll-distance" => "1", "infinite-scroll-disabled" => 'Products.loading' } + %div.pad-top{ "infinite-scroll" => "loadMore()", "infinite-scroll-distance" => "1", "infinite-scroll-disabled" => 'Products.loading', "infinite-scroll-immediate-check": "false" } %product.animate-repeat{"ng-controller" => "ProductNodeCtrl", "ng-repeat" => "product in Products.products track by product.id", "id" => "product-{{ product.id }}"} = render "shop/products/summary" .shop-variants diff --git a/app/views/shopping_shared/tabs/_shop.html.haml b/app/views/shopping_shared/tabs/_shop.html.haml index 0a8df040f5..f8a2747c94 100644 --- a/app/views/shopping_shared/tabs/_shop.html.haml +++ b/app/views/shopping_shared/tabs/_shop.html.haml @@ -2,10 +2,11 @@ .order-cycle-bar.hide-for-large-up = render partial: "shopping_shared/order_cycles" - - if no_open_order_cycles? - = render partial: "shop/messages/closed_shop" - - else - = render partial: "shop/messages/select_oc" + %div{"ng-controller" => "ProductsCtrl"} + - if no_open_order_cycles? + = render partial: "shop/messages/closed_shop" + - else + = render partial: "shop/messages/select_oc" - -# Rendering the form, even if there are no open OCs, makes display only shops possible - = render partial: "shop/products/form" + -# Rendering the form, even if there are no open OCs, makes display only shops possible + = render partial: "shop/products/form" diff --git a/spec/features/consumer/shopping/shopping_spec.rb b/spec/features/consumer/shopping/shopping_spec.rb index 3be9aa346e..590afc8202 100644 --- a/spec/features/consumer/shopping/shopping_spec.rb +++ b/spec/features/consumer/shopping/shopping_spec.rb @@ -159,6 +159,37 @@ feature "As a consumer I want to shop with a distributor", js: true do end end end + + describe "two order cycles and more than 20 products for each" do + around do |example| + Capybara.raise_server_errors = false + example.run + Capybara.raise_server_errors = true + end + + before do + 20.times do + product = create(:simple_product, supplier: supplier) + add_variant_to_order_cycle(exchange1, product.variants.first) + add_variant_to_order_cycle(exchange2, product.variants.first) + end + end + + it "show the whole products list for each OC" do + visit shop_path + select "turtles", from: "order_cycle_id" + select "frogs", from: "order_cycle_id" + expect(page).to have_selector("product", count: 10) + scroll_to(page.find(".product-listing"), align: :bottom) + expect(page).to have_selector("product", count: 20) + + scroll_to(page.find("distributor")) + select "turtles", from: "order_cycle_id" + expect(page).to have_selector("product", count: 10) + scroll_to(page.find(".product-listing"), align: :bottom) + expect(page).to have_selector("product", count: 20) + end + end end end