From 7e195c3856b8d064bf23d361c32334f79f6455bf Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Wed, 8 Jul 2020 20:18:21 +1000 Subject: [PATCH 1/4] Add redirect to shop on order cycle change --- .../darkswarm/controllers/order_cycle_controller.js.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 6547237c2d..aa1f6457dd 100644 --- a/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee @@ -11,7 +11,7 @@ Darkswarm.controller "OrderCycleCtrl", ($scope, $rootScope, $timeout, OrderCycle $("#order_cycle_id").trigger("openTrigger") -Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $rootScope, $timeout, OrderCycle, Products, Variants, Cart, ChangeableOrdersAlert) -> +Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $rootScope, $timeout, $location, 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)-> @@ -19,6 +19,7 @@ Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $rootScope, $timeout, Orde $scope.changeOrderCycle = -> OrderCycle.push_order_cycle $scope.orderCycleChanged + $location.path("shop") $timeout -> $("#order_cycle_id").trigger("closeTrigger") From 79abc191ffbc569d26b0fa820e8645771bfe04bd Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Wed, 15 Jul 2020 15:51:33 +1000 Subject: [PATCH 2/4] Move location change to PageSelection controller --- .../controllers/order_cycle_controller.js.coffee | 12 +----------- .../controllers/page_selection_ctrl.js.coffee | 7 ++++++- 2 files changed, 7 insertions(+), 12 deletions(-) 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 aa1f6457dd..49d902a7f0 100644 --- a/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/order_cycle_controller.js.coffee @@ -2,16 +2,7 @@ Darkswarm.controller "OrderCycleCtrl", ($scope, $rootScope, $timeout, OrderCycle $scope.order_cycle = OrderCycle.order_cycle $scope.OrderCycle = OrderCycle - # Timeout forces this to be evaluated after everything is loaded - # 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, $rootScope, $timeout, $location, 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)-> @@ -19,7 +10,6 @@ Darkswarm.controller "OrderCycleChangeCtrl", ($scope, $rootScope, $timeout, $loc $scope.changeOrderCycle = -> OrderCycle.push_order_cycle $scope.orderCycleChanged - $location.path("shop") $timeout -> $("#order_cycle_id").trigger("closeTrigger") diff --git a/app/assets/javascripts/darkswarm/controllers/page_selection_ctrl.js.coffee b/app/assets/javascripts/darkswarm/controllers/page_selection_ctrl.js.coffee index 9f4cbe2c1b..d05e901396 100644 --- a/app/assets/javascripts/darkswarm/controllers/page_selection_ctrl.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/page_selection_ctrl.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.controller "PageSelectionCtrl", ($scope, $location) -> +Darkswarm.controller "PageSelectionCtrl", ($scope, $rootScope, $location) -> $scope.selectedPage = -> # The path looks like `/contact` for the URL `https://ofn.org/shop#/contact`. # We remove the slash at the beginning. @@ -15,3 +15,8 @@ Darkswarm.controller "PageSelectionCtrl", ($scope, $location) -> $scope.whitelistPages = (pages) -> $scope.whitelist = pages $scope.lastPage = pages[0] + + # when an order cycle is changed, ensure the shop tab is active to save a click + $rootScope.$on "orderCycleSelected", -> + if $scope.selectedPage() != "shop" + $location.path("shop") From 429c88c0005130a289362041d40b799657861c5b Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Thu, 16 Jul 2020 12:06:26 +1000 Subject: [PATCH 3/4] Add watcher to update filter after products are loaded Also remove the other redundant trigger --- .../darkswarm/controllers/products_controller.js.coffee | 1 + app/assets/javascripts/darkswarm/darkswarm.js.coffee | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee index bc72b597c2..d1369fc393 100644 --- a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee @@ -49,6 +49,7 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product $scope.$watch 'query', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue $scope.$watchCollection 'activeTaxons', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue $scope.$watchCollection 'activeProperties', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue + $scope.$watch 'Products.loading', (newValue, oldValue) -> $scope.update_filters() if newValue == false && newValue != oldValue $scope.loadProducts = -> $scope.page = 1 diff --git a/app/assets/javascripts/darkswarm/darkswarm.js.coffee b/app/assets/javascripts/darkswarm/darkswarm.js.coffee index d26b884045..eb724ac400 100644 --- a/app/assets/javascripts/darkswarm/darkswarm.js.coffee +++ b/app/assets/javascripts/darkswarm/darkswarm.js.coffee @@ -16,8 +16,5 @@ window.Darkswarm = angular.module("Darkswarm", [ $httpProvider.defaults.headers['common']['X-Requested-With'] = 'XMLHttpRequest' $httpProvider.defaults.headers.common.Accept = "application/json, text/javascript, */*" - # This allows us to trigger these two events on tooltips - $tooltipProvider.setTriggers( 'openTrigger': 'closeTrigger' ) - # We manually handle our scrolling $anchorScrollProvider.disableAutoScrolling() From ef0038a6610dd813bb2d11ab7d3d6e4bcf6dcf2b Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Thu, 27 Aug 2020 18:02:01 +1000 Subject: [PATCH 4/4] Change trigger to update filters after ProductsCtrl is loaded. --- .../darkswarm/controllers/products_controller.js.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee index d1369fc393..5b92b28280 100644 --- a/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/products_controller.js.coffee @@ -12,6 +12,11 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product $scope.supplied_properties = null $scope.showFilterSidebar = false + # Update filters after initial load of shop tab + $timeout => + $scope.update_filters() + + # Update filters when order cycle changed $rootScope.$on "orderCycleSelected", -> $scope.update_filters() $scope.clearAll() @@ -49,7 +54,6 @@ Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Product $scope.$watch 'query', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue $scope.$watchCollection 'activeTaxons', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue $scope.$watchCollection 'activeProperties', (newValue, oldValue) -> $scope.loadProducts() if newValue != oldValue - $scope.$watch 'Products.loading', (newValue, oldValue) -> $scope.update_filters() if newValue == false && newValue != oldValue $scope.loadProducts = -> $scope.page = 1