@@ -4,20 +4,38 @@ var Registry = require('../../registry');
44var Lib = require ( '../../lib' ) ;
55var Template = require ( '../../plot_api/plot_template' ) ;
66
7+ var plotsAttrs = require ( '../../plots/attributes' ) ;
78var attributes = require ( './attributes' ) ;
89var basePlotLayoutAttributes = require ( '../../plots/layout_attributes' ) ;
910var helpers = require ( './helpers' ) ;
1011
1112
1213module . exports = function legendDefaults ( layoutIn , layoutOut , fullData ) {
1314 var containerIn = layoutIn . legend || { } ;
15+ var containerOut = Template . newContainer ( layoutOut , 'legend' ) ;
16+
17+ function coerce ( attr , dflt ) {
18+ return Lib . coerce ( containerIn , containerOut , attributes , attr , dflt ) ;
19+ }
20+
21+ var trace ;
22+ var traceCoerce = function ( attr , dflt ) {
23+ var traceIn = trace . _input ;
24+ var traceOut = trace ;
25+ return Lib . coerce ( traceIn , traceOut , plotsAttrs , attr , dflt ) ;
26+ } ;
27+
28+ var globalFont = layoutOut . font || { } ;
29+ var grouptitlefont = Lib . coerceFont ( coerce , 'grouptitlefont' , Lib . extendFlat ( { } , globalFont , {
30+ size : Math . round ( globalFont . size * 1.1 )
31+ } ) ) ;
1432
1533 var legendTraceCount = 0 ;
1634 var legendReallyHasATrace = false ;
1735 var defaultOrder = 'normal' ;
1836
1937 for ( var i = 0 ; i < fullData . length ; i ++ ) {
20- var trace = fullData [ i ] ;
38+ trace = fullData [ i ] ;
2139
2240 if ( ! trace . visible ) continue ;
2341
@@ -44,6 +62,8 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
4462 legendTraceCount ++ ;
4563 }
4664 }
65+
66+ Lib . coerceFont ( traceCoerce , 'legendgrouptitle.font' , grouptitlefont ) ;
4767 }
4868
4969 if ( ( Registry . traceIs ( trace , 'bar' ) && layoutOut . barmode === 'stack' ) ||
@@ -62,13 +82,10 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
6282 basePlotLayoutAttributes , 'showlegend' ,
6383 legendReallyHasATrace && legendTraceCount > 1 ) ;
6484
65- if ( showLegend === false && ! containerIn . uirevision ) return ;
66-
67- var containerOut = Template . newContainer ( layoutOut , 'legend' ) ;
85+ // delete legend
86+ if ( showLegend === false ) layoutOut . legend = undefined ;
6887
69- function coerce ( attr , dflt ) {
70- return Lib . coerce ( containerIn , containerOut , attributes , attr , dflt ) ;
71- }
88+ if ( showLegend === false && ! containerIn . uirevision ) return ;
7289
7390 coerce ( 'uirevision' , layoutOut . uirevision ) ;
7491
0 commit comments