@@ -16,14 +16,14 @@ module.exports = LinearScaleBase.extend({
1616 var me = this ;
1717 var opts = me . options ;
1818 var chart = me . chart ;
19- var data = chart . data ;
20- var datasets = data . datasets ;
19+ var datasets = chart . data . datasets ;
2120 var isHorizontal = me . isHorizontal ( ) ;
2221 var DEFAULT_MIN = 0 ;
2322 var DEFAULT_MAX = 1 ;
23+ var datasetIndex , meta , value , data , i , ilen ;
2424
25- function IDMatches ( meta ) {
26- return isHorizontal ? meta . xAxisID === me . id : meta . yAxisID === me . id ;
25+ function IDMatches ( scaleMeta ) {
26+ return isHorizontal ? scaleMeta . xAxisID === me . id : scaleMeta . yAxisID === me . id ;
2727 }
2828
2929 // First Calculate the range
@@ -32,24 +32,20 @@ module.exports = LinearScaleBase.extend({
3232
3333 var hasStacks = opts . stacked ;
3434 if ( hasStacks === undefined ) {
35- helpers . each ( datasets , function ( dataset , datasetIndex ) {
36- if ( hasStacks ) {
37- return ;
38- }
39-
40- var meta = chart . getDatasetMeta ( datasetIndex ) ;
41- if ( chart . isDatasetVisible ( datasetIndex ) && IDMatches ( meta ) &&
42- meta . stack !== undefined ) {
35+ for ( datasetIndex = 0 ; datasetIndex < datasets . length ; datasetIndex ++ ) {
36+ meta = chart . getDatasetMeta ( datasetIndex ) ;
37+ if ( chart . isDatasetVisible ( datasetIndex ) && IDMatches ( meta ) && meta . stack !== undefined ) {
4338 hasStacks = true ;
39+ break ;
4440 }
45- } ) ;
41+ }
4642 }
4743
4844 if ( opts . stacked || hasStacks ) {
4945 var valuesPerStack = { } ;
5046
51- helpers . each ( datasets , function ( dataset , datasetIndex ) {
52- var meta = chart . getDatasetMeta ( datasetIndex ) ;
47+ for ( datasetIndex = 0 ; datasetIndex < datasets . length ; datasetIndex ++ ) {
48+ meta = chart . getDatasetMeta ( datasetIndex ) ;
5349 var key = [
5450 meta . type ,
5551 // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined
@@ -69,30 +65,31 @@ module.exports = LinearScaleBase.extend({
6965 var negativeValues = valuesPerStack [ key ] . negativeValues ;
7066
7167 if ( chart . isDatasetVisible ( datasetIndex ) && IDMatches ( meta ) ) {
72- helpers . each ( dataset . data , function ( rawValue , index ) {
73- var value = me . _parseValue ( rawValue ) ;
68+ data = datasets [ datasetIndex ] . data ;
69+ for ( i = 0 , ilen = data . length ; i < ilen ; i ++ ) {
70+ value = me . _parseValue ( data [ i ] ) ;
7471
75- if ( isNaN ( value . min ) || isNaN ( value . max ) || meta . data [ index ] . hidden ) {
76- return ;
72+ if ( isNaN ( value . min ) || isNaN ( value . max ) || meta . data [ i ] . hidden ) {
73+ continue ;
7774 }
7875
79- positiveValues [ index ] = positiveValues [ index ] || 0 ;
80- negativeValues [ index ] = negativeValues [ index ] || 0 ;
76+ positiveValues [ i ] = positiveValues [ i ] || 0 ;
77+ negativeValues [ i ] = negativeValues [ i ] || 0 ;
8178
8279 if ( value . min === 0 && ! opts . ticks . beginAtZero ) {
8380 value . min = value . max ;
8481 }
8582
8683 if ( opts . relativePoints ) {
87- positiveValues [ index ] = 100 ;
84+ positiveValues [ i ] = 100 ;
8885 } else if ( value . min < 0 || value . max < 0 ) {
89- negativeValues [ index ] += value . min ;
86+ negativeValues [ i ] += value . min ;
9087 } else {
91- positiveValues [ index ] += value . max ;
88+ positiveValues [ i ] += value . max ;
9289 }
93- } ) ;
90+ }
9491 }
95- } ) ;
92+ }
9693
9794 helpers . each ( valuesPerStack , function ( valuesForType ) {
9895 var values = valuesForType . positiveValues . concat ( valuesForType . negativeValues ) ;
@@ -103,14 +100,15 @@ module.exports = LinearScaleBase.extend({
103100 } ) ;
104101
105102 } else {
106- helpers . each ( datasets , function ( dataset , datasetIndex ) {
107- var meta = chart . getDatasetMeta ( datasetIndex ) ;
103+ for ( datasetIndex = 0 ; datasetIndex < datasets . length ; datasetIndex ++ ) {
104+ meta = chart . getDatasetMeta ( datasetIndex ) ;
108105 if ( chart . isDatasetVisible ( datasetIndex ) && IDMatches ( meta ) ) {
109- helpers . each ( dataset . data , function ( rawValue , index ) {
110- var value = me . _parseValue ( rawValue ) ;
106+ data = datasets [ datasetIndex ] . data ;
107+ for ( i = 0 , ilen = data . length ; i < ilen ; i ++ ) {
108+ value = me . _parseValue ( data [ i ] ) ;
111109
112- if ( isNaN ( value . min ) || isNaN ( value . max ) || meta . data [ index ] . hidden ) {
113- return ;
110+ if ( isNaN ( value . min ) || isNaN ( value . max ) || meta . data [ i ] . hidden ) {
111+ continue ;
114112 }
115113
116114 if ( me . min === null || value . min < me . min ) {
@@ -120,9 +118,9 @@ module.exports = LinearScaleBase.extend({
120118 if ( me . max === null || me . max < value . max ) {
121119 me . max = value . max ;
122120 }
123- } ) ;
121+ }
124122 }
125- } ) ;
123+ }
126124 }
127125
128126 me . min = isFinite ( me . min ) && ! isNaN ( me . min ) ? me . min : DEFAULT_MIN ;
0 commit comments