jui.define("chart.brush.focus", [], function() { /** * @class chart.brush.focus * @extends chart.brush.core */ var FocusBrush = function() { var self = this; var g, grid; this.drawFocus = function(start, end) { var borderColor = this.chart.theme("focusBorderColor"), borderSize = this.chart.theme("focusBorderWidth"), bgColor = this.chart.theme("focusBackgroundColor"), bgOpacity = this.chart.theme("focusBackgroundOpacity"); var width = this.axis.area("width"), height = this.axis.area("height"), x = this.axis.area("x"), y = this.axis.area("y"); g = this.svg.group({}, function() { if(self.brush.hide || self.axis.data.length == 0) return; var a = self.svg.line({ stroke: borderColor, "stroke-width": borderSize, x1: 0, y1: 0, x2: (grid == "x") ? 0 : width, y2: (grid == "x") ? height : 0 }); var b = self.svg.rect({ width: (grid == "x") ? Math.abs(end - start) : width, height: (grid == "x") ? height : Math.abs(end - start), fill: bgColor, opacity: bgOpacity }); var c = self.svg.line({ stroke: borderColor, "stroke-width": borderSize, x1: 0, y1: 0, x2: (grid == "x") ? 0 : width, y2: (grid == "x") ? height : 0 }); if(grid == "x") { a.translate(start, y); b.translate(start, y); c.translate(end, y); } else { a.translate(x, start); b.translate(x, start); c.translate(x, end); } }); return g; } this.drawBefore = function() { grid = (this.axis.y.type == "range") ? "x" : "y"; } this.draw = function() { var start = 0, end = 0; if(this.brush.start == -1 || this.brush.end == -1) { return this.svg.g(); } if(this.axis[grid].type == "block") { var size = this.axis[grid].rangeBand(); start = this.axis[grid](this.brush.start) - size / 2; end = this.axis[grid](this.brush.end) + size / 2; } else { start = this.axis[grid](this.brush.start); end = this.axis[grid](this.brush.end); } return this.drawFocus(start, end); } } FocusBrush.setup = function() { return { /** @cfg {Integer} [start=-1] Sets a focus start index.*/ start: -1, /** @cfg {Integer} [end=-1] Sets a focus end index. */ end: -1 }; } return FocusBrush; }, "chart.brush.core");