From 81186443ee83b12d493b8e41a7aabcd881e708d5 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Thu, 8 Jun 2023 11:09:06 -0400 Subject: [PATCH 1/2] provide delta, initial and final for totals of waterfall --- src/traces/waterfall/hover.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/traces/waterfall/hover.js b/src/traces/waterfall/hover.js index b7b0ed23444..23f38c232d1 100644 --- a/src/traces/waterfall/hover.js +++ b/src/traces/waterfall/hover.js @@ -31,16 +31,14 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { var size = (di.isSum) ? di.b + di.s : di.rawS; - if(!di.isSum) { - point.initial = di.b + di.s - size; - point.delta = size; - point.final = point.initial + point.delta; - - var v = formatNumber(Math.abs(point.delta)); - point.deltaLabel = size < 0 ? '(' + v + ')' : v; - point.finalLabel = formatNumber(point.final); - point.initialLabel = formatNumber(point.initial); - } + point.initial = di.b + di.s - size; + point.delta = size; + point.final = point.initial + point.delta; + + var v = formatNumber(Math.abs(point.delta)); + point.deltaLabel = size < 0 ? '(' + v + ')' : v; + point.finalLabel = formatNumber(point.final); + point.initialLabel = formatNumber(point.initial); var hoverinfo = di.hi || trace.hoverinfo; var text = []; From 8d185b98f6504d46c31ce5f278bfaac777212ed8 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Thu, 8 Jun 2023 11:29:30 -0400 Subject: [PATCH 2/2] add jasmine test --- test/jasmine/tests/waterfall_test.js | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/test/jasmine/tests/waterfall_test.js b/test/jasmine/tests/waterfall_test.js index 59b911e5116..d5561a10282 100644 --- a/test/jasmine/tests/waterfall_test.js +++ b/test/jasmine/tests/waterfall_test.js @@ -1528,6 +1528,37 @@ describe('waterfall hover', function() { .then(done, done.fail); }); + it('should provide delta hovertemplate on totals similar to hovertext', function(done) { + gd = createGraphDiv(); + + function _hover() { + var evt = { xpx: 400, ypx: 100 }; + Fx.hover('graph', evt, 'xy'); + } + + Plotly.newPlot(gd, { + data: [{ + type: 'waterfall', + y: [ 10, -4, null ], + measure: [ '', '', 'total' ], + texttemplate: '%{delta}', + hovertemplate: '%{delta}', + }], + layout: { + width: 600, + height: 400 + } + }) + .then(_hover) + .then(function() { + assertHoverLabelContent({ + nums: '6', + name: 'trace 0' + }); + }) + .then(done, done.fail); + }); + it('should format numbers - round hover precision', function(done) { gd = createGraphDiv();