From a61c2040553bdbafcc0176aaa848e8edfc4cf436 Mon Sep 17 00:00:00 2001 From: archmoj Date: Wed, 20 May 2020 13:37:39 -0400 Subject: [PATCH 1/3] fix issue 4848 - tickmode array on date and log axes --- src/plots/cartesian/tick_value_defaults.js | 15 ++++----------- test/jasmine/tests/axes_test.js | 8 +++++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 8f662757140..255ba07887a 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -21,18 +21,11 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe var _tick0 = readInput('tick0'); var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); - var _tickmode = readInput('tickmode'); - var tickmode; - if(_tickmode === 'array' && - (axType === 'log' || axType === 'date')) { - tickmode = containerOut.tickmode = 'auto'; - } else { - var tickmodeDefault = Array.isArray(_tickvals) ? 'array' : - _dtick ? 'linear' : - 'auto'; - tickmode = coerce('tickmode', tickmodeDefault); - } + var tickmodeDefault = Array.isArray(_tickvals) ? 'array' : + _dtick ? 'linear' : + 'auto'; + var tickmode = coerce('tickmode', tickmodeDefault); if(tickmode === 'auto') coerce('nticks'); else if(tickmode === 'linear') { diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 45b1bff36bd..c8ed25a9a3a 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -1887,10 +1887,16 @@ describe('Test axes', function() { expect(axOut.tickmode).toBe('auto'); expect(axIn.tickmode).toBe('array'); + axIn = {tickvals: [1, 2, 3]}; + axOut = {}; + mockSupplyDefaults(axIn, axOut, 'date'); + expect(axOut.tickmode).toBe('array'); + expect(axIn.tickmode).toBeUndefined(); + axIn = {tickmode: 'array', tickvals: [1, 2, 3]}; axOut = {}; mockSupplyDefaults(axIn, axOut, 'date'); - expect(axOut.tickmode).toBe('auto'); + expect(axOut.tickmode).toBe('array'); expect(axIn.tickmode).toBe('array'); axIn = {tickvals: [1, 2, 3]}; From e8d081ebc77dfe1dc7a9c0a964be72a95329a7ce Mon Sep 17 00:00:00 2001 From: archmoj Date: Wed, 20 May 2020 14:20:04 -0400 Subject: [PATCH 2/3] allow typedArrays to be used in axis tickvals --- src/plots/cartesian/tick_value_defaults.js | 3 ++- test/jasmine/tests/axes_test.js | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 255ba07887a..62268bf01c2 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -9,6 +9,7 @@ 'use strict'; var cleanTicks = require('./clean_ticks'); +var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType) { function readInput(attr) { @@ -22,7 +23,7 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); - var tickmodeDefault = Array.isArray(_tickvals) ? 'array' : + var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : _dtick ? 'linear' : 'auto'; var tickmode = coerce('tickmode', tickmodeDefault); diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index c8ed25a9a3a..45fe6e87444 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -1905,6 +1905,15 @@ describe('Test axes', function() { expect(axOut.tickmode).toBe('array'); expect(axIn.tickmode).toBeUndefined(); + var arr = new Float32Array(2); + arr[0] = 0; + arr[1] = 1; + axIn = {tickvals: arr}; + axOut = {}; + mockSupplyDefaults(axIn, axOut, 'linear'); + expect(axOut.tickmode).toBe('array'); + expect(axIn.tickmode).toBeUndefined(); + axIn = {dtick: 1}; axOut = {}; mockSupplyDefaults(axIn, axOut, 'linear'); From 3833064e6a398e73912aabd8f9dc83f1c0e38506 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 21 May 2020 11:52:35 -0400 Subject: [PATCH 3/3] add image test for array tickmode on log & date axes --- .../baselines/axes_custom-ticks_log-date.png | Bin 0 -> 16267 bytes .../mocks/axes_custom-ticks_log-date.json | 58 ++++++++++++++++++ test/jasmine/tests/mock_test.js | 2 + 3 files changed, 60 insertions(+) create mode 100644 test/image/baselines/axes_custom-ticks_log-date.png create mode 100644 test/image/mocks/axes_custom-ticks_log-date.json diff --git a/test/image/baselines/axes_custom-ticks_log-date.png b/test/image/baselines/axes_custom-ticks_log-date.png new file mode 100644 index 0000000000000000000000000000000000000000..b52373b8516f8fdaf6b3ddc8a0b62641c945bc0a GIT binary patch literal 16267 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 JKps8+zW_hKlb`?q literal 0 HcmV?d00001 diff --git a/test/image/mocks/axes_custom-ticks_log-date.json b/test/image/mocks/axes_custom-ticks_log-date.json new file mode 100644 index 00000000000..261015f32d1 --- /dev/null +++ b/test/image/mocks/axes_custom-ticks_log-date.json @@ -0,0 +1,58 @@ +{ + "data": [{ + "type": "scatter", + "x": [ + "2010-01-01", + "2010-02-01", + "2010-03-01" + ], + "y": [ + 1, + 100, + 10 + ] + }], + "layout": { + "width": 500, + "height": 300, + "title": { + "text": "custom ticks on date & log axes" + }, + "paper_bgcolor": "lightblue", + "plot_bgcolor": "#ddd", + "yaxis": { + "type": "log", + "tickmode": "array", + "tickvals": [ + 1, + 10, + 100 + ], + "ticktext": [ + "one", + "ten", + "one
hundred" + ], + "gridwidth": 2, + "tickwidth": 15, + "tickcolor": "green", + "gridcolor": "green" + }, + "xaxis": { + "type": "date", + "tickmode": "array", + "tickvals": [ + "2010-01-16", + "2010-02-14" + ], + "ticktext": [ + "Jan 16", + "Feb 14" + ], + "gridwidth": 10, + "tickwidth": 50, + "tickcolor": "rgba(255,0,0,0.75)", + "gridcolor": "rgba(255,0,0,0.25)" + } + } +} diff --git a/test/jasmine/tests/mock_test.js b/test/jasmine/tests/mock_test.js index 0685d8f6001..c6054d51bbb 100644 --- a/test/jasmine/tests/mock_test.js +++ b/test/jasmine/tests/mock_test.js @@ -73,6 +73,7 @@ var list = [ 'axes_category_descending', 'axes_category_descending_with_gaps', 'axes_category_null', + 'axes_custom-ticks_log-date', 'axes_enumerated_ticks', 'axes_free_default', 'axes_labels', @@ -1108,6 +1109,7 @@ figs['axes_category_categoryarray_truncated_tails'] = require('@mocks/axes_categ // figs['axes_category_descending'] = require('@mocks/axes_category_descending'); // figs['axes_category_descending_with_gaps'] = require('@mocks/axes_category_descending_with_gaps'); figs['axes_category_null'] = require('@mocks/axes_category_null'); +figs['axes_custom-ticks_log-date'] = require('@mocks/axes_custom-ticks_log-date'); figs['axes_enumerated_ticks'] = require('@mocks/axes_enumerated_ticks'); figs['axes_free_default'] = require('@mocks/axes_free_default'); // figs['axes_labels'] = require('@mocks/axes_labels');