@ -27,18 +27,60 @@ function getValue(field, data) {
return value [ lastField ] ? ? null ;
}
function formatValue ( t , mapping , value ) {
function formatValue ( t , mapping , rawValue ) {
let value = rawValue ;
/ / R e m a p t h e v a l u e .
const remaps = mapping ? . remap ? ? [ ] ;
for ( let i = 0 ; i < remaps . length ; i += 1 ) {
const remap = remaps [ i ] ;
if ( remap ? . any || remap ? . value === value ) {
value = remap . to ;
break ;
}
}
/ / S c a l e t h e v a l u e . A c c e p t s e i t h e r a n u m b e r t o m u l t i p l y b y o r a s t r i n g
/ / l i k e " 1 2 / 3 4 5 " .
const scale = mapping ? . scale ;
if ( typeof scale === 'number' ) {
value *= scale ;
} else if ( typeof scale === 'string' ) {
const parts = scale . split ( '/' ) ;
const numerator = parts [ 0 ] ? parseFloat ( parts [ 0 ] ) : 1 ;
const denominator = parts [ 1 ] ? parseFloat ( parts [ 1 ] ) : 1 ;
value = value * numerator / denominator ;
}
/ / F o r m a t t h e v a l u e u s i n g a k n o w n t y p e .
switch ( mapping ? . format ) {
case 'number' :
return t ( "common.number" , { value : parseInt ( value , 10 ) } ) ;
value = t ( "common.number" , { value : parseInt ( value , 10 ) } ) ;
break ;
case 'float' :
return t ( "common.number" , { value } ) ;
value = t ( "common.number" , { value } ) ;
break ;
case 'percent' :
return t ( "common.percent" , { value } ) ;
value = t ( "common.percent" , { value } ) ;
break ;
case 'bytes' :
value = t ( "common.bytes" , { value } ) ;
break ;
case 'bitrate' :
value = t ( "common.bitrate" , { value } ) ;
break ;
case 'text' :
default :
return value ;
/ / n o t h i n g
}
/ / A p p l y f i x e d s u f f i x .
const suffix = mapping ? . suffix ;
if ( suffix ) {
value = ` ${ value } ${ suffix } ` ;
}
return value ;
}
export default function Component ( { service } ) {