Skip to content

Commit 03917c6

Browse files
authored
Merge pull request #5826 from plotly/more-d3-interpolate-use
Replace `d3.interpolate` method with `d3-interpolate` module in `icicle`, `indicator`, `parcats`, `sunburst` and `treemap`
2 parents 51216bc + c95fdc3 commit 03917c6

File tree

5 files changed

+28
-20
lines changed

5 files changed

+28
-20
lines changed

draftlogs/5826_change.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- replace `d3.interpolate` method with `d3-interpolate` module in `icicle`, `indicator`, `parcats`, `sunburst` and `treemap` [[#5826](https://github.com/plotly/plotly.js/pull/5826)]

src/traces/indicator/plot.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22

33
var d3 = require('@plotly/d3');
4+
var interpolate = require('d3-interpolate').interpolate;
5+
var interpolateNumber = require('d3-interpolate').interpolateNumber;
46

57
var Lib = require('../../lib');
68
var strScale = Lib.strScale;
@@ -593,7 +595,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
593595
.each('interrupt', function() { writeNumber(); onComplete && onComplete(); })
594596
.attrTween('text', function() {
595597
var that = d3.select(this);
596-
var interpolator = d3.interpolateNumber(cd[0].lastY, cd[0].y);
598+
var interpolator = interpolateNumber(cd[0].lastY, cd[0].y);
597599
trace._lastValue = cd[0].y;
598600

599601
var transitionFmt = transitionFormat(trace.number.valueformat, fmt, cd[0].lastY, cd[0].y);
@@ -650,7 +652,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
650652
var to = deltaValue(cd[0]);
651653
var from = trace._deltaLastValue;
652654
var transitionFmt = transitionFormat(trace.delta.valueformat, deltaFmt, from, to);
653-
var interpolator = d3.interpolateNumber(from, to);
655+
var interpolator = interpolateNumber(from, to);
654656
trace._deltaLastValue = to;
655657
return function(t) {
656658
that.text(deltaFormatText(interpolator(t), transitionFmt));
@@ -792,9 +794,9 @@ function styleShape(p) {
792794
// arcs from their current angle to the specified new angle.
793795
function arcTween(arc, endAngle, newAngle) {
794796
return function() {
795-
var interpolate = d3.interpolate(endAngle, newAngle);
797+
var interp = interpolate(endAngle, newAngle);
796798
return function(t) {
797-
return arc.endAngle(interpolate(t))();
799+
return arc.endAngle(interp(t))();
798800
};
799801
};
800802
}

src/traces/parcats/parcats.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
var d3 = require('@plotly/d3');
4+
var interpolateNumber = require('d3-interpolate').interpolateNumber;
45
var Plotly = require('../../plot_api/plot_api');
56
var Fx = require('../../components/fx');
67
var Lib = require('../../lib');
@@ -1609,7 +1610,7 @@ function buildSvgPath(leftXPositions, pathYs, dimWidths, pathHeight, curvature)
16091610
var d;
16101611

16111612
for(d = 0; d < dimWidths.length - 1; d++) {
1612-
refInterpolator = d3.interpolateNumber(dimWidths[d] + leftXPositions[d], leftXPositions[d + 1]);
1613+
refInterpolator = interpolateNumber(dimWidths[d] + leftXPositions[d], leftXPositions[d + 1]);
16131614
xRefPoints1.push(refInterpolator(curvature));
16141615
xRefPoints2.push(refInterpolator(1 - curvature));
16151616
}

src/traces/sunburst/plot.js

+15-12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
var d3 = require('@plotly/d3');
44
var d3Hierarchy = require('d3-hierarchy');
5+
var interpolate = require('d3-interpolate').interpolate;
56

67
var Drawing = require('../../components/drawing');
78
var Lib = require('../../lib');
@@ -307,7 +308,9 @@ function plotOne(gd, cd, element, transitionOpts) {
307308
// if pt to remove:
308309
// - if 'below' where the root-node used to be: shrink it radially inward
309310
// - otherwise, collapse it clockwise or counterclockwise which ever is shortest to theta=0
310-
next = pt.rpx1 < entryPrev.rpx1 ? {rpx0: 0, rpx1: 0} : {x0: a, x1: a};
311+
next = pt.rpx1 < entryPrev.rpx1 ?
312+
{x0: pt.x0, x1: pt.x1, rpx0: 0, rpx1: 0} :
313+
{x0: a, x1: a, rpx0: pt.rpx0, rpx1: pt.rpx1};
311314
} else {
312315
// this happens when maxdepth is set, when leaves must
313316
// be removed and the rootPt is new (i.e. does not have a 'prev' object)
@@ -326,14 +329,14 @@ function plotOne(gd, cd, element, transitionOpts) {
326329
}
327330
});
328331
var n = parentChildren.length;
329-
var interp = d3.interpolate(parent.x0, parent.x1);
332+
var interp = interpolate(parent.x0, parent.x1);
330333
next = {
331334
rpx0: rMax, rpx1: rMax,
332335
x0: interp(ci / n), x1: interp((ci + 1) / n)
333336
};
334337
}
335338

336-
return d3.interpolate(prev, next);
339+
return interpolate(prev, next);
337340
}
338341

339342
function makeUpdateSliceInterpolator(pt) {
@@ -372,7 +375,7 @@ function plotOne(gd, cd, element, transitionOpts) {
372375
}
373376
}
374377

375-
return d3.interpolate(prev, next);
378+
return interpolate(prev, next);
376379
}
377380

378381
function makeUpdateTextInterpolator(pt) {
@@ -419,19 +422,19 @@ function plotOne(gd, cd, element, transitionOpts) {
419422
}
420423
}
421424

422-
var textPosAngleFn = d3.interpolate(prev.transform.textPosAngle, pt.transform.textPosAngle);
423-
var rpx1Fn = d3.interpolate(prev.rpx1, pt.rpx1);
424-
var x0Fn = d3.interpolate(prev.x0, pt.x0);
425-
var x1Fn = d3.interpolate(prev.x1, pt.x1);
426-
var scaleFn = d3.interpolate(prev.transform.scale, transform.scale);
427-
var rotateFn = d3.interpolate(prev.transform.rotate, transform.rotate);
425+
var textPosAngleFn = interpolate(prev.transform.textPosAngle, pt.transform.textPosAngle);
426+
var rpx1Fn = interpolate(prev.rpx1, pt.rpx1);
427+
var x0Fn = interpolate(prev.x0, pt.x0);
428+
var x1Fn = interpolate(prev.x1, pt.x1);
429+
var scaleFn = interpolate(prev.transform.scale, transform.scale);
430+
var rotateFn = interpolate(prev.transform.rotate, transform.rotate);
428431

429432
// smooth out start/end from entry, to try to keep text inside sector
430433
// while keeping transition smooth
431434
var pow = transform.rCenter === 0 ? 3 :
432435
prev.transform.rCenter === 0 ? 1 / 3 :
433436
1;
434-
var _rCenterFn = d3.interpolate(prev.transform.rCenter, transform.rCenter);
437+
var _rCenterFn = interpolate(prev.transform.rCenter, transform.rCenter);
435438
var rCenterFn = function(t) { return _rCenterFn(Math.pow(t, pow)); };
436439

437440
return function(t) {
@@ -476,7 +479,7 @@ function plotOne(gd, cd, element, transitionOpts) {
476479
var parentChildren = parent.children;
477480
var ci = parentChildren.indexOf(pt);
478481
var n = parentChildren.length;
479-
var interp = d3.interpolate(parentPrev.x0, parentPrev.x1);
482+
var interp = interpolate(parentPrev.x0, parentPrev.x1);
480483
out.x0 = interp(ci / n);
481484
out.x1 = interp(ci / n);
482485
} else {

src/traces/treemap/plot_one.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
var d3 = require('@plotly/d3');
4+
var interpolate = require('d3-interpolate').interpolate;
45

56
var helpers = require('../sunburst/helpers');
67

@@ -349,7 +350,7 @@ module.exports = function plotOne(gd, cd, element, transitionOpts, drawDescendan
349350
}
350351
}
351352

352-
return d3.interpolate(prev, next);
353+
return interpolate(prev, next);
353354
};
354355

355356
var makeUpdateSliceInterpolator = function(pt, onPathbar, refRect, size, opts) {
@@ -395,7 +396,7 @@ module.exports = function plotOne(gd, cd, element, transitionOpts, drawDescendan
395396
}
396397
}
397398

398-
return d3.interpolate(prev, {
399+
return interpolate(prev, {
399400
x0: pt.x0,
400401
x1: pt.x1,
401402
y0: pt.y0,
@@ -436,7 +437,7 @@ module.exports = function plotOne(gd, cd, element, transitionOpts, drawDescendan
436437
recordMinTextSize(trace.type, transform, fullLayout);
437438
}
438439

439-
return d3.interpolate(prev, {
440+
return interpolate(prev, {
440441
transform: {
441442
scale: transform.scale,
442443
rotate: transform.rotate,

0 commit comments

Comments
 (0)