@@ -393,20 +393,26 @@ function drawTexts(g, gd, legendObj) {
393
393
var isEditable = ! legendObj . _inHover && gd . _context . edits . legendText && ! isPieLike ;
394
394
var maxNameLength = legendObj . _maxNameLength ;
395
395
396
- var name ;
397
- if ( ! legendObj . entries ) {
398
- name = isPieLike ? legendItem . label : trace . name ;
399
- if ( trace . _meta ) {
400
- name = Lib . templateString ( name , trace . _meta ) ;
401
- }
396
+ var name , font ;
397
+ if ( legendItem . groupTitle ) {
398
+ name = legendItem . groupTitle . text ;
399
+ font = legendItem . groupTitle . font ;
402
400
} else {
403
- name = legendItem . text ;
401
+ font = legendObj . font ;
402
+ if ( ! legendObj . entries ) {
403
+ name = isPieLike ? legendItem . label : trace . name ;
404
+ if ( trace . _meta ) {
405
+ name = Lib . templateString ( name , trace . _meta ) ;
406
+ }
407
+ } else {
408
+ name = legendItem . text ;
409
+ }
404
410
}
405
411
406
412
var textEl = Lib . ensureSingle ( g , 'text' , 'legendtext' ) ;
407
413
408
414
textEl . attr ( 'text-anchor' , 'start' )
409
- . call ( Drawing . font , legendObj . font )
415
+ . call ( Drawing . font , font )
410
416
. text ( isEditable ? ensureLength ( name , maxNameLength ) : name ) ;
411
417
412
418
var textGap = legendObj . itemwidth + constants . itemGap * 2 ;
@@ -512,7 +518,15 @@ function computeTextDimensions(g, gd, legendObj, aTitle) {
512
518
var mathjaxNode = mathjaxGroup . node ( ) ;
513
519
if ( ! legendObj ) legendObj = gd . _fullLayout . legend ;
514
520
var bw = legendObj . borderwidth ;
515
- var lineHeight = ( aTitle === MAIN_TITLE ? legendObj . title : legendObj ) . font . size * LINE_SPACING ;
521
+ var font ;
522
+ if ( aTitle === MAIN_TITLE ) {
523
+ font = legendObj . title . font ;
524
+ } else if ( legendItem . groupTitle ) {
525
+ font = legendItem . groupTitle . font ;
526
+ } else {
527
+ font = legendObj . font ;
528
+ }
529
+ var lineHeight = font . size * LINE_SPACING ;
516
530
var height , width ;
517
531
518
532
if ( mathjaxNode ) {
@@ -549,8 +563,14 @@ function computeTextDimensions(g, gd, legendObj, aTitle) {
549
563
bw + lineHeight
550
564
) ;
551
565
} else { // legend item
566
+ var x = constants . itemGap * 2 + legendObj . itemwidth ;
567
+ if ( legendItem . groupTitle ) {
568
+ x = constants . itemGap ;
569
+ width -= legendObj . itemwidth ;
570
+ }
571
+
552
572
svgTextUtils . positionText ( textEl ,
553
- legendObj . itemwidth + constants . itemGap * 2 ,
573
+ x ,
554
574
- lineHeight * ( ( textLines - 1 ) / 2 - 0.3 )
555
575
) ;
556
576
}
0 commit comments