},
/**
- * Returns the effective number of stacks based on groups and bar visibility.
+ * Returns the stacks based on groups and bar visibility.
+ * @param {Number} [last] - The dataset index
+ * @returns {Array} The stack list
* @private
*/
- getStackCount: function(last) {
+ _getStacks: function(last) {
var me = this;
var chart = me.chart;
var scale = me.getIndexScale();
}
}
- return stacks.length;
+ return stacks;
+ },
+
+ /**
+ * Returns the effective number of stacks based on groups and bar visibility.
+ * @private
+ */
+ getStackCount: function() {
+ return this._getStacks().length;
},
/**
* Returns the stack index for the given dataset based on groups and bar visibility.
+ * @param {Number} [datasetIndex] - The dataset index
+ * @param {String} [name] - The stack name to find
+ * @returns {Number} The stack index
* @private
*/
- getStackIndex: function(datasetIndex) {
- return this.getStackCount(datasetIndex) - 1;
+ getStackIndex: function(datasetIndex, name) {
+ var stacks = this._getStacks(datasetIndex);
+ var index = (name !== undefined)
+ ? stacks.indexOf(name)
+ : -1; // indexOf returns -1 if element is not present
+
+ return (index === -1)
+ ? stacks.length - 1
+ : index;
},
/**
calculateBarIndexPixels: function(datasetIndex, index, ruler) {
var me = this;
var options = ruler.scale.options;
- var stackIndex = me.getStackIndex(datasetIndex);
+ var meta = me.getMeta();
+ var stackIndex = me.getStackIndex(datasetIndex, meta.stack);
var pixels = ruler.pixels;
var base = pixels[index];
var length = pixels.length;