charts-debug.js revision e393eced613f9b4a5fb6bdd461d0e0bf5064d5ec
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippYUI.add('charts', function(Y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippvar Graphic = function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.initializer.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippGraphic.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp autoSize: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp initializer: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config = config || {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = config.width || 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = config.height || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(config.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node = config.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._styleGroup(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node = this._createGraphics();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Specifies a bitmap fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginBitmapFill: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fill = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.src = config.bitmap.src;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.type = "tile";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(config.tx) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.ty) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.width) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.height))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tx:config.tx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ty:config.ty,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width:config.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height:config.height
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifes a solid fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginFill: function(color, alpha) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (color) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillAlpha = Y.Lang.isNumber(alpha) ? alpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColor = color;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillType = 'solid';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fill = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Specifies a gradient fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginGradientFill: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var alphas = config.alphas || [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._defs)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._defs = this._createGraphicNode("defs");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this._defs);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillAlphas = alphas;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColors = config.colors;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillType = config.type || "linear";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillRatios = config.ratios || [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillRotation = config.rotation || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillWidth = config.width || null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillHeight = config.height || null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillX = !isNaN(config.tx) ? config.tx : NaN;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillY = !isNaN(config.ty) ? config.ty : NaN;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientId = "lg" + Math.round(100000 * Math.random());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Removes all nodes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp destroy: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._removeChildren(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.node && this.node.parentNode)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.parentNode.removeChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _removeChildren: function(node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node.hasChildNodes())
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var child;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp while(node.firstChild)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp child = node.firstChild;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._removeChildren(child);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.removeChild(child);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp toggleVisible: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._toggleVisible(this.node, val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _toggleVisible: function(node, val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var children = Y.Selector.query(">*", node),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp visibility = val ? "visible" : "hidden",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(children)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = children.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._toggleVisible(children[i], val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.style.visibility = visibility;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears the graphics object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp clear: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._graphicsList)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp while(this._graphicsList.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.removeChild(this._graphicsList.shift());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a bezier curve
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curveTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = "path";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.path.indexOf("C") < 0 || this._pathType !== "C")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = "C";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += ' C';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += Math.round(cp1x) + ", " + Math.round(cp1y) + ", " + Math.round(cp2x) + ", " + Math.round(cp2y) + ", " + x + ", " + y + " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._trackSize(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a quadratic bezier curve
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp quadraticCurveTo: function(cpx, cpy, x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.path.indexOf("Q") < 0 || this._pathType !== "Q")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = "Q";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += " Q";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += Math.round(cpx) + " " + Math.round(cpy) + " " + Math.round(x) + " " + Math.round(y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a circle
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawCircle: function(x, y, r) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x:x - r,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y:y - r,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w:r * 2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h:r * 2
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._attributes = {cx:x, cy:y, r:r};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = this._height = r * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x - r;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y - r;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = "circle";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws an ellipse
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawEllipse: function(x, y, w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x:x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y:y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w:w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h:h
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = "ellipse";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a rectangle
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawRect: function(x, y, w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x:x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y:y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w:w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h:h
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.moveTo(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a rectangle with rounded corners
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawRoundRect: function(x, y, w, h, ew, eh) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x:x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y:y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w:w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h:h
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.moveTo(x, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y + h - eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x, y + h, x + ew, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w - ew, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x + w, y + h, x + w, y + h - eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x + w, y, x + w - ew, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + ew, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x, y, x, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a wedge.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param x x component of the wedge's center point
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param y y component of the wedge's center point
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param startAngle starting angle in degrees
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param arc sweep of the wedge. Negative values draw clockwise.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param radius radius of wedge. If [optional] yRadius is defined, then radius is the x radius.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param yRadius [optional] y radius for wedge.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawWedge: function(x, y, startAngle, arc, radius, yRadius)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawingComplete = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = this._getWedgePath({x:x, y:y, startAngle:startAngle, arc:arc, radius:radius, yRadius:yRadius});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = radius * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = this._width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = "path";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._shapeType)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Not implemented
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifies a gradient to use for the stroke when drawing lines.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineGradientStyle: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('lineGradientStyle not implemented', 'warn', 'graphics-canvas');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifies a line style used for subsequent calls to drawing methods
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineStyle: function(thickness, color, alpha, pixelHinting, scaleMode, caps, joints, miterLimit) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroke = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeWeight = thickness;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (color) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeColor = color;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeAlpha = Y.Lang.isNumber(alpha) ? alpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineTo: function(point1, point2, etc) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var args = arguments,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (typeof point1 === 'string' || typeof point1 === 'number') {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp args = [[point1, point2]];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = args.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = "path";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.path.indexOf("L") < 0 || this._pathType !== "L")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = "L";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += ' L';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (i = 0; i < len; ++i) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += args[i][0] + ', ' + args[i][1] + " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._trackSize.apply(this, args[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Moves the current drawing position to specified x and y coordinates.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp moveTo: function(x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = "M";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += ' M' + x + ', ' + y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Generates a path string for a wedge shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getWedgePath: function(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var x = config.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = config.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle = config.startAngle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc = config.arc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radius = config.radius,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yRadius = config.yRadius || radius,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp segs,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp segAngle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp theta,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angleMid,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ax,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ay,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp by,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path = ' M' + x + ', ' + y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // limit sweep to reasonable numbers
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Math.abs(arc) > 360)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc = 360;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // First we calculate how many segments are needed
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // for a smooth arc.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp segs = Math.ceil(Math.abs(arc) / 45);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // Now calculate the sweep of each segment.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp segAngle = arc / segs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // The math requires radians rather than degrees. To convert from degrees
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // use the formula (degrees/180)*Math.PI to get radians.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp theta = -(segAngle / 180) * Math.PI;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // convert angle startAngle to radians
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = (startAngle / 180) * Math.PI;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(segs > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // draw a line from the center to the start of the curve
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ax = x + Math.cos(startAngle / 180 * Math.PI) * radius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ay = y + Math.sin(startAngle / 180 * Math.PI) * yRadius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += " L" + Math.round(ax) + ", " + Math.round(ay);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += " Q";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < segs; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle += theta;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angleMid = angle - (theta / 2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bx = x + Math.cos(angle) * radius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp by = y + Math.sin(angle) * yRadius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx = x + Math.cos(angleMid) * (radius / Math.cos(theta / 2));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy = y + Math.sin(angleMid) * (yRadius / Math.cos(theta / 2));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += Math.round(cx) + " " + Math.round(cy) + " " + Math.round(bx) + " " + Math.round(by) + " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += ' L' + x + ", " + y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the size of the graphics object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize: function(w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.autoSize)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(w > this.node.getAttribute("width"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("width", w);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(h > this.node.getAttribute("height"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("height", h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Updates the size of the graphics object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _trackSize: function(w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (w > this._width) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (h > this._height) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setPosition: function(x, y)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("x", x);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("y", y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp render: function(parentNode) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = parentNode.get("width") || parentNode.get("offsetWidth"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = parentNode.get("height") || parentNode.get("offsetHeight");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode = parentNode || Y.config.doc.body;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.appendChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears the properties
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _initProps: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColor = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeColor = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeWeight = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillAlphas = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColors = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillType = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillRatios = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillRotation = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillWidth = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillHeight = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillX = NaN;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillY = NaN;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fill = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroke = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroked = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._attributes = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears path properties
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _clearPath: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shapeType = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._pathType = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._attributes = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Completes a vml shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var shape = this._createGraphicNode(this._shapeType),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gradFill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.path)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._fill)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += 'z';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("d", this.path);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in this._attributes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._attributes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute(i, this._attributes[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("stroke-width", this._strokeWeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._strokeColor)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("stroke", this._strokeColor);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("stroke-opacity", this._strokeAlpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._fillType || this._fillType === "solid")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._fillColor)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("fill", this._fillColor);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("fill-opacity", this._fillAlpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("fill", "none");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(this._fillType === "linear")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gradFill = this._getFill();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gradFill.setAttribute("id", this._gradientId);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._defs.appendChild(gradFill);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.setAttribute("fill", "url(#" + this._gradientId + ")");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(shape);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearPath();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns ths actual fill object to be used in a drawing or shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getFill: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = this._fillType,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch (type) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case 'linear':
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill = this._getLinearGradient('fill');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case 'radial':
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //fill = this._getRadialGradient('fill');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case 'bitmap':
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //fill = this._bitmapFill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a linear gradient fill
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getLinearGradient: function(type) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fill = this._createGraphicNode("linearGradient"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prop = '_' + type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors = this[prop + 'Colors'],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios = this[prop + 'Ratios'],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas = this[prop + 'Alphas'],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this._fillWidth || (this._shape.w),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this._fillHeight || (this._shape.h),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp r = this[prop + 'Rotation'],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp def,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stop,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x1, x2, y1, y2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx = w/2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy = h/2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tanRadians;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /*
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(r > 0 && r < 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp r *= h/w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(r > 90 && r < 180)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp r = 90 + ((r-90) * w/h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp*/
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tanRadians = parseFloat(parseFloat(Math.tan(r * radCon)).toFixed(8));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Math.abs(tanRadians) * w/2 >= h/2)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(r < 180)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y1 = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y2 = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y1 = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y2 = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x1 = cx - ((cy - y1)/tanRadians);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x2 = cx - ((cy - y2)/tanRadians);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(r > 90 && r < 270)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x1 = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x2 = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x1 = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x2 = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y1 = ((tanRadians * (cx - x1)) - cy) * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y2 = ((tanRadians * (cx - x2)) - cy) * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /*
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("spreadMethod", "pad");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("x1", Math.round(100 * x1/w) + "%");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("y1", Math.round(100 * y1/h) + "%");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("x2", Math.round(100 * x2/w) + "%");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("y2", Math.round(100 * y2/h) + "%");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("gradientTransform", "rotate(" + r + ")");//," + (w/2) + ", " + (h/2) + ")");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("width", w);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("height", h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute("gradientUnits", "userSpaceOnUse");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = colors.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp def = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha = alphas[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = colors[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = ratios[i] || i/(l - 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = Math.round(ratio * 100) + "%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha = Y.Lang.isNumber(alpha) ? alpha : "1";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp def = (i + 1) / l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stop = this._createGraphicNode("stop");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stop.setAttribute("offset", ratio);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stop.setAttribute("stop-color", color);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stop.setAttribute("stop-opacity", alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.appendChild(stop);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a group element
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createGraphics: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var group = this._createGraphicNode("svg");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._styleGroup(group);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return group;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _styleGroup: function(group)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.position = "absolute";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.top = "0px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.overflow = "visible";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.left = "0px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.setAttribute("pointer-events", "none");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a vml node.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createGraphicNode: function(type, pe)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var node = document.createElementNS("http://www.w3.org/2000/svg", "svg:" + type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp v = pe || "none";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type !== "defs" && type !== "stop" && type !== "linearGradient")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setAttribute("pointer-events", v);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type != "svg")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._graphicsList)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicsList = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicsList.push(node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a shape.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getShape: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.graphic = this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return new Y.Shape(config);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Graphic = Graphic;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippvar VMLGraphics = function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.initializer.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippVMLGraphics.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp initializer: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config = config || {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = config.width || 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = config.height || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node = this._createGraphics();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Specifies a bitmap fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginBitmapFill: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fill = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.src = config.bitmap.src;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.type = "tile";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(config.tx) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.ty) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.width) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.height))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tx:config.tx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ty:config.ty,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width:config.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height:config.height
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifes a solid fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginFill: function(color, alpha) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (color) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (Y.Lang.isNumber(alpha)) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type:"solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp opacity: alpha
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColor = color;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fill = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Specifies a gradient fill used by subsequent calls to other Graphics methods (such as lineTo() or drawCircle()) for the object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp beginGradientFill: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = config.type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors = config.colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas = config.alphas || [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios = config.ratios || [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios:ratios
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = alphas.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp oi,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation = config.rotation || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(;i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha = alphas[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha = Y.Lang.isNumber(alpha) ? alpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp oi = i > 0 ? i + 1 : "";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas[i] = Math.round(alpha * 100) + "%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill["opacity" + oi] = alpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type === "linear")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rotation > 0 && rotation <= 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation = 450 - rotation;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rotation <= 270)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation = 270 - rotation;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rotation <= 360)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation = 630 - rotation;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation = 270;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.type = "gradientunscaled";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.angle = rotation;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(type === "radial")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.alignshape = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.type = "gradientradial";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.focus = "100%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.focusposition = "50%,50%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.ratios = ratios || [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(config.tx) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.ty) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.width) ||
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp !isNaN(config.height))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tx:config.tx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ty:config.ty,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width:config.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height:config.height
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._gradientBox = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears the graphics object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp clear: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._removeChildren(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Removes all nodes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp destroy: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._removeChildren(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.parentNode.removeChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _removeChildren: function(node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node.hasChildNodes())
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var child;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp while(node.firstChild)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp child = node.firstChild;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._removeChildren(child);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.removeChild(child);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp toggleVisible: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._toggleVisible(this.node, val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _toggleVisible: function(node, val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var children = Y.one(node).get("children"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp visibility = val ? "visible" : "hidden",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(children)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = children.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._toggleVisible(children[i], val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.style.visibility = visibility;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a bezier curve
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curveTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = "shape";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' c ' + Math.round(cp1x) + ", " + Math.round(cp1y) + ", " + Math.round(cp2x) + ", " + Math.round(cp2y) + ", " + x + ", " + y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._trackSize(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a quadratic bezier curve
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp quadraticCurveTo: function(cpx, cpy, x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' qb ' + cpx + ", " + cpy + ", " + x + ", " + y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a circle
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawCircle: function(x, y, r) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = this._height = r * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x - r;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y - r;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = "oval";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //this._path += ' ar ' + this._x + ", " + this._y + ", " + (this._x + this._width) + ", " + (this._y + this._height) + ", " + this._x + " " + this._y + ", " + this._x + " " + this._y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws an ellipse
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawEllipse: function(x, y, w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = "oval";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //this._path += ' ar ' + this._x + ", " + this._y + ", " + (this._x + this._width) + ", " + (this._y + this._height) + ", " + this._x + " " + this._y + ", " + this._x + " " + this._y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a rectangle
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawRect: function(x, y, w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.moveTo(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a rectangle with rounded corners
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawRoundRect: function(x, y, w, h, ew, eh) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = y;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.moveTo(x, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x, y + h - eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x, y + h, x + ew, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w - ew, y + h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x + w, y + h, x + w, y + h - eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + w, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x + w, y, x + w - ew, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.lineTo(x + ew, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.quadraticCurveTo(x, y, x, y + eh);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawWedge: function(x, y, startAngle, arc, radius, yRadius)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawingComplete = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = radius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = radius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yRadius = yRadius || radius;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += this._getWedgePath({x:x, y:y, startAngle:startAngle, arc:arc, radius:radius, yRadius:yRadius});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = radius * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = this._width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = "shape";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Generates a path string for a wedge shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getWedgePath: function(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var x = config.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = config.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle = config.startAngle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc = config.arc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radius = config.radius,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yRadius = config.yRadius || radius,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Math.abs(arc) > 360)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc = 360;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle *= -65535;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc *= 65536;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path = " m " + x + " " + y + " ae " + x + " " + y + " " + radius + " " + yRadius + " " + startAngle + " " + arc;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._shape)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Not implemented
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifies a gradient to use for the stroke when drawing lines.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineGradientStyle: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('lineGradientStyle not implemented', 'warn', 'graphics-canvas');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Specifies a line style used for subsequent calls to drawing methods
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineStyle: function(thickness, color, alpha, pixelHinting, scaleMode, caps, joints, miterLimit) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroke = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeWeight = thickness * 0.7;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeColor = color;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeOpacity = Y.Lang.isNumber(alpha) ? alpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineTo: function(point1, point2, etc) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var args = arguments,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (typeof point1 === 'string' || typeof point1 === 'number') {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp args = [[point1, point2]];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = args.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = "shape";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' l ';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (i = 0; i < len; ++i) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' ' + Math.round(args[i][0]) + ', ' + Math.round(args[i][1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._trackSize.apply(this, args[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Moves the current drawing position to specified x and y coordinates.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp moveTo: function(x, y) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' m ' + Math.round(x) + ', ' + Math.round(y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the size of the graphics object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize: function(w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = Math.round(w);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = Math.round(h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.width = w + 'px';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.height = h + 'px';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.coordSize = w + ' ' + h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._canvasWidth = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._canvasHeight = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setPosition: function(x, y)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = Math.round(x);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = Math.round(y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.left = x + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.top = y + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp render: function(parentNode) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = Math.max(parentNode.offsetWidth || 0, this._canvasWidth),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = Math.max(parentNode.offsetHeight || 0, this._canvasHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode = parentNode || Y.config.doc.body;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.appendChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initProps();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to current vml shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _shape: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Updates the size of the graphics object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _trackSize: function(w, h) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (w > this._width) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (h > this._height) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears the properties
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _initProps: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillColor = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeColor = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeOpacity = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeWeight = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fillProps = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._fill = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroke = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stroked = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Clears path properties
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _clearPath: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._shape = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path = '';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._width = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._height = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._x = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._y = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Completes a vml shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var shape = this._createGraphicNode(this._shape),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = Math.round(this._width),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = Math.round(this._height),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strokeNode,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillProps = this._fillProps;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._path)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._fill || this._fillProps)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' x';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._stroke)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._path += ' e';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.path = this._path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.coordSize = w + ', ' + h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.display = "block";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.position = "absolute";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.left = this._x + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.top = this._y + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (this._fill) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.fillColor = this._fillColor;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.filled = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (this._stroke && this._strokeWeight > 0) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.strokeColor = this._strokeColor;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.strokeWeight = this._strokeWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(this._strokeOpacity) && this._strokeOpacity < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strokeNode = this._createGraphicNode("stroke");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.appendChild(strokeNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strokeNode.opacity = this._strokeOpacity;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp } else {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.stroked = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.width = w + 'px';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.style.height = h + 'px';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (fillProps) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.filled = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape.appendChild(this._getFill());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(shape);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearPath();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns ths actual fill object to be used in a drawing or shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getFill: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fill = this._createGraphicNode("fill"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this._width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this._height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillProps = this._fillProps,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prop,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pct,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colorstring = "",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hyp = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx = 50,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy = 50;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._gradientBox)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx= Math.round( (this._gradientBox.width/2 - ((this._x - this._gradientBox.tx) * hyp/w))/(w * w/hyp) * 100);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy = Math.round( (this._gradientBox.height/2 - ((this._y - this._gradientBox.ty) * hyp/h))/(h * h/hyp) * 100);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillProps.focussize = (this._gradientBox.width/w)/10 + " " + (this._gradientBox.height/h)/10;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(fillProps.colors)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors = fillProps.colors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios = fillProps.ratios.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = colors.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(;i < len; ++i) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pct = ratios[i] || i/(len-1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pct = Math.round(100 * pct) + "%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colorstring += ", " + pct + " " + colors[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(parseInt(pct, 10) < 100)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colorstring += ", 100% " + colors[len-1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (prop in fillProps) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(fillProps.hasOwnProperty(prop)) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.setAttribute(prop, fillProps[prop]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.colors = colorstring.substr(2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(fillProps.type === "gradientradial")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill.focusposition = cx + "%," + cy + "%";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a group element
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createGraphics: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var group = this._createGraphicNode("group");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.display = "inline-block";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp group.style.position = 'absolute';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return group;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a vml node.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createGraphicNode: function(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return document.createElement('<' + type + ' xmlns="urn:schemas-microsft.com:vml" class="vml' + type + '"/>');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getNodeShapeType: function(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var shape = "shape";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._typeConversionHash.hasOwnProperty(type))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape = this._typeConversionHash[type];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return shape;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _typeConversionHash: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp circle: "oval",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ellipse: "oval",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rect: "rect"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a shape.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getShape: function(config) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.graphic = this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return new Y.Shape(config);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addChild: function(child)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(child);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippif(!document.createElementNS)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var sheet = document.createStyleSheet();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlgroup", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlgroup", "display:inline-block", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlgroup", "zoom:1", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlshape", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlshape", "display:inline-block", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmloval", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmloval", "display:inline-block", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlrect", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlrect", "display:block", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlfill", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sheet.addRule(".vmlstroke", "behavior:url(#default#VML)", sheet.rules.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.log('using VML');
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Graphic = VMLGraphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Shape(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initialize(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(Shape, Y.Graphic, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "shape",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp autoSize: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pointerEvents: "visiblePainted",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _initialize: function(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!cfg.graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cfg.graphic = new Y.Graphic();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setProps(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setProps: function(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.autoSize = cfg.autoSize || this.autoSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.pointerEvents = cfg.pointerEvents || this.pointerEvents;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.width = cfg.width || this.width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.height = cfg.height || this.height;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border = cfg.border || this.border;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics = cfg.graphic || this.graphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.canvas = this.graphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.parentNode = this.graphics.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fill = cfg.fill || this.fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.type = cfg.shape || this.type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.nodetype = this._getNodeShapeType(this.type);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.props = cfg.props || this.props;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = cfg.path || this.path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var cx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rx,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ry,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode = this.parentNode,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillWidth = this.width || 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillHeight = this.height || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node = this._createGraphicNode(this.nodetype, this.pointerEvents);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.appendChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.nodetype == "path")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.type == "wedge")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path = this._getWedgePath(this.props);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setPath();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.border && this.border.weight && this.border.weight > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = this.border.weight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillWidth -= borderWeight * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillHeight -= borderWeight * 2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addBorder();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.nodetype === "ellipse")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rx = cx = this.width/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ry = cy = this.height/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rx -= borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ry -= borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("cx", cx);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("cy", cy);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("rx", rx);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("ry", ry);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("width", fillWidth);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("height", fillHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.width = fillWidth + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.height = fillHeight + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addFill();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.style.width = this.width + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.style.height = this.height + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.setAttribute("width", this.width);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp parentNode.setAttribute("height", this.height);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.visibility = "visible";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("x", borderWeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("y", borderWeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setPath: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.path)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.path += " Z";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("d", this.path);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addBorder: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.border && this.border.weight && this.border.weight > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var borderAlpha = this.border.alpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border.color = this.border.color || "#000000";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border.weight = this.border.weight || 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border.alpha = Y.Lang.isNumber(borderAlpha) ? borderAlpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border.linecap = this.border.linecap || "square";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("stroke", this.border.color);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("stroke-linecap", this.border.linecap);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("stroke-width", this.border.weight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("stroke-opacity", this.border.alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("stroke", "none");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addFill: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fillAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.fill.type === "linear" || this.fill.type === "radial")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.beginGradientFill(this.fill);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this._getFill());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(this.fill.type === "bitmap")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.beginBitmapFill(this.fill);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this._getFill());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.fill.color)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("fill", "none");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillAlpha = this.fill.alpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fill.alpha = Y.Lang.isNumber(fillAlpha) ? fillAlpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("fill", this.fill.color);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.setAttribute("fill-opacity", fillAlpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setPath();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp update: function(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setProps(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getNodeShapeType: function(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._typeConversionHash.hasOwnProperty(type))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this._typeConversionHash[type];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp toggleVisible: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var visibility = val ? "visible" : "hidden";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.visibility = visibility;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addClass: function(className)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var node = this.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node.className && node.className.baseVal)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.className.baseVal = Y.Lang.trim([node.className.baseVal, className].join(' '));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setAttribute("class", className);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _typeConversionHash: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp circle: "ellipse",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp wedge: "path"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Shape = Shape;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction VMLShape(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._initialize(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippVMLShape.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Type of shape
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "shape",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _initialize: function(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!cfg.graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cfg.graphic = new Y.Graphic();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setProps(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a shape.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setProps: function(cfg) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.width = cfg.width && cfg.width >= 0 ? cfg.width : this.width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.height = cfg.height && cfg.height >= 0 ? cfg.height : this.height;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.border = cfg.border || this.border;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics = cfg.graphic || this.graphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.canvas = this.graphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.parentNode = this.graphics.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fill = cfg.fill || this.fill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.type = cfg.shape || this.type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.props = cfg.props || this.props;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var path,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillWidth = this.width || 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillHeight = this.height || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics.setSize(fillWidth, fillHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.visible = "hidden";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!this.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node = this.graphics._createGraphicNode(this.graphics._getNodeShapeType(this.type));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics.node.appendChild(this.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.type === "wedge")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path = this.graphics._getWedgePath(this.props);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.fill)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += ' x';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.border)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp path += ' e';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.path = path;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addBorder();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.border && this.border.weight && this.border.weight > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = this.border.weight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillWidth -= borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillHeight -= borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.width = Math.max(fillWidth, 0) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.style.height = Math.max(fillHeight, 0) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addFill();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addBorder: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.border && this.border.weight && this.border.weight > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var borderAlpha = this.border.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = this.borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderAlpha = Y.Lang.isNumber(borderAlpha) ? borderAlpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeight = Y.Lang.isNumber(borderWeight) ? borderWeight : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.strokecolor = this.border.color || "#000000";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.strokeweight = borderWeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(borderAlpha < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._strokeNode)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeNode = this.graphics._createGraphicNode("stroke");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this._strokeNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeNode.opacity = borderAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(this._strokeNode)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._strokeNode.opacity = borderAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.stroked = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.stroked = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addFill: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var fillAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.filled = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.fill.type === "linear" || this.fill.type === "radial")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics.beginGradientFill(this.fill);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this.graphics._getFill());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(this.fill.type === "bitmap")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics.beginBitmapFill(this.fill);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this.graphics._getFill());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.fill.color)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.filled = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.fillnode)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.graphics._removeChildren(this.fillnode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillAlpha = this.fill.alpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillAlpha = Y.Lang.isNumber(fillAlpha) ? fillAlpha : 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fill.alpha = fillAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fillnode = this.graphics._createGraphicNode("fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fillnode.type = "solid";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fillnode.color = this.fill.color;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fillnode.opacity = fillAlpha;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.node.appendChild(this.fillnode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addClass: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var node = this.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(node).addClass(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp toggleVisible: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var visibility = val ? "visible" : "hidden";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(this.node).setStyle("visibility", visibility);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp update: function(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setProps(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.VMLShape = VMLShape;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippif (!document.createElementNS) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Shape = VMLShape;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Renderer(){}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippRenderer.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Hash of style properties for class
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._styles = this._styles || this._getDefaultStyles();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._styles = this._setStyles(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The graphic in which the series will be rendered.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic: {}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippRenderer.NAME = "renderer";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippRenderer.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Storage for styles
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _styles: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets multiple style properties on the instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @method _setStyles
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Object} styles Hash of styles to be applied.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setStyles: function(newstyles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this.get("styles");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._mergeStyles(newstyles, styles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Merges to object literals only overriding properties explicitly.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Object} newHash hash of properties to set
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Object} default hash of properties to be overwritten
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return {Object}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _mergeStyles: function(a, b)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!b)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp b = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var newstyles = Y.merge(b, {});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.Object.each(a, function(value, key, a)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(b.hasOwnProperty(key) && Y.Lang.isObject(value) && !Y.Lang.isArray(value))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newstyles[key] = this._mergeStyles(value, b[key]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newstyles[key] = value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }, this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return newstyles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Default style values.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top:0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.augment(Renderer, Y.Attribute);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Renderer = Renderer;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Axis = Y.Base.create("axis", Y.Widget, [Y.Renderer], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Handler for data changes.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("rendered"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("rendered"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _positionChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var position = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(position == "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._layout =this.getLayout(this.get("position"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("rendered"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var pos = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos && pos != "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._layout =this.getLayout(pos);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setCanvas();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp syncUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a <code>Graphic</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setCanvas: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bb = this.get("boundingBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p = this.get("position"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pn = this._parentNode,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bb.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = w ? w + "px" : pn.getStyle("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = h ? h + "px" : pn.getStyle("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(p === "top" || p === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("width", w);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("height", h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("position", "relative");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", "0px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("top", "0px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("graphic", new Y.Graphic());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").render(cb);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Returns the default style values for the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axisstyles = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display:"inside",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp length:4,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#808080",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight:1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minorTicks: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display:"none",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp length:2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#808080",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight:1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight:1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#808080",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorUnit: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp determinant:"count",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp count:11,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp distance:75
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: "0px",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: "0px",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: "100px",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: "100px",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#808080",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fontSize:"85%",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top:4,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right:4,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom:4,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left:4
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hideOverlappingLabelTicks: false
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.merge(Y.Renderer.prototype._getDefaultStyles(), axisstyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _handleSizeChange: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = e.type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vert = pos == "left" || pos == "right",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hor = pos == "bottom" || pos == "top";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("width", this.get("width"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("height", this.get("height"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if((hor && type == "widthChange") || (vert && type == "heightChange"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Strategy for drawing the axis dependent upon the axis position.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _layout: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Returns the correct _layout class instance to be used for drawing the
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLayout: function(pos)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(pos)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "top" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = new Y.TopAxisLayout({axisRenderer:this});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "bottom" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = new Y.BottomAxisLayout({axisRenderer:this});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "left" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = new Y.LeftAxisLayout({axisRenderer:this});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "right" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = new Y.RightAxisLayout({axisRenderer:this});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Draws line based on start point, end point and line object.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawLine: function(startPoint, endPoint, line)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineStyle(line.weight, line.color, line.alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(startPoint.x, startPoint.y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(endPoint.x, endPoint.y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Basic logic for drawing an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _drawAxis: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("position") != "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTickStyles = styles.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawTicks = majorTickStyles.display != "none",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickPoint,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorUnit = styles.majorUnit,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorUnitDistance,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layoutLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineStart,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout = this._layout,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction = this.get("labelFunction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunctionScope = this.get("labelFunctionScope"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFormat = this.get("labelFormat"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.setTickOffsets();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layoutLength = this.getLength();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineStart = layout.getLineStart();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = this.getTotalMajorUnits(majorUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorUnitDistance = this.getMajorUnitDistance(len, layoutLength, majorUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("edgeOffset", this.getEdgeOffset(len, layoutLength) * 0.5);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickPoint = this.getFirstPoint(lineStart);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawLine(lineStart, this.getLineEnd(tickPoint), styles.line);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(drawTicks)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.drawTick(tickPoint, majorTickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(len < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createLabelCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._tickPoints = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.set("maxLabelSize", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(drawTicks)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.drawTick(tickPoint, majorTickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position = this.getPosition(tickPoint);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label = this.getLabel(tickPoint);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.innerHTML = labelFunction.apply(labelFunctionScope, [this.getLabelByIndex(i, len), labelFormat]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickPoint = this.getNextPoint(tickPoint, majorUnitDistance);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.setSizeAndPosition();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearLabelCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("overlapGraph"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.offsetNodeForTick(this.get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.setCalculatedSize();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp layout.positionLabel(this.get("labels")[i], this._tickPoints[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("axisRendered");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Collection of labels used in creating an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _labels: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Collection of labels to be reused in creating an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _labelCache: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Draws and positions a label based on its style properties.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabel: function(pt, pos)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp customStyles = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rotation: "rotation",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin: "margin",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: "alpha"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cache = this._labelCache,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").label;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(cache.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label = cache.shift();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label = document.createElement("span");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.whiteSpace = "nowrap";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(label).addClass("axisLabel");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.display = "block";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.position = "absolute";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("contentBox").appendChild(label);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._labels.push(label);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._tickPoints.push({x:pt.x, y:pt.y});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._layout.updateMaxLabelSize(label);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in styles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(styles.hasOwnProperty(i) && !customStyles.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style[i] = styles[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return label;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a cache of labels for reuse.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createLabelCache: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._labels)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._labelCache = this._labels.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._labelCache = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._labels = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Removes unused labels from the label cache
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _clearLabelCache: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var len = this._labelCache.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelCache;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label = labelCache[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.parentNode.removeChild(label);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._labelCache = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates how to include tick length in the size calculation of an
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * axis. If set to true, the length of the tick is used to calculate
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * this size. If false, the offset of tick will be used.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _calculateSizeByTickLength: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicate the end point of the axis line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLineEnd: function(pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "top" || pos === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:w, y:pt.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:pt.x, y:h};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the distance between the first and last data points.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLength: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = this.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "top" || pos === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = w - (padding.left + padding.right);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = h - (padding.top + padding.bottom);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the first point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getFirstPoint:function(pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = this.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp np = {x:pt.x, y:pt.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "top" || pos === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp np.x += padding.left + this.get("edgeOffset");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp np.y += this.get("height") - (padding.top + this.get("edgeOffset"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return np;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the next majorUnit point.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getNextPoint: function(point, majorUnitDistance)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var pos = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "top" || pos === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp point.x = point.x + majorUnitDistance;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp point.y = point.y - majorUnitDistance;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return point;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the last point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLastPoint: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = this.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "top" || pos === "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:w - padding.right, y:padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:padding.left, y:padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the position of a point on the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getPosition: function(point)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var p,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = this.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = this.get("position"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataType = this.get("dataType");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos === "left" || pos === "right")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //Numeric data on a vertical axis is displayed from bottom to top.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //Categorical and Timeline data is displayed from top to bottom.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dataType === "numeric")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p = (h - (padding.top + padding.bottom)) - (point.y - padding.top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p = point.y - padding.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p = point.x - padding.left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return p;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp edgeOffset:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The graphic in which the axis line and ticks will be rendered.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Contains the contents of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Direction of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lazyAdd: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setOnce: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val == "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.bindUI();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance determined by the tick styles used to calculate the distance between the axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * line in relation to the top of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topTickOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance determined by the tick styles used to calculate the distance between the axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * line in relation to the bottom of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottomTickOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance determined by the tick styles used to calculate the distance between the axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * line in relation to the left of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftTickOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance determined by the tick styles used to calculate the distance between the axis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * line in relation to the right side of the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rightTickOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labels: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._labels;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of points used for placement of labels and ticks along the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickPoints: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("position") == "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("styles").majorUnit.count;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._tickPoints;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether the axis overlaps the graph. If an axis is the inner most axis on a given
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * position and the tick position is inside or cross, the axis will need to overlap the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp overlapGraph: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.Lang.isBoolean(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Object which should have by the labelFunction
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunctionScope: {}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Contains algorithms for rendering a left axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction LeftAxisLayout(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp LeftAxisLayout.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippLeftAxisLayout.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisRenderer: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maxLabelSize: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(LeftAxisLayout, Y.Base, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the length of the tick on either side of the axis line.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setTickOffsets: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfTick = tickLength * 0.5,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(display)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "inside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "outside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "cross":
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp default:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a tick
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawTick: function(pt, tickStyles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = tickStyles.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp start = {x:padding.left, y:pt.y},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end = {x:tickLength + padding.left, y:pt.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.drawLine(start, end, tickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the first point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLineStart: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt = {x:padding.left, y:0};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "outside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.x += tickLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.x += tickLength/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return pt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the point for a label.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelPoint: function(point)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:point.x - ar.get("leftTickOffset"), y:point.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMaxLabelSize: function(label)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + rot + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), label.offsetWidth));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = (cosRadians * label.offsetWidth) + (sinRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), max));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positionLabel: function(label, pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelAlpha = style.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset = pt.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset = pt.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11 = cosRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12 = rot > 0 ? -sinRadians : sinRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21 = -m12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22 = m11;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(style.margin && style.margin.right)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.margin.right;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === -90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) + (label.offsetHeight * rot/90);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * (label.offsetHeight * 0.5));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) + (absRot/90 * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= cosRadians * (label.offsetHeight * 0.5);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = (this.get("maxLabelSize") + leftOffset) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(labelAlpha))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot !== 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = filterString;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === -90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) + (sinRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += (sinRadians * label.offsetWidth) - (cosRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = (this.get("maxLabelSize") + leftOffset) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the size and positions the content elements.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeAndPosition: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var labelSize = this.get("maxLabelSize"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = style.line.weight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = ar.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLen = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.label.margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz -= tickLen;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz -= tickLen * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(margin && margin.right)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += margin.right;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += labelSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = Math.round(sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("width", sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphic.node).setStyle("left", sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetNodeForTick: function(cb)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", tickLength + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if (display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", (tickLength * 0.5) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", "0px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setCalculatedSize: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ttl = ar.get("leftTickOffset") + this.get("maxLabelSize") + style.margin.right;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("width", Math.round(ttl));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.LeftAxisLayout = LeftAxisLayout;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Contains algorithms for rendering a right axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction RightAxisLayout(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp RightAxisLayout.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippRightAxisLayout.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisRenderer: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(RightAxisLayout, Y.Base, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the length of the tick on either side of the axis line.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setTickOffsets: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfTick = tickLength * 0.5,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(display)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "inside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "outside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "cross":
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawTick: function(pt, tickStyles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = tickStyles.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp start = {x:padding.left, y:pt.y},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end = {x:padding.left + tickLength, y:pt.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.drawLine(start, end, tickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the first point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLineStart: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt = {x:padding.left, y:padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.x += tickLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.x += tickLength/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return pt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the point for a label.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelPoint: function(point)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:point.x + ar.get("rightTickOffset"), y:point.y};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMaxLabelSize: function(label)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + rot + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), label.offsetWidth));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = (cosRadians * label.offsetWidth) + (sinRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), max));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positionLabel: function(label, pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelAlpha = style.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset = pt.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset = pt.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(Math.max(style.rotation, -90), 90),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11 = cosRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12 = rot > 0 ? -sinRadians : sinRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21 = -m12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22 = m11;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(style.margin && style.margin.right)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.margin.right;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (cosRadians * (label.offsetHeight * 0.5));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * (label.offsetHeight * 0.5));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(labelAlpha))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot !== 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = filterString;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === -90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (cosRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= cosRadians * (label.offsetHeight * 0.6);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += sinRadians * label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the size and positions the content elements.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeAndPosition: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelSize = this.get("maxLabelSize"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = style.line.weight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLen = majorTicks.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "outside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += labelSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("width", sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetNodeForTick: function(cb)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", 0 - tickLength + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if (display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("left", 0 - (tickLength * 0.5) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setCalculatedSize: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ttl = ar.get("rightTickOffset") + this.get("maxLabelSize") + style.margin.left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("width", ttl);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.RightAxisLayout = RightAxisLayout;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Contains algorithms for rendering a bottom axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction BottomAxisLayout(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp BottomAxisLayout.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippBottomAxisLayout.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisRenderer: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maxLabelSize: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(BottomAxisLayout, Y.Base, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the length of the tick on either side of the axis line.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setTickOffsets: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfTick = tickLength * 0.5,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(display)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "inside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "outside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "cross":
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the first point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLineStart: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt = {x:0, y:padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.y += tickLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.y += tickLength/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return pt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a tick
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawTick: function(pt, tickStyles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = tickStyles.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp start = {x:pt.x, y:padding.top},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end = {x:pt.x, y:tickLength + padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.drawLine(start, end, tickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the point for a label.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelPoint: function(point)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:point.x, y:point.y + ar.get("bottomTickOffset")};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMaxLabelSize: function(label)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + rot + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), label.offsetHeight));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = (sinRadians * label.offsetWidth) + (cosRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), max));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Rotate and position labels.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positionLabel: function(label, pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelAlpha = style.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset = pt.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset = pt.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11 = cosRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12 = rot > 0 ? -sinRadians : sinRadians,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21 = -m12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22 = m11;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(style.margin && style.margin.top)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.margin.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11 = cosRadians;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12 = rot > 0 ? -sinRadians : sinRadians;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21 = -m12;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22 = m11;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= cosRadians * label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= sinRadians * (label.offsetHeight * 0.5);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= sinRadians * (label.offsetHeight * 0.5);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(labelAlpha))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot !== 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = filterString;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) + (sinRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += sinRadians * label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += sinRadians * (label.offsetHeight * 0.6);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset += margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the size and positions the content elements.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeAndPosition: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var labelSize = this.get("maxLabelSize"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = style.line.weight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLen = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.label.margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "outside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(margin && margin.top)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += margin.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += labelSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = Math.round(sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("height", sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Adjusts position for inner ticks.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetNodeForTick: function(cb)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = styles.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("marginTop", (0 - tickLength) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if (display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("marginTop", (0 - (tickLength * 0.5)) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setCalculatedSize: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ttl = ar.get("bottomTickOffset") + this.get("maxLabelSize") + style.margin.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("height", Math.round(ttl));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.BottomAxisLayout = BottomAxisLayout;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Contains algorithms for rendering a top axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction TopAxisLayout(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp TopAxisLayout.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippTopAxisLayout.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisRenderer: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(TopAxisLayout, Y.Base, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Sets the length of the tick on either side of the axis line.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setTickOffsets: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfTick = tickLength * 0.5,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("leftTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("rightTickOffset", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(display)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "inside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "outside" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", tickLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "cross":
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("topTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("bottomTickOffset", halfTick);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the coordinates for the first point on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLineStart: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt = {x:0, y:padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "outside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.y += tickLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pt.y += tickLength/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return pt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a tick
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawTick: function(pt, tickStyles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = style.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = tickStyles.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp start = {x:pt.x, y:padding.top},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp end = {x:pt.x, y:tickLength + padding.top};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.drawLine(start, end, tickStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the point for a label.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelPoint: function(pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {x:pt.x, y:pt.y - ar.get("topTickOffset")};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMaxLabelSize: function(label)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelAlpha = label.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, Math.max(-90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + rot + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), label.offsetHeight));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = (sinRadians * label.offsetWidth) + (cosRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("maxLabelSize", Math.max(this.get("maxLabelSize"), max));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positionLabel: function(label, pt)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelAlpha = style.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset = pt.x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset = pt.y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.max(-90, Math.min(90, style.rotation)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp absRot = Math.abs(rot),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radCon = Math.PI/180,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.min(90, rot);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rot = Math.max(-90, rot);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(style.margin && style.margin.bottom)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp margin = style.margin.bottom;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.UA.ie)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m11 = cosRadians;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m12 = rot > 0 ? -sinRadians : sinRadians;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m21 = -m12;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp m22 = m11;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(absRot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) + Math.min((sinRadians * label.offsetHeight), (rot/180 * label.offsetHeight));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * (label.offsetHeight));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= sinRadians * (label.offsetHeight * 0.5);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * (label.offsetHeight));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(labelAlpha))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(labelAlpha * 100) + ")";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot !== 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += " ";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString = "";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp filterString += 'progid:DXImageTransform.Microsoft.Matrix(M11=' + m11 + ' M12=' + m12 + ' M21=' + m21 + ' M22=' + m22 + ' sizingMethod="auto expand")';
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(filterString)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.filter = filterString;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rot === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetWidth * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === 90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset += label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= label.offsetWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot === -90)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= label.offsetHeight * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rot < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (sinRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (cosRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftOffset -= (cosRadians * label.offsetWidth) - (sinRadians * (label.offsetHeight * 0.6));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= (sinRadians * label.offsetWidth) + (cosRadians * label.offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topOffset -= margin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.left = leftOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.top = topOffset + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.MozTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransformOrigin = "0 0";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label.style.webkitTransform = "rotate(" + rot + "deg)";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Calculates the size and positions the content elements.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeAndPosition: function(labelSize)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz = style.line.weight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = style.majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLen = majorTicks.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "outside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += tickLen * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sz += labelSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.get("contentBox").setStyle("top", labelSize + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("height", sz);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetNodeForTick: function(cb)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorTicks = ar.get("styles").majorTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tickLength = majorTicks.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp display = majorTicks.display;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(display === "inside")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("marginBottom", (0 - tickLength) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if (display === "cross")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb.setStyle("marginBottom", (0 - (tickLength * 0.5)) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setCalculatedSize: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ar = this.get("axisRenderer"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style = ar.get("styles").label,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ttl = ar.get("topTickOffset") + this.get("maxLabelSize") + style.margin.bottom;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ar.set("height", ttl);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.TopAxisLayout = TopAxisLayout;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * BaseAxis is the base class for observable baseAxis classes.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates the BaseAxis instance and contains initialization data
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Object} config (optional) Configuration parameters for the Chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @class SWFWidget
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @constructor
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.BaseAxis = Y.Base.create("baseAxis", Y.Axis, [], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bindUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("dataReady", Y.bind(this._dataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("dataUpdate", Y.bind(this._dataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("keysChange", this._keyChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("dataProviderChange", this._dataProviderChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("stylesChange", this._updateHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("positionChange", this._positionChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("overlapGraphChange", this._updateHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("widthChange", this._handleSizeChange);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("heightChange", this._handleSizeChange);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("alwaysShowZeroChange", this._keyChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("roundingMethodChange", this._keyChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataProviderChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keyCollection = this.get("keyCollection").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = this.get("keys"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp delete keys[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keyCollection && keyCollection.length)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("keys", keyCollection);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp GUID: "yuibaseaxis",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for type
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _type: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for maximum when autoMax is false.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setMaximum: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for dataMaximum
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * is true.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataMaximum: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for minimum when autoMin is false.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setMinimum: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for data
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _data: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for keys
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateTotalDataFlag: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates that the axis has a data source and at least one
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * key.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataReady: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Adds an array to the key hash.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param value Indicates what key to use in retrieving
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the array.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addKey: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("keys", value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Returns an array of values for a given key.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getKeyArray: function(key, data)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArray = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = data.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = data[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArray[i] = obj[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return keyArray;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates an array of data based on a key value.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setDataByKey: function(key, data)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv = this._dataClone.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = dv.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = dv[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr[i] = obj[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("keys")[key] = arr;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalDataFlag = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateTotalData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = this.get("keys"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._data = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._data = this._data.concat(keys[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalDataFlag = false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Removes an array from the key hash.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param value Indicates what key to use in removing from
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the hash.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return Boolean
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp removeKey: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(value))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp delete keys[value];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._keyChangeHandler();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a numeric value based of a key value and an index.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getKeyValueAt: function(key, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var value = NaN,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys[key] && keys[key][index])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value = keys[key][index];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns an array of values based on an identifier key.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getDataByKey: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys[value])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return keys[value];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Updates the <code>dataMaximum</code> and <code>dataMinimum</code> values.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateMinAndMax: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var data = this.get("data"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(data && data.length && data.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = data.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = min = data[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(len > 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 1; i < len; i++)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num = data[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isNaN(num))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(num, max);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(num, min);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMaximum = max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMinimum = min;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the total number of majorUnits that will appear on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getTotalMajorUnits: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var units,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp majorUnit = this.get("styles").majorUnit,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = this.get("length");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(majorUnit.determinant === "count")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp units = majorUnit.count;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(majorUnit.determinant === "distance")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp units = (len/majorUnit.distance) + 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Returns the distance between major units on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getMajorUnitDistance: function(len, uiLen, majorUnit)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var dist;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(majorUnit.determinant === "count")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dist = uiLen/(len - 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(majorUnit.determinant === "distance")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dist = majorUnit.distance;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return dist;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getEdgeOffset: function(ct, l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelByIndex: function(i, l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var min = this.get("minimum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this.get("maximum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp increm = (max - min)/(l-1),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l -= 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp label = min + (i * increm);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return label;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _keyChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateMinAndMax();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("dataUpdate");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Hash of array identifed by a string value.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp data = this.get("dataProvider");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = val.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys[val[i]] = this._getKeyArray(val[i], data);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(Y.Lang.isString(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys[val] = this._getKeyArray(val, data);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys[i] = this._getKeyArray(i, data);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalDataFlag = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return keys;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Indicates how to round unit values.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <ul>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>niceNumber</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>auto</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>numeric value</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>null</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * </ul>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingMethod: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "niceNumber"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *Returns the type of axis data
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <ul>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li><code>time</code></li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li><code>numeric</code></li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li><code>category</code></li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * </ul>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Instance of <code>ChartDataProvider</code> that the class uses
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * to build its own data.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataProvider:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The maximum value contained in the <code>data</code> array. Used for
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <code>maximum</code> when <code>autoMax</code> is true.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataMaximum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._dataMaximum)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateMinAndMax();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._dataMaximum;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The maximum value that will appear on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maximum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var max = this.get("dataMaximum");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("setMax"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._setMaximum;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setMaximum = value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The minimum value contained in the <code>data</code> array. Used for
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <code>minimum</code> when <code>autoMin</code> is true.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataMinimum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._dataMinimum)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateMinAndMax();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._dataMinimum;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The minimum value that will appear on an axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minimum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var min = this.get("dataMinimum");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("setMin"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = this._setMinimum;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return min;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setMinimum = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Determines whether the maximum is calculated or explicitly
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * set by the user.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setMax: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.Lang.isNumber(this._setMaximum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Determines whether the minimum is calculated or explicitly
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * set by the user.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setMin: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.Lang.isNumber(this._setMinimum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Array of axis data
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp data: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._data || this._updateTotalDataFlag)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._data;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyCollection: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = this.get("keys"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp col = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp col.push(i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return col;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: function(val, format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction NumericAxis(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp NumericAxis.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippNumericAxis.NAME = "numericAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippNumericAxis.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether 0 should always be displayed.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alwaysShowZero: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: function(val, format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.DataType.Number.format(val, format);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFormat: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prefix: "",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp thousandsSeparator: "",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp decimalSeparator: "",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp decimalPlaces: "0",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp suffix: ""
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(NumericAxis, Y.BaseAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _type: "numeric",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Storage for alwaysShowZero
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _alwaysShowZero: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getMinimumUnit:function(max, min, units)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._getNiceNumber(Math.ceil((max - min)/units));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getNiceNumber: function(roundingUnit)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tempMajorUnit = roundingUnit,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = Math.ceil(Math.log(tempMajorUnit) * 0.4342944819032518),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundedMajorUnit = Math.pow(10, order),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundedDiff;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (roundedMajorUnit / 2 >= tempMajorUnit)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundedDiff = Math.floor((roundedMajorUnit / 2 - tempMajorUnit) / (Math.pow(10,order-1)/2));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMajorUnit = roundedMajorUnit/2 - roundedDiff*Math.pow(10,order-1)/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMajorUnit = roundedMajorUnit;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(tempMajorUnit))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return tempMajorUnit;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return roundingUnit;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Determines the maximum and minimum values for the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateMinAndMax: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var data = this.get("data"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(data && data.length && data.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = data.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = min = data[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(len > 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 1; i < len; i++)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num = data[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isNaN(num))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isObject(num))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //hloc values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(key in num)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(num.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(num[key], max);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(num[key], min);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(num, max);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(num, min);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._roundMinAndMax(min, max);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _roundMinAndMax: function(min, max)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var roundingUnit,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minimumRange,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minGreaterThanZero = min >= 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maxGreaterThanZero = max > 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataRangeGreater,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maxRound,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minRound,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp botTicks,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMax,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMin,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp units = this.getTotalMajorUnits() - 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alwaysShowZero = this.get("alwaysShowZero"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundMinAndMax = this.get("roundMinAndMax"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingMethod = this.get("roundingMethod"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp useIntegers = (max - min)/units >= 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(roundingMethod)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(roundingMethod == "niceNumber")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = this._getMinimumUnit(max, min, units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(minGreaterThanZero && maxGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero || min < roundingUnit)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = this._getMinimumUnit(max, min, units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._roundUpToNearest(max, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(maxGreaterThanZero && !minGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topTicks = Math.round( units / ((-1 * min)/max + 1) );
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp botTicks = units - topTicks;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMax = Math.ceil( max/topTicks );
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMin = Math.floor( min/botTicks ) * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = Math.max(tempMax, tempMin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = this._getNiceNumber(roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = roundingUnit * topTicks;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = roundingUnit * botTicks * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero || max === 0 || max + roundingUnit > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = this._getMinimumUnit(max, min, units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._roundUpToNearest(max, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = max - (roundingUnit * units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(roundingMethod == "auto")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(minGreaterThanZero && maxGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero || min < (max-min)/units)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //roundingUnit = Math.ceil((max - min)/units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = (max - min)/units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useIntegers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = Math.ceil(roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = min + (roundingUnit * units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(maxGreaterThanZero && !minGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topTicks = Math.round( units / ( (-1 * min) /max + 1) );
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp botTicks = units - topTicks;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useIntegers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMax = Math.ceil( max/topTicks );
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMin = Math.floor( min/botTicks ) * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMax = max/topTicks;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempMin = min/botTicks * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = Math.max(tempMax, tempMin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = roundingUnit * topTicks;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = roundingUnit * botTicks * -1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = (max - min)/units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //roundingUnit = Math.ceil((max - min)/units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useIntegers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = Math.ceil(roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = this._roundDownToNearest(min, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._roundUpToNearest(max, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = (max - min)/units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useIntegers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = Math.ceil(roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero || max === 0 || max + roundingUnit > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = (max - min)/units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useIntegers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Math.ceil(roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._roundUpToNearest(max, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = max - (roundingUnit * units);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!isNaN(roundingMethod) && isFinite(roundingMethod))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingUnit = roundingMethod;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minimumRange = roundingUnit * units;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataRangeGreater = (max - min) > minimumRange;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minRound = this._roundDownToNearest(min, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maxRound = this._roundUpToNearest(max, roundingUnit);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(minGreaterThanZero && maxGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(alwaysShowZero || minRound <= 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = minRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!dataRangeGreater)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = min + minimumRange;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = maxRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(maxGreaterThanZero && !minGreaterThanZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = minRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!dataRangeGreater)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = min + minimumRange;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = maxRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(max === 0 || alwaysShowZero)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = maxRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!dataRangeGreater)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = max - minimumRange;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = minRound;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMaximum = max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMinimum = min;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Rounds a Number to the nearest multiple of an input. For example, by rounding
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * 16 to the nearest 10, you will receive 20. Similar to the built-in function Math.round().
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param numberToRound the number to round
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param nearest the number whose mutiple must be found
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return the rounded number
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _roundToNearest: function(number, nearest)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nearest = nearest || 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(nearest === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return number;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var roundedNumber = Math.round(this._roundToPrecision(number / nearest, 10)) * nearest;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._roundToPrecision(roundedNumber, 10);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Rounds a Number <em>up</em> to the nearest multiple of an input. For example, by rounding
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * 16 up to the nearest 10, you will receive 20. Similar to the built-in function Math.ceil().
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param numberToRound the number to round up
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param nearest the number whose mutiple must be found
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return the rounded number
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _roundUpToNearest: function(number, nearest)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nearest = nearest || 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(nearest === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return number;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Math.ceil(this._roundToPrecision(number / nearest, 10)) * nearest;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Rounds a Number <em>down</em> to the nearest multiple of an input. For example, by rounding
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * 16 down to the nearest 10, you will receive 10. Similar to the built-in function Math.floor().
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param numberToRound the number to round down
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param nearest the number whose mutiple must be found
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return the rounded number
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _roundDownToNearest: function(number, nearest)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nearest = nearest || 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(nearest === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return number;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Math.floor(this._roundToPrecision(number / nearest, 10)) * nearest;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Rounds a number to a certain level of precision. Useful for limiting the number of
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * decimal places on a fractional number.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param number the input number to round.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param precision the number of decimal digits to keep
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return the rounded number, or the original input if no rounding is needed
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _roundToPrecision: function(number, precision)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp precision = precision || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var decimalPlaces = Math.pow(10, precision);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Math.round(decimalPlaces * number) / decimalPlaces;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.NumericAxis = NumericAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction StackedAxis(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp StackedAxis.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippStackedAxis.NAME = "stackedAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(StackedAxis, Y.NumericAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Determines the maximum and minimum values for the axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateMinAndMax: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var max = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(key in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = Math.max(len, keys[key].length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(key in keys)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp num = keys[key][i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isNaN(num))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(num >= 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos += num;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp neg += num;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(max, pos);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = Math.max(max, neg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(neg < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(min, neg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = Math.min(min, pos);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._roundMinAndMax(min, max);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedAxis = StackedAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction TimeAxis(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp TimeAxis.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippTimeAxis.NAME = "timeAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippTimeAxis.ATTRS =
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setMax: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var max = this._getNumber(this._setMaximum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return (Y.Lang.isNumber(max));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setMin: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var min = this._getNumber(this._setMinimum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return (Y.Lang.isNumber(min));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maximum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var max = this._getNumber(this._setMaximum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!Y.Lang.isNumber(max))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp max = this._getNumber(this.get("dataMaximum"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return max;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setMaximum = this._getNumber(value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minimum: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function ()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var min = this._getNumber(this._setMinimum);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!Y.Lang.isNumber(min))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp min = this._getNumber(this.get("dataMinimum"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return min;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setMinimum = this._getNumber(value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: function(val, format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = Y.DataType.Date.parse(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.DataType.Date.format(val, {format:format});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFormat: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "%b %d, %y"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(TimeAxis, Y.BaseAxis, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp GUID: "yuitimeaxis",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataType: "time",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getKeyArray: function(key, data)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArray = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = data.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = data[i][key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isDate(obj))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = obj.valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!Y.Lang.isNumber(obj))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = new Date(obj.toString()).valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = obj;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArray[i] = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return keyArray;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (override)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setDataByKey: function(key, data)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv = this._dataClone.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = dv.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = dv[i][key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isDate(obj))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = obj.valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!Y.Lang.isNumber(obj))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = new Date(obj.toString()).valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = obj;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr[i] = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("keys")[key] = arr;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalDataFlag = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getNumber: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isDate(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = val.valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!Y.Lang.isNumber(val) && val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = new Date(val.toString()).valueOf();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.TimeAxis = TimeAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction CategoryAxis(config)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp CategoryAxis.superclass.constructor.apply(this, arguments);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippCategoryAxis.NAME = "categoryAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.extend(CategoryAxis, Y.BaseAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _indices: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp GUID: "yuicategoryaxis",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _type: "category",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateMinAndMax: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMaximum = Math.max(this.get("data").length - 1, 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dataMinimum = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getKeyArray: function(key, data)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArr = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labels = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = data.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._indices)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._indices = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = data[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keyArr[i] = i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labels[i] = obj[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._indices[key] = keyArr;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return labels;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setDataByKey: function(key)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labels = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv = this._dataClone.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = dv.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._indices)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._indices = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp obj = dv[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arr[i] = i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labels[i] = obj[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._indices[key] = arr;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("keys")[key] = labels.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._updateTotalDataFlag = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns an array of values based on an identifier key.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getDataByKey: function (value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._indices)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var keys = this._indices;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys[value])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return keys[value];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getTotalMajorUnits: function(majorUnit, len)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("data").length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getMajorUnitDistance: function(len, uiLen, majorUnit)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var dist;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(majorUnit.determinant === "count")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dist = uiLen/len;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(majorUnit.determinant === "distance")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dist = majorUnit.distance;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return dist;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getEdgeOffset: function(ct, l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return l/ct;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelByIndex: function(i, l, format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("data")[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getLabelAtPosition: function(pos, len, format)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var count = this.get("data").length - 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = Math.round(pos/(len/count));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("data")[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.CategoryAxis = CategoryAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Utility class used for calculating curve points.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction CurveUtil()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippCurveUtil.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return {Object}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates an array of start, end and control points for splines.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getCurveControlPoints: function(xcoords, ycoords)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var outpoints = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = xcoords.length - 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xvals = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yvals = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // Too few points, need at least two
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (l < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[0] = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startx: xcoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp starty: ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp endx: xcoords[1],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp endy: ycoords[1]
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp // Special case, the Bezier should be a straight line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (l === 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[0].ctrlx1 = (2.0*xcoords[0] + xcoords[1])/3.0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[0].ctrly2 = (2.0*ycoords[0] + ycoords[1])/3.0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[0].ctrlx2 = 2.0*outpoints[0].ctrlx1 - xcoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[0].ctrly2 = 2.0*outpoints[0].ctrly1 - ycoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return outpoints;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints.push({startx: Math.round(xcoords[i]), starty: Math.round(ycoords[i]), endx: Math.round(xcoords[i+1]), endy: Math.round(ycoords[i+1])});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xvals[i] = 4.0 * xcoords[i] + 2*xcoords[i+1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yvals[i] = 4.0*ycoords[i] + 2*ycoords[i+1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xvals[0] = xcoords[0] + (2.0 * xcoords[1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xvals[l-1] = (8.0 * xcoords[l-1] + xcoords[l]) / 2.0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xvals = this.getControlPoints(xvals.concat());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yvals[0] = ycoords[0] + (2.0 * ycoords[1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yvals[l-1] = (8.0 * ycoords[l-1] + ycoords[l]) / 2.0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yvals = this.getControlPoints(yvals.concat());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (i = 0; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrlx1 = Math.round(xvals[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrly1 = Math.round(yvals[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (i < l-1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrlx2 = Math.round(2*xcoords[i+1] - xvals[i+1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrly2 = Math.round(2*ycoords[i+1] - yvals[i+1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrlx2 = Math.round((xcoords[l] + xvals[l-1])/2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp outpoints[i].ctrly2 = Math.round((ycoords[l] + yvals[l-1])/2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return outpoints;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getControlPoints: function(vals)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var l = vals.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tmp = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp b = 2.0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x[0] = vals[0] / b;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tmp[i] = 1/b;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp b = (i < l-1 ? 4.0 : 3.5) - tmp[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x[i] = (vals[i] - x[i-1]) / b;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (i = 1; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x[l-i-1] -= tmp[l-i] * x[l-i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return x;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.CurveUtil = CurveUtil;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Methods used for creating stacked series
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction StackingUtil(){}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippStackingUtil.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Adjusts coordinate values for stacked series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _stackCoordinates: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords = seriesCollection[order - 1].get("xcoords").concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords = seriesCollection[order - 1].get("ycoords").concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(direction === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = prevXCoords.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(prevXCoords[i]) && !isNaN(xcoords[i]))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords[i] += prevXCoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = prevYCoords.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(prevYCoords[i]) && !isNaN(ycoords[i]))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords[i] = prevYCoords[i] - (h - ycoords[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackingUtil = StackingUtil;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Lines(){}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippLines.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _lineDefaults: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawLines: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xcoords = this.get("xcoords").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = direction === "vertical" ? ycoords.length : xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidX = lastX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidY = lastY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").line,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineType = styles.lineType,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc = styles.color || this._getDefaultColor(this.get("graphOrder"), "line"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineAlpha = styles.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dashLength = styles.dashLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gapSpace = styles.gapSpace,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp connectDiscontinuousPoints = styles.connectDiscontinuousPoints,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousType = styles.discontinuousType,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousDashLength = styles.discontinuousDashLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousGapSpace = styles.discontinuousGapSpace,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastX = lastValidX = xcoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastY = lastValidY = ycoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineStyle(styles.weight, lc, lineAlpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(lastX, lastY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 1; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextX = xcoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextY = ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isNaN(nextY))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidX = nextX;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidY = nextY;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(lastValidX == lastX)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(lineType != "dashed")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(nextX, nextY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawDashedLine(lastValidX, lastValidY, nextX, nextY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dashLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gapSpace);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(!connectDiscontinuousPoints)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(nextX, nextY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(discontinuousType != "solid")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawDashedLine(lastValidX, lastValidY, nextX, nextY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousDashLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousGapSpace);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(nextX, nextY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastX = lastValidX = nextX;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastY = lastValidY = nextY;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSpline: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curvecoords = this.getCurveControlPoints(xcoords, ycoords),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = curvecoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").line,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineAlpha = styles.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = styles.color || this._getDefaultColor(this.get("graphOrder"), "line");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineStyle(styles.weight, color, lineAlpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(xcoords[0], ycoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = curvecoords[i].endx;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = curvecoords[i].endy;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1 = curvecoords[i].ctrlx1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2 = curvecoords[i].ctrlx2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1 = curvecoords[i].ctrly1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2 = curvecoords[i].ctrly2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.curveTo(cx1, cy1, cx2, cy2, x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws a dashed line between two points.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param xStart The x position of the start of the line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param yStart The y position of the start of the line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param xEnd The x position of the end of the line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param yEnd The y position of the end of the line
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param dashSize the size of dashes, in pixels
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param gapSize the size of gaps between dashes, in pixels
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawDashedLine: function(xStart, yStart, xEnd, yEnd, dashSize, gapSize)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dashSize = dashSize || 10;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gapSize = gapSize || 10;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var segmentLength = dashSize + gapSize,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xDelta = xEnd - xStart,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yDelta = yEnd - yStart,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp delta = Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp segmentCount = Math.floor(Math.abs(delta / segmentLength)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radians = Math.atan2(yDelta, xDelta),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xCurrent = xStart,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yCurrent = yStart,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xDelta = Math.cos(radians) * segmentLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yDelta = Math.sin(radians) * segmentLength;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < segmentCount; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(xCurrent, yCurrent);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(xCurrent + Math.cos(radians) * dashSize, yCurrent + Math.sin(radians) * dashSize);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xCurrent += xDelta;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yCurrent += yDelta;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(xCurrent, yCurrent);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp delta = Math.sqrt((xEnd - xCurrent) * (xEnd - xCurrent) + (yEnd - yCurrent) * (yEnd - yCurrent));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(delta > dashSize)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(xCurrent + Math.cos(radians) * dashSize, yCurrent + Math.sin(radians) * dashSize);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(delta > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(xCurrent + Math.cos(radians) * delta, yCurrent + Math.sin(radians) * delta);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(xEnd, yEnd);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getLineDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 6,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineType:"solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dashLength:10,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gapSpace:10,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp connectDiscontinuousPoints:true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousType:"solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousDashLength:10,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp discontinuousGapSpace:10
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.augment(Lines, Y.Attribute);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Lines = Lines;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Fills(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var attrs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp area: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._defaults || this._getAreaDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defaults = this._defaults || this._getAreaDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._defaults = Y.merge(defaults, val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.addAttrs(attrs, cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("styles");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippFills.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawFill: function(xcoords, ycoords)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(xcoords.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstX = xcoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstY = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidX = firstX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidY = firstY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").area,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.beginFill(color, styles.alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(firstX, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextX = xcoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextY = ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isNaN(nextY))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidX = nextX;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidY = nextY;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(nextX, nextY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidX = nextX;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastValidY = nextY;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawAreaSpline: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curvecoords = this.getCurveControlPoints(xcoords, ycoords),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = curvecoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstX = xcoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstY = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").area,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.beginFill(color, styles.alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(firstX, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = curvecoords[i].endx;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = curvecoords[i].endy;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1 = curvecoords[i].ctrlx1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2 = curvecoords[i].ctrlx2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1 = curvecoords[i].ctrly1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2 = curvecoords[i].ctrly2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.curveTo(cx1, cy1, cx2, cy2, x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("direction") === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(this._leftOrigin, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(this._leftOrigin, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(x, this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(firstX, this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(firstX, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawStackedAreaSpline: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curvecoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").area,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = styles.color || this._getDefaultColor(this.get("graphOrder"), "slice");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstX = xcoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstY = ycoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curvecoords = this.getCurveControlPoints(xcoords, ycoords);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = curvecoords.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.beginFill(color, styles.alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(firstX, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = curvecoords[i].endx;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = curvecoords[i].endy;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1 = curvecoords[i].ctrlx1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2 = curvecoords[i].ctrlx2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1 = curvecoords[i].ctrly1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2 = curvecoords[i].ctrly2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.curveTo(cx1, cy1, cx2, cy2, x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords = seriesCollection[order - 1].get("xcoords").concat().reverse();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords = seriesCollection[order - 1].get("ycoords").concat().reverse();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp curvecoords = this.getCurveControlPoints(prevXCoords, prevYCoords);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = curvecoords.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(prevXCoords[0], prevYCoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; i = ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = curvecoords[i].endx;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = curvecoords[i].endy;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx1 = curvecoords[i].ctrlx1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cx2 = curvecoords[i].ctrlx2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy1 = curvecoords[i].ctrly1;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cy2 = curvecoords[i].ctrly2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.curveTo(cx1, cy1, cx2, cy2, x, y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("direction") === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(this._leftOrigin, ycoords[ycoords.length-1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(this._leftOrigin, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(xcoords[xcoords.length-1], this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(firstX, this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(firstX, firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaults: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getClosingPoints: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xcoords = this.get("xcoords").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords").concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("direction") === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(ycoords[ycoords.length - 1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(ycoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(xcoords[xcoords.length - 1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(xcoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(xcoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(ycoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return [xcoords, ycoords];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Concatenates coordinate array with the correct coordinates for closing an area stack.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getStackedClosingPoints: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords = this.get("xcoords").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords = this.get("ycoords").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstX = allXCoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp firstY = allYCoords[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevXCoords = seriesCollection[order - 1].get("xcoords").concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp prevYCoords = seriesCollection[order - 1].get("ycoords").concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords = allXCoords.concat(prevXCoords.concat().reverse());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords = allYCoords.concat(prevYCoords.concat().reverse());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords.push(allXCoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords.push(allYCoords[0]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(direction === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords.push(this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords.push(this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords.push(allYCoords[allYCoords.length-1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords.push(firstY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords.push(allXCoords[allXCoords.length-1]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allXCoords.push(firstX);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords.push(this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp allYCoords.push(this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return [allXCoords, allYCoords];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getAreaDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.augment(Fills, Y.Attribute);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Fills = Fills;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Plots(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var attrs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markers: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._markers;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.addAttrs(attrs, cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippPlots.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _plotDefaults: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawPlots: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.get("xcoords") || this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = Y.clone(this.get("styles").marker),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = style.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = style.height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetWidth = w/2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetHeight = h/2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(style.fill.color))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = style.fill.color.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(style.border.color))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = style.border.colors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = (ycoords[i] - offsetHeight);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = (xcoords[i] - offsetWidth);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!top || !left || top === undefined || left === undefined || top == "undefined" || left == "undefined" || isNaN(top) || isNaN(left))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markers.push(null);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerNodes.push(null);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicCollection.push(null);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicNodes.push(null);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top += "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left += "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(fillColors)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.fill.color = fillColors[i % fillColors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(borderColors)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.border.colors = borderColors[i % borderColors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(style, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("top", top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("left", left);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 10,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 10,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "circle"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of markers to be used in the series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _markers: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of markers to be re-used on a series redraw.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _markerCache: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Creates a marker based on its style properties.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getMarker: function(styles, order, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cfg;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._markerCache.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp while(!marker)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._markerCache.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(styles, order, index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markerCache.shift();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(styles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = new Y.Graphic();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.render(this.get("graph").get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.node.setAttribute("id", "markerParent_" + order + "_" + index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cfg = Y.clone(styles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = graphic.getShape(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.addClass("yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.node.setAttribute("id", "series_" + order + "_" + index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.render(this.get("graph").get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markers.push(marker);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerNodes.push(Y.one(marker.node));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicCollection.push(graphic);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicNodes.push(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a cache of markers for reuse.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createMarkerCache: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._markers && this._markers.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerCache = this._markers.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerCache = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markers = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicNodes = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerNodes = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._graphicCollection = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Removes unused markers from the marker cache
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _clearMarkerCache: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var len = this._markerCache.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markerCache[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(marker)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = marker.graphics;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.destroy();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._markerCache = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._markers[i])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = Y.clone(this.get("styles").marker),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphicNode = marker.parentNode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.fill.color = this._getItemColor(markerStyles.fill.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.border.color = this._getItemColor(markerStyles.border.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(markerStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = markerStyles.width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = markerStyles.height;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphicNode.style.left = (xcoords[i] - w/2) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphicNode.style.top = (ycoords[i] - h/2) + "px";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.toggleVisible(this.get("visible"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @protected
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description parses a color from an array.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getItemColor: function(val, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val[i % val.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setStyles: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = this._parseMarkerStyles(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.Renderer.prototype._setStyles.apply(this, [val]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseMarkerStyles: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.marker)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = this._getPlotDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.marker = this._mergeStyles(val.marker, defs);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.marker.over)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.marker.over = this._mergeStyles(val.marker.over, val.marker);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.marker.down)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.marker.down = this._mergeStyles(val.marker.down, val.marker);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns marker state based on event type
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getState: function(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var state;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "mouseout" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = "off";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "mouseover" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = "over";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "mouseup" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = "over";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "mousedown" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = "down";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return state;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _toggleVisible: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markers = this.get("markers"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp visible = this.get("visible"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.toggleVisible(visible);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(markers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = markers.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = markers[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(marker)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.toggleVisible(visible);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _stateSyles: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.augment(Plots, Y.Attribute);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Plots = Plots;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Histogram(){}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippHistogram.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = Y.clone(this.get("styles").marker),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSize,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesLen = seriesCollection.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalSize = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSizeKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(style.fill.color))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = style.fill.color.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(style.border.color))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = style.border.colors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("direction") == "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeKey = "height";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSizeKey = "width";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSizeKey = "width";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSizeKey = "height";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize = style[setSizeKey];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSize = style[calculatedSizeKey];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < seriesLen; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer = seriesCollection[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize += renderer.get("styles").marker[setSizeKey];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order > i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalSize = len * seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalSize > graph.get(setSizeKey))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = graph.get(setSizeKey)/totalSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setSize = Math.max(setSize, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset -= seriesSize/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config = this._getMarkerDimensions(xcoords[i], ycoords[i], calculatedSize, offset);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = config.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp calculatedSize = config.calculatedSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = config.left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style[setSizeKey] = setSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style[calculatedSizeKey] = calculatedSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(fillColors)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.fill.color = fillColors[i % fillColors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(borderColors)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.border.colors = borderColors[i % borderColors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(style, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("top", top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("left", left);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultFillColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 12,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "rect",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Histogram = Histogram;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.CartesianSeries = Y.Base.create("cartesianSeries", Y.Base, [Y.Renderer], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _xDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _yDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _leftOrigin: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _bottomOrigin: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp render: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setCanvas();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.addListeners();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("rendered", true);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.validate();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addListeners: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xAxis = this.get("xAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = this.get("yAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(xAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis.after("dataReady", Y.bind(this._xDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis.after("dataUpdate", Y.bind(this._xDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(yAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis.after("dataReady", Y.bind(this._yDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis.after("dataUpdate", Y.bind(this._yDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("xAxisChange", this._xAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("yAxisChange", this._yAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("stylesChange", function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axesReady = this._updateAxisData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesReady)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("widthChange", function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axesReady = this._updateAxisData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesReady)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("heightChange", function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axesReady = this._updateAxisData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesReady)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp });
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("visibleChange", this._toggleVisible);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _xAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xAxis = this.get("xAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis.after("dataReady", Y.bind(this._xDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis.after("dataUpdate", Y.bind(this._xDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _yAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var yAxis = this.get("yAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis.after("dataReady", Y.bind(this._yDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis.after("dataUpdate", Y.bind(this._yDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp GUID: "yuicartesianseries",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the graph when the x < code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * change.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _xDataChangeHandler: function(event)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axesReady = this._updateAxisData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesReady)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the chart when the y <code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * change.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _yDataChangeHandler: function(event)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axesReady = this._updateAxisData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesReady)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateAxisData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var xAxis = this.get("xAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = this.get("yAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xKey = this.get("xKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yKey = this.get("yKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yData,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xData;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!xAxis || !yAxis || !xKey || !yKey)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xData = xAxis.getDataByKey(xKey);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yData = yAxis.getDataByKey(yKey);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!xData || !yData)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return false;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("xData", xData.concat());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("yData", yData.concat());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validate: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if((this.get("xData") && this.get("yData")) || this._updateAxisData())
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a <code>Graphic</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setCanvas: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("graphic", new Y.Graphic());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").render(this.get("graph").get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var nextX, nextY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis = this.get("xAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = this.get("yAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xData = this.get("xData").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yData = this.get("yData").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xOffset = xAxis.getEdgeOffset(xData.length, w),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yOffset = yAxis.getEdgeOffset(yData.length, h),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = this.get("styles").padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftPadding = padding.left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topPadding = padding.top,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataWidth = w - (leftPadding + padding.right + xOffset),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataHeight = h - (topPadding + padding.bottom + yOffset),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMax = xAxis.get("maximum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMin = xAxis.get("minimum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMax = yAxis.get("maximum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMin = yAxis.get("minimum"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xScaleFactor = dataWidth / (xMax - xMin),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yScaleFactor = dataHeight / (yMax - yMin),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataLength,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMarkerPlane = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMarkerPlane = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMarkerPlaneOffset = this.get("xMarkerPlaneOffset"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMarkerPlaneOffset = this.get("yMarkerPlaneOffset"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataLength = xData.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xOffset *= 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yOffset *= 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //Assuming a vertical graph has a range/category for its vertical axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(direction === "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yData = yData.reverse();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._leftOrigin = Math.round(((0 - xMin) * xScaleFactor) + leftPadding + xOffset);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._bottomOrigin = Math.round((dataHeight + topPadding + yOffset) - (0 - yMin) * yScaleFactor);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for (; i < dataLength; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextX = Math.round((((xData[i] - xMin) * xScaleFactor) + leftPadding + xOffset));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp nextY = Math.round(((dataHeight + topPadding + yOffset) - (yData[i] - yMin) * yScaleFactor));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords.push(nextX);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords.push(nextY);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMarkerPlane.push({start:nextX - xMarkerPlaneOffset, end: nextX + xMarkerPlaneOffset});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMarkerPlane.push({start:nextY - yMarkerPlaneOffset, end: nextY + yMarkerPlaneOffset});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("xcoords", xcoords);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("ycoords", ycoords);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("xMarkerPlane", xMarkerPlane);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("yMarkerPlane", yMarkerPlane);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (override)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("rendered"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if((isFinite(w) && isFinite(h) && w > 0 && h > 0) && ((this.get("xData") && this.get("yData")) || this._updateAxisData()))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.setAreaData();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawSeries();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._toggleVisible(this.get("visible"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("drawingComplete");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultPlaneOffset: 4,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return Default styles for the widget
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultBorderColors:["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Colors used if style colors are not specified
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultColor: function(index, type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var colors = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: this._defaultLineColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill: this._defaultFillColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: this._defaultBorderColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp slice: this._defaultSliceColors
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp col = colors[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = col.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index >= l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index % l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = type || "fill";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return colors[type][index];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _toggleVisible: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.toggleVisible(this.get("visible"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._xDisplayName || this.get("xKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._xDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._yDisplayName || this.get("yKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._yDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("direction") == "vertical" ? this.get("yDisplayName") : this.get("xDisplayName");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("direction") == "vertical" ? this.get("xDisplayName") : this.get("yDisplayName");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "cartesian"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Order of this ISeries instance of this <code>type</code>.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Order of the ISeries instance
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * x coordinates for the series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * y coordinates for the series
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to the <code>Axis</code> instance used for assigning
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * x-values to the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the x-axis <code>Axis</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xKey: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the y-axis <code>Axis</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yKey: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Array of x values for the series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xData: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Array of y values for the series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yData: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rendered: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: false
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /*
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the width of the parent graph
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graph").get("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the height of the parent graph
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graph").get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether to show the series
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp visible: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of area maps along the xAxis. Used to determine mouseover for multiple
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMarkerPlane: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of area maps along the yAxis. Used to determine mouseover for multiple
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * series.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMarkerPlane: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance from a data coordinate to the left/right for setting a hotspot.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xMarkerPlaneOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var marker = this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(marker && marker.width && isFinite(marker.width))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return marker.width * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._defaultPlaneOffset;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Distance from a data coordinate to the top/bottom for setting a hotspot.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yMarkerPlaneOffset: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function() {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var marker = this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(marker && marker.height && isFinite(marker.height))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return marker.height * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._defaultPlaneOffset;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Direction of the series
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "horizontal"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.MarkerSeries = Y.Base.create("markerSeries", Y.CartesianSeries, [Y.Plots], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setNode();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawPlots();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setStyles: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!val.marker)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = {marker:val};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = this._parseMarkerStyles(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.MarkerSeries.superclass._mergeStyles.apply(this, [val, this._getDefaultStyles()]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this._mergeStyles({marker:this._getPlotDefaults()}, Y.MarkerSeries.superclass._getDefaultStyles());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp},{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"marker"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.LineSeries = Y.Base.create("lineSeries", Y.CartesianSeries, [Y.Lines], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawLines();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setStyles: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!val.line)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = {line:val};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.LineSeries.superclass._setStyles.apply(this, [val]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this._mergeStyles({line:this._getLineDefaults()}, Y.LineSeries.superclass._getDefaultStyles());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"line"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.SplineSeries = Y.Base.create("splineSeries", Y.CartesianSeries, [Y.CurveUtil, Y.Lines], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"spline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.AreaSplineSeries = Y.Base.create("areaSplineSeries", Y.CartesianSeries, [Y.Fills, Y.CurveUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawAreaSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"areaSpline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedSplineSeries = Y.Base.create("stackedSplineSeries", Y.SplineSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.StackedSplineSeries.superclass.setAreaData.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"stackedSpline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedMarkerSeries = Y.Base.create("stackedMarkerSeries", Y.MarkerSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.StackedMarkerSeries.superclass.setAreaData.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"stackedMarker"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.ColumnSeries = Y.Base.create("columnSeries", Y.MarkerSeries, [Y.Histogram], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getMarkerDimensions: function(xcoord, ycoord, calculatedSize, offset)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var config = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: ycoord,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: xcoord + offset
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.calculatedSize = this._bottomOrigin - config.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return config;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = Y.clone(this.get("styles").marker),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[this.get("type")],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesLen = seriesCollection.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp n = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xs = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.fill.color = this._getItemColor(markerStyles.fill.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.border.color = this._getItemColor(markerStyles.border.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.height = this._bottomOrigin - ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(markerStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; n < seriesLen; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer = seriesCollection[n].get("markers")[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xs[n] = xcoords[i] + seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize += renderer.width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order > n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset -= seriesSize/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(n = 0; n < seriesLen; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer = Y.one(seriesCollection[n]._graphicNodes[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer.setStyle("left", (xs[n] - seriesSize/2) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "column"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.BarSeries = Y.Base.create("barSeries", Y.MarkerSeries, [Y.Histogram], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setNode();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getMarkerDimensions: function(xcoord, ycoord, calculatedSize, offset)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var config = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: ycoord + offset,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: this._leftOrigin
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.calculatedSize = xcoord - config.left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return config;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = Y.clone(this.get("styles").marker),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[this.get("type")],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesLen = seriesCollection.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp n = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ys = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.fill.color = this._getItemColor(markerStyles.fill.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.border.color = this._getItemColor(markerStyles.border.color, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.width = (xcoords[i] - this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(markerStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; n < seriesLen; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer = seriesCollection[n].get("markers")[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ys[n] = ycoords[i] + seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesSize += renderer.height;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(order > n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = seriesSize;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset -= seriesSize/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(n = 0; n < seriesLen; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer = Y.one(seriesCollection[n]._graphicNodes[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderer.setStyle("top", (ys[n] - seriesSize/2));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "bar"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "vertical"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.AreaSeries = Y.Base.create("areaSeries", Y.CartesianSeries, [Y.Fills], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawFill.apply(this, this._getClosingPoints());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setStyles: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!val.area)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = {area:val};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return Y.AreaSeries.superclass._setStyles.apply(this, [val]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this._mergeStyles({area:this._getAreaDefaults()}, Y.AreaSeries.superclass._getDefaultStyles());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"area"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedAreaSplineSeries = Y.Base.create("stackedAreaSplineSeries", Y.AreaSeries, [Y.CurveUtil, Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawStackedAreaSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"stackedAreaSpline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.ComboSeries = Y.Base.create("comboSeries", Y.CartesianSeries, [Y.Fills, Y.Lines, Y.Plots], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showAreaFill"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawFill.apply(this, this._getClosingPoints());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showLines"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawLines();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showMarkers"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawPlots();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = Y.ComboSeries.superclass._getDefaultStyles();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles.line = this._getLineDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles.marker = this._getPlotDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles.area = this._getAreaDefaults();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"combo"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showAreaFill: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: false
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showLines: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showMarkers: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lazyAdd: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("styles", {marker:val});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lazyAdd: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("styles").line;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("styles", {line:val});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp area: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lazyAdd: false,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this.get("styles").area;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("styles", {area:val});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedComboSeries = Y.Base.create("stackedComboSeries", Y.ComboSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.StackedComboSeries.superclass.setAreaData.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showAreaFill"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawFill.apply(this, this._getStackedClosingPoints());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showLines"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawLines();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showMarkers"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawPlots();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "stackedCombo"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showAreaFill: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.ComboSplineSeries = Y.Base.create("comboSplineSeries", Y.ComboSeries, [Y.CurveUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showAreaFill"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawAreaSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showLines"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showMarkers"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawPlots();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value : "comboSpline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedComboSplineSeries = Y.Base.create("stackedComboSplineSeries", Y.StackedComboSeries, [Y.CurveUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showAreaFill"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawStackedAreaSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showLines"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawSpline();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showMarkers"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawPlots();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type : {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value : "stackedComboSpline"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showAreaFill: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedLineSeries = Y.Base.create("stackedLineSeries", Y.LineSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.StackedLineSeries.superclass.setAreaData.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"stackedLine"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedAreaSeries = Y.Base.create("stackedAreaSeries", Y.AreaSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setAreaData: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.StackedAreaSeries.superclass.setAreaData.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._stackCoordinates.apply(this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawFill.apply(this, this._getStackedClosingPoints());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"stackedArea"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedColumnSeries = Y.Base.create("stackedColumnSeries", Y.ColumnSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = style.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = style.height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp useOrigin = order === 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalWidth = len * w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalWidth > this.get("width"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = this.width/totalWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = Math.max(w, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection = seriesCollection[order - 1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = lastCollection.get("negativeBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = lastCollection.get("positiveBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("negativeBaseValues", negativeBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("positiveBaseValues", positiveBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this._bottomOrigin - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(top < this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = this._bottomOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(top > this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = this._bottomOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(top > this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top += (negativeBaseValues[i] - this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = negativeBaseValues[i] - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(top < this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = positiveBaseValues[i] - (this._bottomOrigin - ycoords[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = positiveBaseValues[i] - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = xcoords[i] - w/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(style, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("left", left);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("top", top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this._graphicCollection[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.height = marker.height;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(markerStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offset = styles.width * 0.5;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphic.node).setStyle("left", (xcoords[i] - offset));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "rect",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "stackedColumn"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedBarSeries = Y.Base.create("stackedBarSeries", Y.BarSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = style.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = style.height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp useOrigin = order === 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalHeight = len * h,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalHeight > this.get("height"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = this.height/totalHeight;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = Math.max(h, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection = seriesCollection[order - 1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = lastCollection.get("negativeBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = lastCollection.get("positiveBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("negativeBaseValues", negativeBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("positiveBaseValues", positiveBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = xcoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = left - this._leftOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(left > this._leftOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = this._leftOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(left < this._leftOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = this._leftOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = this._leftOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left -= w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(left < this._leftOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = negativeBaseValues[i] - (this._leftOrigin - xcoords[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = negativeBaseValues[i] - left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(left > this._leftOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left += (positiveBaseValues[i] - this._leftOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = left - positiveBaseValues[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = left;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left -= w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top -= h/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(style, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("left", left);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("top", top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this._graphicCollection[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = styles.height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles.width = marker.width;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(markerStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphic).setStyle("top", (ycoords[i] - h/2));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "rect",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "stackedBar"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "vertical"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.PieSeries = Y.Base.create("pieSeries", Y.MarkerSeries, [], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _categoryDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _valueDisplayName: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addListeners: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var categoryAxis = this.get("categoryAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis = this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(categoryAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(valueAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("categoryAxisChange", this.categoryAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("valueAxisChange", this.valueAxisChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("stylesChange", this._updateHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validate: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._renderered = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _categoryAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var categoryAxis = this.get("categoryAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataReady", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis.after("dataUpdate", Y.bind(this._categoryDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _valueAxisChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var valueAxis = this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataReady", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis.after("dataUpdate", Y.bind(this._valueDataChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Constant used to generate unique id.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp GUID: "pieseries",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the graph when the x < code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * change.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _categoryDataChangeHandler: function(event)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (protected)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Handles updating the chart when the y <code>Axis</code> values
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * change.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _valueDataChangeHandler: function(event)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._rendered && this.get("categoryKey") && this.get("valueKey"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private (override)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(isFinite(w) && isFinite(h) && w > 0 && h > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._rendered = true;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.drawSeries();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("drawingComplete");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawPlots: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var values = this.get("valueAxis").getDataByKey(this.get("valueKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catValues = this.get("categoryAxis").getDataByKey(this.get("categoryKey")).concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalValue = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp itemCount = values.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillColors = styles.fill.colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fillAlphas = styles.fill.alphas || ["1"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderColors = styles.border.colors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderWeights = [styles.border.weight],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp borderAlphas = [styles.border.alpha],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbw = borderWeights.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbc = borderColors.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tba = borderAlphas.concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding = styles.padding,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width") - (padding.left + padding.right),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height") - (padding.top + padding.bottom),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle = -90,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfWidth = w / 2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp halfHeight = h / 2,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radius = Math.min(halfWidth, halfHeight),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp la,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp wedgeStyle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < itemCount; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value = values[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp values.push(value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!isNaN(value))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalValue += value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc = fillColors ? fillColors.concat() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa = fillAlphas ? fillAlphas.concat() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < itemCount; i++)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value = values[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalValue === 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 360 / values.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = 360 * (value / totalValue);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp angle = Math.round(angle);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tfc && tfc.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfc = fillColors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tfa && tfa.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tfa = fillAlphas.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tbw && tbw.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbw = borderWeights.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tbw && tbc.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tbc = borderColors.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tba && tba.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tba = borderAlphas.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw = tbw ? tbw.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc = tbc ? tbc.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp la = tba ? tba.shift() : null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle += angle;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp wedgeStyle = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:lc,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight:lw,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:la
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:tfc ? tfc.shift() : this._getDefaultColor(i, "slice"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha:tfa ? tfa.shift() : null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "wedge",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp props: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp arc: angle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp radius: radius,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp startAngle: startAngle,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x: halfWidth,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y: halfHeight
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: h
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(wedgeStyle, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parent);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var state = this._getState(type),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this._markers[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphicNode = this._graphicNodes[i],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this.get("styles").marker;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles = this._mergeStyles(markerStyles, {});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.color = indexStyles.fill.colors[i % indexStyles.fill.colors.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp indexStyles.fill.alpha = indexStyles.fill.alphas[i % indexStyles.fill.alphas.length];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker.update(indexStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(state == "over" || state == "down")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphicNode).setStyle("zIndex", 3);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphicNode).setStyle("zIndex", 2);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return Default styles for the widget
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas:["1"]
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.colors = this._defaultSliceColors;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.colors = this._defaultBorderColors;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultLineColors:["#426ab3", "#d09b2c", "#000000", "#b82837", "#b384b5", "#ff7200", "#779de3", "#cbc8ba", "#7ed7a6", "#007a6c"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultFillColors:["#6084d0", "#eeb647", "#6c6b5f", "#d6484f", "#ce9ed1", "#ff9f3b", "#93b7ff", "#e0ddd0", "#94ecba", "#309687"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultBorderColors:["#205096", "#b38206", "#000000", "#94001e", "#9d6fa0", "#e55b00", "#5e85c9", "#adab9e", "#6ac291", "#006457"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _defaultSliceColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Colors used if style colors are not specified
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultColor: function(index, type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var colors = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: this._defaultLineColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill: this._defaultFillColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: this._defaultBorderColors,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp slice: this._defaultSliceColors
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp col = colors[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = col.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index || 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index >= l)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = index % l;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = type || "fill";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return colors[type][index];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "pie"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Order of this ISeries instance of this <code>type</code>.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to the <code>Axis</code> instance used for assigning
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * x-values to the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("categoryAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxis: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the category <code>Axis</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("categoryKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates which array to from the hash of value arrays in
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the value <code>Axis</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp validator: function(value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return value !== this.get("valueKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._categoryDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._categoryDisplayName || this.get("categoryKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueDisplayName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._valueDisplayName = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._valueDisplayName || this.get("valueKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp slices: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Gridlines = Y.Base.create("gridlines", Y.Base, [Y.Renderer], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp render: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setCanvas();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp remove: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gNode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gNode = graphic.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(gNode)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(gNode).remove();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Draws the gridlines
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp draw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("axis") && this.get("graph"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._drawGridlines();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _drawGridlines: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = this.get("graphic"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = this.get("axis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisPosition = axis.get("position"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp points,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = graph.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = graph.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line = this.get("styles").line,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color = line.color,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight = line.weight,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha = line.alpha,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineFunction = direction == "vertical" ? this._verticalLine : this._horizontalLine;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axisPosition == "none")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp points = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = axis.get("styles").majorUnit.count;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp points[i] = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x: w * (i/(l-1)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y: h * (i/(l-1))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp points = axis.get("tickPoints");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = points.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!graphic)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setCanvas();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic = this.get("graphic");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.clear();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.setSize(w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineStyle(weight, color, alpha);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lineFunction(graphic, points[i], w, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.end();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _horizontalLine: function(graphic, pt, w, h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(0, pt.y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(w, pt.y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _verticalLine: function(graphic, pt, w, h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.moveTo(pt.x, 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.lineTo(pt.x, h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates a <code>Graphic</code> instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setCanvas: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("graphic", new Y.Graphic());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("graphic").render(this.get("graph").get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp line: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#fff",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Graph = Y.Base.create("graph", Y.Widget, [Y.Renderer], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bindUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var bb = this.get("boundingBox");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bb.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("widthChange", this._sizeChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("heightChange", this._sizeChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("stylesChange", this._updateStyles);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp syncUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showBackground"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graphic = new Y.Graphic(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bg = this.get("styles").background,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(w)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bg.width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bg.height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._background = graphic.getShape(bg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphic.render(cb);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.one(graphic.node).setStyle("zIndex", -1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var sc = this.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = sc.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hgl = this.get("horizontalGridlines"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vgl = this.get("verticalGridlines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = sc[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(series instanceof Y.CartesianSeries)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.render();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hgl && hgl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hgl.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(vgl && vgl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vgl.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Hash of arrays containing series mapped to a series type.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesTypes: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a series instance based on an index.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getSeriesByIndex: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var col = this.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(col && col.length > val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = col[val];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a series instance based on a key value.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getSeriesByKey: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var obj = this._seriesDictionary,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(obj && obj.hasOwnProperty(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = obj[val];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Adds dispatcher to collection
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp addDispatcher: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._dispatchers)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dispatchers = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dispatchers.push(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Collection of series to be displayed in the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _seriesCollection: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _seriesDictionary: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Parses series instances to be displayed in the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Array} Collection of series instances or object literals containing necessary properties for creating a series instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseSeriesCollection: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var len = val.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.get("seriesCollection"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesCollection = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._seriesDictionary)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesDictionary = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.seriesTypes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.seriesTypes = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = val[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(series instanceof Y.CartesianSeries) && !(series instanceof Y.PieSeries))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createSeries(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addSeries(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = this.get("seriesCollection").length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = this.get("seriesCollection")[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey = series.get("direction") == "horizontal" ? "yKey" : "xKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesDictionary[series.get(seriesKey)] = series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Adds a series to the graph.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {Series}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addSeries: function(series)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = series.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = this.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphSeriesLength = seriesCollection.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesTypes = this.seriesTypes,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!series.get("graph"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.set("graph", this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection.push(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!seriesTypes.hasOwnProperty(type))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.seriesTypes[type] = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection = this.seriesTypes[type];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.set("graphOrder", graphSeriesLength);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.set("order", typeSeriesCollection.length);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection.push(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.addDispatcher(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.after("drawingComplete", Y.bind(this._drawingCompleteHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("seriesAdded", series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _createSeries: function(seriesData)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = seriesData.type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = this.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesTypes = this.seriesTypes,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesType,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesData.graph = this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!seriesTypes.hasOwnProperty(type))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesTypes[type] = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection = seriesTypes[type];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesData.graph = this;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesData.order = typeSeriesCollection.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesData.graphOrder = seriesCollection.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesType = this._getSeries(seriesData.type);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = new seriesType(seriesData);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.addDispatcher(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.after("drawingComplete", Y.bind(this._drawingCompleteHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp typeSeriesCollection.push(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection.push(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Creates a series instance based on a specified type.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @param {String} Indicates type of series instance to be created.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @return {Series} Series instance created.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getSeries: function(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var seriesClass;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp switch(type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "line" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.LineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "column" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.ColumnSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "bar" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.BarSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "area" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.AreaSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "candlestick" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.CandlestickSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "ohlc" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.OHLCSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedarea" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedAreaSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedLineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedcolumn" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedColumnSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedbar" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedBarSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "markerseries" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.MarkerSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "spline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.SplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "areaspline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.AreaSplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedspline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedSplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedareaspline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedAreaSplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedmarkerseries" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedMarkerSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "pie" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.PieSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "combo" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.ComboSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedcombo" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedComboSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "combospline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.ComboSplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp case "stackedcombospline" :
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.StackedComboSplineSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp default:
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesClass = Y.CartesianSeries;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return seriesClass;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _markerEventHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = e.type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerNode = e.currentTarget,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strArr = markerNode.getAttribute("id").split("_"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = this.getSeriesByIndex(strArr[1]),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = strArr[2];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.updateMarkerState(type, index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dispatchers: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._background.update(this.get("styles").background);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._sizeChangeHandler();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _sizeChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var sc = this.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hgl = this.get("horizontalGridlines"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vgl = this.get("verticalGridlines"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._background)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(w && h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._background.update({width:w, height:h});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hgl && hgl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hgl.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(vgl && vgl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vgl.draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(sc)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = sc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i].draw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _drawingCompleteHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var series = e.currentTarget,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = Y.Array.indexOf(this._dispatchers, series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._dispatchers.splice(index, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._dispatchers.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("chartRendered");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultStyles: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp background: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "rect",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#faf9f2"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp color:"#808080",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._seriesCollection;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._parseSeriesCollection(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._seriesCollection;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showBackground: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesDictionary: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp readOnly: true,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._seriesDictionary;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp horizontalGridlines: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var gl = this.get("horizontalGridlines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(gl && gl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl.remove();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.set("graph", this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.render();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(val && val.axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl = new Y.Gridlines({direction:"horizontal", axis:val.axis, graph:this, styles:val.styles});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl.render();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return gl;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp verticalGridlines: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var gl = this.get("verticalGridlines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(gl && gl instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl.remove();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val instanceof Y.Gridlines)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.set("graph", this);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val.render();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(val && val.axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl = new Y.Gridlines({direction:"vertical", axis:val.axis, graph:this, styles:val.styles});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp gl.render();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return gl;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction ChartBase() {}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippChartBase.ATTRS = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tooltip: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueFn: "_getTooltip",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._updateTooltip(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Indicates the the type of interactions that will fire events.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <ul>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>marker</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>all</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * <li>none</li>
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp interactionType: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "marker"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Data used to generate the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dataProvider: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._setDataValues(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to graph instance
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type Graph
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueFn: "_getGraph"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippChartBase.prototype = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Default value function for the <code>graph</code> attribute.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getGraph: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = new Y.Graph();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.after("chartRendered", Y.bind(function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("chartRendered");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return graph;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns a series instance
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @method getSeries
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getSeries: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var series = null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isNumber(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = graph.getSeriesByIndex(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = graph.getSeriesByKey(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns axis by key reference
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @method getAxisByKey
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getAxisByKey: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[val];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Returns the category axis for the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @method getCategoryAxis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getCategoryAxis: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key = this.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _direction: "horizontal",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataProvider: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setDataValues: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(val[0]))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var hash,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dp = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cats = val[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = cats.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp n,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sl = val.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hash = {category:cats[i]};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(n = 1; n < sl; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hash["series" + n] = val[n][i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dp[i] = hash;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return dp;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _seriesCollection: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setSeriesCollection: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesCollection = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getAxisClass: function(t)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._axisClass[t];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _axisClass: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stacked: Y.StackedAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp numeric: Y.NumericAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp category: Y.CategoryAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp time: Y.TimeAxis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _axes: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //move the position = absolute logic to a class file
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("boundingBox").setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("contentBox").setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addAxes();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addSeries();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showTooltip"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addTooltip();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._redraw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bindUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("showTooltipChange", Y.bind(this._showTooltipChangeHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("widthChange", this._sizeChanged);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("heightChange", this._sizeChanged);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.after("dataProviderChange", this._dataProviderChangeHandler);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp interactionType = this.get("interactionType"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defaultTooltipFunction;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(interactionType == "marker")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.delegate("mouseenter", Y.bind(this._markerEventHandler, this), cb, ".yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.delegate("mousedown", Y.bind(this._markerEventHandler, this), cb, ".yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.delegate("mouseup", Y.bind(this._markerEventHandler, this), cb, ".yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.delegate("mouseleave", Y.bind(this._markerEventHandler, this), cb, ".yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp Y.delegate("mousemove", Y.bind(this._positionTooltip, this), cb, ".yui3-seriesmarker");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defaultTooltipFunction = this._displayTooltip;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(interactionType == "all")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.on("mousemove", Y.bind(this._mouseMoveHandler, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.on("mouseout", this._hideTooltip);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defaultTooltipFunction = this._displayMultiTooltip;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("tooltip"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.on("markerEvent:mouseover", defaultTooltipFunction);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.on("markerEvent:mouseout", this._hideTooltip);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _markerEventHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = e.type,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerNode = e.currentTarget,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strArr = markerNode.getAttribute("id").split("_"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesIndex = strArr[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = this.getSeries(parseInt(strArr[1], 10)),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = strArr[2],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = e.pageX - cb.getX(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = e.pageY - cb.getY();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type == "mouseenter")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = "mouseover";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(type == "mouseleave")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = "mouseout";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.updateMarkerState(type, index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("markerEvent:" + type, {node:markerNode, x:x, y:y, series:series, index:index, seriesIndex:seriesIndex});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _dataProviderChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var dataProvider = this.get("dataProvider"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis instanceof Y.BaseAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("dataProvider", dataProvider);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _showTooltip: function(msg, x, y)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this.get("tooltip"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = tt.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(msg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.set("innerHTML", msg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("top", y + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("left", x + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.removeClass("yui3-widget-hidden");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _positionTooltip: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this.get("tooltip"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = tt.node,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb = this.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = (e.pageX + 10) - cb.getX(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = (e.pageY + 10) - cb.getY();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(node)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("left", x + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("top", y + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _hideTooltip: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this.get("tooltip"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = tt.node;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.set("innerHTML", "");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("left", -10000);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("top", -10000);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.addClass("yui3-widget-hidden");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addTooltip: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this.get("tooltip");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("contentBox").appendChild(tt.node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _updateTooltip: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this._tooltip,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = val.styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(styles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in styles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(styles.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tt.node.setStyle(i, styles[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty("labelFunction"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tt.labelFunction = val.labelFunction;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return tt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getTooltip: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var node = document.createElement("div"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tt = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction: this._tooltipLabelFunction
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = Y.one(node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("fontSize", "9px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("fontWeight", "bold");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("paddingTop", "2px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("paddingRight", "5px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("paddingBottom", "5px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("paddingLeft", "2px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("backgroundColor", "#edeeee");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("border", "1px solid #aeae9e");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("zIndex", 3);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.setStyle("whiteSpace", "noWrap");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node.addClass("yui3-widget-hidden");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tt.node = Y.one(node);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._tooltip = tt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return tt;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _tooltipLabelFunction: function(categoryItem, valueItem, itemIndex, series, seriesIndex)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var msg = categoryItem.displayName +
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ":&nbsp;" + categoryItem.axis.get("labelFunction").apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) +
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp "<br/>" + valueItem.displayName +
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ":&nbsp;" + valueItem.axis.get("labelFunction").apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return msg;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _showTooltipChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showTooltip"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addTooltip();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.ChartBase = ChartBase;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp/**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * A basic chart application.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.CartesianChart = Y.Base.create("cartesianChart", Y.Widget, [Y.ChartBase], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp renderUI: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //move the position = absolute logic to a class file
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("boundingBox").setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("contentBox").setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addAxes();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addGridlines();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addSeries();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showTooltip"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addTooltip();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //If there is a style definition. Force them to set.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("styles");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("interactionType") == "all")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var overlay = document.createElement("div");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get("contentBox").appendChild(overlay);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay = Y.one(overlay);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("background", "#fff");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("opacity", 0);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.addClass("yui3-overlay");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("zIndex", 4);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._redraw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _mouseMoveHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bb = this.get("boundingBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cb = graph.get("contentBox"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp x = e.pageX,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetX = x - cb.getX(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp posX = x - bb.getX(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp y = e.pageY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp offsetY = y - cb.getY(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp posY = y - bb.getY(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc = graph.get("seriesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp oldIndex = this._selectedIndex,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp items = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hasMarkers,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp coord = direction == "horizontal" ? offsetX : offsetY,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //data columns and area data could be created on a graph level
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp markerPlane = direction == "horizontal" ? sc[0].get("xMarkerPlane") : sc[0].get("yMarkerPlane"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = markerPlane.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //only change on whole numbers
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(coord % 1 > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(coord <= markerPlane[i].end && coord >= markerPlane[i].start)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = sc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = sc[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hasMarkers = series.get("markers");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hasMarkers && !isNaN(oldIndex) && oldIndex > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.updateMarkerState("mouseout", oldIndex);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(series.get("ycoords")[index] > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hasMarkers && !isNaN(index) && index > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.updateMarkerState("mouseover", index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp items.push(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._selectedIndex = index;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("markerEvent:mouseover", {x:posX, y:posY, index:index, items:items, direction:direction, graph:graph});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.fire("markerEvent:mouseout");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _type: "combo",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _axesRenderQueue: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Adds an axis to the queue
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addToAxesRenderQueue: function(axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._axesRenderQueue)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesRenderQueue = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Array.indexOf(this._axesRenderQueue, axis) < 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesRenderQueue.push(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultSeriesCollection: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var dir = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc = val || [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempKeys = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = this.get("seriesKeys").concat(),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryKey = this.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showMarkers = this.get("showMarkers"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showAreaFill = this.get("showAreaFill"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showLines = this.get("showLines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dir == "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catAxis = "yAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catKey = "yKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valAxis = "xAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey = "xKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catAxis = "xAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catKey = "xKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valAxis = "yAxis";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey = "yKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = sc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key = this._getBaseAttribute(sc[i], seriesKey);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(key)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = Y.Array.indexOf(seriesKeys, key);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(index > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys.splice(index, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempKeys.push(key);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(seriesKeys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tempKeys = tempKeys.concat(seriesKeys);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = tempKeys.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = sc[i] || {type:type};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(series instanceof Y.CartesianSeries)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._parseSeriesAxes(series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series[catKey] = series[catKey] || categoryKey;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series[seriesKey] = series[seriesKey] || seriesKeys.shift();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series[catAxis] = this._getCategoryAxis();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series[valAxis] = this._getSeriesAxis(series[seriesKey]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.type = series.type || type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if((series.type == "combo" || series.type == "stackedcombo" || series.type == "combospline" || series.type == "stackedcombospline"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(showAreaFill !== null)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.showAreaFill = series.showAreaFill || showAreaFill;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(showMarkers !== null)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.showMarkers = series.showMarkers || showMarkers;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(showLines !== null)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.showLines = series.showLines || showLines;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i] = series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("seriesCollection", sc);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc = graph.get("seriesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return sc;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseSeriesAxes: function(series)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis = series.get("xAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = series.get("yAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp YBaseAxis = Y.BaseAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(xAxis && !(xAxis instanceof YBaseAxis) && Y.Lang.isString(xAxis) && axes.hasOwnProperty(xAxis))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[xAxis];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis instanceof YBaseAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.set("xAxis", axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(yAxis && !(yAxis instanceof YBaseAxis) && Y.Lang.isString(yAxis) && axes.hasOwnProperty(yAxis))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[yAxis];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis instanceof YBaseAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series.set("yAxis", axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getCategoryAxis: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxisName = this.get("categoryAxisName") || this.get("categoryKey");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[categoryAxisName];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Gets the appropriate axis to bind a series to when one is not explicitly
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * set.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getSeriesAxis:function(key, axisName)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axisName && axes.hasOwnProperty(axisName))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[axisName];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = axes[i].get("keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(keys && keys.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp break;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Gets an attribute from an object, using a getter for Base objects and a property for object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * literals. Used for determining attributes from series/axis references which can be an actual class instance
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * or a hash of properties that will be used to create a class instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getBaseAttribute: function(item, key)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(item instanceof Y.Base)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return item.get(key);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(item.hasOwnProperty(key))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return item[key];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return null;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Sets an attribute on an object, using a setter of Base objects and a property for object
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * literals. Used for setting attributes on a Base class, either directly or to be stored in an object literal
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * for use at instantiation.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _setBaseAttribute: function(item, key, value)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(item instanceof Y.Base)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp item.set(key, value);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp item[key] = value;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Creates Axis and Axis data classes based on hashes of properties.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseAxes: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var hash = this._getDefaultAxes(val),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesAttrs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp edgeOffset: "edgeOffset",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position: "position",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp overlapGraph:"overlapGraph",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunction:"labelFunction",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFunctionScope:"labelFunctionScope",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp labelFormat:"labelFormat",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp maximum:"maximum",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp minimum:"minimum",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp roundingMethod:"roundingMethod",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alwaysShowZero:"alwaysShowZero"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dp = this.get("dataProvider"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ai,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dh,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisClass,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesCollection;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in hash)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hash.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dh = hash[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dh instanceof Y.BaseAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = dh;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisClass = this._getAxisClass(dh.type);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.dataProvider = dh.dataProvider || dp;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.keys = dh.keys;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dh.hasOwnProperty("roundingUnit"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.roundingUnit = dh.roundingUnit;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = dh.position;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dh.styles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.styles = dh.styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.position = dh.position;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(ai in axesAttrs)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesAttrs.hasOwnProperty(ai) && dh.hasOwnProperty(ai))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config[ai] = dh[ai];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = new axisClass(config);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesCollection = this.get(pos + "AxesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axesCollection && Y.Array.indexOf(axesCollection, axis) > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("overlapGraph", false);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.after("axisRendered", Y.bind(this._axisRendered, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes[i] = axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return axes;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addAxes: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = Y.Node.one(this._parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._axesCollection)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesCollection = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis instanceof Y.Axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!w)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("width", node.get("offsetWidth"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("height", node.get("offsetHeight"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("width", w);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("height", h);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addToAxesRenderQueue(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = axis.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.get(pos + "AxesCollection"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set(pos + "AxesCollection", [axis]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get(pos + "AxesCollection").push(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesCollection.push(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis.get("keys").hasOwnProperty(this.get("categoryKey")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("categoryAxis", axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.render(this.get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc = this.get("seriesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.render(this.get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Adds gridlines to the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addGridlines: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hgl = this.get("horizontalGridlines"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vgl = this.get("verticalGridlines"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftAxesCollection = this.get("leftAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rightAxesCollection = this.get("rightAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottomAxesCollection = this.get("bottomAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topAxesCollection = this.get("topAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesAxesCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catAxis = this.get("categoryAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vAxis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._axesCollection)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesAxesCollection = this._axesCollection.concat();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesAxesCollection.splice(Y.Array.indexOf(seriesAxesCollection, catAxis), 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hgl)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(leftAxesCollection && leftAxesCollection[0])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hAxis = leftAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(rightAxesCollection && rightAxesCollection[0])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hAxis = rightAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp hAxis = direction == "horizontal" ? catAxis : seriesAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._getBaseAttribute(hgl, "axis") && hAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(hgl, "axis", hAxis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._getBaseAttribute(hgl, "axis"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("horizontalGridlines", hgl);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(vgl)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(bottomAxesCollection && bottomAxesCollection[0])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vAxis = bottomAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if (topAxesCollection && topAxesCollection[0])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vAxis = topAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp vAxis = direction == "vertical" ? catAxis : seriesAxesCollection[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._getBaseAttribute(vgl, "axis") && vAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(vgl, "axis", vAxis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._getBaseAttribute(vgl, "axis"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("verticalGridlines", vgl);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultAxes: function(axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var catKey = this.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp attr,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes = {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp claimedKeys = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxisName = this.get("categoryAxisName") || this.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxisName = this.get("valueAxisName"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = this.get("seriesKeys") || [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ii,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ll,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cIndex,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dp = this.get("dataProvider"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesPosition,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryPosition,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxes = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesAxis = this.get("stacked") ? "stacked" : "numeric";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv = dp[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(direction == "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesPosition = "bottom";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryPosition = "left";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesPosition = "left";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryPosition = "bottom";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys = this._getBaseAttribute(axis, "keys");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp attr = this._getBaseAttribute(axis, "type");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(attr == "time" || attr == "category")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxisName = i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("categoryAxisName", i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(keys) && keys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catKey = keys[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("categoryKey", catKey);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes[i] = axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(i == categoryAxisName)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes[i] = axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes[i] = axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(i != valueAxisName && keys && Y.Lang.isArray(keys))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ll = keys.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(ii = 0; ii < ll; ++ii)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp claimedKeys.push(keys[ii]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxes.push(newAxes[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[i], "type")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[i], "type", seriesAxis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[i], "position")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[i], "position", this._getDefaultAxisPosition(newAxes[i], valueAxes, seriesPosition));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(seriesKeys.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in dv)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dv.hasOwnProperty(i) && i != catKey && Y.Array.indexOf(claimedKeys, i) == -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys.push(i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cIndex = Y.Array.indexOf(seriesKeys, catKey);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(cIndex > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys.splice(cIndex, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = claimedKeys.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp cIndex = Y.Array.indexOf(seriesKeys, claimedKeys[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(cIndex > -1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys.splice(cIndex, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!newAxes.hasOwnProperty(categoryAxisName))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes[categoryAxisName] = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[categoryAxisName], "keys")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[categoryAxisName], "keys", [catKey]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[categoryAxisName], "position")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[categoryAxisName], "position", categoryPosition);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[categoryAxisName], "type")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[categoryAxisName], "type", this.get("categoryType"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!newAxes.hasOwnProperty(valueAxisName) && seriesKeys && seriesKeys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp newAxes[valueAxisName] = {keys:seriesKeys};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxes.push(newAxes[valueAxisName]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(claimedKeys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(seriesKeys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = claimedKeys.concat(seriesKeys);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = claimedKeys;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(newAxes.hasOwnProperty(valueAxisName))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[valueAxisName], "position")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[valueAxisName], "position", this._getDefaultAxisPosition(newAxes[valueAxisName], valueAxes, seriesPosition));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[valueAxisName], "type")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[valueAxisName], "type", seriesAxis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!(this._getBaseAttribute(newAxes[valueAxisName], "keys")))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(newAxes[valueAxisName], "keys", seriesKeys);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("seriesKeys", seriesKeys);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return newAxes;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Determines the position of an axis when one is not specified.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultAxisPosition: function(axis, valueAxes, position)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var direction = this.get("direction"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = Y.Array.indexOf(valueAxes, axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(valueAxes[i - 1] && valueAxes[i - 1].position)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(direction == "horizontal")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(valueAxes[i - 1].position == "left")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position = "right";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(valueAxes[i - 1].position == "right")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position = "left";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (valueAxes[i -1].position == "bottom")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position = "top";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp position = "bottom";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return position;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _displayTooltip: function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var node = e.node,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = Y.Widget.getByNode(node),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strArr = e.node.getAttribute("id").split("_"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesIndex = strArr[1],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = graph.getSeriesByIndex(seriesIndex),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = strArr[2],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis = series.get("xAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = series.get("yAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xKey = series.get("xKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yKey = series.get("yKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem = {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem = {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tt = this.get("tooltip"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("direction") == "vertical")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis:yAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key:yKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:yAxis.getKeyValueAt(yKey, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis:xAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key:xKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: xAxis.getKeyValueAt(xKey, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis:yAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key:yKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:yAxis.getKeyValueAt(yKey, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis:xAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key:xKey,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: xAxis.getKeyValueAt(xKey, index)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem.displayName = series.get("categoryDisplayName");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem.displayName = series.get("valueDisplayName");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg = tt.labelFunction.apply(this, [categoryItem, valueItem, index, series, seriesIndex]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if (node) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._showTooltip(msg, e.x + 10, e.y + 10);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _displayMultiTooltip: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var items = e.items,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = items.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = e.index,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg = "",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis = this.get("categoryAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp horizontal = e.direction == "horizontal";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(categoryAxis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg = categoryAxis.get("labelFunction").apply(this, [categoryAxis.getKeyValueAt(this.get("categoryKey"), index), categoryAxis.get("labelFormat")]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = items[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(series.get("visible"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(horizontal)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp yAxis = series.get("yAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg += "<br/><span>" + series.get("yDisplayName") + ":&nbsp;" + yAxis.get("labelFunction").apply(this, [yAxis.getKeyValueAt(series.get("yKey"), index), yAxis.get("labelFormat")]) + "</span>";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xAxis = series.get("xAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg += "<br/><span>" + series.get("xDisplayName") + "&nbsp;" + xAxis.get("labelFunction").apply(this, [xAxis.getKeyValueAt(series.get("xKey"), index), xAxis.get("labelFormat")]) + "</span>";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._showTooltip(msg, e.x + 10, e.y + 10);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _showTooltipChangeHandler: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("showTooltip") && this.get("rendered"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addTooltip();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @description Listender for axisRendered event.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _axisRendered: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesRenderQueue = this._axesRenderQueue.splice(1 + Y.Array.indexOf(this._axesRenderQueue, e.currentTarget), 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._axesRenderQueue.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._redraw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _sizeChanged: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._axesCollection)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var ac = this._axesCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = ac.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._addToAxesRenderQueue(ac[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._redraw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _redraw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rw = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp th = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bh = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lc = this.get("leftAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rc = this.get("rightAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp tc = this.get("topAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bc = this.get("bottomAxesCollection"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pts = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOverflow = "visible",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(lc)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = lc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = l - 1; i > -1; --i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pts[Y.Array.indexOf(this._axesCollection, lc[i])] = {x:lw + "px"};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lw += lc[i].get("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(rc)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = rc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = l - 1; i > -1; --i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rw += rc[i].get("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pts[Y.Array.indexOf(this._axesCollection, rc[i])] = {x:(w - rw) + "px"};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(tc)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = tc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = l - 1; i > -1; --i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pts[Y.Array.indexOf(this._axesCollection, tc[i])] = {y:th + "px"};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp th += tc[i].get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(bc)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = bc.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = l - 1; i > -1; --i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bh += bc[i].get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pts[Y.Array.indexOf(this._axesCollection, bc[i])] = {y:(h - bh) + "px"};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = this._axesCollection.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = this._axesCollection[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = axis.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(pos == "left" || pos === "right")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.get("boundingBox").setStyle("top", th + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.get("boundingBox").setStyle("left", pts[i].x);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis.get("height") !== h - (bh + th))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("height", h - (bh + th));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(pos == "bottom" || pos == "top")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis.get("width") !== w - (lw + rw))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.set("width", w - (lw + rw));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.get("boundingBox").setStyle("left", lw + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.get("boundingBox").setStyle("top", pts[i].y);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis.get("setMax") || axis.get("setMin"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOverflow = "hidden";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.get("boundingBox").setStyle("left", lw + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.get("boundingBox").setStyle("top", th + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("width", w - (lw + rw));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("height", h - (th + bh));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.get("boundingBox").setStyle("overflow", graphOverflow);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._overlay)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("left", lw + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("top", th + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("width", (w - (lw + rw)) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._overlay.setStyle("height", (h - (th + bh)) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesStyles: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = this._axesStyles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i) && axes[i] instanceof Y.Axis)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!styles)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles[i] = axes[i].get("styles");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty(i) && axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(axes[i], "styles", val[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesStyles: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = this._seriesStyles,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dict,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dict = graph.get("seriesDictionary");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dict)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in dict)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dict.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles[i] = dict[i].get("styles");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(Y.Lang.isArray(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s = this.get("seriesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = val.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(s[i], "styles", val[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s = this.getSeries(i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(s, "styles", val[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphStyles: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return(graph.get("styles"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._graphStyles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._setBaseAttribute(graph, "styles", val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp styles: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var styles = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes: this.get("axesStyles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series: this.get("seriesStyles"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: this.get("graphStyles")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty("axes"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("axesStyles"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("axesStyles", val.axes);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesStyles = val.axes;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty("series"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("seriesStyles"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("seriesStyles", val.series);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesStyles = val.series;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val.hasOwnProperty("graph"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("graphStyles", val.graph);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Axes to appear in the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueFn: "_parseAxes",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._parseAxes(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of series to appear on the chart. This can be an array of Series instances or object literals
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * used to describe a Series instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueFn: "_getDefaultSeriesCollection",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._getDefaultSeriesCollection(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Element that contains left axes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp leftAxesCollection: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Element that contains bottom axes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottomAxesCollection: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Element that contains right axes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp rightAxesCollection: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Element that contains top axes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp topAxesCollection: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * All axes in a chart
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesCollection: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether or not the chart is stacked.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type Boolean
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp stacked: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: false
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Direction of chart's category axis when there is no series collection specified. Charts can
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * be horizontal or vertical. When the chart type is column, the chart is horizontal.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * When the chart type is bar, the chart is vertical.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @default Horizontal
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = this.get("type");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type == "bar")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return "vertical";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(type == "column")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return "horizontal";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._direction;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._direction = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._direction;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether or not to show a tooltip.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showTooltip: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The key value used for the chart's category axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @default "category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * A collection of keys that map to the series axes. If no keys are set,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * they will be generated automatically depending on the data structure passed into
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type Array
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether or not an area is filled in a combo chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showAreaFill: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showMarkers:{},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showLines:{},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the type of axis to use for the category axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryType:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates the key value used to identify a category axis in the <code>axes</code> hash.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxisName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueAxisName: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "values"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp horizontalGridlines: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return graph.get("horizontalGridlines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._horizontalGridlines;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val && !Y.Lang.isObject(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("horizontalGridlines", val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._horizontalGridlines = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp verticalGridlines: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return graph.get("verticalGridlines");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._verticalGridlines;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val && !Y.Lang.isObject(val))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp val = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("verticalGridlines", val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._verticalGridlines = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Type of chart when there is no series collection specified.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("stacked"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return "stacked" + this._type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._type == "bar")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val != "bar")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("direction", "horizontal");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(val == "bar")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("direction", "vertical");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._type = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._type;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to the category axis used by the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryAxis:{}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.PieChart = Y.Base.create("pieChart", Y.Widget, [Y.ChartBase], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getSeriesCollection: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this._seriesCollection)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._seriesCollection;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc = [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catAxis = "categoryAxis",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp catKey = "categoryKey",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valAxis = "valueAxis",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKey = "valueKey";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = axes.values.get("dataSet").get("keyCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key = axes.category.get("dataSet").get("keyCollection")[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp l = seriesKeys.length;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < l; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i] = {type:type};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i][catAxis] = "category";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i][valAxis] = "values";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i][catKey] = key;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp sc[i][seriesKey] = seriesKeys[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesCollection = sc;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return sc;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseAxes: function(hash)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axes = {};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i, pos, axis, dh, config, axisClass,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = Y.Node.one(this._parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!w)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("width", node.get("offsetWidth"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = this.get("width");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!h)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("height", node.get("offsetHeight"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this.get("height");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in hash)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(hash.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dh = hash[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp pos = type == "pie" ? "none" : dh.position;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axisClass = this._getAxisClass(dh.type);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config = {dataProvider:this.get("dataProvider")};
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(dh.hasOwnProperty("roundingUnit"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.roundingUnit = dh.roundingUnit;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.keys = dh.keys;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.position = pos;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.styles = dh.styles;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = new axisClass(config);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis.on("axisRendered", Y.bind(this._axisRendered, this));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axes[i] = axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addAxes: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("axes", this._getDefaultAxes());
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this._axesCollection)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesCollection = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in axes)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axes.hasOwnProperty(i))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = axes[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp p = axis.get("position");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!this.get(p + "AxesCollection"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set(p + "AxesCollection", [axis]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.get(p + "AxesCollection").push(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._axesCollection.push(axis);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _addSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = this.get("seriesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._parseSeriesAxes(seriesCollection);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("showBackground", false);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("width", this.get("width"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("height", this.get("height"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("seriesCollection", seriesCollection);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._seriesCollection = graph.get("seriesCollection");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.render(this.get("contentBox"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _parseSeriesAxes: function(c)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = c.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes = this.get("axes"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s = c[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(s)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //If series is an actual series instance,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp //replace axes attribute string ids with axes
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(s instanceof Y.PieSeries)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = s.get("categoryAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis && !(axis instanceof Y.BaseAxis))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s.set("categoryAxis", axes[axis]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis = s.get("valueAxis");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(axis && !(axis instanceof Y.BaseAxis))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s.set("valueAxis", axes[axis]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp continue;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s.categoryAxis = axes.category;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s.valueAxis = axes.values;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!s.type)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp s.type = this.get("type");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getDefaultAxes: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var catKey = this.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys = this.get("seriesKeys") || [],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesAxis = "numeric",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp dv = this.get("dataProvider")[0];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(seriesKeys.length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i in dv)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(i != catKey)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys.push(i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(seriesKeys.length > 0)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("seriesKeys", seriesKeys);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp values:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys:seriesKeys,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type:seriesAxis
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp category:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp keys:[catKey],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type:this.get("categoryType")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _displayTooltip: function(e) {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var tt = this.get("tooltip"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp node = e.node,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = Y.Widget.getByNode(node),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp strArr = e.node.getAttribute("id").split("_"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesIndex = strArr[1],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp series = graph.getSeriesByIndex(seriesIndex),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp index = strArr[2],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis: series.get("categoryAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key: series.get("categoryKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp displayName: series.get("categoryDisplayName")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axis: series.get("valueAxis"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp key: series.get("valueKey"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp displayName: series.get("valueDisplayName")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryItem.value = categoryItem.axis.getKeyValueAt(categoryItem.key, index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp valueItem.value = valueItem.axis.getKeyValueAt(valueItem.key, index);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp msg = tt.labelFunction.apply(this, [categoryItem, valueItem, index, series, seriesIndex]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._showTooltip(msg, e.x + 10, e.y + 10);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _sizeChanged: function(e)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._redraw();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _redraw: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var graph = this.get("graph");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(graph)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("width", this.get("width"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph.set("height", this.get("height"));
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Axes to appear in the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axes: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._axes;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._parseAxes(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Collection of series to appear on the chart. This can be an array of Series instances or object literals
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * used to describe a Series instance.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._getSeriesCollection();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._setSeriesCollection(val);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * All axes in a chart
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp axesCollection: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "pie"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Reference to graph instance
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type Graph
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph: {},
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Direction of chart's category axis when there is no series collection specified. Charts can
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * be horizontal or vertical. When the chart type is column, the chart is horizontal.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * When the chart type is bar, the chart is vertical.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @default Horizontal
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp direction: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp getter: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var type = this.get("type");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(type == "bar")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return "vertical";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(type == "column")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return "horizontal";
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return this._direction;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp setter: function(val)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._direction = val;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Indicates whether or not to show a tooltip.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp showTooltip: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:true
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * The key value used for the chart's category axis.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @default "category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type String
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryKey: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * A collection of keys that map to the series axes. If no keys are set,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * they will be generated automatically depending on the data structure passed into
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * the chart.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @type Array
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesKeys: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp categoryType:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value:"category"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippfunction Chart(cfg)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(cfg.type != "pie")
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return new Y.CartesianChart(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return new Y.PieChart(cfg);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.Chart = Chart;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, '@VERSION@' ,{requires:['dom', 'datatype', 'event-custom', 'event-mouseenter', 'widget', 'widget-position', 'widget-stack']});