jui.define("chart.brush.equalizerbar", [], function() {
/**
* @class chart.brush.equalizerbar
* @extends chart.brush.stackbar
*/
var EqualizerBarBrush = function() {
var g, zeroX, bar_height, is_reverse;
this.drawBefore = function() {
g = this.svg.group();
zeroX = this.axis.x(0);
bar_height = this.getTargetSize();
is_reverse = this.axis.get("x").reverse;
}
this.draw = function() {
var targets = this.brush.target,
padding = this.brush.innerPadding,
band = this.axis.x.rangeBand(),
unit = band / (this.brush.unit * padding),
width = unit + padding;
this.eachData(function(data, i) {
var startY = this.offset("y", i) - bar_height / 2,
startX = this.axis.x(0),
x = startX,
value = 0;
for (var j = 0; j < targets.length; j++) {
var barGroup = this.svg.group(),
xValue = data[targets[j]] + value,
endX = this.axis.x(xValue),
targetWidth = Math.abs(startX - endX),
targetX = targetWidth;
while (targetX >= width) {
var r = this.getBarElement(i, j);
r.attr({
x : x,
y : startY,
width : unit,
height : bar_height
});
targetX -= width;
x -= (is_reverse) ? width : -width;
barGroup.append(r);
}
barGroup.translate((is_reverse) ? -unit : 0, 0);
this.addEvent(barGroup, i, j);
g.append(barGroup);
startX = endX;
value = xValue;
}
});
return g;
}
}
EqualizerBarBrush.setup = function() {
return {
/** @cfg {Number} [unit=5] Determines the reference value that represents the color.*/
unit: 1
};
}
return EqualizerBarBrush;
}, "chart.brush.stackbar");