var meta = this.getMeta();
var xScale = this.getScaleForId(meta.xAxisID);
var yScale = this.getScaleForId(meta.yAxisID);
-
- var yScalePoint;
-
- if (yScale.min < 0 && yScale.max < 0) {
- // all less than 0. use the top
- yScalePoint = yScale.getPixelForValue(yScale.max);
- } else if (yScale.min > 0 && yScale.max > 0) {
- yScalePoint = yScale.getPixelForValue(yScale.min);
- } else {
- yScalePoint = yScale.getPixelForValue(0);
- }
-
+ var scaleBase = yScale.getBasePixel();
var rectangleElementOptions = this.chart.options.elements.rectangle;
var custom = rectangle.custom || {};
var dataset = this.getDataset();
// Desired view properties
_model: {
x: this.calculateBarX(index, this.index),
- y: reset ? yScalePoint : this.calculateBarY(index, this.index),
+ y: reset ? scaleBase : this.calculateBarY(index, this.index),
// Tooltip
label: this.chart.data.labels[index],
datasetLabel: dataset.label,
// Appearance
- base: reset ? yScalePoint : this.calculateBarBase(this.index, index),
+ base: reset ? scaleBase : this.calculateBarBase(this.index, index),
width: this.calculateBarWidth(index),
backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),
borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,
calculateBarBase: function(datasetIndex, index) {
var meta = this.getMeta();
- var xScale = this.getScaleForId(meta.xAxisID);
var yScale = this.getScaleForId(meta.yAxisID);
-
var base = 0;
if (yScale.options.stacked) {
return yScale.getPixelForValue(base);
}
- base = yScale.getPixelForValue(yScale.min);
-
- if (yScale.beginAtZero || ((yScale.min <= 0 && yScale.max >= 0) || (yScale.min >= 0 && yScale.max <= 0))) {
- base = yScale.getPixelForValue(0, 0);
- //base += yScale.options.gridLines.lineWidth;
- } else if (yScale.min < 0 && yScale.max < 0) {
- // All values are negative. Use the top as the base
- base = yScale.getPixelForValue(yScale.max);
- }
-
- return base;
-
+ return yScale.getBasePixel();
},
getRuler: function(index) {
var meta = this.getMeta();
var xScale = this.getScaleForId(meta.xAxisID);
- var yScale = this.getScaleForId(meta.yAxisID);
var datasetCount = this.getBarCount();
var tickWidth;
calculateBarX: function(index, datasetIndex) {
var meta = this.getMeta();
- var yScale = this.getScaleForId(meta.yAxisID);
var xScale = this.getScaleForId(meta.xAxisID);
var barIndex = this.getBarIndex(datasetIndex);
calculateBarY: function(index, datasetIndex) {
var meta = this.getMeta();
- var xScale = this.getScaleForId(meta.xAxisID);
var yScale = this.getScaleForId(meta.yAxisID);
-
var value = this.getDataset().data[index];
if (yScale.options.stacked) {
var meta = this.getMeta();
var xScale = this.getScaleForId(meta.xAxisID);
var yScale = this.getScaleForId(meta.yAxisID);
-
- var xScalePoint;
-
- if (xScale.min < 0 && xScale.max < 0) {
- // all less than 0. use the right
- xScalePoint = xScale.getPixelForValue(xScale.max);
- } else if (xScale.min > 0 && xScale.max > 0) {
- xScalePoint = xScale.getPixelForValue(xScale.min);
- } else {
- xScalePoint = xScale.getPixelForValue(0);
- }
-
+ var scaleBase = xScale.getBasePixel();
var custom = rectangle.custom || {};
var dataset = this.getDataset();
var rectangleElementOptions = this.chart.options.elements.rectangle;
+
helpers.extend(rectangle, {
// Utility
_chart: this.chart.chart,
// Desired view properties
_model: {
- x: reset ? xScalePoint : this.calculateBarX(index, this.index),
+ x: reset ? scaleBase : this.calculateBarX(index, this.index),
y: this.calculateBarY(index, this.index),
// Tooltip
datasetLabel: dataset.label,
// Appearance
- base: reset ? xScalePoint : this.calculateBarBase(this.index, index),
+ base: reset ? scaleBase : this.calculateBarBase(this.index, index),
height: this.calculateBarHeight(index),
backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),
borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,
calculateBarBase: function (datasetIndex, index) {
var meta = this.getMeta();
var xScale = this.getScaleForId(meta.xAxisID);
- var yScale = this.getScaleForId(meta.yAxisID);
-
var base = 0;
if (xScale.options.stacked) {
return xScale.getPixelForValue(base);
}
- base = xScale.getPixelForValue(xScale.min);
-
- if (xScale.beginAtZero || ((xScale.min <= 0 && xScale.max >= 0) || (xScale.min >= 0 && xScale.max <= 0))) {
- base = xScale.getPixelForValue(0, 0);
- } else if (xScale.min < 0 && xScale.max < 0) {
- // All values are negative. Use the right as the base
- base = xScale.getPixelForValue(xScale.max);
- }
-
- return base;
+ return xScale.getBasePixel();
},
getRuler: function (index) {
var meta = this.getMeta();
- var xScale = this.getScaleForId(meta.xAxisID);
var yScale = this.getScaleForId(meta.yAxisID);
var datasetCount = this.getBarCount();
calculateBarX: function (index, datasetIndex) {
var meta = this.getMeta();
var xScale = this.getScaleForId(meta.xAxisID);
- var yScale = this.getScaleForId(meta.yAxisID);
-
var value = this.getDataset().data[index];
if (xScale.options.stacked) {
calculateBarY: function (index, datasetIndex) {
var meta = this.getMeta();
var yScale = this.getScaleForId(meta.yAxisID);
- var xScale = this.getScaleForId(meta.xAxisID);
var barIndex = this.getBarIndex(datasetIndex);
var ruler = this.getRuler(index);
update: function update(reset) {
var meta = this.getMeta();
var points = meta.data;
- var yScale = this.getScaleForId(meta.yAxisID);
- var xScale = this.getScaleForId(meta.xAxisID);
- var scaleBase;
-
- if (yScale.min < 0 && yScale.max < 0) {
- scaleBase = yScale.getPixelForValue(yScale.max);
- } else if (yScale.min > 0 && yScale.max > 0) {
- scaleBase = yScale.getPixelForValue(yScale.min);
- } else {
- scaleBase = yScale.getPixelForValue(0);
- }
// Update Points
helpers.each(points, function(point, index) {
updateElement: function(point, index, reset) {
var meta = this.getMeta();
- var yScale = this.getScaleForId(meta.yAxisID);
var xScale = this.getScaleForId(meta.xAxisID);
- var scaleBase;
+ var yScale = this.getScaleForId(meta.yAxisID);
var custom = point.custom || {};
var dataset = this.getDataset();
var data = dataset.data[index];
var pointElementOptions = this.chart.options.elements.point;
- if (yScale.min < 0 && yScale.max < 0) {
- scaleBase = yScale.getPixelForValue(yScale.max);
- } else if (yScale.min > 0 && yScale.max > 0) {
- scaleBase = yScale.getPixelForValue(yScale.min);
- } else {
- scaleBase = yScale.getPixelForValue(0);
- }
-
helpers.extend(point, {
// Utility
_chart: this.chart.chart,
// Desired view properties
_model: {
x: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(data, index, this.index, this.chart.isCombo),
- y: reset ? scaleBase : yScale.getPixelForValue(data, index, this.index),
+ y: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, this.index),
// Appearance
radius: reset ? 0 : custom.radius ? custom.radius : this.getRadius(data),
backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, pointElementOptions.backgroundColor),
var points = meta.data || [];
var options = me.chart.options;
var lineElementOptions = options.elements.line;
- var yScale = me.getScaleForId(meta.yAxisID);
- var xScale = me.getScaleForId(meta.xAxisID);
- var scaleBase, i, ilen, dataset, custom;
-
- if (yScale.min < 0 && yScale.max < 0) {
- scaleBase = yScale.getPixelForValue(yScale.max);
- } else if (yScale.min > 0 && yScale.max > 0) {
- scaleBase = yScale.getPixelForValue(yScale.min);
- } else {
- scaleBase = yScale.getPixelForValue(0);
- }
+ var scale = me.getScaleForId(meta.yAxisID);
+ var i, ilen, dataset, custom;
// Update Line
if (options.showLines) {
}
// Utility
- line._scale = yScale;
+ line._scale = scale;
line._datasetIndex = me.index;
// Data
line._children = points;
borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),
fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),
// Scale
- scaleTop: yScale.top,
- scaleBottom: yScale.bottom,
- scaleZero: scaleBase
+ scaleTop: scale.top,
+ scaleBottom: scale.bottom,
+ scaleZero: scale.getBasePixel()
};
line.pivot();
var yScale = me.getScaleForId(meta.yAxisID);
var xScale = me.getScaleForId(meta.xAxisID);
var pointOptions = me.chart.options.elements.point;
- var scaleBase, x, y;
-
- if (yScale.min < 0 && yScale.max < 0) {
- scaleBase = yScale.getPixelForValue(yScale.max);
- } else if (yScale.min > 0 && yScale.max > 0) {
- scaleBase = yScale.getPixelForValue(yScale.min);
- } else {
- scaleBase = yScale.getPixelForValue(0);
- }
+ var x, y;
// Compatibility: If the properties are defined with only the old name, use those values
if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {
}
x = xScale.getPixelForValue(value, index, datasetIndex, me.chart.isCombo);
- y = reset ? scaleBase : me.calculatePointY(value, index, datasetIndex, me.chart.isCombo);
+ y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex, me.chart.isCombo);
// Utility
point._chart = me.chart.chart;
var me = this;
var chart = me.chart;
var meta = me.getMeta();
- var xScale = me.getScaleForId(meta.xAxisID);
var yScale = me.getScaleForId(meta.yAxisID);
var sumPos = 0;
var sumNeg = 0;