add percent format
This commit is contained in:
@@ -643,6 +643,10 @@ export default {
|
|||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
return new Intl.NumberFormat('fr-FR').format(number)
|
return new Intl.NumberFormat('fr-FR').format(number)
|
||||||
|
} else if (format === 'percent') {
|
||||||
|
return `${number}%`
|
||||||
|
} else if (format === 'percent_space') {
|
||||||
|
return `${String(number).replace('.', ',')} %`
|
||||||
} else {
|
} else {
|
||||||
return number
|
return number
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -620,6 +620,10 @@ export default {
|
|||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
return new Intl.NumberFormat('fr-FR').format(number)
|
return new Intl.NumberFormat('fr-FR').format(number)
|
||||||
|
} else if (format === 'percent') {
|
||||||
|
return `${number}%`
|
||||||
|
} else if (format === 'percent_space') {
|
||||||
|
return `${String(number).replace('.', ',')} %`
|
||||||
} else {
|
} else {
|
||||||
return number
|
return number
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ export default {
|
|||||||
FieldType,
|
FieldType,
|
||||||
IconSettings
|
IconSettings
|
||||||
},
|
},
|
||||||
inject: ['t', 'save', 'backgroundColor', 'dateFormats'],
|
inject: ['t', 'save', 'backgroundColor', 'dateFormats', 'locale'],
|
||||||
provide () {
|
provide () {
|
||||||
return {
|
return {
|
||||||
fieldTypes: ['text', 'number', 'date', 'checkbox', 'radio', 'select']
|
fieldTypes: ['text', 'number', 'date', 'checkbox', 'radio', 'select']
|
||||||
@@ -308,15 +308,18 @@ export default {
|
|||||||
return { text: 'string', number: 'number', date: 'date', checkbox: 'boolean', radio: 'string', select: 'string' }
|
return { text: 'string', number: 'number', date: 'date', checkbox: 'boolean', radio: 'string', select: 'string' }
|
||||||
},
|
},
|
||||||
numberFormats () {
|
numberFormats () {
|
||||||
return [
|
const formats = ['none', 'usd', 'eur', 'gbp', 'comma', 'dot', 'space']
|
||||||
'none',
|
const spaceLocales = ['fr-FR', 'es-ES', 'pt-PT', 'de-DE', 'it-IT', 'nl-NL']
|
||||||
'usd',
|
|
||||||
'eur',
|
formats.push(spaceLocales.includes(this.locale) ? 'percent_space' : 'percent')
|
||||||
'gbp',
|
|
||||||
'comma',
|
const selectedFormat = this.schema.format
|
||||||
'dot',
|
|
||||||
'space'
|
if (selectedFormat && !formats.includes(selectedFormat)) {
|
||||||
]
|
formats.push(selectedFormat)
|
||||||
|
}
|
||||||
|
|
||||||
|
return formats
|
||||||
},
|
},
|
||||||
availableDateFormats () {
|
availableDateFormats () {
|
||||||
const formats = this.dateFormats.length
|
const formats = this.dateFormats.length
|
||||||
@@ -397,6 +400,10 @@ export default {
|
|||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
return new Intl.NumberFormat('fr-FR').format(number)
|
return new Intl.NumberFormat('fr-FR').format(number)
|
||||||
|
} else if (format === 'percent') {
|
||||||
|
return `${number}%`
|
||||||
|
} else if (format === 'percent_space') {
|
||||||
|
return `${String(number).replace('.', ',')} %`
|
||||||
} else {
|
} else {
|
||||||
return number
|
return number
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -514,7 +514,7 @@ export default {
|
|||||||
ContextSubmenu,
|
ContextSubmenu,
|
||||||
ContextModal
|
ContextModal
|
||||||
},
|
},
|
||||||
inject: ['t', 'getFieldTypeIndex', 'template', 'withCustomFields', 'currencies', 'dateFormats'],
|
inject: ['t', 'getFieldTypeIndex', 'template', 'withCustomFields', 'currencies', 'dateFormats', 'locale'],
|
||||||
props: {
|
props: {
|
||||||
contextMenu: {
|
contextMenu: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
|||||||
@@ -610,7 +610,7 @@ export default {
|
|||||||
IconTypography,
|
IconTypography,
|
||||||
IconX
|
IconX
|
||||||
},
|
},
|
||||||
inject: ['template', 't', 'dateFormats'],
|
inject: ['template', 't', 'dateFormats', 'locale'],
|
||||||
props: {
|
props: {
|
||||||
field: {
|
field: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -691,15 +691,18 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
numberFormats () {
|
numberFormats () {
|
||||||
return [
|
const formats = ['none', 'usd', 'eur', 'gbp', 'comma', 'dot', 'space']
|
||||||
'none',
|
const spaceLocales = ['fr-FR', 'es-ES', 'pt-PT', 'de-DE', 'it-IT', 'nl-NL']
|
||||||
'usd',
|
|
||||||
'eur',
|
formats.push(spaceLocales.includes(this.locale) ? 'percent_space' : 'percent')
|
||||||
'gbp',
|
|
||||||
'comma',
|
const selectedFormat = this.field.preferences?.format
|
||||||
'dot',
|
|
||||||
'space'
|
if (selectedFormat && !formats.includes(selectedFormat)) {
|
||||||
]
|
formats.push(selectedFormat)
|
||||||
|
}
|
||||||
|
|
||||||
|
return formats
|
||||||
},
|
},
|
||||||
availableDateFormats () {
|
availableDateFormats () {
|
||||||
const formats = this.dateFormats.length
|
const formats = this.dateFormats.length
|
||||||
@@ -824,6 +827,10 @@ export default {
|
|||||||
return new Intl.NumberFormat('de-DE').format(number)
|
return new Intl.NumberFormat('de-DE').format(number)
|
||||||
} else if (format === 'space') {
|
} else if (format === 'space') {
|
||||||
return new Intl.NumberFormat('fr-FR').format(number)
|
return new Intl.NumberFormat('fr-FR').format(number)
|
||||||
|
} else if (format === 'percent') {
|
||||||
|
return `${number}%`
|
||||||
|
} else if (format === 'percent_space') {
|
||||||
|
return `${String(number).replace('.', ',')} %`
|
||||||
} else {
|
} else {
|
||||||
return number
|
return number
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ module NumberUtils
|
|||||||
ApplicationController.helpers.number_to_currency(number, locale:, precision: 2, unit: CURRENCY_SYMBOLS[format])
|
ApplicationController.helpers.number_to_currency(number, locale:, precision: 2, unit: CURRENCY_SYMBOLS[format])
|
||||||
elsif locale
|
elsif locale
|
||||||
ApplicationController.helpers.number_with_delimiter(number, locale:)
|
ApplicationController.helpers.number_with_delimiter(number, locale:)
|
||||||
|
elsif format == 'percent'
|
||||||
|
"#{number}%"
|
||||||
|
elsif format == 'percent_space'
|
||||||
|
"#{number.to_s.tr('.', ',')} %"
|
||||||
else
|
else
|
||||||
number
|
number
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user