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