mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-07 04:39:06 +02:00
Allow line controller to calculate stacked values
This commit is contained in:
parent
e4d308f329
commit
334ba44e95
@ -193,7 +193,7 @@
|
|||||||
// Desired view properties
|
// Desired view properties
|
||||||
_model: {
|
_model: {
|
||||||
x: xScale.getPixelForValue(this.getDataset().data[index], index, this.index, this.chart.isCombo),
|
x: xScale.getPixelForValue(this.getDataset().data[index], index, this.index, this.chart.isCombo),
|
||||||
y: reset ? scaleBase : yScale.getPixelForValue(this.getDataset().data[index], index, this.index),
|
y: reset ? scaleBase : this.calculatePointY(this.getDataset().data[index], index, this.index, this.chart.isCombo),
|
||||||
// Appearance
|
// Appearance
|
||||||
tension: point.custom && point.custom.tension ? point.custom.tension : (this.getDataset().tension || this.chart.options.elements.line.tension),
|
tension: point.custom && point.custom.tension ? point.custom.tension : (this.getDataset().tension || this.chart.options.elements.line.tension),
|
||||||
radius: point.custom && point.custom.radius ? point.custom.radius : helpers.getValueAtIndexOrDefault(this.getDataset().radius, index, this.chart.options.elements.point.radius),
|
radius: point.custom && point.custom.radius ? point.custom.radius : helpers.getValueAtIndexOrDefault(this.getDataset().radius, index, this.chart.options.elements.point.radius),
|
||||||
@ -208,6 +208,39 @@
|
|||||||
point._model.skip = point.custom && point.custom.skip ? point.custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));
|
point._model.skip = point.custom && point.custom.skip ? point.custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
calculatePointY: function(value, index, datasetIndex, isCombo) {
|
||||||
|
|
||||||
|
var xScale = this.getScaleForId(this.getDataset().xAxisID);
|
||||||
|
var yScale = this.getScaleForId(this.getDataset().yAxisID);
|
||||||
|
|
||||||
|
if (yScale.options.stacked) {
|
||||||
|
|
||||||
|
var sumPos = 0,
|
||||||
|
sumNeg = 0;
|
||||||
|
|
||||||
|
for (var i = this.chart.data.datasets.length - 1; i > datasetIndex; i--) {
|
||||||
|
var ds = this.chart.data.datasets[i];
|
||||||
|
if (helpers.isDatasetVisible(ds)) {
|
||||||
|
if (ds.data[index] < 0) {
|
||||||
|
sumNeg += ds.data[index] || 0;
|
||||||
|
} else {
|
||||||
|
sumPos += ds.data[index] || 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value < 0) {
|
||||||
|
return yScale.getPixelForValue(sumNeg + value);
|
||||||
|
} else {
|
||||||
|
return yScale.getPixelForValue(sumPos + value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return yScale.getPixelForValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return yScale.getPixelForValue(value);
|
||||||
|
},
|
||||||
|
|
||||||
updateBezierControlPoints: function() {
|
updateBezierControlPoints: function() {
|
||||||
// Update bezier control points
|
// Update bezier control points
|
||||||
helpers.each(this.getDataset().metaData, function(point, index) {
|
helpers.each(this.getDataset().metaData, function(point, index) {
|
||||||
|
Loading…
Reference in New Issue
Block a user