()
| 612 | } |
| 613 | |
| 614 | function drawDelta() { |
| 615 | var deltaAx = mockAxis(gd, {tickformat: trace.delta.valueformat}, trace._range); |
| 616 | deltaAx.setScale(); |
| 617 | Axes.prepTicks(deltaAx); |
| 618 | |
| 619 | var deltaFmt = function(v) { return Axes.tickText(deltaAx, v).text;}; |
| 620 | var deltaSuffix = trace.delta.suffix; |
| 621 | var deltaPrefix = trace.delta.prefix; |
| 622 | |
| 623 | var deltaValue = function(d) { |
| 624 | var value = trace.delta.relative ? d.relativeDelta : d.delta; |
| 625 | return value; |
| 626 | }; |
| 627 | var deltaFormatText = function(value, numberFmt) { |
| 628 | if(value === 0 || typeof value !== 'number' || isNaN(value)) return '-'; |
| 629 | return (value > 0 ? trace.delta.increasing.symbol : trace.delta.decreasing.symbol) + deltaPrefix + numberFmt(value) + deltaSuffix; |
| 630 | }; |
| 631 | var deltaFill = function(d) { |
| 632 | return d.delta >= 0 ? trace.delta.increasing.color : trace.delta.decreasing.color; |
| 633 | }; |
| 634 | if(trace._deltaLastValue === undefined) { |
| 635 | trace._deltaLastValue = deltaValue(cd[0]); |
| 636 | } |
| 637 | var delta = numbers.select('text.delta'); |
| 638 | delta |
| 639 | .call(Drawing.font, trace.delta.font) |
| 640 | .call(Color.fill, deltaFill({delta: trace._deltaLastValue})); |
| 641 | |
| 642 | function writeDelta() { |
| 643 | delta.text(deltaFormatText(deltaValue(cd[0]), deltaFmt)) |
| 644 | .call(Color.fill, deltaFill(cd[0])) |
| 645 | .call(svgTextUtils.convertToTspans, gd); |
| 646 | } |
| 647 | |
| 648 | if(hasTransition(transitionOpts)) { |
| 649 | delta |
| 650 | .transition() |
| 651 | .duration(transitionOpts.duration) |
| 652 | .ease(transitionOpts.easing) |
| 653 | .tween('text', function() { |
| 654 | var that = d3.select(this); |
| 655 | var to = deltaValue(cd[0]); |
| 656 | var from = trace._deltaLastValue; |
| 657 | var transitionFmt = transitionFormat(trace.delta.valueformat, deltaFmt, from, to); |
| 658 | var interpolator = interpolateNumber(from, to); |
| 659 | trace._deltaLastValue = to; |
| 660 | return function(t) { |
| 661 | that.text(deltaFormatText(interpolator(t), transitionFmt)); |
| 662 | that.call(Color.fill, deltaFill({delta: interpolator(t)})); |
| 663 | }; |
| 664 | }) |
| 665 | .each('end', function() { writeDelta(); onComplete && onComplete(); }) |
| 666 | .each('interrupt', function() { writeDelta(); onComplete && onComplete(); }); |
| 667 | } else { |
| 668 | writeDelta(); |
| 669 | } |
| 670 | |
| 671 | deltabBox = measureText(deltaFormatText(deltaValue(cd[0]), deltaFmt), trace.delta.font, numbersAnchor, gd); |
no test coverage detected
searching dependent graphs…