From 0dda4f2dca7ed6febf88a91f8990b119c68d9d9b Mon Sep 17 00:00:00 2001 From: Davor Spasovski Date: Thu, 13 May 2021 13:55:50 -0500 Subject: [PATCH 1/2] cache simplemap results of rangebreak values --- src/plots/cartesian/set_convert.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index 9a696633554..8555c5d985f 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -600,6 +600,12 @@ module.exports = function setConvert(ax, fullLayout) { var rangebreaksIn = ax.rangebreaks || []; var bnds, b0, b1, vb, vDate; + if (!rangebreaksIn._cachedVals) { + rangebreaksIn._cachedVals = rangebreaksIn.map(brk => { + return brk.values ? Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc) : null; + }); + } + for(var i = 0; i < rangebreaksIn.length; i++) { var brk = rangebreaksIn[i]; @@ -653,7 +659,7 @@ module.exports = function setConvert(ax, fullLayout) { if(vb >= b0 && vb < b1) return BADNUM; } else { - var vals = Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc); + var vals = rangebreaksIn._cachedVals[i]; for(var j = 0; j < vals.length; j++) { b0 = vals[j]; b1 = b0 + brk.dvalue; From d8a4a7114a5625fe840258e7bc01fc6cc24a070d Mon Sep 17 00:00:00 2001 From: Davor Spasovski Date: Thu, 13 May 2021 15:52:50 -0500 Subject: [PATCH 2/2] address review comments --- src/plots/cartesian/set_convert.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index 8555c5d985f..1ff1a2196d4 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -600,22 +600,29 @@ module.exports = function setConvert(ax, fullLayout) { var rangebreaksIn = ax.rangebreaks || []; var bnds, b0, b1, vb, vDate; - if (!rangebreaksIn._cachedVals) { - rangebreaksIn._cachedVals = rangebreaksIn.map(brk => { - return brk.values ? Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc) : null; + + if(!rangebreaksIn._cachedPatterns) { + rangebreaksIn._cachedPatterns = rangebreaksIn.map(function(brk) { + return brk.enabled && brk.bounds ? Lib.simpleMap(brk.bounds, brk.pattern ? + cleanNumber : + ax.d2c // case of pattern: '' + ) : null; + }); + } + if(!rangebreaksIn._cachedValues) { + rangebreaksIn._cachedValues = rangebreaksIn.map(function(brk) { + return brk.enabled && brk.values ? Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc) : null; }); } + for(var i = 0; i < rangebreaksIn.length; i++) { var brk = rangebreaksIn[i]; if(brk.enabled) { if(brk.bounds) { var pattern = brk.pattern; - bnds = Lib.simpleMap(brk.bounds, pattern ? - cleanNumber : - ax.d2c // case of pattern: '' - ); + bnds = rangebreaksIn._cachedPatterns[i]; b0 = bnds[0]; b1 = bnds[1]; @@ -659,7 +666,7 @@ module.exports = function setConvert(ax, fullLayout) { if(vb >= b0 && vb < b1) return BADNUM; } else { - var vals = rangebreaksIn._cachedVals[i]; + var vals = rangebreaksIn._cachedValues[i]; for(var j = 0; j < vals.length; j++) { b0 = vals[j]; b1 = b0 + brk.dvalue;