diff --git a/public/app/plugins/panel/graph/graph.ts b/public/app/plugins/panel/graph/graph.ts index e0cec3febbf..726f8be5628 100755 --- a/public/app/plugins/panel/graph/graph.ts +++ b/public/app/plugins/panel/graph/graph.ts @@ -555,12 +555,19 @@ coreModule.directive('grafanaGraph', function($rootScope, timeSrv, popoverSrv) { return; } - axis.ticks = []; - var nextTick; - for (nextTick = min; nextTick <= max; nextTick *= axis.logBase) { - axis.ticks.push(nextTick); + if (Number.isFinite(min) && Number.isFinite(max)) { + axis.ticks = []; + var nextTick; + for (nextTick = min; nextTick <= max; nextTick *= axis.logBase) { + axis.ticks.push(nextTick); + } + axis.tickDecimals = decimalPlaces(min); + } else { + axis.ticks = [1, 2]; + delete axis.min; + delete axis.max; } - axis.tickDecimals = decimalPlaces(min); + } function decimalPlaces(num) { diff --git a/public/app/plugins/panel/graph/specs/graph_specs.ts b/public/app/plugins/panel/graph/specs/graph_specs.ts index 161aca11e42..9595c3dd544 100644 --- a/public/app/plugins/panel/graph/specs/graph_specs.ts +++ b/public/app/plugins/panel/graph/specs/graph_specs.ts @@ -153,6 +153,29 @@ describe('grafanaGraph', function() { }); }); + graphScenario('when logBase is log 10 and data points contain only zeroes', function(ctx) { + ctx.setup(function(ctrl, data) { + ctrl.panel.yaxes[0].logBase = 10; + data[0] = new TimeSeries({ + datapoints: [[0,1],[0,2],[0,3],[0,4]], + alias: 'seriesAutoscale', + }); + data[0].yaxis = 1; + }); + + it('should not set min and max and should create some fake ticks', function() { + var axisAutoscale = ctx.plotOptions.yaxes[0]; + expect(axisAutoscale.transform(100)).to.be(2); + expect(axisAutoscale.inverseTransform(-3)).to.be(0.001); + expect(axisAutoscale.min).to.be(undefined); + expect(axisAutoscale.max).to.be(undefined); + expect(axisAutoscale.ticks.length).to.be(2); + expect(axisAutoscale.ticks[0]).to.be(1); + expect(axisAutoscale.ticks[1]).to.be(2); + expect(axisAutoscale.tickDecimals).to.be(undefined); + }); + }); + graphScenario('dashed lines options', function(ctx) { ctx.setup(function(ctrl) { ctrl.panel.lines = true;