diff --git a/src/js/Rickshaw.Graph.js b/src/js/Rickshaw.Graph.js index cd6357bb..d577008d 100644 --- a/src/js/Rickshaw.Graph.js +++ b/src/js/Rickshaw.Graph.js @@ -96,10 +96,23 @@ Rickshaw.Graph = function(args) { this.dataDomain = function() { - var data = this.series.map( function(s) { return s.data } ); + var data = this.series.active().map( function(s) { return s.data } ); - var min = d3.min( data.map( function(d) { return d[0].x } ) ); - var max = d3.max( data.map( function(d) { return d[d.length - 1].x } ) ); + var min = d3.min( data.map( function(d) { + if (d.length === 0) { + return Infinity; + } else { + return d[0].x; + } + } ) ); + + var max = d3.max( data.map( function(d) { + if (d.length === 0) { + return -Infinity; + } else { + return d[d.length - 1].x; + } + } ) ); return [min, max]; }; diff --git a/tests/Rickshaw.Graph.js b/tests/Rickshaw.Graph.js index 84ee048b..f618db93 100644 --- a/tests/Rickshaw.Graph.js +++ b/tests/Rickshaw.Graph.js @@ -206,7 +206,7 @@ exports.inconsistent = function(test) { }); }, "we don't throw for inconsistent length series for lines" ); - + test.throws( function() { var graph = new Rickshaw.Graph({ @@ -231,6 +231,40 @@ exports.inconsistent = function(test) { }, null, "throw an error for undefined element reference" ); + // Test that dataDomain only considers active series + series[1].data.push({x: 100, y: 22}); + series[1].disabled = true; + + var graph = new Rickshaw.Graph({ + element: el, + width: 960, + height: 500, + renderer: 'line', + series: series + }); + + test.deepEqual(graph.dataDomain(), [0, 3]); + + series.push( + { + color: "red", + data: [] + } + ); + + test.doesNotThrow( function() { + + var graph = new Rickshaw.Graph({ + element: el, + width: 960, + height: 500, + renderer: 'line', + series: series + }); + + test.deepEqual(graph.dataDomain(), [0, 3]); + }, "We don't throw on dataDomain if a series has no data" ); + test.done(); };