From 1804bf5a2b1bf1124f03a236edc75d2f52c87a27 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Tue, 16 Oct 2018 22:45:38 +0100 Subject: [PATCH] Extract countryStates logic from customer_address modal and re-use new CountryStates service --- .../admin/customers/customers.js.coffee | 2 +- .../directives/edit_address_dialog.js.coffee | 17 +++++------------ .../admin/services/country_states.js.coffee | 5 ++++- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/admin/customers/customers.js.coffee b/app/assets/javascripts/admin/customers/customers.js.coffee index fe8ae1de5b..aa8a1cfc19 100644 --- a/app/assets/javascripts/admin/customers/customers.js.coffee +++ b/app/assets/javascripts/admin/customers/customers.js.coffee @@ -1 +1 @@ -angular.module("admin.customers", ['ngResource', 'admin.tagRules', 'admin.indexUtils', 'admin.utils', 'admin.dropdown']) +angular.module("admin.customers", ['ngResource', 'admin.tagRules', 'admin.indexUtils', 'admin.utils', 'admin.dropdown', 'ofn.admin']) diff --git a/app/assets/javascripts/admin/customers/directives/edit_address_dialog.js.coffee b/app/assets/javascripts/admin/customers/directives/edit_address_dialog.js.coffee index eab83167a7..ca2d2ca817 100644 --- a/app/assets/javascripts/admin/customers/directives/edit_address_dialog.js.coffee +++ b/app/assets/javascripts/admin/customers/directives/edit_address_dialog.js.coffee @@ -1,4 +1,4 @@ -angular.module("admin.customers").directive 'editAddressDialog', ($compile, $templateCache, $filter, DialogDefaults, Customers, StatusMessage) -> +angular.module("admin.customers").directive 'editAddressDialog', ($compile, $templateCache, DialogDefaults, Customers, StatusMessage, CountryStates) -> restrict: 'A' scope: true link: (scope, element, attr) -> @@ -6,9 +6,9 @@ angular.module("admin.customers").directive 'editAddressDialog', ($compile, $tem scope.errors = [] scope.$watch 'address.country_id', (newCountryID) -> - if newCountryID - scope.states = scope.filterStates(newCountryID) - scope.clearState() unless scope.addressStateMatchesCountry() + return unless newCountryID + scope.states = CountryStates.statesFor(scope.availableCountries, newCountryID) + scope.clearState() unless CountryStates.addressStateMatchesCountryStates(scope.states, scope.address.state_id) scope.updateAddress = -> scope.edit_address_form.$setPristine() @@ -27,19 +27,12 @@ angular.module("admin.customers").directive 'editAddressDialog', ($compile, $tem else scope.addressType = 'ship_address' scope.address = scope.customer[scope.addressType] - scope.states = scope.filterStates(scope.address?.country_id) + scope.states = CountryStates.statesFor(scope.availableCountries, scope.address?.country_id) template = $compile($templateCache.get('admin/edit_address_dialog.html'))(scope) template.dialog(DialogDefaults) template.dialog('open') scope.$apply() - scope.filterStates = (countryID) -> - return [] unless countryID - $filter('filter')(scope.availableCountries, {id: parseInt(countryID)}, true)[0].states - scope.clearState = -> scope.address.state_id = "" - - scope.addressStateMatchesCountry = -> - scope.states.some (state) -> state.id == scope.address.state_id \ No newline at end of file diff --git a/app/assets/javascripts/admin/services/country_states.js.coffee b/app/assets/javascripts/admin/services/country_states.js.coffee index a29645d55f..7977bc3535 100644 --- a/app/assets/javascripts/admin/services/country_states.js.coffee +++ b/app/assets/javascripts/admin/services/country_states.js.coffee @@ -3,6 +3,9 @@ angular.module("ofn.admin").factory "CountryStates", ($filter) -> statesFor: (countries, country_id) -> return [] unless country_id - country = $filter('filter')(countries, {id: country_id}, true)[0] + country = $filter('filter')(countries, {id: parseInt(country_id)}, true)[0] return [] unless country country.states + + addressStateMatchesCountryStates: (countryStates, stateId) -> + countryStates.some (state) -> state.id == stateId