diff --git a/src/kibana/components/vislib/lib/data.js b/src/kibana/components/vislib/lib/data.js index e08d544b71c356..79e65013df6097 100644 --- a/src/kibana/components/vislib/lib/data.js +++ b/src/kibana/components/vislib/lib/data.js @@ -218,15 +218,10 @@ define(function (require) { var grouped = (this._attr.mode === 'grouped'); if (this._attr.mode === 'percentage' || this._attr.mode === 'wiggle' || - this._attr.mode === 'silhouette' || this._attr.defaultYMin) { + this._attr.mode === 'silhouette') { return 0; } - // User defined y axis min value - if (this._attr.userDefinedYMin) { - return this.validateUserDefinedYMin(this._attr.userDefinedYMin); - } - // When there is only one data point, // the yMin should default to zero. if (this.flatten()[0][0].length === 1 && this.flatten()[0][0][0].y > 0) { @@ -264,11 +259,6 @@ define(function (require) { return 1; } - // User defined y axis min value - if (this._attr.userDefinedYMin) { - return this.validateUserDefinedYMin(this._attr.userDefinedYMin); - } - // if there is only one data point and its less than zero, // return 0 as the yMax value. if (this.flatten()[0][0].length === 1 && this.flatten()[0][0][0].y < 0) { diff --git a/src/kibana/components/vislib/lib/y_axis.js b/src/kibana/components/vislib/lib/y_axis.js index 9f8053d0316c3f..556877c9c26471 100644 --- a/src/kibana/components/vislib/lib/y_axis.js +++ b/src/kibana/components/vislib/lib/y_axis.js @@ -56,6 +56,18 @@ define(function (require) { } } + if (!this._attr.defaultYExtents) { + // if yMin and yMax are both positive, then yMin should be zero + if (this.yMin > 0 && this.yMax > 0) { + this.yMin = 0; + } + + // if yMin and yMax are both negative, then yMax should be zero + if (this.yMin < 0 && this.yMax < 0) { + this.yMax = 0; + } + } + // save reference to y scale this.yScale = d3.scale.linear() .domain([this.yMin, this.yMax]) diff --git a/src/kibana/components/vislib/vis.js b/src/kibana/components/vislib/vis.js index 05aa71a1b404d2..9435d414c5c7ac 100644 --- a/src/kibana/components/vislib/vis.js +++ b/src/kibana/components/vislib/vis.js @@ -26,7 +26,7 @@ define(function (require) { this.el = $el.get ? $el.get(0) : $el; this.ChartClass = chartTypes[config.type]; this._attr = _.defaults({}, config || {}, { - defaultYMin: true + defaultYExtents: true }); this.eventTypes = { enabled: [] diff --git a/src/kibana/components/vislib/visualizations/area_chart.js b/src/kibana/components/vislib/visualizations/area_chart.js index 07780b7063fd3c..055df1802b4903 100644 --- a/src/kibana/components/vislib/visualizations/area_chart.js +++ b/src/kibana/components/vislib/visualizations/area_chart.js @@ -83,7 +83,6 @@ define(function (require) { var color = this.handler.data.getColorFunc(); var xScale = this.handler.xAxis.xScale; var yScale = this.handler.yAxis.yScale; - var height = yScale.range()[0]; var defaultOpacity = this._attr.defaultOpacity; var area = d3.svg.area() @@ -95,10 +94,7 @@ define(function (require) { }) .y0(function (d) { if (isOverlapping) { - if (!self._attr.defaultYMin) { - return yScale(0); - } - return height; + return yScale(0); } return yScale(d.y0); diff --git a/src/kibana/components/vislib/visualizations/column_chart.js b/src/kibana/components/vislib/visualizations/column_chart.js index 6dc13b587106ef..18d408f00ab03d 100644 --- a/src/kibana/components/vislib/visualizations/column_chart.js +++ b/src/kibana/components/vislib/visualizations/column_chart.js @@ -158,14 +158,14 @@ define(function (require) { return xScale.rangeBand(); }) .attr('y', function (d) { - if (d.y < 0 && !self._attr.defaultYMin) { + if (d.y < 0) { return yScale(d.y0); } return yScale(d.y0 + d.y); }) .attr('height', function (d) { - if (d.y < 0 && !self._attr.defaultYMin) { + if (d.y < 0) { return Math.abs(yScale(d.y0 + d.y) - yScale(d.y0)); } @@ -198,7 +198,6 @@ define(function (require) { var groupSpacingPercentage = 0.15; var isTimeScale = (data.ordered && data.ordered.date); var minWidth = 1; - var self = this; var barWidth; // update @@ -226,14 +225,14 @@ define(function (require) { return xScale.rangeBand() / n; }) .attr('y', function (d) { - if (d.y < 0 && !self._attr.defaultYMin) { + if (d.y < 0) { return yScale(0); } return yScale(d.y); }) .attr('height', function (d) { - if (d.y < 0 && !self._attr.defaultYMin) { + if (d.y < 0) { return Math.abs(yScale(0) - yScale(d.y)); }