jui.define("chart.brush.scatterpath", ["util.base"], function(_) {
/**
* @class chart.brush.scatterpath
* @extends chart.brush.core
*
*/
var ScatterPathBrush = function() {
this.drawScatter = function(points) {
//"use asm";
var width = height = this.brush.size,
color = this.color(0),
strokeWidth = this.brush.strokeWidth;
var opt = {
fill : "none",
stroke : color,
"stroke-width" : strokeWidth,
"stroke-opacity" : 1,
"stroke-linecap" : "butt",
"stroke-linejoin" : "round"
};
var g = this.chart.svg.group(),
path = this.chart.svg.pathSymbol();
var tpl = path.template(width, height);
var count = 5;
var list = [];
for(var i = 1; i <= count; i++) {
list[i] = this.chart.svg.pathSymbol(opt);
}
var loop = _.loop(points[0].x.length);
for(var i = 0; i < points.length; i++) {
var symbol = this.brush.symbol;
loop(function(index, group) {
list[group].add(points[i].x[index]|0, points[i].y[index]|0, tpl[symbol]);
})
}
for(var i = 1; i <= count; i++) {
g.append(list[i]);
}
path.remove();
return g;
}
this.draw = function() {
return this.drawScatter(this.getXY(false));
}
}
ScatterPathBrush.setup = function() {
return {
/** @cfg {"circle"/"triangle"/"rectangle"/"cross"} [symbol="circle"] Determines the shape of a starter (circle, rectangle, cross, triangle). */
symbol: "circle", // or triangle, rectangle, cross
/** @cfg {Number} [size=7] Determines the size of a starter. */
size: 7,
/** @cfg {Number} [strokeWidth=1] Set the line thickness of a starter. */
strokeWidth : 1
};
}
return ScatterPathBrush;
}, "chart.brush.core");