@@ -102,12 +102,20 @@ function calc(gd, trace) {
102
102
} ;
103
103
}
104
104
105
+ if ( ! gd . _fullLayout . _roundFnOpts ) gd . _fullLayout . _roundFnOpts = { } ;
106
+ var groupName = trace [ '_' + mainData + 'bingroup' ] ;
107
+ var roundFnOpts = { leftGap : Infinity , rightGap : Infinity } ;
108
+ if ( groupName ) {
109
+ if ( ! gd . _fullLayout . _roundFnOpts [ groupName ] ) gd . _fullLayout . _roundFnOpts [ groupName ] = roundFnOpts ;
110
+ roundFnOpts = gd . _fullLayout . _roundFnOpts [ groupName ] ;
111
+ }
112
+
105
113
// bin the data
106
114
// and make histogram-specific pt-number-to-cd-index map object
107
115
var nMax = size . length ;
108
116
var uniqueValsPerBin = true ;
109
- var leftGap = Infinity ;
110
- var rightGap = Infinity ;
117
+ var leftGap = roundFnOpts . leftGap ;
118
+ var rightGap = roundFnOpts . rightGap ;
111
119
var ptNumber2cdIndex = { } ;
112
120
for ( i = 0 ; i < pos0 . length ; i ++ ) {
113
121
var posi = pos0 [ i ] ;
@@ -124,10 +132,17 @@ function calc(gd, trace) {
124
132
rightGap = Math . min ( rightGap , binEdges [ n + 1 ] - posi ) ;
125
133
}
126
134
}
135
+ roundFnOpts . leftGap = leftGap ;
136
+ roundFnOpts . rightGap = rightGap ;
127
137
128
138
var roundFn ;
129
139
if ( ! uniqueValsPerBin ) {
130
- roundFn = getBinSpanLabelRound ( leftGap , rightGap , binEdges , pa , calendar ) ;
140
+ roundFn = function ( v , isRightEdge ) {
141
+ return function ( ) {
142
+ var roundFnOpts = gd . _fullLayout . _roundFnOpts [ groupName ] ;
143
+ return getBinSpanLabelRound ( roundFnOpts . leftGap , roundFnOpts . rightGap , binEdges , pa , calendar ) ( v , isRightEdge ) ;
144
+ } ;
145
+ } ;
131
146
}
132
147
133
148
// average and/or normalize the data, if needed
@@ -173,6 +188,8 @@ function calc(gd, trace) {
173
188
if ( uniqueValsPerBin ) {
174
189
cdi . ph0 = cdi . ph1 = ( inputPoints [ i ] . length ) ? pos0 [ inputPoints [ i ] [ 0 ] ] : pos [ i ] ;
175
190
} else {
191
+ // Defer evaluation of ph(0|1) in crossTraceCalc
192
+ trace . _computePh = true ;
176
193
cdi . ph0 = roundFn ( binEdges [ i ] ) ;
177
194
cdi . ph1 = roundFn ( binEdges [ i + 1 ] , true ) ;
178
195
}
0 commit comments