@@ -85,41 +85,28 @@ proto.update = function update(calcTrace) {
85
85
var map = subplot . map ;
86
86
var optsAll = convert ( subplot . gd , calcTrace ) ;
87
87
var below = subplot . belowLookup [ 'trace-' + this . uid ] ;
88
- var i , k , opts , order ;
88
+ var i , k , opts ;
89
89
var hasCluster = ! ! ( trace . cluster && trace . cluster . enabled ) ;
90
90
var hadCluster = ! ! this . clusterEnabled ;
91
91
92
- if ( below !== this . below ) {
93
- order = hadCluster ? ORDER . cluster : ORDER . nonCluster ;
94
- for ( i = order . length - 1 ; i >= 0 ; i -- ) {
95
- k = order [ i ] ;
96
- map . removeLayer ( this . layerIds [ k ] ) ;
97
- }
98
-
99
- order = hasCluster ? ORDER . cluster : ORDER . nonCluster ;
100
- for ( i = 0 ; i < order . length ; i ++ ) {
101
- k = order [ i ] ;
102
- opts = optsAll [ k ] ;
103
- this . addLayer ( k , opts , below ) ;
104
- }
105
- } else if ( hasCluster && ! hadCluster ) {
106
- for ( i = ORDER . nonCluster . length - 1 ; i >= 0 ; i -- ) {
107
- k = ORDER . nonCluster [ i ] ;
108
- map . removeLayer ( this . layerIds [ k ] ) ;
109
- map . removeSource ( this . sourceIds [ k ] ) ;
110
- }
92
+ function addCluster ( ) {
111
93
this . addSource ( 'circle' , optsAll . circle , trace . cluster ) ;
112
94
for ( i = 0 ; i < ORDER . cluster . length ; i ++ ) {
113
95
k = ORDER . cluster [ i ] ;
114
96
opts = optsAll [ k ] ;
115
97
this . addLayer ( k , opts , below ) ;
116
98
}
117
- } else if ( ! hasCluster && hadCluster ) {
118
- for ( i = 0 ; i < ORDER . cluster . length ; i ++ ) {
99
+ }
100
+
101
+ function removeCluster ( ) {
102
+ for ( i = ORDER . cluster . length - 1 ; i >= 0 ; i -- ) {
119
103
k = ORDER . cluster [ i ] ;
120
104
map . removeLayer ( this . layerIds [ k ] ) ;
121
105
}
122
106
map . removeSource ( this . sourceIds . circle ) ;
107
+ }
108
+
109
+ function addNonCluster ( ) {
123
110
for ( i = 0 ; i < ORDER . nonCluster . length ; i ++ ) {
124
111
k = ORDER . nonCluster [ i ] ;
125
112
opts = optsAll [ k ] ;
@@ -128,16 +115,40 @@ proto.update = function update(calcTrace) {
128
115
}
129
116
}
130
117
131
- order = hasCluster ? ORDER . cluster : ORDER . nonCluster ;
132
- for ( i = 0 ; i < order . length ; i ++ ) {
133
- k = order [ i ] ;
134
- opts = optsAll [ k ] ;
118
+ function removeNonCluster ( ) {
119
+ for ( i = ORDER . nonCluster . length - 1 ; i >= 0 ; i -- ) {
120
+ k = ORDER . nonCluster [ i ] ;
121
+ map . removeLayer ( this . layerIds [ k ] ) ;
122
+ map . removeSource ( this . sourceIds [ k ] ) ;
123
+ }
124
+ }
125
+
126
+ if ( hasCluster && ! hadCluster ) {
127
+ removeNonCluster ( ) ;
128
+ addCluster ( ) ;
129
+ } else if ( ! hasCluster && hadCluster ) {
130
+ removeCluster ( ) ;
131
+ addNonCluster ( ) ;
132
+ } else if ( below !== this . below ) {
133
+ if ( ! hasCluster && ! hadCluster ) {
134
+ removeNonCluster ( ) ;
135
+ addNonCluster ( ) ;
136
+ } else if ( hasCluster && hadCluster ) {
137
+ removeCluster ( ) ;
138
+ addCluster ( ) ;
139
+ }
140
+ } else {
141
+ var order = hasCluster ? ORDER . cluster : ORDER . nonCluster ;
142
+ for ( i = 0 ; i < order . length ; i ++ ) {
143
+ k = order [ i ] ;
144
+ opts = optsAll [ k ] ;
135
145
136
- subplot . setOptions ( this . layerIds [ k ] , 'setLayoutProperty' , opts . layout ) ;
146
+ subplot . setOptions ( this . layerIds [ k ] , 'setLayoutProperty' , opts . layout ) ;
137
147
138
- if ( opts . layout . visibility === 'visible' ) {
139
- this . setSourceData ( k , opts ) ;
140
- subplot . setOptions ( this . layerIds [ k ] , 'setPaintProperty' , opts . paint ) ;
148
+ if ( opts . layout . visibility === 'visible' ) {
149
+ this . setSourceData ( k , opts ) ;
150
+ subplot . setOptions ( this . layerIds [ k ] , 'setPaintProperty' , opts . paint ) ;
151
+ }
141
152
}
142
153
}
143
154
0 commit comments