@@ -346,6 +346,7 @@ PivotView.prototype.renderRawData = function (data) {
346346 timeToBreak = false ,
347347 _ = this ,
348348 x , y , tr , td ,
349+ integerPart , fractionalPart , formatParts , fp ,
349350 headColsNum = 0 , headLeftColsNum = 0 ,
350351 headRowsNum = 0 , headLeftRowsNum = 0 ;
351352
@@ -360,6 +361,10 @@ PivotView.prototype.renderRawData = function (data) {
360361
361362 } ;
362363
364+ if ( this . controller . CONFIG [ "formatNumbers" ] ) {
365+ formatParts = this . controller . CONFIG [ "formatNumbers" ] . match ( / # + | [ ^ # ] + / g) ;
366+ }
367+
363368 // compute headColsNum & headLeftColsNum
364369 for ( y = 0 ; y < data . length ; y ++ ) {
365370 for ( x = 0 ; x < data [ y ] . length ; x ++ ) {
@@ -449,13 +454,53 @@ PivotView.prototype.renderRawData = function (data) {
449454
450455 if ( td ) {
451456 var span = document . createElement ( "span" ) ;
452- span . textContent = data [ y ] [ x ] . value ;
453457 td . appendChild ( span ) ;
454458 tr . appendChild ( td ) ;
455459 if ( x >= headLeftColsNum && y >= headRowsNum ) {
460+
461+ // todo: reorganize
462+ if ( this . controller . CONFIG [ "formatNumbers" ] && data [ y ] [ x ] . value
463+ && isFinite ( data [ y ] [ x ] . value ) ) {
464+ var begin = true ,
465+ last = - 1 , ip1 , fp1 ;
466+ ip1 = integerPart = parseInt ( data [ y ] [ x ] . value ) . toString ( ) ;
467+ fp1 = fractionalPart = ( parseFloat ( data [ y ] [ x ] . value ) - parseInt ( integerPart ) )
468+ . toString ( )
469+ . concat ( ( new Array ( this . controller . CONFIG [ "formatNumbers" ] . length ) )
470+ . join ( "0" ) ) ;
471+ fp = formatParts . slice ( ) ;
472+ for ( var i = fp . length - 1 ; i > - 1 ; i -- ) {
473+ if ( fp [ i ] [ 0 ] !== "#" ) continue ;
474+ if ( begin ) {
475+ fp [ i ] = fractionalPart . substr ( 2 , fp [ i ] . length ) ; // flooring
476+ begin = false ;
477+ } else {
478+ fp [ i ] = integerPart
479+ . substr ( Math . max ( integerPart . length - fp [ i ] . length , 0 ) , integerPart . length ) ;
480+ integerPart = integerPart . substr ( 0 , integerPart . length - fp [ i ] . length ) ;
481+ last = i ;
482+ }
483+ if ( integerPart . length === 0 ) {
484+ fp = fp . slice ( i , fp . length ) ;
485+ break ;
486+ }
487+ }
488+ if ( fp . join ( "" ) === "4.0." ) {
489+ console . log ( ip1 , fp1 ) ;
490+ }
491+ if ( last !== - 1 && integerPart . length !== 0 ) {
492+ fp [ 0 ] = integerPart + fp [ 0 ] ;
493+ }
494+ span . textContent = fp . join ( "" ) ;
495+ } else {
496+ span . textContent = data [ y ] [ x ] . value ;
497+ }
498+
456499 ( function ( x , y ) { addTrigger ( td , "click" , function ( ) {
457500 _ . _cellClickHandler . call ( _ , x , y ) ;
458501 } ) } ) ( x , y ) ;
502+ } else {
503+ span . textContent = data [ y ] [ x ] . value ;
459504 }
460505 }
461506
0 commit comments