From 6de9589a141a1b12dbf9b26b61707d3df2e429db Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 2 Jul 2020 14:10:25 -0400 Subject: [PATCH 01/13] add ticklabelperiod to date axes to move labels to the middle of period --- src/components/colorbar/draw.js | 1 + src/plots/cartesian/axes.js | 29 +++++++++++++++++++++++- src/plots/cartesian/axis_defaults.js | 2 ++ src/plots/cartesian/layout_attributes.js | 14 ++++++++++++ src/plots/gl3d/layout/axis_defaults.js | 1 + 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index a3d1acf6958..a952f78340d 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -706,6 +706,7 @@ function mockColorBarAxis(gd, opts, zrange) { font: fullLayout.font, noHover: true, noTickson: true, + noTicklabelmode: true, calendar: fullLayout.calendar // not really necessary (yet?) }; diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 8e1aa45eb51..53a532b49de 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -692,6 +692,13 @@ axes.calcTicks = function calcTicks(ax, opts) { false, // hover _minor // noSuffixPrefix ); + + if(ax.ticklabelmode) { + ticksOut[i].periodX = i ? ( + tickVals[i].value + + tickVals[i - 1].value + ) / 2 : false; + } } ax._inCalcTicks = false; @@ -1785,6 +1792,10 @@ axes.drawOne = function(gd, ax, opts) { if(!ax.visible) return; var transFn = axes.makeTransFn(ax); + var transTickLabelFn = ax.ticklabelmode ? + axes.makeTransPeriodFn(ax) : + axes.makeTransFn(ax); + var tickVals; // We remove zero lines, grid lines, and inside ticks if they're within 1px of the end // The key case here is removing zero lines when the axis bound is zero @@ -1903,7 +1914,7 @@ axes.drawOne = function(gd, ax, opts) { return axes.drawLabels(gd, ax, { vals: vals, layer: mainAxLayer, - transFn: transFn, + transFn: transTickLabelFn, labelFns: axes.makeLabelFns(ax, mainLinePosition) }); }); @@ -2213,6 +2224,14 @@ axes.makeTransFn = function(ax) { function(d) { return 'translate(0,' + (offset + ax.l2p(d.x)) + ')'; }; }; +axes.makeTransPeriodFn = function(ax) { + var axLetter = ax._id.charAt(0); + var offset = ax._offset; + return axLetter === 'x' ? + function(d) { return 'translate(' + (offset + ax.l2p(d.periodX)) + ',0)'; } : + function(d) { return 'translate(0,' + (offset + ax.l2p(d.periodX)) + ')'; }; +}; + /** * Make axis tick path string * @@ -2511,6 +2530,14 @@ axes.drawLabels = function(gd, ax, opts) { var axLetter = axId.charAt(0); var cls = opts.cls || axId + 'tick'; var vals = opts.vals; + if( + ax.showticklabels && + ax.ticklabelmode // === 'period' + ) { + vals = vals.slice(); + vals.shift(); + } + var labelFns = opts.labelFns; var tickAngle = opts.secondary ? 0 : ax.tickangle; var prevAngle = (ax._prevTickAngles || {})[cls]; diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index c1fbf92f9ea..667ecda5c7f 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -126,6 +126,8 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } if(axType === 'date') { + if(!options.noTicklabelmode) coerce('ticklabelmode'); + handleArrayContainerDefaults(containerIn, containerOut, { name: 'rangebreaks', inclusionAttr: 'enabled', diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 23e6cc2a4ba..a7879498c31 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -478,6 +478,20 @@ module.exports = { 'to the left/bottom of labels.' ].join(' ') }, + ticklabelmode: { + valType: 'enumerated', + values: ['', 'period'], + dflt: '', + role: 'info', + editType: 'ticks', + description: [ + 'Determines where tick labels are drawn with respect to their', + 'corresponding ticks and grid lines.', + 'Only has an effect for axes of `type` *date*', + 'When set to *period*, tick labels are drawn in the middle of the period', + 'between ticks.' + ].join(' ') + }, mirror: { valType: 'enumerated', values: [true, 'ticks', false, 'all', 'allticks'], diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 33beeff8e8b..8bc9d7155ef 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -51,6 +51,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { data: options.data, showGrid: true, noTickson: true, + noTicklabelmode: true, bgColor: options.bgColor, calendar: options.calendar }, From 4292f08339470f00e6266698f842bd30fb009145 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 9 Jul 2020 17:23:13 -0400 Subject: [PATCH 02/13] add mock for period ticklabelmode --- test/image/baselines/date_axes_period.png | Bin 0 -> 35326 bytes test/image/mocks/date_axes_period.json | 91 ++++++++++++++++++++++ test/jasmine/tests/mock_test.js | 2 + 3 files changed, 93 insertions(+) create mode 100644 test/image/baselines/date_axes_period.png create mode 100644 test/image/mocks/date_axes_period.json diff --git a/test/image/baselines/date_axes_period.png b/test/image/baselines/date_axes_period.png new file mode 100644 index 0000000000000000000000000000000000000000..03f60ce585c8ec8d8dc46e9f96d3d212977dddce GIT binary patch literal 35326 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 Date: Mon, 20 Jul 2020 10:51:07 -0400 Subject: [PATCH 03/13] use instant key instead of an empty string --- src/plots/cartesian/axes.js | 8 +++++--- src/plots/cartesian/layout_attributes.js | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 53a532b49de..317dbe55d93 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -681,6 +681,8 @@ axes.calcTicks = function calcTicks(ax, opts) { ax._prevDateHead = ''; ax._inCalcTicks = true; + var isPeriod = ax.ticklabelmode === 'period'; + var ticksOut = new Array(tickVals.length); for(var i = 0; i < tickVals.length; i++) { var _minor = tickVals[i].minor; @@ -693,7 +695,7 @@ axes.calcTicks = function calcTicks(ax, opts) { _minor // noSuffixPrefix ); - if(ax.ticklabelmode) { + if(isPeriod) { ticksOut[i].periodX = i ? ( tickVals[i].value + tickVals[i - 1].value @@ -1792,7 +1794,7 @@ axes.drawOne = function(gd, ax, opts) { if(!ax.visible) return; var transFn = axes.makeTransFn(ax); - var transTickLabelFn = ax.ticklabelmode ? + var transTickLabelFn = ax.ticklabelmode === 'period' ? axes.makeTransPeriodFn(ax) : axes.makeTransFn(ax); @@ -2532,7 +2534,7 @@ axes.drawLabels = function(gd, ax, opts) { var vals = opts.vals; if( ax.showticklabels && - ax.ticklabelmode // === 'period' + ax.ticklabelmode === 'period' ) { vals = vals.slice(); vals.shift(); diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index a7879498c31..3e732dda964 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -480,8 +480,8 @@ module.exports = { }, ticklabelmode: { valType: 'enumerated', - values: ['', 'period'], - dflt: '', + values: ['instant', 'period'], + dflt: 'instant', role: 'info', editType: 'ticks', description: [ From 0e124c2f9c8e1564d505e286badc12aa21b69309 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 20 Jul 2020 14:04:54 -0400 Subject: [PATCH 04/13] move tick labels to period positions --- src/plots/cartesian/axes.js | 43 ++++++++++++++++------ test/image/baselines/date_axes_period.png | Bin 35326 -> 40574 bytes 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 317dbe55d93..bcfea37680b 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -696,10 +696,38 @@ axes.calcTicks = function calcTicks(ax, opts) { ); if(isPeriod) { - ticksOut[i].periodX = i ? ( - tickVals[i].value + - tickVals[i - 1].value - ) / 2 : false; + var v = tickVals[i].value; + + var a, b; + if(i === tickVals.length - 1) { + a = i - 1; + b = i; + } else { + a = i; + b = i + 1; + } + var A = tickVals[a].value; + var B = tickVals[b].value; + + var delta = Math.abs(B - A); + var sign = A > B ? -1 : 1; + var half = sign / 2; + + if(delta >= ONEAVGYEAR) { + v += half * ONEAVGYEAR; + } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH + v += half * ONEAVGMONTH; + } else if(delta >= ONEDAY) { + v += half * ONEDAY; + } else if(delta >= ONEHOUR) { + v += half * ONEHOUR; + } else if(delta >= ONEMIN) { + v += half * ONEMIN; + } else if(delta >= ONESEC) { + v += half * ONESEC; + } + + ticksOut[i].periodX = v; } } @@ -2532,13 +2560,6 @@ axes.drawLabels = function(gd, ax, opts) { var axLetter = axId.charAt(0); var cls = opts.cls || axId + 'tick'; var vals = opts.vals; - if( - ax.showticklabels && - ax.ticklabelmode === 'period' - ) { - vals = vals.slice(); - vals.shift(); - } var labelFns = opts.labelFns; var tickAngle = opts.secondary ? 0 : ax.tickangle; diff --git a/test/image/baselines/date_axes_period.png b/test/image/baselines/date_axes_period.png index 03f60ce585c8ec8d8dc46e9f96d3d212977dddce..8ac815e99b3bc15e8d00bdeacbb3aae3f6f5af50 100644 GIT binary patch literal 40574 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˃Tj9=B~O5Fi)tk(|!dUzOtUbCo6E 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 Date: Mon, 20 Jul 2020 17:22:52 -0400 Subject: [PATCH 05/13] fix year shift and avoid periods when increment is less than a day --- src/plots/cartesian/axes.js | 10 ++-------- test/image/baselines/date_axes_period.png | Bin 40574 -> 40884 bytes 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index bcfea37680b..ece5085f984 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -713,18 +713,12 @@ axes.calcTicks = function calcTicks(ax, opts) { var sign = A > B ? -1 : 1; var half = sign / 2; - if(delta >= ONEAVGYEAR) { + if(delta >= ONEDAY * 365) { // Years could have days less than ONEAVGYEAR period v += half * ONEAVGYEAR; - } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH + } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH period v += half * ONEAVGMONTH; } else if(delta >= ONEDAY) { v += half * ONEDAY; - } else if(delta >= ONEHOUR) { - v += half * ONEHOUR; - } else if(delta >= ONEMIN) { - v += half * ONEMIN; - } else if(delta >= ONESEC) { - v += half * ONESEC; } ticksOut[i].periodX = v; diff --git a/test/image/baselines/date_axes_period.png b/test/image/baselines/date_axes_period.png index 8ac815e99b3bc15e8d00bdeacbb3aae3f6f5af50..c335091cbec6d28159727250fb6e248ca224d452 100644 GIT binary patch literal 40884 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%0A$5X#=(na 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 g4Pzopr0Kl3ohX4Qo literal 40574 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˃Tj9=B~O5Fi)tk(|!dUzOtUbCo6E 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 Date: Mon, 20 Jul 2020 18:15:02 -0400 Subject: [PATCH 06/13] let explicit tickformat determine the offset not dtick --- src/plots/cartesian/axes.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index ece5085f984..88707ae169b 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -682,6 +682,16 @@ axes.calcTicks = function calcTicks(ax, opts) { ax._inCalcTicks = true; var isPeriod = ax.ticklabelmode === 'period'; + var definedDelta; + if(isPeriod && ax.tickformat) { + var _has = function(str) { + return ax.tickformat.indexOf(str) !== -1; + }; + + if(_has('%d')) definedDelta = ONEDAY; + else if(_has('%b') || _has('%m')) definedDelta = ONEAVGMONTH; + else if(_has('%Y') || _has('%y')) definedDelta = ONEAVGYEAR; + } var ticksOut = new Array(tickVals.length); for(var i = 0; i < tickVals.length; i++) { @@ -709,7 +719,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var A = tickVals[a].value; var B = tickVals[b].value; - var delta = Math.abs(B - A); + var delta = definedDelta || Math.abs(B - A); var sign = A > B ? -1 : 1; var half = sign / 2; From 4f271d937c62b9b0d8e8d70cc96fa8bd42c898a8 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 20 Jul 2020 18:40:41 -0400 Subject: [PATCH 07/13] expand checks for various tickformat options --- src/plots/cartesian/axes.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 88707ae169b..0f3d1f2f308 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -688,9 +688,20 @@ axes.calcTicks = function calcTicks(ax, opts) { return ax.tickformat.indexOf(str) !== -1; }; - if(_has('%d')) definedDelta = ONEDAY; - else if(_has('%b') || _has('%m')) definedDelta = ONEAVGMONTH; - else if(_has('%Y') || _has('%y')) definedDelta = ONEAVGYEAR; + if( + !_has('%f') && + !_has('%H') && + !_has('%I') && + !_has('%L') && + !_has('%Q') && + !_has('%S') && + !_has('%s') && + !_has('%X') + ) { + if(_has('%x') || _has('%d') || _has('%e') || _has('%j')) definedDelta = ONEDAY; + else if(_has('%B') || _has('%b') || _has('%m')) definedDelta = ONEAVGMONTH; + else if(_has('%Y') || _has('%y')) definedDelta = ONEAVGYEAR; + } } var ticksOut = new Array(tickVals.length); From a5e6aae92da691ed895b392f2fc3d92b321eff43 Mon Sep 17 00:00:00 2001 From: archmoj Date: Tue, 21 Jul 2020 12:30:23 -0400 Subject: [PATCH 08/13] hide label when falls outside the range --- src/plots/cartesian/axes.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 0f3d1f2f308..75dcb3d21c8 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -681,6 +681,9 @@ axes.calcTicks = function calcTicks(ax, opts) { ax._prevDateHead = ''; ax._inCalcTicks = true; + var minRange = Math.min(rng[0], rng[1]); + var maxRange = Math.max(rng[0], rng[1]); + var isPeriod = ax.ticklabelmode === 'period'; var definedDelta; if(isPeriod && ax.tickformat) { @@ -743,6 +746,10 @@ axes.calcTicks = function calcTicks(ax, opts) { } ticksOut[i].periodX = v; + + if(v > maxRange || v < minRange) { // hide label if outside the range + ticksOut[i].text = ''; + } } } From 79f687581e66a1dd390229bc57f4a572781862c3 Mon Sep 17 00:00:00 2001 From: archmoj Date: Tue, 21 Jul 2020 13:43:41 -0400 Subject: [PATCH 09/13] fix for reversed ranges --- src/plots/cartesian/axes.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 75dcb3d21c8..eff37e70b64 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -734,15 +734,12 @@ axes.calcTicks = function calcTicks(ax, opts) { var B = tickVals[b].value; var delta = definedDelta || Math.abs(B - A); - var sign = A > B ? -1 : 1; - var half = sign / 2; - if(delta >= ONEDAY * 365) { // Years could have days less than ONEAVGYEAR period - v += half * ONEAVGYEAR; + v += ONEAVGYEAR / 2; } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH period - v += half * ONEAVGMONTH; + v += ONEAVGMONTH / 2; } else if(delta >= ONEDAY) { - v += half * ONEDAY; + v += ONEDAY / 2; } ticksOut[i].periodX = v; From 08c69d7c1a2dafc800294b5bf31e931b30553729 Mon Sep 17 00:00:00 2001 From: archmoj Date: Tue, 21 Jul 2020 14:47:42 -0400 Subject: [PATCH 10/13] label the period before the first tick --- src/plots/cartesian/axes.js | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index eff37e70b64..1891ece0e63 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -592,7 +592,6 @@ axes.calcTicks = function calcTicks(ax, opts) { } var isDLog = (ax.type === 'log') && !(isNumeric(ax.dtick) || ax.dtick.charAt(0) === 'L'); - var tickVals; function generateTicks() { var xPrevious = null; @@ -620,6 +619,16 @@ axes.calcTicks = function calcTicks(ax, opts) { generateTicks(); + var isPeriod = ax.ticklabelmode === 'period'; + var addOneTickToStart = isPeriod && tickVals.length > 2; + + if(addOneTickToStart) { + tickVals.push({ + minor: false, + value: 2 * tickVals[0].value - tickVals[1].value + }); + } + if(ax.rangebreaks) { // replace ticks inside breaks that would get a tick // and reduce ticks @@ -684,7 +693,6 @@ axes.calcTicks = function calcTicks(ax, opts) { var minRange = Math.min(rng[0], rng[1]); var maxRange = Math.max(rng[0], rng[1]); - var isPeriod = ax.ticklabelmode === 'period'; var definedDelta; if(isPeriod && ax.tickformat) { var _has = function(str) { @@ -722,14 +730,23 @@ axes.calcTicks = function calcTicks(ax, opts) { if(isPeriod) { var v = tickVals[i].value; - var a, b; - if(i === tickVals.length - 1) { - a = i - 1; - b = i; + var a = i; + var b = i + 1; + if(addOneTickToStart) { + if(i === tickVals.length - 1) { + a = i; + b = 0; + } else if(i === tickVals.length - 2) { + a = i - 1; + b = i; + } } else { - a = i; - b = i + 1; + if(i === tickVals.length - 1) { + a = i - 1; + b = i; + } } + var A = tickVals[a].value; var B = tickVals[b].value; From 79385c24e5fe80aff8008f8818a11582146031a4 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 24 Jul 2020 10:52:33 -0400 Subject: [PATCH 11/13] correct the pre tick0 label --- src/plots/cartesian/axes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 1891ece0e63..374809e3329 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -625,7 +625,7 @@ axes.calcTicks = function calcTicks(ax, opts) { if(addOneTickToStart) { tickVals.push({ minor: false, - value: 2 * tickVals[0].value - tickVals[1].value + value: axes.tickIncrement(tickVals[0].value, ax.dtick, !axrev, ax.caldendar) }); } From 66a98be64f76ecfb43ed04da72500251f4bbe694 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 24 Jul 2020 12:02:45 -0400 Subject: [PATCH 12/13] fixups for pre-tick0 and tick0 label in period mode --- src/plots/cartesian/axes.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 374809e3329..ca68325280f 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -592,6 +592,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } var isDLog = (ax.type === 'log') && !(isNumeric(ax.dtick) || ax.dtick.charAt(0) === 'L'); + var tickVals; function generateTicks() { var xPrevious = null; @@ -620,13 +621,12 @@ axes.calcTicks = function calcTicks(ax, opts) { generateTicks(); var isPeriod = ax.ticklabelmode === 'period'; - var addOneTickToStart = isPeriod && tickVals.length > 2; - - if(addOneTickToStart) { - tickVals.push({ + if(isPeriod) { + // add one label to show pre tick0 period + tickVals = [{ minor: false, value: axes.tickIncrement(tickVals[0].value, ax.dtick, !axrev, ax.caldendar) - }); + }].concat(tickVals); } if(ax.rangebreaks) { @@ -715,6 +715,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } } + var removedPreTick0Label = false; var ticksOut = new Array(tickVals.length); for(var i = 0; i < tickVals.length; i++) { var _minor = tickVals[i].minor; @@ -732,19 +733,12 @@ axes.calcTicks = function calcTicks(ax, opts) { var a = i; var b = i + 1; - if(addOneTickToStart) { - if(i === tickVals.length - 1) { - a = i; - b = 0; - } else if(i === tickVals.length - 2) { - a = i - 1; - b = i; - } + if(i < tickVals.length - 1) { + a = i; + b = i + 1; } else { - if(i === tickVals.length - 1) { - a = i - 1; - b = i; - } + a = i - 1; + b = i; } var A = tickVals[a].value; @@ -763,10 +757,17 @@ axes.calcTicks = function calcTicks(ax, opts) { if(v > maxRange || v < minRange) { // hide label if outside the range ticksOut[i].text = ''; + if(i === 0) removedPreTick0Label = true; } } } + if(removedPreTick0Label && ticksOut.length > 1) { + // redo tick0 text + ax._prevDateHead = ''; + ticksOut[1].text = axes.tickText(ax, tickVals[1].value).text; + } + ax._inCalcTicks = false; return ticksOut; From 83f5cddbcbdac4f5c36f70f043a9156aaa1c0829 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 24 Jul 2020 14:32:18 -0400 Subject: [PATCH 13/13] correct logic for reversed ranges and add tests for some period scenarios --- src/plots/cartesian/axes.js | 11 +- test/image/baselines/date_axes_period2.png | Bin 0 -> 35873 bytes test/image/mocks/date_axes_period2.json | 189 +++++++++++++++++++++ test/jasmine/tests/mock_test.js | 2 + 4 files changed, 197 insertions(+), 5 deletions(-) create mode 100644 test/image/baselines/date_axes_period2.png create mode 100644 test/image/mocks/date_axes_period2.json diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index ca68325280f..094774715a0 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -623,10 +623,10 @@ axes.calcTicks = function calcTicks(ax, opts) { var isPeriod = ax.ticklabelmode === 'period'; if(isPeriod) { // add one label to show pre tick0 period - tickVals = [{ + tickVals.unshift({ minor: false, value: axes.tickIncrement(tickVals[0].value, ax.dtick, !axrev, ax.caldendar) - }].concat(tickVals); + }); } if(ax.rangebreaks) { @@ -745,12 +745,13 @@ axes.calcTicks = function calcTicks(ax, opts) { var B = tickVals[b].value; var delta = definedDelta || Math.abs(B - A); + var half = axrev ? -0.5 : 0.5; if(delta >= ONEDAY * 365) { // Years could have days less than ONEAVGYEAR period - v += ONEAVGYEAR / 2; + v += half * ONEAVGYEAR; } else if(delta >= ONEDAY * 28) { // Months could have days less than ONEAVGMONTH period - v += ONEAVGMONTH / 2; + v += half * ONEAVGMONTH; } else if(delta >= ONEDAY) { - v += ONEDAY / 2; + v += half * ONEDAY; } ticksOut[i].periodX = v; diff --git a/test/image/baselines/date_axes_period2.png b/test/image/baselines/date_axes_period2.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd2b32722d38ddc3782028063a8b7037c7bc81b GIT binary patch literal 35873 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/date_axes_period2.json b/test/image/mocks/date_axes_period2.json new file mode 100644 index 00000000000..7bc134ea75e --- /dev/null +++ b/test/image/mocks/date_axes_period2.json @@ -0,0 +1,189 @@ +{ + "data": [ + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ] + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x5", + "yaxis": "y5" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x6", + "yaxis": "y6" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x7", + "yaxis": "y7" + } + ], + "layout": { + "showlegend": false, + "width": 600, + "height": 500, + "yaxis": { + "domain": [ + 0, + 0.04 + ] + }, + "yaxis2": { + "domain": [ + 0.16, + 0.2 + ] + }, + "yaxis3": { + "domain": [ + 0.32, + 0.36 + ] + }, + "yaxis4": { + "domain": [ + 0.48, + 0.52 + ] + }, + "yaxis5": { + "domain": [ + 0.64, + 0.68 + ] + }, + "yaxis6": { + "domain": [ + 0.80, + 0.84 + ] + }, + "yaxis7": { + "domain": [ + 0.96, + 1 + ] + }, + "xaxis": { + "range": [ + "2019-12-24", + "2020-01-06" + ], + "ticklabelmode": "period", + "tickformat": "%b %d, %Y" + }, + "xaxis2": { + "range": [ + "2019-12-29", + "2020-01-04" + ], + "ticklabelmode": "period", + "anchor": "y2" + }, + "xaxis3": { + "range": [ + "2020-01-03", + "2019-12-28" + ], + "ticklabelmode": "period", + "anchor": "y3" + }, + "xaxis4": { + "range": [ + "2020-03-01", + "2020-11-01" + ], + "ticklabelmode": "period", + "anchor": "y4" + }, + "xaxis5": { + "range": [ + "2016-09-01", + "2017-06-01" + ], + "ticklabelmode": "period", + "anchor": "y5" + }, + "xaxis6": { + "range": [ + "2016-05-01", + "2019-09-01" + ], + "ticklabelmode": "period", + "anchor": "y6" + }, + "xaxis7": { + "range": [ + "2016-05-01", + "2021-09-01" + ], + "ticklabelmode": "period", + "anchor": "y7" + } + } +} diff --git a/test/jasmine/tests/mock_test.js b/test/jasmine/tests/mock_test.js index e5e0e4a3b92..2e9351a2a17 100644 --- a/test/jasmine/tests/mock_test.js +++ b/test/jasmine/tests/mock_test.js @@ -254,6 +254,7 @@ var list = [ 'custom_size_subplot', 'date_axes', 'date_axes_period', + 'date_axes_period2', 'date_histogram', 'dendrogram', 'display-text_zero-number', @@ -1298,6 +1299,7 @@ figs['custom_colorscale'] = require('@mocks/custom_colorscale'); figs['custom_size_subplot'] = require('@mocks/custom_size_subplot'); figs['date_axes'] = require('@mocks/date_axes'); figs['date_axes_period'] = require('@mocks/date_axes_period'); +figs['date_axes_period2'] = require('@mocks/date_axes_period2'); figs['date_histogram'] = require('@mocks/date_histogram'); // figs['dendrogram'] = require('@mocks/dendrogram'); figs['display-text_zero-number'] = require('@mocks/display-text_zero-number');