File tree Expand file tree Collapse file tree 2 files changed +71
-4
lines changed Expand file tree Collapse file tree 2 files changed +71
-4
lines changed Original file line number Diff line number Diff line change @@ -62,6 +62,11 @@ var defaultConfig = {
6262 }
6363} ;
6464
65+ // TODO(v3): change this to positiveOrDefault
66+ function nonNegativeOrDefault ( value , defaultValue ) {
67+ return helpers . isFinite ( value ) && value >= 0 ? value : defaultValue ;
68+ }
69+
6570module . exports = Scale . extend ( {
6671 determineDataLimits : function ( ) {
6772 var me = this ;
@@ -174,8 +179,8 @@ module.exports = Scale.extend({
174179 var DEFAULT_MIN = 1 ;
175180 var DEFAULT_MAX = 10 ;
176181
177- me . min = valueOrDefault ( tickOpts . min , me . min ) ;
178- me . max = valueOrDefault ( tickOpts . max , me . max ) ;
182+ me . min = nonNegativeOrDefault ( tickOpts . min , me . min ) ;
183+ me . max = nonNegativeOrDefault ( tickOpts . max , me . max ) ;
179184
180185 if ( me . min === me . max ) {
181186 if ( me . min !== 0 && me . min !== null ) {
@@ -211,8 +216,8 @@ module.exports = Scale.extend({
211216 var reverse = ! me . isHorizontal ( ) ;
212217
213218 var generationOptions = {
214- min : tickOpts . min ,
215- max : tickOpts . max
219+ min : nonNegativeOrDefault ( tickOpts . min ) ,
220+ max : nonNegativeOrDefault ( tickOpts . max )
216221 } ;
217222 var ticks = me . ticks = generateTicks ( generationOptions , me ) ;
218223
Original file line number Diff line number Diff line change @@ -477,6 +477,68 @@ describe('Logarithmic Scale tests', function() {
477477 expect ( yScale . ticks [ tickCount - 1 ] ) . toBe ( 10 ) ;
478478 } ) ;
479479
480+ it ( 'should ignore negative min and max options' , function ( ) {
481+ var chart = window . acquireChart ( {
482+ type : 'bar' ,
483+ data : {
484+ datasets : [ {
485+ data : [ 1 , 1 , 1 , 2 , 1 , 0 ]
486+ } ] ,
487+ labels : [ ]
488+ } ,
489+ options : {
490+ scales : {
491+ yAxes : [ {
492+ id : 'yScale' ,
493+ type : 'logarithmic' ,
494+ ticks : {
495+ min : - 10 ,
496+ max : - 1010 ,
497+ callback : function ( value ) {
498+ return value ;
499+ }
500+ }
501+ } ]
502+ }
503+ }
504+ } ) ;
505+
506+ var yScale = chart . scales . yScale ;
507+ expect ( yScale . min ) . toBe ( 0 ) ;
508+ expect ( yScale . max ) . toBe ( 2 ) ;
509+ } ) ;
510+
511+ it ( 'should ignore invalid min and max options' , function ( ) {
512+ var chart = window . acquireChart ( {
513+ type : 'bar' ,
514+ data : {
515+ datasets : [ {
516+ data : [ 1 , 1 , 1 , 2 , 1 , 0 ]
517+ } ] ,
518+ labels : [ ]
519+ } ,
520+ options : {
521+ scales : {
522+ yAxes : [ {
523+ id : 'yScale' ,
524+ type : 'logarithmic' ,
525+ ticks : {
526+ min : '' ,
527+ max : false ,
528+ callback : function ( value ) {
529+ return value ;
530+ }
531+ }
532+ } ]
533+ }
534+ }
535+ } ) ;
536+
537+ var yScale = chart . scales . yScale ;
538+ expect ( yScale . min ) . toBe ( 0 ) ;
539+ expect ( yScale . max ) . toBe ( 2 ) ;
540+ } ) ;
541+
480542 it ( 'should generate tick marks' , function ( ) {
481543 var chart = window . acquireChart ( {
482544 type : 'bar' ,
You can’t perform that action at this time.
0 commit comments