@@ -7,7 +7,6 @@ var layouts = require('../core/core.layouts');
7
7
8
8
var noop = helpers . noop ;
9
9
var valueOrDefault = helpers . valueOrDefault ;
10
- var valueAtIndexOrDefault = helpers . valueAtIndexOrDefault ;
11
10
12
11
defaults . _set ( 'global' , {
13
12
legend : {
@@ -49,34 +48,35 @@ defaults._set('global', {
49
48
generateLabels : function ( chart ) {
50
49
var data = chart . data ;
51
50
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 ;
56
54
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
+ }
68
67
69
68
return {
70
69
text : dataset . label ,
71
- fillStyle : valueAtIndexOrDefault ( backgroundColor , 0 , elementOpts . backgroundColor ) ,
70
+ fillStyle : model . backgroundColor ,
72
71
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 ,
80
80
81
81
// Below is extra data used for toggling the datasets
82
82
datasetIndex : i
@@ -384,15 +384,15 @@ var Legend = Element.extend({
384
384
ctx . setLineDash ( valueOrDefault ( legendItem . lineDash , lineDefault . borderDash ) ) ;
385
385
}
386
386
387
- if ( opts . labels && opts . labels . usePointStyle ) {
387
+ if ( labelOpts && labelOpts . usePointStyle ) {
388
388
// Recalculate x and y for drawPoint() because its expecting
389
389
// x and y to be center of figure (instead of top left)
390
390
var radius = boxWidth * Math . SQRT2 / 2 ;
391
391
var centerX = x + boxWidth / 2 ;
392
392
var centerY = y + fontSize / 2 ;
393
393
394
394
// 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 ) ;
396
396
} else {
397
397
// Draw box as legend symbol
398
398
ctx . fillRect ( x , y , boxWidth , fontSize ) ;
0 commit comments