Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0f0711f

Browse filesBrowse files
committed
sliders enter and exit adjustment
1 parent 9b48dca commit 0f0711f
Copy full SHA for 0f0711f

File tree

Expand file treeCollapse file tree

1 file changed

+38
-30
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+38
-30
lines changed

‎src/components/sliders/draw.js

Copy file name to clipboardExpand all lines: src/components/sliders/draw.js
+38-30Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ module.exports = function draw(gd) {
2121
var sliderData = makeSliderData(fullLayout, gd);
2222

2323
// draw a container for *all* sliders:
24-
var sliders = fullLayout._infolayer
25-
.selectAll('g.' + constants.containerClassName)
26-
.data(sliderData.length > 0 ? [0] : []);
24+
var sliders = fullLayout._infolayer.selectAll('g.' + constants.containerClassName)
25+
.data(sliderData.length > 0 ? [0] : [])
26+
.enter()
27+
.append('g');
2728

28-
sliders.enter().append('g')
29+
sliders.exit().each(function() {
30+
d3.select(this).selectAll('g.' + constants.groupClassName)
31+
.each(clearSlider);
32+
}).remove();
33+
34+
sliders
2935
.classed(constants.containerClassName, true)
3036
.style('cursor', 'ew-resize');
3137

@@ -41,25 +47,21 @@ module.exports = function draw(gd) {
4147
Plots.autoMargin(gd, autoMarginId(sliderOpts));
4248
}
4349

44-
sliders.exit().each(function() {
45-
d3.select(this).selectAll('g.' + constants.groupClassName)
46-
.each(clearSlider);
47-
})
48-
.remove();
49-
5050
// Return early if no menus visible:
5151
if(sliderData.length === 0) return;
5252

5353
var sliderGroups = sliders.selectAll('g.' + constants.groupClassName)
54-
.data(sliderData, keyFunction);
55-
56-
sliderGroups.enter().append('g')
57-
.classed(constants.groupClassName, true);
54+
.data(sliderData, keyFunction)
55+
.enter()
56+
.append('g');
5857

5958
sliderGroups.exit()
6059
.each(clearSlider)
6160
.remove();
6261

62+
sliderGroups
63+
.classed(constants.groupClassName, true);
64+
6365
// Find the dimensions of the sliders:
6466
for(var i = 0; i < sliderData.length; i++) {
6567
var sliderOpts = sliderData[i];
@@ -117,11 +119,15 @@ function keyFunction(opts) {
117119
// Compute the dimensions (mutates sliderOpts):
118120
function findDimensions(gd, sliderOpts) {
119121
var sliderLabels = Drawing.tester.selectAll('g.' + constants.labelGroupClass)
120-
.data(sliderOpts._visibleSteps);
122+
.data(sliderOpts._visibleSteps)
123+
.enter()
124+
.append('g');
121125

122-
sliderLabels.enter().append('g')
126+
sliderLabels
123127
.classed(constants.labelGroupClass, true);
124128

129+
sliderLabels.remove();
130+
125131
// loop over fake buttons to find width / height
126132
var maxLabelWidth = 0;
127133
var labelHeight = 0;
@@ -138,8 +144,6 @@ function findDimensions(gd, sliderOpts) {
138144
}
139145
});
140146

141-
sliderLabels.remove();
142-
143147
var dims = sliderOpts._dims = {};
144148

145149
dims.inputAreaWidth = Math.max(
@@ -371,13 +375,15 @@ function drawLabelGroup(sliderGroup, sliderOpts) {
371375
var dims = sliderOpts._dims;
372376

373377
var labelItems = labels.selectAll('g.' + constants.labelGroupClass)
374-
.data(dims.labelSteps);
375-
376-
labelItems.enter().append('g')
377-
.classed(constants.labelGroupClass, true);
378+
.data(dims.labelSteps)
379+
.enter()
380+
.append('g');
378381

379382
labelItems.exit().remove();
380383

384+
labelItems
385+
.classed(constants.labelGroupClass, true);
386+
381387
labelItems.each(function(d) {
382388
var item = d3.select(this);
383389

@@ -497,19 +503,21 @@ function attachGripEvents(item, gd, sliderGroup) {
497503
}
498504

499505
function drawTicks(sliderGroup, sliderOpts) {
500-
var tick = sliderGroup.selectAll('rect.' + constants.tickRectClass)
501-
.data(sliderOpts._visibleSteps);
502506
var dims = sliderOpts._dims;
503507

504-
tick.enter().append('rect')
505-
.classed(constants.tickRectClass, true);
508+
var tick = sliderGroup.selectAll('rect.' + constants.tickRectClass)
509+
.data(sliderOpts._visibleSteps)
510+
.enter()
511+
.append('rect');
506512

507513
tick.exit().remove();
508514

509-
tick.attrs({
510-
width: sliderOpts.tickwidth + 'px',
511-
'shape-rendering': 'crispEdges'
512-
});
515+
tick
516+
.classed(constants.tickRectClass, true)
517+
.attrs({
518+
width: sliderOpts.tickwidth + 'px',
519+
'shape-rendering': 'crispEdges'
520+
});
513521

514522
tick.each(function(d, i) {
515523
var isMajor = i % dims.labelStride === 0;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.