From 83f5cddbcbdac4f5c36f70f043a9156aaa1c0829 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 24 Jul 2020 14:32:18 -0400 Subject: [PATCH] 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');