From 8defb2f4c8cd3efcb5d2b717ec2a2192ef051747 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 20 Mar 2026 14:38:49 +1100 Subject: [PATCH] Improve EnterpriseFee loading Request is only send if there isn't another currently running, and also ensure that filtered enterprise fees are loaded only when not other request is running. --- .../controllers/incoming_controller.js.coffee | 13 ++++++++++++- .../order_cycles/services/enterprise_fee.js.coffee | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee index f108413372..8f709b4d39 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/incoming_controller.js.coffee @@ -3,7 +3,18 @@ angular.module('admin.orderCycles').controller 'AdminOrderCycleIncomingCtrl', ($ $scope.view = 'incoming' # NB: weirdly at this next line $scope.order_cycle.id comes out undefined so we use $scope.order_cycle_id instead - $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.order_cycle_id, per_item: true) + $scope.enterprise_fees = null + $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.order_cycle_id, per_item: true) unless EnterpriseFee.loading + + # We want to make sure to load the filtered EnterpriseFee when any previous request is finished + # otherwise the enterprise_fees migh get overriden by non filtered ones. + $scope.$watch () -> + EnterpriseFee.loading + , (isLoading) => + return if $scope.enterprise_fees + + $scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.order_cycle_id, per_item: true) isLoading == false + $scope.exchangeTotalVariants = (exchange) -> return unless $scope.enterprises? && $scope.enterprises[exchange.enterprise_id]? diff --git a/app/assets/javascripts/admin/order_cycles/services/enterprise_fee.js.coffee b/app/assets/javascripts/admin/order_cycles/services/enterprise_fee.js.coffee index c223b0d5a8..9e5c3bcbe9 100644 --- a/app/assets/javascripts/admin/order_cycles/services/enterprise_fee.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/enterprise_fee.js.coffee @@ -14,10 +14,14 @@ angular.module('admin.orderCycles').factory('EnterpriseFee', ($resource) -> EnterpriseFee: EnterpriseFee enterprise_fees: {} loaded: false + loading: false index: (params={}) -> + return if @loading == true + @loading = true EnterpriseFee.index params, (data) => @enterprise_fees = data + @loading = false @loaded = true forEnterprise: (enterprise_id) ->