From 5582160e734e22bf7706b4e090447a97b09fc2d2 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Thu, 7 Feb 2019 22:46:20 +0000 Subject: [PATCH] Add localizeCurrency filter to admin and inject currencyConfig data --- .../admin/subscriptions/subscriptions.js.coffee | 2 +- .../utils/filters/localize_currency.js.coffee | 14 ++++++++++++++ app/helpers/admin/injection_helper.rb | 4 ++++ .../admin/add_currency_config.html.haml.deface | 3 +++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/admin/utils/filters/localize_currency.js.coffee create mode 100644 app/overrides/spree/layouts/admin/add_currency_config.html.haml.deface diff --git a/app/assets/javascripts/admin/subscriptions/subscriptions.js.coffee b/app/assets/javascripts/admin/subscriptions/subscriptions.js.coffee index 9e2c3d5696..129f20b7aa 100644 --- a/app/assets/javascripts/admin/subscriptions/subscriptions.js.coffee +++ b/app/assets/javascripts/admin/subscriptions/subscriptions.js.coffee @@ -1 +1 @@ -angular.module("admin.subscriptions", ['ngResource','admin.indexUtils','admin.dropdown']) +angular.module("admin.subscriptions", ['ngResource','admin.indexUtils','admin.dropdown', 'admin.utils']) diff --git a/app/assets/javascripts/admin/utils/filters/localize_currency.js.coffee b/app/assets/javascripts/admin/utils/filters/localize_currency.js.coffee new file mode 100644 index 0000000000..25d97828b4 --- /dev/null +++ b/app/assets/javascripts/admin/utils/filters/localize_currency.js.coffee @@ -0,0 +1,14 @@ +angular.module("admin.utils").filter "localizeCurrency", (currencyConfig)-> + # Convert number to string currency using injected currency configuration. + (amount) -> + # Set country code (eg. "US"). + currency_code = if currencyConfig.display_currency then " " + currencyConfig.currency else "" + # Set decimal points, 2 or 0 if hide_cents. + decimals = if currencyConfig.hide_cents == "true" then 0 else 2 + # Set format if the currency symbol should come after the number, otherwise (default) use the locale setting. + format = if currencyConfig.symbol_position == "after" then "%n %u" else undefined + # We need to use parseFloat as the amount should come in as a string. + amount = parseFloat(amount) + + # Build the final price string. + I18n.toCurrency(amount, {precision: decimals, unit: currencyConfig.symbol, format: format}) + currency_code diff --git a/app/helpers/admin/injection_helper.rb b/app/helpers/admin/injection_helper.rb index 0e93a4affc..022a27c7a2 100644 --- a/app/helpers/admin/injection_helper.rb +++ b/app/helpers/admin/injection_helper.rb @@ -65,6 +65,10 @@ module Admin admin_inject_json_ams_array opts[:module], "columns", column_preferences, Api::Admin::ColumnPreferenceSerializer end + def admin_inject_currency_config + admin_inject_json_ams 'admin.utils', "currencyConfig", {}, Api::CurrencyConfigSerializer + end + def admin_inject_enterprise_permissions permissions = {can_manage_shipping_methods: can?(:manage_shipping_methods, @enterprise), diff --git a/app/overrides/spree/layouts/admin/add_currency_config.html.haml.deface b/app/overrides/spree/layouts/admin/add_currency_config.html.haml.deface new file mode 100644 index 0000000000..0ab8f96c55 --- /dev/null +++ b/app/overrides/spree/layouts/admin/add_currency_config.html.haml.deface @@ -0,0 +1,3 @@ +/ insert_before "div#wrapper" + += admin_inject_currency_config