From 2e94654f9143d459526741fb322abe9fb172b051 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Mon, 19 Feb 2018 17:44:17 +1100 Subject: [PATCH] Create factory to hold auxillary functions for subscriptions NOTE: Moved estimatedSubtotal and estimatedTotal functions to the new factory from the subscription line items controller --- .../subscription_line_items_controller.js.coffee | 9 --------- .../services/subscription_functions.js.coffee | 12 ++++++++++++ .../services/subscription_resource.js.coffee | 3 ++- .../subscriptions/_subscription_line_items.html.haml | 4 ++-- 4 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 app/assets/javascripts/admin/subscriptions/services/subscription_functions.js.coffee diff --git a/app/assets/javascripts/admin/subscriptions/controllers/subscription_line_items_controller.js.coffee b/app/assets/javascripts/admin/subscriptions/controllers/subscription_line_items_controller.js.coffee index 56d9c67a44..e273dfbda7 100644 --- a/app/assets/javascripts/admin/subscriptions/controllers/subscription_line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/subscriptions/controllers/subscription_line_items_controller.js.coffee @@ -22,12 +22,3 @@ angular.module("admin.subscriptions").controller "SubscriptionLineItemsControlle sli.variant_id == $scope.newItem.variant_id return matching[0] if matching.length > 0 null - - $scope.estimatedSubtotal = -> - $scope.subscription.subscription_line_items.reduce (subtotal, item) -> - return subtotal if item._destroy - subtotal += item.price_estimate * item.quantity - , 0 - - $scope.estimatedTotal = -> - $scope.estimatedSubtotal() diff --git a/app/assets/javascripts/admin/subscriptions/services/subscription_functions.js.coffee b/app/assets/javascripts/admin/subscriptions/services/subscription_functions.js.coffee new file mode 100644 index 0000000000..074beb06f3 --- /dev/null +++ b/app/assets/javascripts/admin/subscriptions/services/subscription_functions.js.coffee @@ -0,0 +1,12 @@ +# Provides additional auxillary functions to instances of SubsciptionResource +# Used to extend the prototype of the subscription resource created by SubscriptionResource + +angular.module("admin.subscriptions").factory 'SubscriptionFunctions', -> + estimatedSubtotal: -> + @subscription_line_items.reduce (subtotal, item) -> + return subtotal if item._destroy + subtotal += item.price_estimate * item.quantity + , 0 + + estimatedTotal: -> + @estimatedSubtotal() diff --git a/app/assets/javascripts/admin/subscriptions/services/subscription_resource.js.coffee b/app/assets/javascripts/admin/subscriptions/services/subscription_resource.js.coffee index 068a9c7879..5e047c24eb 100644 --- a/app/assets/javascripts/admin/subscriptions/services/subscription_resource.js.coffee +++ b/app/assets/javascripts/admin/subscriptions/services/subscription_resource.js.coffee @@ -1,4 +1,4 @@ -angular.module("admin.subscriptions").factory 'SubscriptionResource', ($resource, SubscriptionActions) -> +angular.module("admin.subscriptions").factory 'SubscriptionResource', ($resource, SubscriptionActions, SubscriptionFunctions) -> resource = $resource('/admin/subscriptions/:id/:action.json', {}, { 'index': method: 'GET' @@ -27,5 +27,6 @@ angular.module("admin.subscriptions").factory 'SubscriptionResource', ($resource }) angular.extend(resource.prototype, SubscriptionActions) + angular.extend(resource.prototype, SubscriptionFunctions) resource diff --git a/app/views/admin/subscriptions/_subscription_line_items.html.haml b/app/views/admin/subscriptions/_subscription_line_items.html.haml index c2010fbb33..dcfd0c5fe0 100644 --- a/app/views/admin/subscriptions/_subscription_line_items.html.haml +++ b/app/views/admin/subscriptions/_subscription_line_items.html.haml @@ -29,7 +29,7 @@ = t(:subtotal) \: %td.total.align-center - %span {{ estimatedSubtotal() | currency }} + %span {{ subscription.estimatedSubtotal() | currency }} %td.actions %tbody#order-total.grand-total.no-border-top{"data-hook" => "admin_order_form_total"} %tr @@ -38,5 +38,5 @@ = t(:order_total_price) \: %td.total.align-center - %span#order_form_total {{ estimatedTotal() | currency }} + %span#order_form_total {{ subscription.estimatedTotal() | currency }} %td.actions