Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 71c5355

Browse files
committed
improve selection queries
- using stashed geo layers
1 parent eeee911 commit 71c5355

File tree

2 files changed

+24
-26
lines changed

2 files changed

+24
-26
lines changed

src/traces/choropleth/plot.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,12 @@ function calcGeoJSON(calcTrace, topojson) {
9292
}
9393

9494
function style(geo) {
95-
geo.framework.selectAll('g.trace.choropleth').each(function(calcTrace) {
96-
var trace = calcTrace[0].trace,
97-
s = d3.select(this),
98-
marker = trace.marker || {},
99-
markerLine = marker.line || {};
95+
var gTraces = geo.layers.backplot.selectAll('.trace.choropleth');
96+
97+
gTraces.each(function(calcTrace) {
98+
var trace = calcTrace[0].trace;
99+
var marker = trace.marker || {};
100+
var markerLine = marker.line || {};
100101

101102
var sclFunc = Colorscale.makeColorScaleFunc(
102103
Colorscale.extractScale(
@@ -106,13 +107,11 @@ function style(geo) {
106107
)
107108
);
108109

109-
s.selectAll('path.choroplethlocation').each(function(_, i) {
110-
var pt = calcTrace[i];
111-
110+
d3.select(this).selectAll('.choroplethlocation').each(function(d) {
112111
d3.select(this)
113-
.attr('fill', sclFunc(pt.z))
114-
.call(Color.stroke, pt.mlc || markerLine.color)
115-
.call(Drawing.dashLine, '', pt.mlw || markerLine.width || 0);
112+
.attr('fill', sclFunc(d.z))
113+
.call(Color.stroke, d.mlc || markerLine.color)
114+
.call(Drawing.dashLine, '', d.mlw || markerLine.width || 0);
116115
});
117116
});
118117
}

src/traces/scattergeo/plot.js

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ var locationToFeature = require('../../lib/geo_location_utils').locationToFeatur
2121
var geoJsonUtils = require('../../lib/geojson_utils');
2222
var subTypes = require('../scatter/subtypes');
2323

24-
2524
module.exports = function plot(geo, calcData) {
2625
for(var i = 0; i < calcData.length; i++) {
2726
calcGeoJSON(calcData[i], geo.topojson);
@@ -35,19 +34,19 @@ module.exports = function plot(geo, calcData) {
3534
}
3635
}
3736

38-
var gScatterGeoTraces = geo.layers.frontplot.select('.scatterlayer')
37+
var gTraces = geo.layers.frontplot.select('.scatterlayer')
3938
.selectAll('g.trace.scattergeo')
4039
.data(calcData, keyFunc);
4140

42-
gScatterGeoTraces.enter().append('g')
41+
gTraces.enter().append('g')
4342
.attr('class', 'trace scattergeo');
4443

45-
gScatterGeoTraces.exit().remove();
44+
gTraces.exit().remove();
4645

4746
// TODO find a way to order the inner nodes on update
48-
gScatterGeoTraces.selectAll('*').remove();
47+
gTraces.selectAll('*').remove();
4948

50-
gScatterGeoTraces.each(function(calcTrace) {
49+
gTraces.each(function(calcTrace) {
5150
var s = calcTrace[0].node3 = d3.select(this);
5251
var trace = calcTrace[0].trace;
5352

@@ -103,15 +102,15 @@ function calcGeoJSON(calcTrace, topojson) {
103102
}
104103

105104
function style(geo) {
106-
var selection = geo.framework.selectAll('g.trace.scattergeo');
105+
var gTraces = geo.layers.frontplot.selectAll('.trace.scattergeo');
107106

108-
selection.style('opacity', function(calcTrace) {
107+
gTraces.style('opacity', function(calcTrace) {
109108
return calcTrace[0].trace.opacity;
110109
});
111110

112-
selection.each(function(calcTrace) {
113-
var trace = calcTrace[0].trace,
114-
group = d3.select(this);
111+
gTraces.each(function(calcTrace) {
112+
var trace = calcTrace[0].trace;
113+
var group = d3.select(this);
115114

116115
group.selectAll('path.point')
117116
.call(Drawing.pointStyle, trace, geo.graphDiv);
@@ -120,12 +119,12 @@ function style(geo) {
120119
});
121120

122121
// this part is incompatible with Drawing.lineGroupStyle
123-
selection.selectAll('path.js-line')
122+
gTraces.selectAll('path.js-line')
124123
.style('fill', 'none')
125124
.each(function(d) {
126-
var path = d3.select(this),
127-
trace = d.trace,
128-
line = trace.line || {};
125+
var path = d3.select(this);
126+
var trace = d.trace;
127+
var line = trace.line || {};
129128

130129
path.call(Color.stroke, line.color)
131130
.call(Drawing.dashLine, line.dash || '', line.width || 0);

0 commit comments

Comments
 (0)