- /**
- * The Charts widget provides an api for displaying data
- * graphically.
- *
- * @module charts
- * @main charts
- */
- /**
- * The charts-base submodule contains the core functionality for the charts module.
- *
- * @module charts
- * @submodule charts-base
- */
- var CONFIG = Y.config,
- WINDOW = CONFIG.win,
- DOCUMENT = CONFIG.doc,
- Y_Lang = Y.Lang,
- IS_STRING = Y_Lang.isString,
- Y_DOM = Y.DOM,
- LeftAxisLayout,
- RightAxisLayout,
- BottomAxisLayout,
- TopAxisLayout,
- _getClassName = Y.ClassNameManager.getClassName,
- SERIES_MARKER = _getClassName("seriesmarker"),
- ShapeGroup,
- CircleGroup,
- RectGroup,
- EllipseGroup,
- DiamondGroup;
- /**
- * Abstract class for creating groups of shapes with the same styles and dimensions.
- *
- * @class ShapeGroup
- * @constructor
- */
- ShapeGroup = function(cfg)
- {
- ShapeGroup.superclass.constructor.apply(this, arguments);
- };
- ShapeGroup.NAME = "shapeGroup";
- Y.extend(ShapeGroup, Y.Path, {
- /**
- * Updates the shape.
- *
- * @method _draw
- * @private
- */
- _draw: function()
- {
- var xvalues = this.get("xvalues"),
- yvalues = this.get("yvalues"),
- x,
- y,
- xRad,
- yRad,
- i = 0,
- len,
- attrs = [],
- dimensions = this.get("dimensions"),
- width = dimensions.width,
- height = dimensions.height,
- radius = dimensions.radius,
- yRadius = dimensions.yRadius,
- id = this.get("id"),
- className = this.node.className,
- widthIsArray = Y_Lang.isArray(width),
- heightIsArray = Y_Lang.isArray(height),
- radiusIsArray = Y_Lang.isArray(radius),
- yRadiusIsArray = Y_Lang.isArray(yRadius);
- if(xvalues && yvalues && xvalues.length > 0)
- {
- this.clear();
- len = xvalues.length;
- for(; i < len; ++i)
- {
- x = xvalues[i];
- y = yvalues[i];
- xRad = radiusIsArray ? radius[i] : radius;
- yRad = yRadiusIsArray ? yRadius[i] : yRadius;
- if(!isNaN(x) && !isNaN(y) && !isNaN(xRad))
- {
- this.drawShape({
- x: x,
- y: y,
- width: widthIsArray ? width[i] : width,
- height: heightIsArray ? height[i] : height,
- radius: xRad,
- yRadius: yRad
- });
- this.closePath();
- attrs[i] = {
- id: id + "_" + i,
- className: className,
- coords: (x - this._left) + ", " + (y - this._top) + ", " + radius,
- shape: "circle"
- };
- }
- }
- this._closePath();
- }
- },
- /**
- * Parses and array of lengths into radii
- *
- * @method _getRadiusCollection
- * @param {Array} val Array of lengths
- * @return Array
- * @private
- */
- _getRadiusCollection: function(val)
- {
- var i = 0,
- len = val.length,
- radii = [];
- for(; i < len; ++i)
- {
- radii[i] = val[i] * 0.5;
- }
- return radii;
- }
- });
- ShapeGroup.ATTRS = Y.merge(Y.Path.ATTRS, {
- dimensions: {
- getter: function()
- {
- var dimensions = this._dimensions,
- radius,
- yRadius,
- width,
- height;
- if(dimensions.hasOwnProperty("radius"))
- {
- return dimensions;
- }
- else
- {
- width = dimensions.width;
- height = dimensions.height;
- radius = Y_Lang.isArray(width) ? this._getRadiusCollection(width) : (width * 0.5);
- yRadius = Y_Lang.isArray(height) ? this._getRadiusCollection(height) : (height * 0.5);
- return {
- width: width,
- height: height,
- radius: radius,
- yRadius: yRadius
- };
- }
- },
- setter: function(val)
- {
- this._dimensions = val;
- return val;
- }
- },
- xvalues: {
- getter: function()
- {
- return this._xvalues;
- },
- setter: function(val)
- {
- this._xvalues = val;
- }
- },
- yvalues: {
- getter: function()
- {
- return this._yvalues;
- },
- setter: function(val)
- {
- this._yvalues = val;
- }
- }
- });
- Y.ShapeGroup = ShapeGroup;
-