@@ -8,11 +8,12 @@ var ORDER = {
8
8
nonCluster : [ 'fill' , 'line' , 'circle' , 'symbol' ] ,
9
9
} ;
10
10
11
- function ScatterMapbox ( subplot , uid , clusterEnabled ) {
11
+ function ScatterMapbox ( subplot , uid , clusterEnabled , isHidden ) {
12
12
this . type = 'scattermapbox' ;
13
13
this . subplot = subplot ;
14
14
this . uid = uid ;
15
15
this . clusterEnabled = clusterEnabled ;
16
+ this . isHidden = isHidden ;
16
17
17
18
this . sourceIds = {
18
19
fill : 'source-' + uid + '-fill' ,
@@ -127,11 +128,12 @@ proto.update = function update(calcTrace) {
127
128
}
128
129
}
129
130
130
- function reset ( ) {
131
+ function repaint ( ) {
131
132
var order = hasCluster ? ORDER . cluster : ORDER . nonCluster ;
132
133
for ( var i = 0 ; i < order . length ; i ++ ) {
133
134
var k = order [ i ] ;
134
135
var opts = optsAll [ k ] ;
136
+ if ( ! opts ) continue ;
135
137
136
138
subplot . setOptions ( lThis . layerIds [ k ] , 'setLayoutProperty' , opts . layout ) ;
137
139
@@ -144,14 +146,22 @@ proto.update = function update(calcTrace) {
144
146
}
145
147
}
146
148
147
- if ( hadCluster !== hasCluster ) {
149
+ var wasHidden = this . isHidden ;
150
+ var isHidden = trace . visible !== true ;
151
+
152
+ if ( isHidden && ! wasHidden ) {
153
+ if ( hadCluster ) removeCluster ( ) ; else removeNonCluster ( ) ;
154
+ } else if ( ! isHidden && wasHidden ) {
155
+ if ( hasCluster ) addCluster ( ) ; else addNonCluster ( ) ;
156
+ } else if ( hadCluster !== hasCluster ) {
148
157
if ( hadCluster ) removeCluster ( ) ; else removeNonCluster ( ) ;
149
158
if ( hasCluster ) addCluster ( ) ; else addNonCluster ( ) ;
150
159
} else {
151
- reset ( ) ;
160
+ repaint ( ) ;
152
161
}
153
162
154
163
this . clusterEnabled = hasCluster ;
164
+ this . isHidden = isHidden ;
155
165
this . below = below ;
156
166
157
167
// link ref for quick update during selections
@@ -171,10 +181,13 @@ proto.dispose = function dispose() {
171
181
module . exports = function createScatterMapbox ( subplot , calcTrace ) {
172
182
var trace = calcTrace [ 0 ] . trace ;
173
183
var hasCluster = trace . cluster && trace . cluster . enabled ;
184
+ var isHidden = trace . visible !== true ;
185
+
174
186
var scatterMapbox = new ScatterMapbox (
175
187
subplot ,
176
188
trace . uid ,
177
- hasCluster
189
+ hasCluster ,
190
+ isHidden
178
191
) ;
179
192
180
193
var optsAll = convert ( subplot . gd , calcTrace ) ;
0 commit comments