@@ -9,10 +9,10 @@ var attributes = require('./attributes');
99var basePlotLayoutAttributes = require ( '../../plots/layout_attributes' ) ;
1010var helpers = require ( './helpers' ) ;
1111
12-
13- module . exports = function legendDefaults ( layoutIn , layoutOut , fullData ) {
14- var containerIn = layoutIn . legend || { } ;
15- var containerOut = Template . newContainer ( layoutOut , 'legend' ) ;
12+ function groupDefaults ( legendGroup , layoutIn , layoutOut , fullData ) {
13+ var name = 'legend' + legendGroup ;
14+ var containerIn = layoutIn [ name ] || { } ;
15+ var containerOut = Template . newContainer ( layoutOut , name ) ;
1616
1717 function coerce ( attr , dflt ) {
1818 return Lib . coerce ( containerIn , containerOut , attributes , attr , dflt ) ;
@@ -147,4 +147,20 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
147147
148148 Lib . coerceFont ( coerce , 'title.font' , dfltTitleFont ) ;
149149 }
150+ }
151+
152+ module . exports = function legendDefaults ( layoutIn , layoutOut , fullData ) {
153+ var i ;
154+ var groups = [ '' ] ;
155+
156+ for ( i = 0 ; i < fullData . length ; i ++ ) {
157+ Lib . pushUnique ( groups , fullData [ i ] . legendgroup ) ;
158+ }
159+
160+ for ( i = 0 ; i < groups . length ; i ++ ) {
161+ var groupName = groups [ i ] ;
162+ groupDefaults ( groupName , layoutIn , layoutOut , fullData ) ;
163+
164+ layoutOut [ 'legend' + groupName ] . _id = groupName ;
165+ }
150166} ;
0 commit comments