Skip to content

Commit c14ad69

Browse files
committed
make posAxis findExtremes calls per-trace
1 parent cd82044 commit c14ad69

File tree

1 file changed

+26
-34
lines changed

1 file changed

+26
-34
lines changed

src/traces/bar/cross_trace_calc.js

+26-34
Original file line numberDiff line numberDiff line change
@@ -420,52 +420,44 @@ function setBarCenterAndWidth(gd, pa, sieve) {
420420

421421
function updatePositionAxis(gd, pa, sieve, allowMinDtick) {
422422
var calcTraces = sieve.traces;
423-
var distinctPositions = sieve.distinctPositions;
424-
var distinctPositions0 = distinctPositions[0];
425423
var minDiff = sieve.minDiff;
426424
var vpad = minDiff / 2;
427425

428-
Axes.minDtick(pa, minDiff, distinctPositions0, allowMinDtick);
429-
430-
// If the user set the bar width or the offset,
431-
// then bars can be shifted away from their positions
432-
// and widths can be larger than minDiff.
433-
//
434-
// Here, we compute pMin and pMax to expand the position axis,
435-
// so that all bars are fully within the axis range.
436-
var pMin = Math.min.apply(Math, distinctPositions) - vpad;
437-
var pMax = Math.max.apply(Math, distinctPositions) + vpad;
426+
Axes.minDtick(pa, sieve.minDiff, sieve.distinctPositions[0], allowMinDtick);
438427

439428
for(var i = 0; i < calcTraces.length; i++) {
440429
var calcTrace = calcTraces[i];
441430
var calcTrace0 = calcTrace[0];
442431
var fullTrace = calcTrace0.trace;
443-
444-
if(fullTrace.width === undefined && fullTrace.offset === undefined) {
445-
continue;
432+
var pts = [];
433+
var bar, l, r, j;
434+
435+
for(j = 0; j < calcTrace.length; j++) {
436+
bar = calcTrace[j];
437+
l = bar.p - vpad;
438+
r = bar.p + vpad;
439+
pts.push(l, r);
446440
}
447441

448-
var t = calcTrace0.t;
449-
var poffset = t.poffset;
450-
var barwidth = t.barwidth;
451-
var poffsetIsArray = Array.isArray(poffset);
452-
var barwidthIsArray = Array.isArray(barwidth);
453-
454-
for(var j = 0; j < calcTrace.length; j++) {
455-
var calcBar = calcTrace[j];
456-
var calcBarOffset = (poffsetIsArray) ? poffset[j] : poffset;
457-
var calcBarWidth = (barwidthIsArray) ? barwidth[j] : barwidth;
458-
var p = calcBar.p;
459-
var l = p + calcBarOffset;
460-
var r = l + calcBarWidth;
461-
462-
pMin = Math.min(pMin, l);
463-
pMax = Math.max(pMax, r);
442+
if(fullTrace.width || fullTrace.offset) {
443+
var t = calcTrace0.t;
444+
var poffset = t.poffset;
445+
var barwidth = t.barwidth;
446+
var poffsetIsArray = Array.isArray(poffset);
447+
var barwidthIsArray = Array.isArray(barwidth);
448+
449+
for(j = 0; j < calcTrace.length; j++) {
450+
bar = calcTrace[j];
451+
var calcBarOffset = poffsetIsArray ? poffset[j] : poffset;
452+
var calcBarWidth = barwidthIsArray ? barwidth[j] : barwidth;
453+
l = bar.p + calcBarOffset;
454+
r = l + calcBarWidth;
455+
pts.push(l, r);
456+
}
464457
}
465-
}
466458

467-
var extremes = Axes.findExtremes(pa, [pMin, pMax], {padded: false});
468-
putExtremes(calcTraces, pa, extremes);
459+
fullTrace._extremes[pa._id] = Axes.findExtremes(pa, pts, {padded: false});
460+
}
469461
}
470462

471463
function expandRange(range, newValue) {

0 commit comments

Comments
 (0)