11
11
var isNumeric = require ( 'fast-isnumeric' ) ;
12
12
13
13
var Axes = require ( '../../plots/cartesian/axes' ) ;
14
+ var alignPeriod = require ( '../../plots/cartesian/align_period' ) ;
14
15
var Lib = require ( '../../lib' ) ;
15
16
16
17
var BADNUM = require ( '../../constants/numerical' ) . BADNUM ;
@@ -29,19 +30,24 @@ module.exports = function calc(gd, trace) {
29
30
var valAxis , valLetter ;
30
31
var posAxis , posLetter ;
31
32
33
+ var hasPeriod ;
32
34
if ( trace . orientation === 'h' ) {
33
35
valAxis = xa ;
34
36
valLetter = 'x' ;
35
37
posAxis = ya ;
36
38
posLetter = 'y' ;
39
+ hasPeriod = ! ! trace . yperiodalignment ;
37
40
} else {
38
41
valAxis = ya ;
39
42
valLetter = 'y' ;
40
43
posAxis = xa ;
41
44
posLetter = 'x' ;
45
+ hasPeriod = ! ! trace . xperiodalignment ;
42
46
}
43
47
44
- var posArray = getPos ( trace , posLetter , posAxis , fullLayout [ numKey ] ) ;
48
+ var allPosArrays = getPosArrays ( trace , posLetter , posAxis , fullLayout [ numKey ] ) ;
49
+ var posArray = allPosArrays [ 0 ] ;
50
+ var origPos = allPosArrays [ 1 ] ;
45
51
var dv = Lib . distinctVals ( posArray ) ;
46
52
var posDistinct = dv . vals ;
47
53
var dPos = dv . minDiff / 2 ;
@@ -77,6 +83,9 @@ module.exports = function calc(gd, trace) {
77
83
78
84
cdi = { } ;
79
85
cdi . pos = cdi [ posLetter ] = posi ;
86
+ if ( hasPeriod && origPos ) {
87
+ cdi . orig_p = origPos [ i ] ; // used by hover
88
+ }
80
89
81
90
cdi . q1 = d2c ( 'q1' ) ;
82
91
cdi . med = d2c ( 'median' ) ;
@@ -303,13 +312,15 @@ module.exports = function calc(gd, trace) {
303
312
// so if you want one box
304
313
// per trace, set x0 (y0) to the x (y) value or category for this trace
305
314
// (or set x (y) to a constant array matching y (x))
306
- function getPos ( trace , posLetter , posAxis , num ) {
315
+ function getPosArrays ( trace , posLetter , posAxis , num ) {
307
316
var hasPosArray = posLetter in trace ;
308
317
var hasPos0 = posLetter + '0' in trace ;
309
318
var hasPosStep = 'd' + posLetter in trace ;
310
319
311
320
if ( hasPosArray || ( hasPos0 && hasPosStep ) ) {
312
- return posAxis . makeCalcdata ( trace , posLetter ) ;
321
+ var origPos = posAxis . makeCalcdata ( trace , posLetter ) ;
322
+ var pos = alignPeriod ( trace , posAxis , posLetter , origPos ) ;
323
+ return [ pos , origPos ] ;
313
324
}
314
325
315
326
var pos0 ;
@@ -337,7 +348,7 @@ function getPos(trace, posLetter, posAxis, num) {
337
348
var out = new Array ( len ) ;
338
349
for ( var i = 0 ; i < len ; i ++ ) out [ i ] = pos0c ;
339
350
340
- return out ;
351
+ return [ out ] ;
341
352
}
342
353
343
354
function makeBins ( x , dx ) {
0 commit comments