@@ -42,6 +42,31 @@ class PlotlyEditor extends Component {
42
42
} ;
43
43
}
44
44
45
+ maybeAdjustAxisRef ( payload ) {
46
+ const { graphDiv} = this . props ;
47
+ if ( payload . tracesNeedingAxisAdjustment ) {
48
+ payload . tracesNeedingAxisAdjustment . forEach ( trace => {
49
+ const axis = trace [ payload . axisAttrToAdjust ] . charAt ( 0 ) ;
50
+ const currentAxisIdNumber = Number (
51
+ trace [ payload . axisAttrToAdjust ] . slice ( 1 )
52
+ ) ;
53
+ const adjustedAxisIdNumber = currentAxisIdNumber - 1 ;
54
+
55
+ const currentAxisLayoutProperties = {
56
+ ...graphDiv . layout [ payload . axisAttrToAdjust + currentAxisIdNumber ] ,
57
+ } ;
58
+
59
+ // for cases when we're adjusting x2 => x, so that it becomes x not x1
60
+ graphDiv . data [ trace . index ] [ payload . axisAttrToAdjust ] =
61
+ adjustedAxisIdNumber === 1 ? axis : axis + adjustedAxisIdNumber ;
62
+
63
+ graphDiv . layout [
64
+ payload . axisAttrToAdjust + adjustedAxisIdNumber
65
+ ] = currentAxisLayoutProperties ;
66
+ } ) ;
67
+ }
68
+ }
69
+
45
70
handleUpdate ( { type, payload} ) {
46
71
const { graphDiv} = this . props ;
47
72
@@ -55,16 +80,20 @@ class PlotlyEditor extends Component {
55
80
// force clear axes types when a `src` has changed.
56
81
maybeClearAxisTypes ( graphDiv , payload . traceIndexes , payload . update ) ;
57
82
83
+ this . maybeAdjustAxisRef ( payload ) ;
84
+
58
85
for ( let i = 0 ; i < payload . traceIndexes . length ; i ++ ) {
59
86
for ( const attr in payload . update ) {
60
87
const traceIndex = payload . traceIndexes [ i ] ;
61
88
const prop = nestedProperty ( graphDiv . data [ traceIndex ] , attr ) ;
62
89
const value = payload . update [ attr ] ;
90
+
63
91
if ( value !== void 0 ) {
64
92
prop . set ( value ) ;
65
93
}
66
94
}
67
95
}
96
+
68
97
if ( this . props . afterUpdateTraces ) {
69
98
this . props . afterUpdateTraces ( payload ) ;
70
99
}
@@ -92,31 +121,6 @@ class PlotlyEditor extends Component {
92
121
}
93
122
break ;
94
123
95
- case EDITOR_ACTIONS . UPDATE_AXIS_REFERENCES :
96
- payload . tracesToAdjust . forEach ( trace => {
97
- const axis = trace [ payload . attrToAdjust ] . charAt ( 0 ) ;
98
- // n.b: currentAxisIdNumber will never be 0, i.e. Number('x'.slice(1)),
99
- // because payload.tracesToAdjust is a filter of all traces that have
100
- // an axis ID above the one of the axis ID we deprecated
101
- const currentAxisIdNumber = Number (
102
- trace [ payload . attrToAdjust ] . slice ( 1 )
103
- ) ;
104
- const adjustedAxisIdNumber = currentAxisIdNumber - 1 ;
105
-
106
- const currentAxisLayoutProperties = {
107
- ...graphDiv . layout [ payload . attrToAdjust + currentAxisIdNumber ] ,
108
- } ;
109
-
110
- graphDiv . data [ trace . index ] [ payload . attrToAdjust ] =
111
- // for cases when we're adjusting x2 => x, so that it becomes x not x1
112
- adjustedAxisIdNumber === 1 ? axis : axis + adjustedAxisIdNumber ;
113
-
114
- graphDiv . layout [
115
- payload . attrToAdjust + adjustedAxisIdNumber
116
- ] = currentAxisLayoutProperties ;
117
- } ) ;
118
- break ;
119
-
120
124
case EDITOR_ACTIONS . ADD_TRACE :
121
125
if ( this . props . beforeAddTrace ) {
122
126
this . props . beforeAddTrace ( payload ) ;
0 commit comments