Skip to content

Commit c1b871d

Browse files
committed
improve code readability, reuse existing code/logic in test
1 parent a375c99 commit c1b871d

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/components/legend/style.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ module.exports = function style(s, gd) {
2626
layers.style('opacity', d[0].trace.opacity);
2727

2828
// Marker vertical alignment
29-
var valignFactor = 0;
30-
if(gd._fullLayout.legend.valign === 'top') valignFactor = 1.0;
31-
if(gd._fullLayout.legend.valign === 'bottom') valignFactor = -1.0;
32-
var markerOffsetY = valignFactor * (0.5 * (d[0].lineHeight - d[0].height + 3));
33-
if(!isNaN(markerOffsetY)) layers.attr('transform', 'translate(0,' + markerOffsetY + ')');
29+
var valign = gd._fullLayout.legend.valign;
30+
var lineHeight = d[0].lineHeight;
31+
var height = d[0].height;
32+
33+
if(valign === 'middle' || !lineHeight || !height) {
34+
layers.attr('transform', null); // this here is a fun d3 trick to unset DOM attributes
35+
} else {
36+
var factor = {top: 1, bottom: -1}[valign];
37+
var markerOffsetY = factor * (0.5 * (lineHeight - height + 3));
38+
layers.attr('transform', 'translate(0,' + markerOffsetY + ')');
39+
}
3440

3541
var fill = layers
3642
.selectAll('g.legendfill')

test/jasmine/tests/legend_test.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ var createGraphDiv = require('../assets/create_graph_div');
1616
var destroyGraphDiv = require('../assets/destroy_graph_div');
1717
var assertPlotSize = require('../assets/custom_assertions').assertPlotSize;
1818

19+
var Drawing = require('@src/components/drawing');
20+
1921
describe('legend defaults', function() {
2022
'use strict';
2123

@@ -676,8 +678,8 @@ describe('legend relayout update', function() {
676678
afterEach(destroyGraphDiv);
677679

678680
function markerOffsetY() {
679-
var translateY = d3.select('.legend .traces .layers').attr('transform').match(/translate\(\d+,(-?\d+)\)/)[1];
680-
return parseFloat(translateY);
681+
var translate = Drawing.getTranslate(d3.select('.legend .traces .layers'));
682+
return translate.y;
681683
}
682684

683685
it('it should translate markers', function(done) {

0 commit comments

Comments
 (0)