Skip to content

Commit 866b069

Browse files
committed
move align period step to traces so that we could record original positions for hover
1 parent f1f0995 commit 866b069

File tree

14 files changed

+43
-15
lines changed

14 files changed

+43
-15
lines changed

src/plots/cartesian/align_period.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ var ONEAVGMONTH = constants.ONEAVGMONTH;
1818
var ONEAVGYEAR = constants.ONEAVGYEAR;
1919

2020
module.exports = function alignPeriod(trace, ax, axLetter, vals) {
21+
if(ax.type !== 'date') return vals;
22+
2123
var alignment = trace[axLetter + 'periodalignment'];
2224
if(!alignment) return vals;
2325

src/plots/cartesian/axes.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,10 +1334,6 @@ function formatDate(ax, out, hover, extraPrecision) {
13341334
var tr = ax._tickround;
13351335
var fmt = (hover && ax.hoverformat) || axes.getTickFormat(ax);
13361336

1337-
if(ax.ticklabelmode === 'period') {
1338-
extraPrecision = false;
1339-
}
1340-
13411337
if(extraPrecision) {
13421338
// second or sub-second precision: extra always shows max digits.
13431339
// for other fields, extra precision just adds one field.

src/plots/cartesian/set_convert.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ var ONEMIN = numConstants.ONEMIN;
3030
var ONESEC = numConstants.ONESEC;
3131

3232
var axisIds = require('./axis_ids');
33-
var alignPeriod = require('./align_period');
34-
3533
var constants = require('./constants');
3634
var HOUR_PATTERN = constants.HOUR_PATTERN;
3735
var WEEKDAY_PATTERN = constants.WEEKDAY_PATTERN;
@@ -848,10 +846,6 @@ module.exports = function setConvert(ax, fullLayout) {
848846
}
849847
}
850848

851-
if(axType === 'date') {
852-
arrayOut = alignPeriod(trace, ax, axLetter, arrayOut);
853-
}
854-
855849
return arrayOut;
856850
};
857851

src/traces/bar/calc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
'use strict';
1010

1111
var Axes = require('../../plots/cartesian/axes');
12+
var alignPeriod = require('../../plots/cartesian/align_period');
1213
var hasColorscale = require('../../components/colorscale/helpers').hasColorscale;
1314
var colorscaleCalc = require('../../components/colorscale/calc');
1415
var arraysToCalcdata = require('./arrays_to_calcdata');
@@ -26,9 +27,11 @@ module.exports = function calc(gd, trace) {
2627
if(trace.orientation === 'h') {
2728
size = xa.makeCalcdata(trace, 'x', sizeOpts);
2829
pos = ya.makeCalcdata(trace, 'y');
30+
pos = alignPeriod(trace, ya, 'y', pos);
2931
} else {
3032
size = ya.makeCalcdata(trace, 'y', sizeOpts);
3133
pos = xa.makeCalcdata(trace, 'x');
34+
pos = alignPeriod(trace, xa, 'x', pos);
3235
}
3336

3437
// create the "calculated data" to plot

src/traces/box/calc.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
var isNumeric = require('fast-isnumeric');
1212

1313
var Axes = require('../../plots/cartesian/axes');
14+
var alignPeriod = require('../../plots/cartesian/align_period');
1415
var Lib = require('../../lib');
1516

1617
var BADNUM = require('../../constants/numerical').BADNUM;
@@ -309,7 +310,9 @@ function getPos(trace, posLetter, posAxis, num) {
309310
var hasPosStep = 'd' + posLetter in trace;
310311

311312
if(hasPosArray || (hasPos0 && hasPosStep)) {
312-
return posAxis.makeCalcdata(trace, posLetter);
313+
var pos = posAxis.makeCalcdata(trace, posLetter);
314+
pos = alignPeriod(trace, posAxis, posLetter, pos);
315+
return pos;
313316
}
314317

315318
var pos0;

src/traces/candlestick/calc.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
var Lib = require('../../lib');
1212
var Axes = require('../../plots/cartesian/axes');
13+
var alignPeriod = require('../../plots/cartesian/align_period');
1314

1415
var calcCommon = require('../ohlc/calc').calcCommon;
1516

@@ -19,6 +20,7 @@ module.exports = function(gd, trace) {
1920
var ya = Axes.getFromId(gd, trace.yaxis);
2021

2122
var x = xa.makeCalcdata(trace, 'x');
23+
x = alignPeriod(trace, xa, 'x', x);
2224

2325
var cd = calcCommon(gd, trace, x, ya, ptFunc);
2426

src/traces/funnel/calc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
'use strict';
1010

1111
var Axes = require('../../plots/cartesian/axes');
12+
var alignPeriod = require('../../plots/cartesian/align_period');
1213
var arraysToCalcdata = require('./arrays_to_calcdata');
1314
var calcSelection = require('../scatter/calc_selection');
1415
var BADNUM = require('../../constants/numerical').BADNUM;
@@ -21,9 +22,11 @@ module.exports = function calc(gd, trace) {
2122
if(trace.orientation === 'h') {
2223
size = xa.makeCalcdata(trace, 'x');
2324
pos = ya.makeCalcdata(trace, 'y');
25+
pos = alignPeriod(trace, ya, 'y', pos);
2426
} else {
2527
size = ya.makeCalcdata(trace, 'y');
2628
pos = xa.makeCalcdata(trace, 'x');
29+
pos = alignPeriod(trace, xa, 'x', pos);
2730
}
2831

2932
// create the "calculated data" to plot

src/traces/heatmap/calc.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
var Registry = require('../../registry');
1212
var Lib = require('../../lib');
1313
var Axes = require('../../plots/cartesian/axes');
14+
var alignPeriod = require('../../plots/cartesian/align_period');
1415

1516
var histogram2dCalc = require('../histogram2d/calc');
1617
var colorscaleCalc = require('../../components/colorscale/calc');
@@ -62,7 +63,11 @@ module.exports = function calc(gd, trace) {
6263
zIn = trace._z;
6364
} else {
6465
x = trace._x = trace.x ? xa.makeCalcdata(trace, 'x') : [];
65-
y = trace._y = trace.y ? ya.makeCalcdata(trace, 'y') : [];
66+
y = trace.y ? ya.makeCalcdata(trace, 'y') : [];
67+
x = alignPeriod(trace, xa, 'x', x);
68+
y = alignPeriod(trace, ya, 'y', y);
69+
trace._x = x;
70+
trace._y = y;
6671
}
6772

6873
x0 = trace.x0;

src/traces/heatmap/convert_column_xyz.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111

1212
var Lib = require('../../lib');
1313
var BADNUM = require('../../constants/numerical').BADNUM;
14+
var alignPeriod = require('../../plots/cartesian/align_period');
1415

1516
module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, arrayVarNames) {
1617
var colLen = trace._length;
1718
var col1 = ax1.makeCalcdata(trace, var1Name);
1819
var col2 = ax2.makeCalcdata(trace, var2Name);
20+
col1 = alignPeriod(trace, ax1, var1Name, col1);
21+
col2 = alignPeriod(trace, ax2, var2Name, col2);
22+
1923
var textCol = trace.text;
2024
var hasColumnText = (textCol !== undefined && Lib.isArray1D(textCol));
2125
var hoverTextCol = trace.hovertext;

src/traces/histogram/calc.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var isNumeric = require('fast-isnumeric');
1313
var Lib = require('../../lib');
1414
var Registry = require('../../registry');
1515
var Axes = require('../../plots/cartesian/axes');
16+
var alignPeriod = require('../../plots/cartesian/align_period');
1617

1718
var arraysToCalcdata = require('../bar/arrays_to_calcdata');
1819
var binFunctions = require('./bin_functions');
@@ -272,7 +273,9 @@ function calcAllAutoBins(gd, trace, pa, mainData, _overlayEdgeCase) {
272273

273274
if(tracei.visible) {
274275
var mainDatai = binOpts.dirs[i];
275-
pos0 = tracei['_' + mainDatai + 'pos0'] = pa.makeCalcdata(tracei, mainDatai);
276+
pos0 = pa.makeCalcdata(tracei, mainDatai);
277+
pos0 = alignPeriod(trace, pa, mainData, pos0);
278+
tracei['_' + mainDatai + 'pos0'] = pos0;
276279

277280
allPos = Lib.concat(allPos, pos0);
278281
delete tracei['_' + mainData + 'autoBinFinished'];

src/traces/ohlc/calc.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
var Lib = require('../../lib');
1212
var _ = Lib._;
1313
var Axes = require('../../plots/cartesian/axes');
14+
var alignPeriod = require('../../plots/cartesian/align_period');
1415
var BADNUM = require('../../constants/numerical').BADNUM;
1516

1617
function calc(gd, trace) {
@@ -144,6 +145,7 @@ function convertTickWidth(gd, xa, trace) {
144145
ohlcTracesOnThisXaxis.push(tracei);
145146

146147
var xcalc = xa.makeCalcdata(tracei, 'x');
148+
xcalc = alignPeriod(trace, xa, 'x', xcalc);
147149
tracei._xcalc = xcalc;
148150

149151
var _minDiff = Lib.distinctVals(xcalc).minDiff;

src/traces/scatter/calc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var isNumeric = require('fast-isnumeric');
1212
var Lib = require('../../lib');
1313

1414
var Axes = require('../../plots/cartesian/axes');
15+
var alignPeriod = require('../../plots/cartesian/align_period');
1516
var BADNUM = require('../../constants/numerical').BADNUM;
1617

1718
var subTypes = require('./subtypes');
@@ -25,6 +26,8 @@ function calc(gd, trace) {
2526
var ya = Axes.getFromId(gd, trace.yaxis || 'y');
2627
var x = xa.makeCalcdata(trace, 'x');
2728
var y = ya.makeCalcdata(trace, 'y');
29+
x = alignPeriod(trace, xa, 'x', x);
30+
y = alignPeriod(trace, ya, 'y', y);
2831

2932
var serieslen = trace._length;
3033
var cd = new Array(serieslen);

src/traces/scattergl/calc.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var cluster = require('@plotly/point-cluster');
1313
var Lib = require('../../lib');
1414
var AxisIDs = require('../../plots/cartesian/axis_ids');
1515
var findExtremes = require('../../plots/cartesian/autorange').findExtremes;
16+
var alignPeriod = require('../../plots/cartesian/align_period');
1617

1718
var scatterCalc = require('../scatter/calc');
1819
var calcMarkerSize = scatterCalc.calcMarkerSize;
@@ -36,8 +37,12 @@ module.exports = function calc(gd, trace) {
3637
var stash = {};
3738
var i, xx, yy;
3839

39-
var x = trace._x = xa.makeCalcdata(trace, 'x');
40-
var y = trace._y = ya.makeCalcdata(trace, 'y');
40+
var x = xa.makeCalcdata(trace, 'x');
41+
var y = ya.makeCalcdata(trace, 'y');
42+
x = alignPeriod(trace, xa, 'x', x);
43+
y = alignPeriod(trace, ya, 'y', y);
44+
trace._x = x;
45+
trace._y = y;
4146

4247
// we need hi-precision for scatter2d,
4348
// regl-scatter2d uses NaNs for bad/missing values

src/traces/waterfall/calc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
'use strict';
1010

1111
var Axes = require('../../plots/cartesian/axes');
12+
var alignPeriod = require('../../plots/cartesian/align_period');
1213
var mergeArray = require('../../lib').mergeArray;
1314
var calcSelection = require('../scatter/calc_selection');
1415
var BADNUM = require('../../constants/numerical').BADNUM;
@@ -29,9 +30,11 @@ module.exports = function calc(gd, trace) {
2930
if(trace.orientation === 'h') {
3031
size = xa.makeCalcdata(trace, 'x');
3132
pos = ya.makeCalcdata(trace, 'y');
33+
pos = alignPeriod(trace, ya, 'y', pos);
3234
} else {
3335
size = ya.makeCalcdata(trace, 'y');
3436
pos = xa.makeCalcdata(trace, 'x');
37+
pos = alignPeriod(trace, xa, 'x', pos);
3538
}
3639

3740
// create the "calculated data" to plot

0 commit comments

Comments
 (0)