@ -51,7 +51,8 @@
position : "ne" , // position of default legend container within plot
margin : 5 , // distance from grid edge to default legend container within plot
backgroundColor : null , // null means auto-detect
backgroundOpacity : 0.85 // set to 0 to avoid background
backgroundOpacity : 0.85 , // set to 0 to avoid background
sorted : null // default to no legend sorting
} ,
xaxis : {
show : null , // null = auto-detect, true = always, false = never
@ -2105,21 +2106,50 @@
c . normalize ( ) ;
return c . toString ( ) ;
}
function insertLegend ( ) {
placeholder . find ( ".legend" ) . remove ( ) ;
if ( ! options . legend . show )
return ;
var fragments = [ ] , rowStarted = false ,
var fragments = [ ] , entries = [ ] , rowStarted = false ,
lf = options . legend . labelFormatter , s , label ;
// Build a list of legend entries, with each having a label and a color
for ( var i = 0 ; i < series . length ; ++ i ) {
s = series [ i ] ;
label = s . label ;
if ( ! label )
continue ;
if ( s . label ) {
entries . push ( {
label : lf ? lf ( s . label , s ) : s . label ,
color : s . color
} ) ;
}
}
// Sort the legend using either the default or a custom comparator
if ( options . legend . sorted ) {
if ( $ . isFunction ( options . legend . sorted ) ) {
entries . sort ( options . legend . sorted ) ;
} else {
var ascending = options . legend . sorted != "descending" ;
entries . sort ( function ( a , b ) {
return a . label == b . label ? 0 : (
( a . label < b . label ) != ascending ? 1 : - 1 // Logical XOR
) ;
} ) ;
}
}
// Generate markup for the list of entries, in their final order
for ( var i = 0 ; i < entries . length ; ++ i ) {
entry = entries [ i ] ;
if ( i % options . legend . noColumns == 0 ) {
if ( rowStarted )
fragments . push ( '</tr>' ) ;
@ -2127,16 +2157,15 @@
rowStarted = true ;
}
if ( lf )
label = lf ( label , s ) ;
fragments . push (
'<td class="legendColorBox"><div style="border:1px solid ' + options . legend . labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s . color + ';overflow:hidden"></div></div></td>' +
'<td class="legendLabel">' + label + '</td>' ) ;
'<td class="legendColorBox"><div style="border:1px solid ' + options . legend . labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + entry . color + ';overflow:hidden"></div></div></td>' +
'<td class="legendLabel">' + entry . label + '</td>'
) ;
}
if ( rowStarted )
fragments . push ( '</tr>' ) ;
if ( fragments . length == 0 )
return ;