@@ -36,19 +36,39 @@ function calc(gd, trace) {
36
36
// only differ here for log axes, pass ldata to createMatrix as 'data'
37
37
var cdata = opts . cdata = [ ] ;
38
38
var ldata = opts . data = [ ] ;
39
- var i , k , dim ;
39
+ var i , k , dim , xa , ya ;
40
+
41
+ function makeCalcdata ( ax , dim ) {
42
+ // call makeCalcdata with fake input
43
+ var ccol = ax . makeCalcdata ( {
44
+ v : dim . values ,
45
+ vcalendar : trace . calendar
46
+ } , 'v' ) ;
47
+
48
+ for ( var i = 0 ; i < ccol . length ; i ++ ) {
49
+ ccol [ i ] = ccol [ i ] === BADNUM ? NaN : ccol [ i ] ;
50
+ }
51
+ cdata . push ( ccol ) ;
52
+ ldata . push ( ax . type === 'log' ? Lib . simpleMap ( ccol , ax . c2l ) : ccol ) ;
53
+ }
40
54
41
55
for ( i = 0 ; i < dimensions . length ; i ++ ) {
42
56
dim = dimensions [ i ] ;
43
57
44
58
if ( dim . visible ) {
45
- var axId = trace . _diag [ i ] [ 0 ] || trace . _diag [ i ] [ 1 ] ;
46
- var ax = AxisIDs . getFromId ( gd , axId ) ;
47
- if ( ax ) {
48
- var ccol = makeCalcdata ( ax , trace , dim ) ;
49
- var lcol = ax . type === 'log' ? Lib . simpleMap ( ccol , ax . c2l ) : ccol ;
50
- cdata . push ( ccol ) ;
51
- ldata . push ( lcol ) ;
59
+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
60
+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
61
+
62
+ if ( xa ) {
63
+ makeCalcdata ( xa , dim ) ;
64
+ if ( ya && ya . type === 'category' ) {
65
+ ya . _categories = xa . _categories . slice ( ) ;
66
+ }
67
+ } else if ( ya ) {
68
+ makeCalcdata ( ya , dim ) ;
69
+ if ( xa && xa . type === 'category' ) {
70
+ xa . _categories = ya . _categories . slice ( ) ;
71
+ }
52
72
}
53
73
}
54
74
}
@@ -63,8 +83,8 @@ function calc(gd, trace) {
63
83
dim = dimensions [ i ] ;
64
84
65
85
if ( dim . visible ) {
66
- var xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
67
- var ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
86
+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
87
+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
68
88
69
89
// Reuse SVG scatter axis expansion routine.
70
90
// For graphs with very large number of points and array marker.size,
@@ -91,20 +111,6 @@ function calc(gd, trace) {
91
111
return [ { x : false , y : false , t : stash , trace : trace } ] ;
92
112
}
93
113
94
- function makeCalcdata ( ax , trace , dim ) {
95
- // call makeCalcdata with fake input
96
- var ccol = ax . makeCalcdata ( {
97
- v : dim . values ,
98
- vcalendar : trace . calendar
99
- } , 'v' ) ;
100
-
101
- for ( var i = 0 ; i < ccol . length ; i ++ ) {
102
- ccol [ i ] = ccol [ i ] === BADNUM ? NaN : ccol [ i ] ;
103
- }
104
-
105
- return ccol ;
106
- }
107
-
108
114
function sceneUpdate ( gd , stash ) {
109
115
var scene = stash . _scene ;
110
116
0 commit comments