Skip to content

Commit 66838e9

Browse files
committed
filter module data wrt 'visible' before geo plot routine:
- geo plot routine use a classic d3 join/enter/exit pattern - trace visibility is updated using exit selections - to simplify the logic, send only visible trace to the geo plot routine so that visible traces and svg trace groups match one to one.
1 parent 9f73cfd commit 66838e9

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/plots/geo/geo.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ var d3 = require('d3');
1515

1616
var Color = require('../../components/color');
1717
var Drawing = require('../../components/drawing');
18-
19-
var Plots = require('../../plots/plots');
2018
var Axes = require('../../plots/cartesian/axes');
2119

2220
var addProjectionsToD3 = require('./projections');
@@ -139,6 +137,20 @@ proto.plot = function(geoData, fullLayout, promises) {
139137
// to avoid making multiple request while streaming
140138
};
141139

140+
// filter out non-visible trace
141+
// geo plot routine use the classic join/enter/exit pattern to update traces
142+
function filterData(dataIn) {
143+
var dataOut = [];
144+
145+
for(var i = 0; i < dataIn.length; i++) {
146+
var trace = dataIn[i];
147+
148+
if(trace.visible === true) dataOut.push(trace);
149+
}
150+
151+
return dataOut;
152+
}
153+
142154
proto.onceTopojsonIsLoaded = function(geoData, geoLayout) {
143155
var traceData = {};
144156

@@ -153,8 +165,10 @@ proto.onceTopojsonIsLoaded = function(geoData, geoLayout) {
153165

154166
var traceKeys = Object.keys(traceData);
155167
for(var j = 0; j < traceKeys.length; j++){
156-
var traceKey = traceKeys[j];
157-
Plots.getModule(traceKey).plot(this, traceData[traceKey], geoLayout);
168+
var moduleData = traceData[traceKeys[j]];
169+
var _module = moduleData[0]._module;
170+
171+
_module.plot(this, filterData(moduleData), geoLayout);
158172
}
159173

160174
this.render();

src/traces/choropleth/plot.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ plotChoropleth.plot = function(geo, choroplethData, geoLayout) {
6868

6969
var gChoroplethTraces = gChoropleth
7070
.selectAll('g.trace.choropleth')
71-
.data(choroplethData);
71+
.data(choroplethData, function(trace) { return trace.uid; });
7272

7373
gChoroplethTraces.enter().append('g')
7474
.attr('class', 'trace choropleth');

src/traces/scattergeo/plot.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ function makeLineGeoJSON(trace) {
118118
plotScatterGeo.plot = function(geo, scattergeoData) {
119119
var gScatterGeoTraces = geo.framework.select('.scattergeolayer')
120120
.selectAll('g.trace.scattergeo')
121-
.data(scattergeoData);
121+
.data(scattergeoData, function(trace) { return trace.uid; });
122122

123123
gScatterGeoTraces.enter().append('g')
124124
.attr('class', 'trace scattergeo');

0 commit comments

Comments
 (0)