From 032e6049d4df8ffa0ef685ef13ca1f0231256610 Mon Sep 17 00:00:00 2001 From: archmoj Date: Wed, 17 Apr 2019 23:12:22 -0400 Subject: [PATCH] fix 3785 waterfall connectors on date axes --- src/traces/waterfall/cross_trace_calc.js | 5 ++++ src/traces/waterfall/plot.js | 13 +++------ test/image/baselines/waterfall_date-axes.png | Bin 0 -> 7613 bytes test/image/mocks/waterfall_date-axes.json | 28 +++++++++++++++++++ 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 test/image/baselines/waterfall_date-axes.png create mode 100644 test/image/mocks/waterfall_date-axes.json diff --git a/src/traces/waterfall/cross_trace_calc.js b/src/traces/waterfall/cross_trace_calc.js index 31d3b25d178..229b4792215 100644 --- a/src/traces/waterfall/cross_trace_calc.js +++ b/src/traces/waterfall/cross_trace_calc.js @@ -65,6 +65,11 @@ module.exports = function crossTraceCalc(gd, plotinfo) { if(di.isSum === false) { di.s0 += (j === 0) ? 0 : cd[j - 1].s; } + + if(j + 1 < cd.length) { + cd[j].nextP0 = cd[j + 1].p0; + cd[j].nextS0 = cd[j + 1].s0; + } } } }; diff --git a/src/traces/waterfall/plot.js b/src/traces/waterfall/plot.js index a285f0456df..8c604727010 100644 --- a/src/traces/waterfall/plot.js +++ b/src/traces/waterfall/plot.js @@ -60,11 +60,6 @@ function plotConnectors(gd, plotinfo, cdModule, traceLayer) { var x2, y2; var x3, y3; - var delta = 0; - if(i + 1 < len && Array.isArray(trace.offset)) { - delta -= trace.offset[i + 1] - trace.offset[i]; - } - if(isHorizontal) { x0 = xa.c2p(di.s1, true); y0 = ya.c2p(di.p1, true); @@ -76,8 +71,8 @@ function plotConnectors(gd, plotinfo, cdModule, traceLayer) { y2 = ya.c2p(di.p1, true); if(i + 1 < len) { - x3 = xa.c2p(di.s0 + 1 - delta, true); - y3 = ya.c2p(di.p0 + 1 - delta, true); + x3 = xa.c2p(di.nextS0, true); + y3 = ya.c2p(di.nextP0, true); } } else { x0 = xa.c2p(di.p1, true); @@ -90,8 +85,8 @@ function plotConnectors(gd, plotinfo, cdModule, traceLayer) { y2 = ya.c2p(di.s1, true); if(i + 1 < len) { - x3 = xa.c2p(di.p0 + 1 - delta, true); - y3 = ya.c2p(di.s0 + 1 - delta, true); + x3 = xa.c2p(di.nextP0, true); + y3 = ya.c2p(di.nextS0, true); } } diff --git a/test/image/baselines/waterfall_date-axes.png b/test/image/baselines/waterfall_date-axes.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bcd1f48a1bc10e4b1ac0b08ba6ddaf22b6c09d GIT binary patch literal 7613 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 b*aBI9M)%F3t8W5-%W{~Sz%N!_xE=XldP4Wt literal 0 HcmV?d00001 diff --git a/test/image/mocks/waterfall_date-axes.json b/test/image/mocks/waterfall_date-axes.json new file mode 100644 index 00000000000..bb3c13d5b0e --- /dev/null +++ b/test/image/mocks/waterfall_date-axes.json @@ -0,0 +1,28 @@ +{ + "data": [{ + "type": "waterfall", + "x": [ + "2010-01-01", + "2010-07-01", + "2011-01-01", + "2012-01-01" + ], + "y": [ + 1, + -2, + 3, + 0 + ], + "measure": [ + "absolute", + "relative", + "relative", + "total" + ] + + }], + "layout": { + "width": 500, + "height": 250 + } +}