@@ -20,6 +20,8 @@ var subTypes = require('../../traces/scatter/subtypes');
20
20
var stylePie = require ( '../../traces/pie/style_one' ) ;
21
21
var pieCastOption = require ( '../../traces/pie/helpers' ) . castOption ;
22
22
23
+ var constants = require ( './constants' ) ;
24
+
23
25
var CST_MARKER_SIZE = 12 ;
24
26
var CST_LINE_WIDTH = 5 ;
25
27
var CST_MARKER_LINE_WIDTH = 2 ;
@@ -30,6 +32,9 @@ module.exports = function style(s, gd, legend) {
30
32
var fullLayout = gd . _fullLayout ;
31
33
if ( ! legend ) legend = fullLayout . legend ;
32
34
var constantItemSizing = legend . itemsizing === 'constant' ;
35
+ var itemWidth = legend . itemwidth ;
36
+ var centerPos = ( itemWidth + constants . itemGap * 2 ) / 2 ;
37
+ var centerTransform = 'translate(' + centerPos + ',0)' ;
33
38
34
39
var boundLineWidth = function ( mlw , cont , max , cst ) {
35
40
var v ;
@@ -161,7 +166,7 @@ module.exports = function style(s, gd, legend) {
161
166
. data ( showFill || showGradientFill ? [ d ] : [ ] ) ;
162
167
fill . enter ( ) . append ( 'path' ) . classed ( 'js-fill' , true ) ;
163
168
fill . exit ( ) . remove ( ) ;
164
- fill . attr ( 'd' , pathStart + 'h30v6h-30z ' )
169
+ fill . attr ( 'd' , pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z ')
165
170
. call ( showFill ? Drawing . fillGroupStyle : fillGradient ) ;
166
171
167
172
if ( showLine || showGradientLine ) {
@@ -181,7 +186,7 @@ module.exports = function style(s, gd, legend) {
181
186
// though there *is* no vertical variation in this case.
182
187
// so add an invisibly small angle to the line
183
188
// This issue (and workaround) exist across (Mac) Chrome, FF, and Safari
184
- line . attr ( 'd' , pathStart + ( showGradientLine ? 'l30 ,0.0001' : 'h30' ) )
189
+ line . attr ( 'd' , pathStart + ( showGradientLine ? 'l' + itemWidth + ' ,0.0001' : 'h' + itemWidth ) )
185
190
. call ( showLine ? Drawing . lineGroupStyle : lineGradient ) ;
186
191
}
187
192
@@ -271,7 +276,7 @@ module.exports = function style(s, gd, legend) {
271
276
// make sure marker is on the bottom, in case it enters after text
272
277
pts . enter ( ) . insert ( 'path' , ':first-child' )
273
278
. classed ( 'scatterpts' , true )
274
- . attr ( 'transform' , 'translate(20,0)' ) ;
279
+ . attr ( 'transform' , centerTransform ) ;
275
280
pts . exit ( ) . remove ( ) ;
276
281
pts . call ( Drawing . pointStyle , tMod , gd ) ;
277
282
@@ -283,7 +288,7 @@ module.exports = function style(s, gd, legend) {
283
288
. data ( showText ? dMod : [ ] ) ;
284
289
txt . enter ( )
285
290
. append ( 'g' ) . classed ( 'pointtext' , true )
286
- . append ( 'text' ) . attr ( 'transform' , 'translate(20,0)' ) ;
291
+ . append ( 'text' ) . attr ( 'transform' , centerTransform ) ;
287
292
txt . exit ( ) . remove ( ) ;
288
293
txt . selectAll ( 'text' ) . call ( Drawing . textPointStyle , tMod , gd ) ;
289
294
}
@@ -311,7 +316,7 @@ module.exports = function style(s, gd, legend) {
311
316
. selectAll ( 'path.legendwaterfall' )
312
317
. data ( ptsData ) ;
313
318
pts . enter ( ) . append ( 'path' ) . classed ( 'legendwaterfall' , true )
314
- . attr ( 'transform' , 'translate(20,0)' )
319
+ . attr ( 'transform' , centerTransform )
315
320
. style ( 'stroke-miterlimit' , 1 ) ;
316
321
pts . exit ( ) . remove ( ) ;
317
322
@@ -351,7 +356,7 @@ module.exports = function style(s, gd, legend) {
351
356
. data ( isVisible ? [ d ] : [ ] ) ;
352
357
barpath . enter ( ) . append ( 'path' ) . classed ( 'legend' + desiredType , true )
353
358
. attr ( 'd' , 'M6,6H-6V-6H6Z' )
354
- . attr ( 'transform' , 'translate(20,0)' ) ;
359
+ . attr ( 'transform' , centerTransform ) ;
355
360
barpath . exit ( ) . remove ( ) ;
356
361
357
362
barpath . each ( function ( d ) {
@@ -375,7 +380,7 @@ module.exports = function style(s, gd, legend) {
375
380
pts . enter ( ) . append ( 'path' ) . classed ( 'legendbox' , true )
376
381
// if we want the median bar, prepend M6,0H-6
377
382
. attr ( 'd' , 'M6,6H-6V-6H6Z' )
378
- . attr ( 'transform' , 'translate(20,0)' ) ;
383
+ . attr ( 'transform' , centerTransform ) ;
379
384
pts . exit ( ) . remove ( ) ;
380
385
381
386
pts . each ( function ( ) {
@@ -415,7 +420,7 @@ module.exports = function style(s, gd, legend) {
415
420
if ( i ) return 'M-15,0H-8M-8,6V-6H8Z' ; // increasing
416
421
return 'M15,0H8M8,-6V6H-8Z' ; // decreasing
417
422
} )
418
- . attr ( 'transform' , 'translate(20,0)' )
423
+ . attr ( 'transform' , centerTransform )
419
424
. style ( 'stroke-miterlimit' , 1 ) ;
420
425
pts . exit ( ) . remove ( ) ;
421
426
@@ -442,7 +447,7 @@ module.exports = function style(s, gd, legend) {
442
447
if ( i ) return 'M-15,0H0M-8,-6V0' ; // increasing
443
448
return 'M15,0H0M8,6V0' ; // decreasing
444
449
} )
445
- . attr ( 'transform' , 'translate(20,0)' )
450
+ . attr ( 'transform' , centerTransform )
446
451
. style ( 'stroke-miterlimit' , 1 ) ;
447
452
pts . exit ( ) . remove ( ) ;
448
453
@@ -478,7 +483,7 @@ module.exports = function style(s, gd, legend) {
478
483
. data ( isVisible ? [ d ] : [ ] ) ;
479
484
pts . enter ( ) . append ( 'path' ) . classed ( 'legend' + desiredType , true )
480
485
. attr ( 'd' , 'M6,6H-6V-6H6Z' )
481
- . attr ( 'transform' , 'translate(20,0)' ) ;
486
+ . attr ( 'transform' , centerTransform ) ;
482
487
pts . exit ( ) . remove ( ) ;
483
488
484
489
if ( pts . size ( ) ) {
@@ -576,7 +581,7 @@ module.exports = function style(s, gd, legend) {
576
581
. selectAll ( 'path.legend3dandfriends' )
577
582
. data ( ptsData ) ;
578
583
pts . enter ( ) . append ( 'path' ) . classed ( 'legend3dandfriends' , true )
579
- . attr ( 'transform' , 'translate(20,0)' )
584
+ . attr ( 'transform' , centerTransform )
580
585
. style ( 'stroke-miterlimit' , 1 ) ;
581
586
pts . exit ( ) . remove ( ) ;
582
587
0 commit comments