@@ -7,7 +7,6 @@ var layouts = require('../core/core.layouts');
77
88var noop = helpers . noop ;
99var valueOrDefault = helpers . valueOrDefault ;
10- var valueAtIndexOrDefault = helpers . valueAtIndexOrDefault ;
1110
1211defaults . _set ( 'global' , {
1312 legend : {
@@ -49,34 +48,35 @@ defaults._set('global', {
4948 generateLabels : function ( chart ) {
5049 var data = chart . data ;
5150 return helpers . isArray ( data . datasets ) ? data . datasets . map ( function ( dataset , i ) {
52- var type = chart . getDatasetMeta ( i ) . type ;
53- var options = chart . options ;
54- var legendOpts = options . legend ;
55-
51+ var meta = chart . getDatasetMeta ( i ) ;
52+ var controller = meta . controller ;
53+ var legendOpts = chart . options . legend ;
5654 var usePointStyle = legendOpts && legendOpts . labels && legendOpts . labels . usePointStyle ;
57- var backgroundColor = usePointStyle ? valueAtIndexOrDefault ( dataset . pointBackgroundColor , 0 , dataset . backgroundColor ) : dataset . backgroundColor ;
58- var borderWidth = usePointStyle ? valueAtIndexOrDefault ( dataset . pointBorderWidth , 0 , dataset . borderWidth ) : dataset . borderWidth ;
59- var borderColor = usePointStyle ? valueAtIndexOrDefault ( dataset . pointBorderColor , 0 , dataset . borderColor ) : dataset . borderColor ;
60-
61- var useLineStyles = ( type === 'line' || type === 'radar' ) && ! usePointStyle ;
62- var borderCapStyle = useLineStyles ? dataset . borderCapStyle : 'butt' ;
63- var borderDash = useLineStyles ? dataset . borderDash : [ ] ;
64- var borderDashOffset = useLineStyles ? dataset . borderDashOffset : 0 ;
65- var borderJoinStyle = useLineStyles ? dataset . borderJoinStyle : 'miter' ;
66-
67- var elementOpts = options . elements [ useLineStyles ? 'line' : type === 'bar' ? 'rectangle' : 'point' ] ;
55+ var model ;
56+
57+ if ( controller . _resolveLineOptions && ! usePointStyle ) {
58+ model = controller . _resolveLineOptions ( meta . dataset || { } ) ;
59+ if ( model . fill === false || model . fill === null ) {
60+ model . backgroundColor = 'rgba(0,0,0,0)' ;
61+ }
62+ } else if ( controller . _resolvePointOptions ) {
63+ model = controller . _resolvePointOptions ( meta . data [ 0 ] || { } , 0 ) ;
64+ } else {
65+ model = controller . _resolveElementOptions ( meta . data [ 0 ] || { } , 0 ) ;
66+ }
6867
6968 return {
7069 text : dataset . label ,
71- fillStyle : valueAtIndexOrDefault ( backgroundColor , 0 , elementOpts . backgroundColor ) ,
70+ fillStyle : model . backgroundColor ,
7271 hidden : ! chart . isDatasetVisible ( i ) ,
73- lineCap : valueOrDefault ( borderCapStyle , elementOpts . borderCapStyle ) ,
74- lineDash : valueOrDefault ( borderDash , elementOpts . borderDash ) ,
75- lineDashOffset : valueOrDefault ( borderDashOffset , elementOpts . borderDashOffset ) ,
76- lineJoin : valueOrDefault ( borderJoinStyle , elementOpts . borderJoinStyle ) ,
77- lineWidth : valueAtIndexOrDefault ( borderWidth , 0 , elementOpts . borderWidth ) ,
78- strokeStyle : valueAtIndexOrDefault ( borderColor , 0 , elementOpts . borderColor ) ,
79- pointStyle : valueAtIndexOrDefault ( dataset . pointStyle , 0 , elementOpts . pointStyle ) ,
72+ lineCap : model . borderCapStyle ,
73+ lineDash : model . borderDash ,
74+ lineDashOffset : model . borderDashOffset ,
75+ lineJoin : model . borderJoinStyle ,
76+ lineWidth : model . borderWidth ,
77+ strokeStyle : model . borderColor ,
78+ pointStyle : model . pointStyle ,
79+ rotation : model . rotation ,
8080
8181 // Below is extra data used for toggling the datasets
8282 datasetIndex : i
@@ -384,15 +384,15 @@ var Legend = Element.extend({
384384 ctx . setLineDash ( valueOrDefault ( legendItem . lineDash , lineDefault . borderDash ) ) ;
385385 }
386386
387- if ( opts . labels && opts . labels . usePointStyle ) {
387+ if ( labelOpts && labelOpts . usePointStyle ) {
388388 // Recalculate x and y for drawPoint() because its expecting
389389 // x and y to be center of figure (instead of top left)
390390 var radius = boxWidth * Math . SQRT2 / 2 ;
391391 var centerX = x + boxWidth / 2 ;
392392 var centerY = y + fontSize / 2 ;
393393
394394 // Draw pointStyle as legend symbol
395- helpers . canvas . drawPoint ( ctx , legendItem . pointStyle , radius , centerX , centerY ) ;
395+ helpers . canvas . drawPoint ( ctx , legendItem . pointStyle , radius , centerX , centerY , legendItem . rotation ) ;
396396 } else {
397397 // Draw box as legend symbol
398398 ctx . fillRect ( x , y , boxWidth , fontSize ) ;
0 commit comments