-
Notifications
You must be signed in to change notification settings - Fork 0
Medidas
measurements es el único módulo global de palta: no pertenece a ningún país. Convierte y
formatea longitud, peso y volumen, con auto-escala pensada para catálogos de e-commerce.
import { measurements } from '@zeluizr/palta'
// o
import { length, weight, volume } from '@zeluizr/palta/measurements'| submódulo | unidades | auto-escala |
|---|---|---|
length |
mm cm m km in ft
|
cm >= 100 pasa a m
|
weight |
mg g kg oz lb
|
g >= 1000 pasa a kg
|
volume |
ml l fl oz
|
ml >= 1000 pasa a l
|
Los tres implementan el mismo contrato:
convert(value: number, from: Unit, to: Unit): number
format(value: number, unit: Unit, options?: { decimals?: number }): stringmeasurements.length.format(50, 'cm') // '50 cm'
measurements.length.format(150, 'cm') // '1,50 m'
measurements.length.format(150, 'cm', { decimals: 0 })// '2 m'
measurements.weight.format(500, 'g') // '500 g'
measurements.weight.format(2500, 'g') // '2,50 kg'
measurements.volume.format(750, 'ml') // '750 ml'
measurements.volume.format(1500, 'ml') // '1,50 l'Tres reglas gobiernan la salida:
- Si la unidad tiene auto-escala y el valor llega al umbral, se convierte a la unidad grande.
- Si el valor es entero y no pediste
decimals, se muestra sin decimales. - En cualquier otro caso se usan dos decimales, con coma como separador.
format no altera el valor original: escala solo para mostrar. El número que guardás en tu
base sigue siendo el mismo.
measurements.length.convert(1, 'm', 'cm') // 100
measurements.length.convert(12, 'in', 'cm') // 30.479999999999997
measurements.weight.convert(1, 'lb', 'kg') // 0.45359237
measurements.volume.convert(1, 'l', 'fl oz') // 33.81402265896594convert devuelve el número crudo, sin redondear. Redondeá vos si lo vas a mostrar, o usá
format directamente.
Cada submódulo define una unidad base y expresa todo lo demás en múltiplos de esa base.
| unidad | factor |
|---|---|
mm |
1 |
cm |
10 |
m |
1 000 |
km |
1 000 000 |
in |
25.4 |
ft |
304.8 |
| unidad | factor |
|---|---|
mg |
1 |
g |
1 000 |
kg |
1 000 000 |
oz |
28 349.523125 |
lb |
453 592.37 |
| unidad | factor |
|---|---|
ml |
1 |
l |
1 000 |
fl oz |
29.5735296 |
fl oz es la onza líquida estadounidense.
measurements.length.convert(NaN, 'cm', 'm') // NaN
measurements.length.format(NaN, 'cm') // ''
measurements.length.format(Infinity, 'cm') // ''convert devuelve NaN y format devuelve '' con cualquier valor no finito. Ninguno de
los dos lanza.
VTEX IO entrega siempre las dimensiones en cm y el peso en g. Mostrar "150 cm" o "2500 g"
en una ficha de producto queda mal; mostrar "1,50 m" y "2,50 kg" queda bien. La auto-escala
resuelve eso en la capa de presentación sin tocar los datos.
Los detalles de ese caso de uso están en VTEX IO.
Empezar
Referencia
Colaborar
Enlaces