add number currency format
This commit is contained in:
@@ -450,8 +450,18 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
formatNumber (number, format) {
|
formatNumber (number, format) {
|
||||||
|
if (!number && number !== 0) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
if (format === 'comma') {
|
if (format === 'comma') {
|
||||||
return new Intl.NumberFormat('en-US').format(number)
|
return new Intl.NumberFormat('en-US').format(number)
|
||||||
|
} else if (format === 'usd') {
|
||||||
|
return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'gbp') {
|
||||||
|
return new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'eur') {
|
||||||
|
return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
} else if (format === 'dot') {
|
} else if (format === 'dot') {
|
||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
|
|||||||
@@ -521,6 +521,12 @@ export default {
|
|||||||
formatNumber (number, format) {
|
formatNumber (number, format) {
|
||||||
if (format === 'comma') {
|
if (format === 'comma') {
|
||||||
return new Intl.NumberFormat('en-US').format(number)
|
return new Intl.NumberFormat('en-US').format(number)
|
||||||
|
} else if (format === 'usd') {
|
||||||
|
return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'gbp') {
|
||||||
|
return new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'eur') {
|
||||||
|
return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
} else if (format === 'dot') {
|
} else if (format === 'dot') {
|
||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
|
|||||||
@@ -461,6 +461,9 @@ export default {
|
|||||||
numberFormats () {
|
numberFormats () {
|
||||||
return [
|
return [
|
||||||
'none',
|
'none',
|
||||||
|
'usd',
|
||||||
|
'eur',
|
||||||
|
'gbp',
|
||||||
'comma',
|
'comma',
|
||||||
'dot',
|
'dot',
|
||||||
'space'
|
'space'
|
||||||
@@ -541,6 +544,12 @@ export default {
|
|||||||
formatNumber (number, format) {
|
formatNumber (number, format) {
|
||||||
if (format === 'comma') {
|
if (format === 'comma') {
|
||||||
return new Intl.NumberFormat('en-US').format(number)
|
return new Intl.NumberFormat('en-US').format(number)
|
||||||
|
} else if (format === 'usd') {
|
||||||
|
return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'gbp') {
|
||||||
|
return new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
|
} else if (format === 'eur') {
|
||||||
|
return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(number)
|
||||||
} else if (format === 'dot') {
|
} else if (format === 'dot') {
|
||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
|
|||||||
@@ -222,6 +222,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<% elsif field['type'] == 'checkbox' %>
|
<% elsif field['type'] == 'checkbox' %>
|
||||||
<%= svg_icon('check', class: 'w-6 h-6') %>
|
<%= svg_icon('check', class: 'w-6 h-6') %>
|
||||||
|
<% elsif field['type'] == 'number' %>
|
||||||
|
<%= NumberUtils.format_number(value, field.dig('preferences', 'format')) %>
|
||||||
<% elsif field['type'] == 'date' %>
|
<% elsif field['type'] == 'date' %>
|
||||||
<%= TimeUtils.format_date_string(value, field.dig('preferences', 'format'), @submission.account.locale) %>
|
<%= TimeUtils.format_date_string(value, field.dig('preferences', 'format'), @submission.account.locale) %>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|||||||
+13
-2
@@ -4,7 +4,16 @@ module NumberUtils
|
|||||||
FORMAT_LOCALES = {
|
FORMAT_LOCALES = {
|
||||||
'dot' => 'de',
|
'dot' => 'de',
|
||||||
'space' => 'fr',
|
'space' => 'fr',
|
||||||
'comma' => 'en'
|
'comma' => 'en',
|
||||||
|
'usd' => 'en',
|
||||||
|
'eur' => 'fr',
|
||||||
|
'gbp' => 'en'
|
||||||
|
}.freeze
|
||||||
|
|
||||||
|
CURRENCY_SYMBOLS = {
|
||||||
|
'usd' => '$',
|
||||||
|
'eur' => '€',
|
||||||
|
'gbp' => '£'
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
module_function
|
module_function
|
||||||
@@ -12,7 +21,9 @@ module NumberUtils
|
|||||||
def format_number(number, format)
|
def format_number(number, format)
|
||||||
locale = FORMAT_LOCALES[format]
|
locale = FORMAT_LOCALES[format]
|
||||||
|
|
||||||
if locale
|
if CURRENCY_SYMBOLS[format]
|
||||||
|
ApplicationController.helpers.number_to_currency(number, locale:, precision: 2, unit: CURRENCY_SYMBOLS[format])
|
||||||
|
elsif locale
|
||||||
ApplicationController.helpers.number_with_delimiter(number, locale:)
|
ApplicationController.helpers.number_with_delimiter(number, locale:)
|
||||||
else
|
else
|
||||||
number
|
number
|
||||||
|
|||||||
Reference in New Issue
Block a user