@@ -291,16 +291,16 @@ function drawBulletGauge(gd, plotGroup, cd, gaugeOpts) {
291
291
292
292
// Draw bullet background, steps
293
293
var boxes = [ gaugeBg ] . concat ( trace . gauge . steps ) ;
294
- var targetBullet = bullet . selectAll ( 'g.target -bullet' ) . data ( boxes ) ;
295
- targetBullet . enter ( ) . append ( 'g' ) . classed ( 'target -bullet' , true ) . append ( 'rect' ) ;
296
- targetBullet . select ( 'rect' )
294
+ var bgBullet = bullet . selectAll ( 'g.bg -bullet' ) . data ( boxes ) ;
295
+ bgBullet . enter ( ) . append ( 'g' ) . classed ( 'bg -bullet' , true ) . append ( 'rect' ) ;
296
+ bgBullet . select ( 'rect' )
297
297
. call ( drawRect )
298
298
. call ( styleShape ) ;
299
- targetBullet . exit ( ) . remove ( ) ;
299
+ bgBullet . exit ( ) . remove ( ) ;
300
300
301
301
// Draw value bar with transitions
302
- var fgBullet = bullet . selectAll ( 'g.fg -bullet' ) . data ( [ trace . gauge . bar ] ) ;
303
- fgBullet . enter ( ) . append ( 'g' ) . classed ( 'fg -bullet' , true ) . append ( 'rect' ) ;
302
+ var fgBullet = bullet . selectAll ( 'g.value -bullet' ) . data ( [ trace . gauge . bar ] ) ;
303
+ fgBullet . enter ( ) . append ( 'g' ) . classed ( 'value -bullet' , true ) . append ( 'rect' ) ;
304
304
fgBullet . select ( 'rect' )
305
305
. attr ( 'height' , innerBulletHeight )
306
306
. attr ( 'y' , ( bulletHeight - innerBulletHeight ) / 2 )
@@ -320,8 +320,8 @@ function drawBulletGauge(gd, plotGroup, cd, gaugeOpts) {
320
320
fgBullet . exit ( ) . remove ( ) ;
321
321
322
322
var data = cd . filter ( function ( ) { return trace . gauge . threshold . value ; } ) ;
323
- var threshold = bullet . selectAll ( 'g.threshold' ) . data ( data ) ;
324
- threshold . enter ( ) . append ( 'g' ) . classed ( 'threshold' , true ) . append ( 'line' ) ;
323
+ var threshold = bullet . selectAll ( 'g.threshold-bullet ' ) . data ( data ) ;
324
+ threshold . enter ( ) . append ( 'g' ) . classed ( 'threshold-bullet ' , true ) . append ( 'line' ) ;
325
325
threshold . select ( 'line' )
326
326
. attr ( 'x1' , ax . c2p ( trace . gauge . threshold . value ) )
327
327
. attr ( 'x2' , ax . c2p ( trace . gauge . threshold . value ) )
@@ -331,8 +331,8 @@ function drawBulletGauge(gd, plotGroup, cd, gaugeOpts) {
331
331
. style ( 'stroke-width' , trace . gauge . threshold . line . width ) ;
332
332
threshold . exit ( ) . remove ( ) ;
333
333
334
- var bulletOutline = bullet . selectAll ( 'g.bullet -outline' ) . data ( [ gaugeOutline ] ) ;
335
- bulletOutline . enter ( ) . append ( 'g' ) . classed ( 'bullet -outline' , true ) . append ( 'rect' ) ;
334
+ var bulletOutline = bullet . selectAll ( 'g.gauge -outline' ) . data ( [ gaugeOutline ] ) ;
335
+ bulletOutline . enter ( ) . append ( 'g' ) . classed ( 'gauge -outline' , true ) . append ( 'rect' ) ;
336
336
bulletOutline . select ( 'rect' )
337
337
. call ( drawRect )
338
338
. call ( styleShape ) ;
@@ -462,44 +462,53 @@ function drawAngularGauge(gd, plotGroup, cd, gaugeOpts) {
462
462
} ) ;
463
463
}
464
464
465
- // Reexpress threshold for drawing
466
- var v = trace . gauge . threshold . value ;
467
- var thresholdArc = {
468
- range : [ v , v ] ,
469
- color : trace . gauge . threshold . color ,
470
- line : {
471
- color : trace . gauge . threshold . line . color ,
472
- width : trace . gauge . threshold . line . width
473
- } ,
474
- thickness : trace . gauge . threshold . thickness
475
- } ;
476
-
477
465
// Draw background + steps
478
466
var arcs = [ gaugeBg ] . concat ( trace . gauge . steps ) ;
479
- if ( v ) arcs . push ( thresholdArc ) ;
480
- var targetArc = angularGauge . selectAll ( 'g.target -arc') . data ( arcs ) ;
481
- targetArc . enter ( ) . append ( 'g ') . classed ( 'target-arc' , true ) . append ( 'path' ) ;
482
- targetArc . select ( 'path' ) . call ( drawArc ) . call ( styleShape ) ;
483
- targetArc . exit ( ) . remove ( ) ;
467
+ var bgArc = angularGauge . selectAll ( 'g.bg-arc' ) . data ( arcs ) ;
468
+ bgArc . enter ( ) . append ( 'g' ) . classed ( 'bg -arc', true ) . append ( 'path' ) ;
469
+ bgArc . select ( 'path ') . call ( drawArc ) . call ( styleShape ) ;
470
+ bgArc . exit ( ) . remove ( ) ;
471
+
484
472
// Draw foreground with transition
485
- var valueArcPath = arcPathGenerator ( trace . gauge . bar . thickness ) ;
486
- var fgArc = angularGauge . selectAll ( 'g.fg -arc' ) . data ( [ trace . gauge . bar ] ) ;
487
- fgArc . enter ( ) . append ( 'g' ) . classed ( 'fg -arc' , true ) . append ( 'path' ) ;
488
- var fgArcPath = fgArc . select ( 'path' ) ;
473
+ var valueArcPathGenerator = arcPathGenerator ( trace . gauge . bar . thickness ) ;
474
+ var valueArc = angularGauge . selectAll ( 'g.value -arc' ) . data ( [ trace . gauge . bar ] ) ;
475
+ valueArc . enter ( ) . append ( 'g' ) . classed ( 'value -arc' , true ) . append ( 'path' ) ;
476
+ var valueArcPath = valueArc . select ( 'path' ) ;
489
477
if ( hasTransition ) {
490
- fgArcPath
478
+ valueArcPath
491
479
. transition ( )
492
480
. duration ( transitionOpts . duration )
493
481
. ease ( transitionOpts . easing )
494
482
. each ( 'end' , function ( ) { trace . _lastValue = cd [ 0 ] . y ; onComplete && onComplete ( ) ; } )
495
483
. each ( 'interrupt' , function ( ) { onComplete && onComplete ( ) ; } )
496
- . attrTween ( 'd' , arcTween ( valueArcPath , valueToAngle ( cd [ 0 ] . lastY ) , valueToAngle ( cd [ 0 ] . y ) ) ) ;
484
+ . attrTween ( 'd' , arcTween ( valueArcPathGenerator , valueToAngle ( cd [ 0 ] . lastY ) , valueToAngle ( cd [ 0 ] . y ) ) ) ;
497
485
} else {
498
- fgArcPath
499
- . attr ( 'd' , valueArcPath . endAngle ( valueToAngle ( cd [ 0 ] . y ) ) ) ;
486
+ valueArcPath
487
+ . attr ( 'd' , valueArcPathGenerator . endAngle ( valueToAngle ( cd [ 0 ] . y ) ) ) ;
500
488
}
501
- fgArcPath . call ( styleShape ) ;
502
- fgArc . exit ( ) . remove ( ) ;
489
+ valueArcPath . call ( styleShape ) ;
490
+ valueArc . exit ( ) . remove ( ) ;
491
+
492
+ // Draw threshold
493
+ arcs = [ ] ;
494
+ var v = trace . gauge . threshold . value ;
495
+ if ( v ) {
496
+ arcs . push ( {
497
+ range : [ v , v ] ,
498
+ color : trace . gauge . threshold . color ,
499
+ line : {
500
+ color : trace . gauge . threshold . line . color ,
501
+ width : trace . gauge . threshold . line . width
502
+ } ,
503
+ thickness : trace . gauge . threshold . thickness
504
+ } ) ;
505
+ }
506
+ var thresholdArc = angularGauge . selectAll ( 'g.threshold-arc' ) . data ( arcs ) ;
507
+ thresholdArc . enter ( ) . append ( 'g' ) . classed ( 'threshold-arc' , true ) . append ( 'path' ) ;
508
+ thresholdArc . select ( 'path' ) . call ( drawArc ) . call ( styleShape ) ;
509
+ thresholdArc . exit ( ) . remove ( ) ;
510
+
511
+ // Draw border last
503
512
var gaugeBorder = angularGauge . selectAll ( 'g.gauge-outline' ) . data ( [ gaugeOutline ] ) ;
504
513
gaugeBorder . enter ( ) . append ( 'g' ) . classed ( 'gauge-outline' , true ) . append ( 'path' ) ;
505
514
gaugeBorder . select ( 'path' ) . call ( drawArc ) . call ( styleShape ) ;
@@ -616,7 +625,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
616
625
var delta = numbers . select ( 'tspan.delta' ) ;
617
626
delta
618
627
. call ( Drawing . font , trace . delta . font )
619
- . each ( function ( ) { Color . fill ( d3 . select ( this ) , deltaFill ( cd [ 0 ] ) ) ; } )
628
+ . call ( Color . fill , deltaFill ( cd [ 0 ] ) )
620
629
. attr ( 'x' , deltaX )
621
630
. attr ( 'dy' , deltaDy ) ;
622
631
0 commit comments