diff --git a/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee index 55e44d037e..6547237c2d 100644 --- a/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.controller "OrderCycleCtrl", ($scope, $timeout, OrderCycle) -> +Darkswarm.controller "OrderCycleCtrl", ($scope, $rootScope, $timeout, OrderCycle) -> $scope.order_cycle = OrderCycle.order_cycle $scope.OrderCycle = OrderCycle @@ -6,11 +6,12 @@ Darkswarm.controller "OrderCycleCtrl", ($scope, $timeout, OrderCycle) -> # This is a hack. We should probably write our own "popover" directive # That takes an expression instead of a trigger, and binds to that $timeout => + $rootScope.$broadcast 'orderCycleSelected' if !$scope.OrderCycle.selected() $("#order_cycle_id").trigger("openTrigger") -Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $timeout, OrderCycle, Products, Variants, Cart, ChangeableOrdersAlert) -> +Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $rootScope, $timeout, OrderCycle, Products, Variants, Cart, ChangeableOrdersAlert) -> # Track previous order cycle id for use with revertOrderCycle() $scope.previous_order_cycle_id = OrderCycle.order_cycle.order_cycle_id $scope.$watch 'order_cycle.order_cycle_id', (newValue, oldValue)-> @@ -32,4 +33,4 @@ Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $timeout, OrderCycle, Prod Products.update() Cart.reloadFinalisedLineItems() ChangeableOrdersAlert.reload() - # Reload Filters from new endpoint after changing OC here + $rootScope.$broadcast 'orderCycleSelected' diff --git a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee index f5ae87dbe4..01048caf19 100644 --- a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee @@ -8,37 +8,34 @@ Darkswarm.controller "ProductsCtrl", ($scope, $filter, $rootScope, Products, Ord $scope.page = 1 $scope.per_page = 10 $scope.order_cycle = OrderCycle.order_cycle + $scope.supplied_taxons = {} + $scope.supplied_properties = {} - $scope.supplied_taxons = -> - return $scope.memoized_taxons if $scope.memoized_taxons != undefined - $scope.memoized_taxons = {} + $rootScope.$on "orderCycleSelected", -> + $scope.update_filters() + $scope.clearAll() + + $scope.update_filters = -> + order_cycle_id = OrderCycle.order_cycle.order_cycle_id + + return unless order_cycle_id + + $scope.supplied_taxons = {} + $scope.supplied_properties = {} params = { - id: OrderCycle.order_cycle.order_cycle_id, + id: order_cycle_id, distributor: currentHub.id } OrderCycleResource.taxons params, (data)=> data.map( (taxon) -> - $scope.memoized_taxons[taxon.id] = Taxons.taxons_by_id[taxon.id] + $scope.supplied_taxons[taxon.id] = Taxons.taxons_by_id[taxon.id] ) - - $scope.memoized_taxons - - $scope.supplied_properties = -> - return $scope.memoized_properties if $scope.memoized_properties != undefined - $scope.memoized_properties = {} - - params = { - id: OrderCycle.order_cycle.order_cycle_id, - distributor: currentHub.id - } OrderCycleResource.properties params, (data)=> data.map( (property) -> - $scope.memoized_properties[property.id] = Properties.properties_by_id[property.id] + $scope.supplied_properties[property.id] = Properties.properties_by_id[property.id] ) - $scope.memoized_properties - $scope.loadMore = -> if ($scope.page * $scope.per_page) <= Products.products.length $scope.loadMoreProducts() diff --git a/app/views/shop/products/_filters.html.haml b/app/views/shop/products/_filters.html.haml index 0f89c37166..8d7f03f16e 100644 --- a/app/views/shop/products/_filters.html.haml +++ b/app/views/shop/products/_filters.html.haml @@ -1,5 +1,5 @@ -.filter-shopfront.taxon-selectors.text-right - %single-line-selectors{ selectors: "taxonSelectors", objects: "supplied_taxons()", "active-selectors" => "activeTaxons"} +.filter-shopfront.taxon-selectors.text-right{ng: {show: 'supplied_taxons && !Products.loading'}} + %single-line-selectors{ selectors: "taxonSelectors", objects: "supplied_taxons", "active-selectors" => "activeTaxons"} -.filter-shopfront.property-selectors.text-right - %single-line-selectors{ selectors: "propertySelectors", objects: "supplied_properties()", "active-selectors" => "activeProperties"} +.filter-shopfront.property-selectors.text-right{ng: {show: 'supplied_properties && !Products.loading'}} + %single-line-selectors{ selectors: "propertySelectors", objects: "supplied_properties", "active-selectors" => "activeProperties"}