jui.define("chart.brush.area", [ "util.base" ], function(_) {
/**
* @class chart.brush.area
*
* @extends chart.brush.line
*/
var AreaBrush = function() {
this.drawArea = function(path) {
var g = this.chart.svg.group(),
y = this.axis.y(this.brush.startZero ? 0 : this.axis.y.min()),
opacity = (_.typeCheck("number", this.brush.opacity)) ? this.brush.opacity : this.chart.theme("areaBackgroundOpacity");
for(var k = 0; k < path.length; k++) {
var children = this.createLine(path[k], k).children;
for(var i = 0; i < children.length; i++) {
var p = children[i];
if (path[k].length > 0) {
p.LineTo(p.attr("x2"), y);
p.LineTo(p.attr("x1"), y);
p.ClosePath();
}
p.attr({
fill: p.attr("stroke"),
"fill-opacity": opacity,
"stroke-width": 0
});
g.prepend(p);
}
if(this.brush.line) {
g.prepend(this.createLine(path[k], k));
}
this.addEvent(g, null, k);
}
return g;
}
this.draw = function() {
return this.drawArea(this.getXY());
}
this.drawAnimate = function(root) {
root.append(
this.chart.svg.animate({
attributeName: "opacity",
from: "0",
to: "1",
begin: "0s" ,
dur: "1.5s",
repeatCount: "1",
fill: "freeze"
})
);
}
}
AreaBrush.setup = function() {
return {
/** @cfg {"normal"/"curve"/"step"} [symbol="normal"] Sets the shape of a line (normal, curve, step). */
symbol: "normal", // normal, curve, step
/** @cfg {Number} [active=null] Activates the bar of an applicable index. */
active: null,
/** @cfg {String} [activeEvent=null] Activates the bar in question when a configured event occurs (click, mouseover, etc). */
activeEvent: null,
/** @cfg {"max"/"min"} [display=null] Shows a tool tip on the bar for the minimum/maximum value. */
display: null,
/** @cfg {Boolean} [startZero=true] The end of the area is zero point. */
startZero: true,
/** @cfg {Boolean} [line=true] Visible line */
line: true
};
}
return AreaBrush;
}, "chart.brush.line");